Cara mengimplementasikan pasar ERC-721
Dalam artikel ini, saya akan menunjukkan kepada Anda cara memprogram Craigslist untuk blockchain 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 itu, 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 blockchain, pasar-pasar ini akan berubah sekali lagi, izinkan saya menunjukkan caranya.
Monetisasi
Model bisnis dari papan iklan baris blockchain publik harus berbeda dari Ebay dan perusahaannya.
Pertama, ada sudut pandang desentralisasi. Platform yang ada perlu memelihara server mereka sendiri. Platform terdesentralisasi dipelihara oleh penggunanya, sehingga biaya 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. Atau pemilik dapat memutuskan pendekatan apa pun di tengah-tengah ekstrem tersebut.
Pemimpin bisnis dengan visi yang lebih 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 blockchain. Metode pembayaran yang sangat kompleks dapat dengan mudah diimplementasikan dalam blockchain.
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:
1struct Trade {2 address poster;3 uint256 item;4 uint256 price;5 bytes32 status; // Open, Executed, Cancelled // Terbuka, Dieksekusi, Dibatalkan6}Jadi ada seseorang yang memposting iklan. Sebuah barang untuk dijual. Harga untuk barang tersebut. Status perdagangan yang bisa terbuka, dieksekusi, atau dibatalkan.
Semua perdagangan ini akan disimpan dalam sebuah pemetaan (mapping). Karena segala sesuatu di Solidity tampaknya berupa pemetaan. Juga karena ini nyaman.
1mapping(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 beberapa cara untuk menangani ini baik di kontrak pintar maupun di front-end. Silakan bertanya jika Anda memerlukan beberapa petunjuk.
Selanjutnya muncul pertanyaan tentang apa barang-barang yang kita tangani ini, dan apa mata uang yang digunakan untuk membayar transaksi ini.
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 blockchain, meskipun ini berfungsi paling baik dengan aset digital (opens in a new tab). Kita akan menentukan kontrak ERC-721 kita sendiri di konstruktor, yang berarti bahwa setiap aset di papan iklan baris kita harus telah ditokenisasi sebelumnya.
Untuk pembayaran, kita akan melakukan hal yang serupa. Sebagian besar proyek blockchain 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.
1constructor (2 address _currencyTokenAddress, address _itemTokenAddress3) public {4 currencyToken = IERC20(_currencyTokenAddress);5 itemToken = IERC721(_itemTokenAddress);6 tradeCounter = 0;7}Kita hampir sampai. Kita punya iklan, barang untuk diperdagangkan, dan mata uang untuk pembayaran. Membuat iklan berarti menempatkan barang di escrow 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 escrow, membuat iklan, melakukan beberapa pembersihan.
1function openTrade(uint256 _item, uint256 _price)2 public3{4 itemToken.transferFrom(msg.sender, address(this), _item);5 trades[tradeCounter] = Trade({6 poster: msg.sender,7 item: _item,8 price: _price,9 status: "Open"10 });11 tradeCounter += 1;12 emit TradeStatusChange(tradeCounter - 1, "Open");13}Tampilkan semuaMenerima perdagangan berarti memilih iklan (perdagangan), membayar harganya, menerima barangnya. Kode di bawah ini mengambil sebuah perdagangan. Memeriksa ketersediaannya. Membayar barang tersebut. Mengambil barang tersebut. Memperbarui iklan.
1function executeTrade(uint256 _trade)2 public3{4 Trade memory trade = trades[_trade];5 require(trade.status == "Open", "Trade is not Open.");6 currencyToken.transferFrom(msg.sender, trade.poster, trade.price);7 itemToken.transferFrom(address(this), msg.sender, trade.item);8 trades[_trade].status = "Executed";9 emit TradeStatusChange(_trade, "Executed");10}Tampilkan semuaTerakhir, 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 pembuat iklan.
1function cancelTrade(uint256 _trade)2 public3{4 Trade memory trade = trades[_trade];5 require(6 msg.sender == trade.poster,7 "Trade can be cancelled only by poster."8 );9 require(trade.status == "Open", "Trade is not Open.");10 itemToken.transferFrom(address(this), trade.poster, trade.item);11 trades[_trade].status = "Cancelled";12 emit TradeStatusChange(_trade, "Cancelled");13}Tampilkan semuaItu 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 besar dengan adanya internet, menjadi model bisnis yang sangat populer dengan beberapa pemenang monopolistik.
Papan iklan baris juga kebetulan merupakan alat yang mudah untuk direplikasi dalam lingkungan blockchain, dengan fitur-fitur yang sangat spesifik yang akan memungkinkan tantangan terhadap raksasa yang ada.
Dalam artikel ini, saya mencoba menjembatani realitas bisnis dari bisnis papan iklan baris dengan implementasi teknologinya. Pengetahuan ini akan 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 akan menyambut beberapa saran, silakan hubungi saya (opens in a new tab)! Saya selalu senang membantu.
Pembaruan terakhir halaman: 3 Maret 2026