第2課

Itens de Listagem e Negociação

Nesta lição, vamos expandir o nosso contrato de artigos para tratar da listagem e negociação de artigos no nosso mercado. Vamos aprender como adicionar, listar e remover itens, bem como as noções básicas de compra e venda de itens. Também aprenderemos a implementar o nosso contrato e interagir com ele no Remix IDE.

Construir o Contrato Marketplace

Agora vamos transformar o nosso simples contrato de item num contrato de Marketplace mais complexo. O contrato Marketplace manterá uma lista de itens para venda, fornece uma maneira de os usuários listarem novos itens para venda e fornece uma maneira de os usuários comprarem itens.

Para isso, adicionaremos algumas funcionalidades novas ao nosso contrato:

  1. Cada item terá agora um endereço para o vendedor, que representa o proprietário do artigo.

  2. Vamos introduzir uma nova função ListitemForMoe que permite aos utilizadores listar novos itens para venda.

  3. Vamos introduzir uma nova função buyItem que permite aos utilizadores comprarem um item.

Eis o aspeto do contrato Marketplace:

Solidez
//SPDX-Identificador da licença: MIT
solidez pragma ^0.8.6;

contrato Marketplace {
 //Definir uma nova estrutura para os Itens
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    //Matriz para segurar todos os itens
 O item [] itens públicos;

 //Evento que será emitido quando um novo item for criado
 evento NeWitem (uint iTeMid, item de string Name, uint IteMrice, vendedor de endereço);

 //Evento que será emitido quando um artigo é listado para venda
 item do eventoListado (uint iTeMid, item da string Name, uint itemPrice, vendedor de endereço);

 //Evento que será emitido quando um artigo é comprado
 evento itemBWate (uint iTeMid, string itemName, uint itemPrice, vendedor de endereço, comprador de endereço);

 //Função para criar um novo item mas não listá-lo para venda imediatamente
 função criateItem (memória da cadeia de caracteres _name, uint _price) público {
    items.push(Item(_name, _price, payable(msg.sender), false)); // We need to explicitly convert msg.sender to 'address payable'
    emit NewItem(items.length - 1, _name, _price, msg.sender);
    }


    //Função para listar um item à venda
 função ListitemForsale (uint _Itemid) pública {
        Item storage item = items[_itemId];
        require(msg.sender == item.seller, "Only the owner can list the item for sale");
        item.forSale = true;
        emit ItemListed(_itemId, item.name, item.price, item.seller);
    }

    //Função para comprar um item
 função BuyItem (uint _ItemID) público a pagar {
        Item storage item = items[_itemId];
        require(msg.sender != item.seller, "Seller cannot buy their own item");
        require(item.forSale, "Item is not for sale");
        require(msg.value == item.price, "Incorrect price sent");
        item.seller.transfer(msg.value);
        item.forSale = false;
        emit ItemBought(_itemId, item.name, item.price, item.seller, msg.sender);
    }
}

Neste contrato, temos:

  1. Uma peça do item que agora inclui um endereço para vendedor e um booleano parSale. O vendedor é o proprietário do artigo e paraVenda indica se o item está listado atualmente para venda.

  2. Uma função CreateItem que cria um novo item e atribui o msg.sender como o vendedor. A msg.sender é uma variável global em Solidez que representa o endereço da pessoa (ou contrato inteligente) que é chamada a função atual. No entanto, o artigo não está listado para venda imediatamente.

  3. Uma função ListitemForVenda que permite ao vendedor de um item listar para venda. Usamos a função require para ter certeza de que apenas o vendedor pode listar o item à venda.

  4. Uma função BuyItem que permite que alguém compre um item. A função verifica se o artigo está à venda, o comprador não é o vendedor e o preço correto foi enviado. Se essas condições forem atendidas, a função envia o dinheiro para o vendedor e marca o item como não à venda.

Implementar e interagir com o Contrato de Marketplace

Depois de escrever o contrato Marketplace, o próximo passo é compilá-lo e implementá-lo. Pode usar o 'plugin' Soliity Compiler no Remix para compilar o contrato, tal como fizemos na Lição 1.

Para implementar o contrato, vá para o plugin Deploy & Run Transactions (o que tem o ícone do cubo) no painel direito. Escolha o ambiente apropriado (JavaScript VM para simulação), selecione o contrato Marketplace no menu suspenso Contrato e clique no botão Implementar.

Assim que o contrato for implementado, aparecerá na seção Contratos Implementados. Pode expandi-lo para ver as suas variáveis e funções do estado público. Pode criar, listar e comprar itens ligando para essas funções.

Para criar um item, digite um nome e um preço e clique no botão CreateItem. Para listar um item à venda, insira a identificação do item e clique no botão ListitemForVenda. Para comprar um item, insira a identificação do item, envie a quantidade correta de Éter e clique no botão Comprar-Item.

Parabéns! Sabe agora como criar um mercado básico descentralizado na cadeia de blocos Ethereum.

Na próxima lição, vamos melhorar o nosso mercado adicionando funcionalidade para remover itens de venda e atualizar o preço de um item. Fique atento!

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第2課

Itens de Listagem e Negociação

Nesta lição, vamos expandir o nosso contrato de artigos para tratar da listagem e negociação de artigos no nosso mercado. Vamos aprender como adicionar, listar e remover itens, bem como as noções básicas de compra e venda de itens. Também aprenderemos a implementar o nosso contrato e interagir com ele no Remix IDE.

Construir o Contrato Marketplace

Agora vamos transformar o nosso simples contrato de item num contrato de Marketplace mais complexo. O contrato Marketplace manterá uma lista de itens para venda, fornece uma maneira de os usuários listarem novos itens para venda e fornece uma maneira de os usuários comprarem itens.

Para isso, adicionaremos algumas funcionalidades novas ao nosso contrato:

  1. Cada item terá agora um endereço para o vendedor, que representa o proprietário do artigo.

  2. Vamos introduzir uma nova função ListitemForMoe que permite aos utilizadores listar novos itens para venda.

  3. Vamos introduzir uma nova função buyItem que permite aos utilizadores comprarem um item.

Eis o aspeto do contrato Marketplace:

Solidez
//SPDX-Identificador da licença: MIT
solidez pragma ^0.8.6;

contrato Marketplace {
 //Definir uma nova estrutura para os Itens
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    //Matriz para segurar todos os itens
 O item [] itens públicos;

 //Evento que será emitido quando um novo item for criado
 evento NeWitem (uint iTeMid, item de string Name, uint IteMrice, vendedor de endereço);

 //Evento que será emitido quando um artigo é listado para venda
 item do eventoListado (uint iTeMid, item da string Name, uint itemPrice, vendedor de endereço);

 //Evento que será emitido quando um artigo é comprado
 evento itemBWate (uint iTeMid, string itemName, uint itemPrice, vendedor de endereço, comprador de endereço);

 //Função para criar um novo item mas não listá-lo para venda imediatamente
 função criateItem (memória da cadeia de caracteres _name, uint _price) público {
    items.push(Item(_name, _price, payable(msg.sender), false)); // We need to explicitly convert msg.sender to 'address payable'
    emit NewItem(items.length - 1, _name, _price, msg.sender);
    }


    //Função para listar um item à venda
 função ListitemForsale (uint _Itemid) pública {
        Item storage item = items[_itemId];
        require(msg.sender == item.seller, "Only the owner can list the item for sale");
        item.forSale = true;
        emit ItemListed(_itemId, item.name, item.price, item.seller);
    }

    //Função para comprar um item
 função BuyItem (uint _ItemID) público a pagar {
        Item storage item = items[_itemId];
        require(msg.sender != item.seller, "Seller cannot buy their own item");
        require(item.forSale, "Item is not for sale");
        require(msg.value == item.price, "Incorrect price sent");
        item.seller.transfer(msg.value);
        item.forSale = false;
        emit ItemBought(_itemId, item.name, item.price, item.seller, msg.sender);
    }
}

Neste contrato, temos:

  1. Uma peça do item que agora inclui um endereço para vendedor e um booleano parSale. O vendedor é o proprietário do artigo e paraVenda indica se o item está listado atualmente para venda.

  2. Uma função CreateItem que cria um novo item e atribui o msg.sender como o vendedor. A msg.sender é uma variável global em Solidez que representa o endereço da pessoa (ou contrato inteligente) que é chamada a função atual. No entanto, o artigo não está listado para venda imediatamente.

  3. Uma função ListitemForVenda que permite ao vendedor de um item listar para venda. Usamos a função require para ter certeza de que apenas o vendedor pode listar o item à venda.

  4. Uma função BuyItem que permite que alguém compre um item. A função verifica se o artigo está à venda, o comprador não é o vendedor e o preço correto foi enviado. Se essas condições forem atendidas, a função envia o dinheiro para o vendedor e marca o item como não à venda.

Implementar e interagir com o Contrato de Marketplace

Depois de escrever o contrato Marketplace, o próximo passo é compilá-lo e implementá-lo. Pode usar o 'plugin' Soliity Compiler no Remix para compilar o contrato, tal como fizemos na Lição 1.

Para implementar o contrato, vá para o plugin Deploy & Run Transactions (o que tem o ícone do cubo) no painel direito. Escolha o ambiente apropriado (JavaScript VM para simulação), selecione o contrato Marketplace no menu suspenso Contrato e clique no botão Implementar.

Assim que o contrato for implementado, aparecerá na seção Contratos Implementados. Pode expandi-lo para ver as suas variáveis e funções do estado público. Pode criar, listar e comprar itens ligando para essas funções.

Para criar um item, digite um nome e um preço e clique no botão CreateItem. Para listar um item à venda, insira a identificação do item e clique no botão ListitemForVenda. Para comprar um item, insira a identificação do item, envie a quantidade correta de Éter e clique no botão Comprar-Item.

Parabéns! Sabe agora como criar um mercado básico descentralizado na cadeia de blocos Ethereum.

Na próxima lição, vamos melhorar o nosso mercado adicionando funcionalidade para remover itens de venda e atualizar o preço de um item. Fique atento!

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。