Урок 2

Listagem e negociação de itens

Nesta lição, expandiremos nosso contrato de item para lidar com a listagem e negociação de itens em nosso mercado. Aprenderemos como adicionar, listar e remover itens, bem como os princípios básicos de compra e venda de itens. Também aprenderemos como implantar nosso contrato e interagir com ele no Remix IDE.

Construindo o Contrato de Mercado

Agora transformaremos nosso contrato Item simples em um contrato Marketplace mais complexo. O contrato do Marketplace manterá uma lista de itens à venda, fornecerá uma maneira para os usuários listarem novos itens à venda e fornecerá uma maneira para os usuários comprarem itens.

Para fazer isso, adicionaremos alguns novos recursos ao nosso contrato:

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

  2. Apresentaremos uma nova função listItemForSale que permite aos usuários listar novos itens à venda.

  3. Apresentaremos uma nova função buyItem que permite aos usuários comprar um item.

Esta é a aparência do contrato do Marketplace :

Solidez 
 // Identificador de licença SPDX: solidez do pragma MIT 
 ^0.8.6; 

 contract Marketplace { 
 // Define uma nova estrutura para os itens 
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Array para conter todos os itens 
 Item[] public items; 

 // Evento que será emitido quando um novo item for criado 
 event NewItem(uint itemId, string itemName, uint itemPrice, address seller); 

 // Evento que será emitido quando um item for colocado à venda 
 event ItemListed(uint itemId, string itemName, uint itemPrice, address seller); 

 // Evento que será emitido quando um item for comprado 
 event ItemBought(uint itemId, string itemName, uint itemPrice, endereço vendedor, endereço comprador); 

 // Função para criar um novo item, mas não listá-lo para venda imediatamente 
 function createItem(string memory _name, uint _price) public {
    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 para venda 
 function listItemForSale(uint _itemId) public {
        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 
 function buyItem(uint _itemId) public payable {
        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 estrutura Item que agora inclui um endereço seller e um booleano forSale . O seller é o proprietário do item e forSale indica se o item está atualmente listado para venda.

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

  3. Uma função listItemForSale que permite ao vendedor de um item listá-lo para venda. Usamos a função require para garantir que apenas o vendedor possa listar o item à venda.

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

Implantando e interagindo com o contrato do Marketplace

Depois de redigir o contrato Marketplace , a próxima etapa é compilá-lo e implantá-lo. Você pode usar o plugin Solidity Compiler no Remix para compilar o contrato, assim como fizemos na Lição 1.

Para implantar o contrato, acesse o plugin Deploy & Run Transactions (aquele com o ícone do cubo) no painel direito. Escolha o ambiente apropriado (JavaScript VM para simulação), selecione o contrato do Marketplace no menu suspenso Contrato e clique no botão Implantar.

Assim que o contrato for implantado, ele aparecerá na seção Contratos Implantados. Você pode expandi-lo para ver suas variáveis e funções de estado público. Você pode criar, listar e comprar itens chamando essas funções.

Para criar um item, insira um nome e um preço e clique no botão createItem . Para listar um item à venda, insira o ID do item e clique no botão listItemForSale . Para comprar um item, insira o ID do item, envie a quantidade correta de Ether e clique no botão buyItem .

Parabéns! Agora você sabe como criar um mercado descentralizado básico na blockchain Ethereum.

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

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 2

Listagem e negociação de itens

Nesta lição, expandiremos nosso contrato de item para lidar com a listagem e negociação de itens em nosso mercado. Aprenderemos como adicionar, listar e remover itens, bem como os princípios básicos de compra e venda de itens. Também aprenderemos como implantar nosso contrato e interagir com ele no Remix IDE.

Construindo o Contrato de Mercado

Agora transformaremos nosso contrato Item simples em um contrato Marketplace mais complexo. O contrato do Marketplace manterá uma lista de itens à venda, fornecerá uma maneira para os usuários listarem novos itens à venda e fornecerá uma maneira para os usuários comprarem itens.

Para fazer isso, adicionaremos alguns novos recursos ao nosso contrato:

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

  2. Apresentaremos uma nova função listItemForSale que permite aos usuários listar novos itens à venda.

  3. Apresentaremos uma nova função buyItem que permite aos usuários comprar um item.

Esta é a aparência do contrato do Marketplace :

Solidez 
 // Identificador de licença SPDX: solidez do pragma MIT 
 ^0.8.6; 

 contract Marketplace { 
 // Define uma nova estrutura para os itens 
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Array para conter todos os itens 
 Item[] public items; 

 // Evento que será emitido quando um novo item for criado 
 event NewItem(uint itemId, string itemName, uint itemPrice, address seller); 

 // Evento que será emitido quando um item for colocado à venda 
 event ItemListed(uint itemId, string itemName, uint itemPrice, address seller); 

 // Evento que será emitido quando um item for comprado 
 event ItemBought(uint itemId, string itemName, uint itemPrice, endereço vendedor, endereço comprador); 

 // Função para criar um novo item, mas não listá-lo para venda imediatamente 
 function createItem(string memory _name, uint _price) public {
    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 para venda 
 function listItemForSale(uint _itemId) public {
        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 
 function buyItem(uint _itemId) public payable {
        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 estrutura Item que agora inclui um endereço seller e um booleano forSale . O seller é o proprietário do item e forSale indica se o item está atualmente listado para venda.

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

  3. Uma função listItemForSale que permite ao vendedor de um item listá-lo para venda. Usamos a função require para garantir que apenas o vendedor possa listar o item à venda.

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

Implantando e interagindo com o contrato do Marketplace

Depois de redigir o contrato Marketplace , a próxima etapa é compilá-lo e implantá-lo. Você pode usar o plugin Solidity Compiler no Remix para compilar o contrato, assim como fizemos na Lição 1.

Para implantar o contrato, acesse o plugin Deploy & Run Transactions (aquele com o ícone do cubo) no painel direito. Escolha o ambiente apropriado (JavaScript VM para simulação), selecione o contrato do Marketplace no menu suspenso Contrato e clique no botão Implantar.

Assim que o contrato for implantado, ele aparecerá na seção Contratos Implantados. Você pode expandi-lo para ver suas variáveis e funções de estado público. Você pode criar, listar e comprar itens chamando essas funções.

Para criar um item, insira um nome e um preço e clique no botão createItem . Para listar um item à venda, insira o ID do item e clique no botão listItemForSale . Para comprar um item, insira o ID do item, envie a quantidade correta de Ether e clique no botão buyItem .

Parabéns! Agora você sabe como criar um mercado descentralizado básico na blockchain Ethereum.

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

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.