Esercizio - Scrivere il primo contratto

Completato

Basandosi su quanto appreso, si scriverà un contratto intelligente completo.

In questo esempio si userà Solidity per creare un contratto intelligente per un marketplace online semplice. Questo contratto consentirà agli utenti di mettere in vendita un articolo e di acquistare un articolo disponibile. Sono coinvolti due ruoli: un venditore e un acquirente.

Esempi di marketplace semplice

pragma solidity >0.7.0 <0.8.0;

contract Marketplace {
    address public seller;
    address public buyer;
    mapping (address => uint) public balances;

    event ListItem(address seller, uint price);
    event PurchasedItem(address seller, address buyer, uint price);

    enum StateType {
          ItemAvailable,
          ItemPurchased
    }

    StateType public State;

    constructor() public {
        seller = msg.sender;
        State = StateType.ItemAvailable;
    }

    function buy(address seller, address buyer, uint price) public payable {
        require(price <= balances[buyer], "Insufficient balance");
        State = StateType.ItemPurchased;
        balances[buyer] -= price;
        balances[seller] += price;

        emit PurchasedItem(seller, buyer, msg.value);
    }
}    

Si esamineranno ora in dettaglio i componenti principali del contratto intelligente:

  • Ci sono:
    • Tre variabili di stato: buyer, sellere balances
    • Due eventi: ListItem e PurchasedItem
    • Un'enumerazione con due valori: ItemAvailable e ItemPurchased
  • Il costruttore assegna l'utente venditore come msg.sender e imposta lo stato iniziale su ItemAvailable. Questo costruttore viene chiamato quando il contratto viene creato.
  • La funzione buy accetta tre parametri: seller, buyer e price. Richiede che l'acquirente abbia denaro sufficiente per l'acquisto. Trasferisce quindi il denaro dall'acquirente al venditore e infine viene generato un messaggio.

Passaggi successivi

Passare all'IDE Remix per esplorare altri esempi di contratti intelligenti in Solidity. Remix è un ambiente IDE nel browser che consente di iniziare subito a lavorare senza dover creare un account o effettuare l'accesso. È possibile scrivere, testare, compilare e distribuire immediatamente contratti.

Copiare e incollare questo contratto intelligente in Remix in un nuovo file denominato Marketplace.sol, quindi compilare e distribuire il contratto. Anche se il contratto ha una funzione per l'acquisto di un articolo disponibile, si noterà che non è possibile concedere all'acquirente una valuta per effettuare l'acquisto. Come ulteriore sfida, usare quanto si è appreso per scrivere una funzione con cui assegnare all'acquirente un saldo, fornendo l'indirizzo di un account e un importo. Se si vuole vedere un esempio di come eseguire questa operazione, vedere Dr. G aggiungere una funzione per inizializzare un equilibrio per i partecipanti.