Di pasar e-commerce tradisional, seperti Amazon dan eBay, otoritas pusat memfasilitasi transaksi antara pembeli dan penjual. Otoritas pusat ini mengontrol transaksi, memelihara daftar produk, dan mengelola penyelesaian sengketa. Meskipun model terpusat ini memiliki kelebihan, model ini juga memiliki beberapa kelemahan, termasuk risiko sensor, biaya tinggi, dan ketergantungan pada kepercayaan.
Di sisi lain, pasar terdesentralisasi memanfaatkan teknologi blockchain untuk memungkinkan transaksi peer-to-peer tanpa perantara. Ini menghilangkan kebutuhan akan kepercayaan karena transaksi transparan dan dapat diverifikasi oleh semua peserta di blockchain. Contoh pasar terdesentralisasi termasuk OpenBazaar dan Origin Protocol.
Remix IDE (Integrated Development Environment) adalah alat sumber terbuka yang kuat yang dirancang khusus untuk pengembangan kontrak pintar Ethereum. Ini berjalan langsung di browser web Anda, jadi Anda tidak perlu menginstal apa pun di komputer Anda.
Anda dapat mengakses Remix IDE di https://remix.ethereum.org. Saat Anda membuka Remix di browser Anda, Anda akan menemukan tiga panel:
Panel Kiri: Di sinilah Anda dapat membuat, mengimpor, dan mengelola file Soliditas Anda. Ini juga mencakup berbagai plugin untuk kompilasi, pengujian, debugging, dan penerapan kontrak Anda.
Panel Pusat: Ini adalah editor kode Anda. Di sini Anda akan menulis dan mengedit kode Soliditas Anda.
Panel Kanan: Panel ini menyediakan berbagai alat untuk mengkompilasi kontrak Anda, menyebarkannya di jaringan Ethereum (baik di jaringan Ethereum nyata atau simulasi JavaScript VM), dan berinteraksi dengan kontrak yang Anda terapkan.
Pada bagian ini, kita akan menulis kontrak Soliditas pertama kita. Kontrak ini akan mewakili “Item” dasar di pasar kami.
Untuk memulai, buat file baru di Remix dengan mengklik ikon kedua dari atas di panel kiri (ikon file). Dialog baru akan muncul di panel tengah. Masukkan Item.sol
sebagai nama file dan klik “OK”.
Soliditas
// Pengenal Lisensi SPDX: soliditas pragma MIT
^0.8.6;
item kontrak {
// Mendefinisikan event yang akan diaktifkan ketika item baru dibuat
event NewItem(uint itemId, string itemName, uint itemPrice);
// Setiap Item mempunyai id, nama dan harga
struct ItemStruct {
string name;
uint price;
}
// Array untuk menampung semua item
ItemStruct[] item publik;
// Fungsi untuk membuat item baru
fungsi createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
Pengenal Lisensi SPDX: Ini adalah cara standar untuk menyatakan lisensi kontrak. Baris // SPDX-License-Identifier: MIT
menunjukkan bahwa kontrak kami menggunakan lisensi MIT yang permisif.
Petunjuk Pragma: pragma solidity ^0.8.6;
menentukan bahwa kontrak ditulis dalam Solidity versi 0.8.6. Simbol ^
berarti juga kompatibel dengan versi terbaru hingga, namun tidak termasuk, versi 0.9.0.
Definisi Kontrak: contract Item {...}
mendefinisikan kontrak baru yang disebut Item
. Di sinilah kita menulis variabel keadaan dan fungsi kontrak.
Definisi Peristiwa: event NewItem(uint itemId, string itemName, uint itemPrice);
mendefinisikan peristiwa yang dapat kita pancarkan setiap kali item baru dibuat. Peristiwa adalah cara kontrak pintar mencatat aktivitas yang dapat didengarkan oleh pihak eksternal.
Definisi Struct: struct ItemStruct {...}
mendefinisikan tipe data baru ItemStruct
, yang mewakili Item dengan name
dan price
.
Variabel Status: ItemStruct[] public items;
mendeklarasikan variabel status items
yang menampung array ItemStruct
s. Kata kunci public
secara otomatis membuat fungsi pengambil yang memungkinkan siapa pun mengakses daftar item.
Definisi Fungsi: function createItem(string memory _name, uint _price) public {...}
mendefinisikan fungsi publik yang dapat dipanggil oleh siapa saja untuk membuat item baru. Fungsi ini mengambil nama dan harga, membuat ItemStruct
baru, menambahkannya ke array items
, dan memunculkan event NewItem
.
Untuk menyusun kontrak ini, buka panel kanan dan klik ikon ketiga dari atas (logo Soliditas). Di sini Anda dapat mengkompilasi kontrak. Klik tombol “Kompilasi” dan jika tidak ada kesalahan, kontrak Anda akan berhasil dikompilasi.
IPFS: InterPlanetary File System (IPFS) adalah protokol yang dirancang untuk membuat web permanen dan terdesentralisasi. Ini seperti sekumpulan BitTorrent, bertukar objek dalam satu repositori Git.
Swarm: Swarm adalah platform penyimpanan terdistribusi dan layanan distribusi konten asli dari tumpukan web3 Ethereum. Ini memungkinkan jaringan rekan untuk menyimpan dan mendistribusikan data.
Saat Anda mengkompilasi kontrak, compiler Solidity menghasilkan file JSON yang berisi Application Binary Interface (ABI) dan bytecode-nya, serta informasi lainnya. Ini disebut metadata kontrak. Menyimpan metadata ini di jaringan penyimpanan terdesentralisasi memastikan metadata tersedia secara permanen, dan berguna untuk memverifikasi kode sumber kontrak.
Namun, untuk tujuan pembelajaran Anda dan jika Anda tidak berencana memverifikasi kontrak di Etherscan atau penjelajah blok lainnya, Anda dapat memilih Swarm atau IPFS, atau Anda dapat mengabaikannya dan melanjutkan ke langkah pembelajaran Anda berikutnya. Ingat, fokus utama pada tahap ini adalah memahami cara menulis, menyusun, dan menerapkan kontrak.
Di pasar e-commerce tradisional, seperti Amazon dan eBay, otoritas pusat memfasilitasi transaksi antara pembeli dan penjual. Otoritas pusat ini mengontrol transaksi, memelihara daftar produk, dan mengelola penyelesaian sengketa. Meskipun model terpusat ini memiliki kelebihan, model ini juga memiliki beberapa kelemahan, termasuk risiko sensor, biaya tinggi, dan ketergantungan pada kepercayaan.
Di sisi lain, pasar terdesentralisasi memanfaatkan teknologi blockchain untuk memungkinkan transaksi peer-to-peer tanpa perantara. Ini menghilangkan kebutuhan akan kepercayaan karena transaksi transparan dan dapat diverifikasi oleh semua peserta di blockchain. Contoh pasar terdesentralisasi termasuk OpenBazaar dan Origin Protocol.
Remix IDE (Integrated Development Environment) adalah alat sumber terbuka yang kuat yang dirancang khusus untuk pengembangan kontrak pintar Ethereum. Ini berjalan langsung di browser web Anda, jadi Anda tidak perlu menginstal apa pun di komputer Anda.
Anda dapat mengakses Remix IDE di https://remix.ethereum.org. Saat Anda membuka Remix di browser Anda, Anda akan menemukan tiga panel:
Panel Kiri: Di sinilah Anda dapat membuat, mengimpor, dan mengelola file Soliditas Anda. Ini juga mencakup berbagai plugin untuk kompilasi, pengujian, debugging, dan penerapan kontrak Anda.
Panel Pusat: Ini adalah editor kode Anda. Di sini Anda akan menulis dan mengedit kode Soliditas Anda.
Panel Kanan: Panel ini menyediakan berbagai alat untuk mengkompilasi kontrak Anda, menyebarkannya di jaringan Ethereum (baik di jaringan Ethereum nyata atau simulasi JavaScript VM), dan berinteraksi dengan kontrak yang Anda terapkan.
Pada bagian ini, kita akan menulis kontrak Soliditas pertama kita. Kontrak ini akan mewakili “Item” dasar di pasar kami.
Untuk memulai, buat file baru di Remix dengan mengklik ikon kedua dari atas di panel kiri (ikon file). Dialog baru akan muncul di panel tengah. Masukkan Item.sol
sebagai nama file dan klik “OK”.
Soliditas
// Pengenal Lisensi SPDX: soliditas pragma MIT
^0.8.6;
item kontrak {
// Mendefinisikan event yang akan diaktifkan ketika item baru dibuat
event NewItem(uint itemId, string itemName, uint itemPrice);
// Setiap Item mempunyai id, nama dan harga
struct ItemStruct {
string name;
uint price;
}
// Array untuk menampung semua item
ItemStruct[] item publik;
// Fungsi untuk membuat item baru
fungsi createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
Pengenal Lisensi SPDX: Ini adalah cara standar untuk menyatakan lisensi kontrak. Baris // SPDX-License-Identifier: MIT
menunjukkan bahwa kontrak kami menggunakan lisensi MIT yang permisif.
Petunjuk Pragma: pragma solidity ^0.8.6;
menentukan bahwa kontrak ditulis dalam Solidity versi 0.8.6. Simbol ^
berarti juga kompatibel dengan versi terbaru hingga, namun tidak termasuk, versi 0.9.0.
Definisi Kontrak: contract Item {...}
mendefinisikan kontrak baru yang disebut Item
. Di sinilah kita menulis variabel keadaan dan fungsi kontrak.
Definisi Peristiwa: event NewItem(uint itemId, string itemName, uint itemPrice);
mendefinisikan peristiwa yang dapat kita pancarkan setiap kali item baru dibuat. Peristiwa adalah cara kontrak pintar mencatat aktivitas yang dapat didengarkan oleh pihak eksternal.
Definisi Struct: struct ItemStruct {...}
mendefinisikan tipe data baru ItemStruct
, yang mewakili Item dengan name
dan price
.
Variabel Status: ItemStruct[] public items;
mendeklarasikan variabel status items
yang menampung array ItemStruct
s. Kata kunci public
secara otomatis membuat fungsi pengambil yang memungkinkan siapa pun mengakses daftar item.
Definisi Fungsi: function createItem(string memory _name, uint _price) public {...}
mendefinisikan fungsi publik yang dapat dipanggil oleh siapa saja untuk membuat item baru. Fungsi ini mengambil nama dan harga, membuat ItemStruct
baru, menambahkannya ke array items
, dan memunculkan event NewItem
.
Untuk menyusun kontrak ini, buka panel kanan dan klik ikon ketiga dari atas (logo Soliditas). Di sini Anda dapat mengkompilasi kontrak. Klik tombol “Kompilasi” dan jika tidak ada kesalahan, kontrak Anda akan berhasil dikompilasi.
IPFS: InterPlanetary File System (IPFS) adalah protokol yang dirancang untuk membuat web permanen dan terdesentralisasi. Ini seperti sekumpulan BitTorrent, bertukar objek dalam satu repositori Git.
Swarm: Swarm adalah platform penyimpanan terdistribusi dan layanan distribusi konten asli dari tumpukan web3 Ethereum. Ini memungkinkan jaringan rekan untuk menyimpan dan mendistribusikan data.
Saat Anda mengkompilasi kontrak, compiler Solidity menghasilkan file JSON yang berisi Application Binary Interface (ABI) dan bytecode-nya, serta informasi lainnya. Ini disebut metadata kontrak. Menyimpan metadata ini di jaringan penyimpanan terdesentralisasi memastikan metadata tersedia secara permanen, dan berguna untuk memverifikasi kode sumber kontrak.
Namun, untuk tujuan pembelajaran Anda dan jika Anda tidak berencana memverifikasi kontrak di Etherscan atau penjelajah blok lainnya, Anda dapat memilih Swarm atau IPFS, atau Anda dapat mengabaikannya dan melanjutkan ke langkah pembelajaran Anda berikutnya. Ingat, fokus utama pada tahap ini adalah memahami cara menulis, menyusun, dan menerapkan kontrak.