Lompat ke konten utama

Cara mengimplementasikan pasar ERC-721

kontrak pintar
erc-721
Solidity
token
Menengah
Alberto Cuesta Cañada
19 Maret 2020
5 menit baca

Dalam artikel ini, saya akan menunjukkan kepada Anda cara memprogram Craigslist untuk rantai blok Ethereum.

Sebelum Gumtree, Ebay, dan Craigslist, papan iklan baris sebagian besar terbuat dari gabus atau kertas. Ada papan iklan baris di koridor sekolah, surat kabar, lampu jalan, dan etalase toko.

Semua itu berubah dengan adanya internet. Jumlah orang yang dapat melihat papan iklan baris tertentu berlipat ganda hingga beberapa kali lipat. Dengan demikian, pasar yang mereka wakili menjadi jauh lebih efisien dan berskala global. Ebay adalah bisnis besar yang menelusuri asal-usulnya dari papan iklan baris fisik ini.

Dengan rantai blok, pasar-pasar ini akan berubah sekali lagi, izinkan saya menunjukkan caranya.

Monetisasi

Model bisnis dari papan iklan baris rantai blok publik harus berbeda dari Ebay dan perusahaannya.

Pertama, ada sudut pandang desentralisasi. Platform yang ada saat ini perlu memelihara server mereka sendiri. Platform terdesentralisasi dipelihara oleh penggunanya, sehingga biaya untuk menjalankan platform inti turun menjadi nol bagi pemilik platform.

Kemudian ada front end, situs web atau antarmuka yang memberikan akses ke platform. Di sini ada banyak pilihan. Pemilik platform dapat membatasi akses dan memaksa semua orang untuk menggunakan antarmuka mereka, dengan mengenakan biaya. Pemilik platform juga dapat memutuskan untuk membuka akses (Kekuatan untuk Rakyat!) dan membiarkan siapa saja membangun antarmuka ke platform tersebut. Atau pemilik dapat memutuskan pendekatan apa pun di antara kedua ekstrem tersebut.

Pemimpin bisnis dengan visi yang lebih luas dari saya akan tahu cara memonetisasi ini. Yang saya lihat hanyalah bahwa ini berbeda dari status quo dan mungkin menguntungkan.

Selain itu, ada sudut pandang otomatisasi dan pembayaran. Beberapa hal dapat ditokenisasi dengan sangat efektif (opens in a new tab) dan diperdagangkan di papan iklan baris. Aset yang ditokenisasi mudah ditransfer dalam rantai blok. Metode pembayaran yang sangat kompleks dapat dengan mudah diimplementasikan dalam rantai blok.

Saya hanya mencium peluang bisnis di sini. Papan iklan baris tanpa biaya operasional dapat dengan mudah diimplementasikan, dengan jalur pembayaran kompleks yang disertakan dalam setiap transaksi. Saya yakin seseorang akan menemukan ide tentang untuk apa ini digunakan.

Saya hanya senang membangunnya. Mari kita lihat kodenya.

Implementasi

Beberapa waktu lalu kami memulai repositori sumber terbuka (opens in a new tab) dengan contoh implementasi kasus bisnis dan hal-hal menarik lainnya, silakan lihat.

Kode untuk Papan Iklan Baris Ethereum (opens in a new tab) ini ada di sana, silakan gunakan dan manfaatkan. Hanya saja, perlu disadari bahwa kode tersebut belum diaudit dan Anda perlu melakukan uji tuntas sendiri sebelum memasukkan uang ke dalamnya.

Dasar-dasar papan ini tidaklah rumit. Semua iklan di papan hanya akan berupa struct dengan beberapa bidang:

struct Trade {
  address poster;
  uint256 item;
  uint256 price;
  bytes32 status; // Terbuka, Dieksekusi, Dibatalkan
}

Jadi ada seseorang yang memasang iklan. Sebuah barang untuk dijual. Harga untuk barang tersebut. Status perdagangan yang bisa berupa terbuka, dieksekusi, atau dibatalkan.

Semua perdagangan ini akan disimpan dalam sebuah pemetaan (mapping). Karena segala sesuatu di Solidity tampaknya berupa pemetaan. Juga karena ini praktis.

mapping(uint256 => Trade) public trades;

Menggunakan pemetaan hanya berarti bahwa kita harus membuat id untuk setiap iklan sebelum mempostingnya, dan kita perlu mengetahui id dari sebuah iklan sebelum kita dapat mengoperasikannya. Ada banyak cara untuk menangani hal ini baik di dalam kontrak pintar maupun di front-end. Silakan bertanya jika Anda membutuhkan beberapa petunjuk.

Selanjutnya muncul pertanyaan tentang apa saja barang-barang yang kita tangani, dan apa mata uang yang digunakan untuk membayar transaksi tersebut.

Untuk barang-barang tersebut, kita hanya akan meminta agar mereka mengimplementasikan antarmuka ERC-721 (opens in a new tab), yang sebenarnya hanyalah cara untuk merepresentasikan barang-barang dunia nyata dalam rantai blok, meskipun ini berfungsi paling baik dengan aset digital (opens in a new tab). Kita akan menentukan kontrak ERC721 kita sendiri di dalam konstruktor, yang berarti bahwa setiap aset di papan iklan baris kita harus sudah ditokenisasi sebelumnya.

Untuk pembayaran, kita akan melakukan hal yang serupa. Sebagian besar proyek rantai blok mendefinisikan mata uang kripto ERC-20 (opens in a new tab) mereka sendiri. Beberapa yang lain lebih suka menggunakan yang umum seperti DAI. Di papan iklan baris ini, Anda hanya perlu memutuskan pada saat konstruksi apa mata uang Anda nantinya. Mudah.

constructor (
  address _currencyTokenAddress, address _itemTokenAddress
) public {
  currencyToken = IERC20(_currencyTokenAddress);
  itemToken = IERC721(_itemTokenAddress);
  tradeCounter = 0;
}

Kita hampir sampai. Kita sudah memiliki iklan, barang untuk diperdagangkan, dan mata uang untuk pembayaran. Membuat iklan berarti menempatkan barang di eskro untuk menunjukkan bahwa Anda memilikinya dan bahwa Anda belum mempostingnya dua kali, mungkin di papan yang berbeda.

Kode di bawah ini melakukan hal tersebut. Menempatkan barang di eskro, membuat iklan, dan melakukan beberapa pembersihan.

Menerima perdagangan berarti memilih iklan (perdagangan), membayar harganya, dan menerima barangnya. Kode di bawah ini mengambil sebuah perdagangan. Memeriksa ketersediaannya. Membayar barang tersebut. Mengambil barang tersebut. Memperbarui iklan.

Terakhir, kita memiliki opsi bagi penjual untuk mundur dari perdagangan sebelum pembeli menerimanya. Dalam beberapa model, iklan justru akan tayang selama jangka waktu tertentu sebelum kedaluwarsa. Pilihan Anda, tergantung pada desain pasar Anda.

Kodenya sangat mirip dengan yang digunakan untuk mengeksekusi perdagangan, hanya saja tidak ada mata uang yang berpindah tangan dan barang tersebut kembali ke pemasang iklan.

Itu saja. Anda berhasil mencapai akhir implementasi. Cukup mengejutkan betapa ringkasnya beberapa konsep bisnis ketika diekspresikan dalam kode, dan ini adalah salah satu kasus tersebut. Periksa kontrak lengkapnya di repo kami (opens in a new tab).

Kesimpulan

Papan iklan baris adalah konfigurasi pasar umum yang berskala masif dengan adanya internet, menjadi model bisnis yang sangat populer dengan beberapa pemenang monopolistik.

Papan iklan baris juga kebetulan merupakan alat yang mudah direplikasi dalam lingkungan rantai blok, dengan fitur-fitur yang sangat spesifik yang akan memungkinkan adanya tantangan terhadap raksasa yang sudah ada.

Dalam artikel ini, saya mencoba menjembatani realitas bisnis dari bisnis papan iklan baris dengan implementasi teknologinya. Pengetahuan ini seharusnya membantu Anda untuk menciptakan visi dan peta jalan untuk implementasi jika Anda memiliki keterampilan yang tepat.

Seperti biasa, jika Anda ingin membangun sesuatu yang menyenangkan dan membutuhkan saran, silakan hubungi saya (opens in a new tab)! Saya selalu senang membantu.