Come implementare un market ERC-721
In questo articolo, ti mostrerò come sviluppare in Craigslist per la blockchain Ethereum.
Prima di Gumtree, Ebay e Craigstlist, le bacheche di annunci erano più che altro di sughero o carta. C'erano bacheche nei corridoi delle scuole, sui giornali, sui lampioni o sulle vetrine.
Con Internet è cambiato tutto. Il numero di persone che potevano vedere una determinata bacheca di annunci si è moltiplicato a livello esponenziale. Di conseguenza, i mercati che rappresentano sono diventati molto più efficienti e si rivolgono a livello globale. Ebay è un business enorme che ha le sue origini proprio in queste bacheche di annunci fisiche.
Con la blockchain questi mercati sono destinati a cambiare di nuovo, vediamo come.
Monetizzazione
Il modello di business di una bacheca di annunci su blockchain pubblica sarà diverso da quello di Ebay e simili.
Prima di tutto, c'è la questione della decentralizzazione. Le piattaforme esistenti devono mantenere i loro server. Una piattaforma decentralizzata è gestita dai suoi utenti, quindi il costo per tenere attiva la piattaforma base scende a zero per il proprietario della piattaforma.
Poi c'è il front end, ossia il sito Web o l'interfaccia che dà accesso alla piattaforma. Qua ci sono molte opzioni. Il proprietario della piattaforma può limitare l'accesso e costringere tutti a usare la propria interfaccia, imponendo un costo di utilizzo. I proprietari della piattaforma possono anche decidere di lasciare libero l'accesso (potere al popolo!) e di permettere che chiunque crei interfacce per la piattaforma. Oppure, potrebbero decidere qualsiasi altro tipo di approccio tra questi due estremi.
Chi si occupa di affari e ha più visione di me saprà come monetizzare tutto questo. Tutto quello che io riesco a capire è che questo è diverso dallo status quo e probabilmente redditizio.
In più, c'è la questione dell'automazione e dei pagamenti. Alcuni articoli si prestano molto ad essere tokenizzati in modo efficace(opens in a new tab) e scambiati in una bacheca di annunci. Le risorse tokenizzate sono facilmente trasferibili su una blockchain. Metodi di pagamento altamente complessi possono essere facilmente implementati su una blockchain.
Sento odore di business. Una bacheca di annunci senza costi di gestione può facilmente essere implementata con complessi percorsi di pagamento inclusi in ogni transazione. Sono sicuro che qualcuno verrà fuori con qualche idea su come utilizzare tutto questo.
Io sono felice di occuparmi della programmazione. Diamo un'occhiata al codice.
Implementazione
Un po' di tempo fa abbiamo iniziato un repository open source(opens in a new tab) con implementazioni di esempio e altre cose interessanti, consiglio di dare una sbirciata.
Il codice di questa bacheca di annunci Ethereum(opens in a new tab) è qui, potete usarlo e anche abusarne. Occhio solo che non è stato verificato e quindi fate molta attenzione prima di metterci dei soldi.
Le basi della bacheca non sono difficili. Tutti gli annunci della bacheca saranno semplicemente uno struct con pochi campi:
1struct Trade {2 address poster;3 uint256 item;4 uint256 price;5 bytes32 status; // Open, Executed, Cancelled6}7Copia
Supponiamo che ci sia qualcuno che pubblica l'annuncio. Un oggetto in vendita. Un prezzo per l'oggetto. Lo stato dello scambio che può essere aperto, chiuso o annullato.
Tutti questi scambi saranno tenuti in un mapping. Perché tutto in Solidity sembra essere un mapping. E anche perché è comodo.
1mapping(uint256 => Trade) public trades;2Copia
Usare un mapping significa solo che dobbiamo trovare un ID per ogni annuncio prima di pubblicarlo e che dovremo conoscere l'ID di un annuncio prima di poter lavorare su di esso. Ci sono molti modi per affrontare questo problema sia con gli Smart Contract che nel front end. Chiedi se ti servono delle indicazioni.
La seconda questione è capire quali sono gli elementi con cui lavoriamo e qual è la valuta che deve essere usata per pagare la transazione.
Per gli elementi, chiederemo solo che implementino l'interfaccia ERC-721(opens in a new tab), che è semplicemente un modo per rappresentare gli oggetti del mondo reale su una blockchain, anche se funziona meglio con le risorse digitali(opens in a new tab). Specificheremo il nostro contratto ERC271 nel costruttore, dicendo che ogni risorsa della nostra bacheca di annunci deve prima essere tokenizzata.
Per i pagamenti, faremo qualcosa di simile. La maggior parte dei progetti di blockchain definisce la propria criptovaluta ERC-20(opens in a new tab)