Bagaimana cara menulis Kontrak Cerdas pertama Anda?



Pelajari dasar-dasar Pengembangan Kontrak Cerdas dan mulailah menulis kontrak pintar pertama Anda. Anda juga akan tahu cara menguji kontrak pintar.

Dalam , Anda telah mempelajari tentang apa itu Kontrak Cerdas, Bahasa Kontrak Cerdas yang berbeda, dan cara menyiapkan Lingkungan Pengembangan Kontrak Cerdas. Dalam artikel ini, Anda akan mempelajari cara membuat kontrak pintar pertama Anda. Saya akan menggunakanRemix IDE untuk mengembangkan dan menguji kontrak pintar.

Topik di bawah ini tercakup dalam tutorial pengembangan kontrak pintar ini:





Membangun Kontrak Cerdas Anda

Kontrak pintar pesanan pembelian sederhana akan dikembangkan sebagai bagian dari seri blog ini. Seiring perkembangan seri ini dan ketika konsep baru bahasa pemrograman soliditas diperkenalkan, kontrak pintar pesanan pembelian akan berkembang dan meningkat.



Struktur Kontrak Cerdas

Kontrak pintar soliditas, pada dasarnya, adalah kumpulan berikut

  • data - yang mempertahankan status kontrak saat ini
  • fungsi - yang menerapkan logika untuk transisi status kontrak

Kontrak pintar soliditas mengikuti struktur standar. Kontrak pintar apa pun dimulai dengan pernyataan berikut



Arahan Pragma

Kata kunci 'pragma' dapat digunakan untuk mengaktifkan fitur atau pemeriksaan kompilator tertentu. Pernyataan di bawah ini menjelaskan bahwa file sumber (kontrak pintar) tidak akan dikompilasi dengan kompilator yang lebih awal dari 0.4.0 dan versi kompilator setelah 0.6.0. Deklarasi ini memastikan tidak ada perilaku yang tidak diinginkan yang diperkenalkan saat versi kompilator baru diperkenalkan.

kepadatan pragma> = 0.4.0<=0.6.0 

Deklarasi kontrak

Kontrak tersebut dinyatakan dengan menggunakan kata kunci “kontrak”. Ini menyatakan kontrak kosong yang diidentifikasi dengan nama 'PurchaseOrder'.

kontrak PurchaseOrder {}

Menyimpan data yang relevan dengan kontrak

Setiap kontrak atau dalam istilah umum setiap program mungkin perlu menyimpan beberapa data. Menambahkan data ke program memberikannya tingkat fleksibilitas. Berpindah dari nilai hard-code dalam program ke nilai yang diberikan pengguna merupakan fitur penting. Variabel memungkinkan Anda untuk menyimpan data, memberi label pada data, mengambil data dan memanipulasi data.

Pengembangan Kontrak Cerdas: Memperkenalkan Variabel

Dalam soliditas, variabel terdiri dari dua jenis

  1. Jenis Nilai: Jenis variabel ini diteruskan oleh nilai, yaitu variabel selalu disalin saat digunakan sebagai argumen fungsi atau dalam tugas. Misalnya: bilangan bulat, alamat boolean, dll.
  2. Jenis Referensi: Jenis variabel ini adalah jenis yang kompleks dan diteruskan dengan referensi, variabel ini tidak sesuai dengan 256 bit dan harus dikelola dengan hati-hati karena biaya penyalinannya mahal.

Menambahkan data ke Kontrak Cerdas

Mari tambahkan beberapa variabel data ke kontrak. Untuk setiap pesanan pembelian, harus ada sejumlah produk yang terkait dengannya. Mari kita tambahkan variabel product_quantity yang akan menjadi tipe data integer atau angka.

adalah hadoop sulit untuk dipelajari

Variabel yang kami perkenalkan sekarang adalah bilangan bulat unsigned dan diwakili oleh uint256, 256 di sini menandakan penyimpanan 256 bit.

  • U - unsigned (artinya jenis ini hanya dapat mewakili bilangan bulat positif, bukan bilangan bulat positif dan negatif)
  • INT - bilangan bulat
  • Ukuran 256 - 256 bit
  • nilai minimum uint256 dapat ditetapkan adalah 0
  • nilai maksimum uint256 dapat ditetapkan adalah 2 ^ 256-1 [angka yang sangat besar]

Kuantitas produk hanyalah nilai positif dan asumsi saat ini adalah kami akan menyediakan nilai yang sangat besar untuk kuantitas produk.

Variabel 'product_quantity' yang dideklarasikan adalah bagian dari status kontrak dan karenanya dipertahankan atau disimpan dalam ruang kontrak. Saat ini, variabel ini akan default ke nilai 0.

kontrak PurchaseOrder {uint256 product_quantity}

Mendefinisikan konstruktor

Konstruktor dipanggil saat kontrak diterapkan. Konstruktor menginisialisasi kontrak dengan beberapa nilai. Dalam skenario saat ini, jumlah produk diatur ke 100, saat kontrak diterapkan. Sebuah konstruktor berparameter juga dapat dibuat dengan meneruskan variabel dan menginisialisasi product_quantity menggunakan nilai yang diteruskan.

Poin kunci yang perlu diperhatikan di sini adalah pengubah akses 'publik' yang terkait dengan konstruktor. Kata kunci publik menentukan bahwa siapa pun dapat mengakses fungsi ini, ini bukan fungsi yang dibatasi.

konstruktor () publik {product_quantity = 100}

Menambahkan fungsi

Sekarang mari kita tambahkan fungsi untuk membuat program kita interaktif. Fungsi adalah kemampuan terkontrol yang dapat ditambahkan ke program. Fungsi apapun diawali dengan fungsi kata kunci. Secara keseluruhan, ini adalah tampilan deklarasi fungsi' fungsi '.

Dapatkan fungsi

Salah satu persyaratan paling umum, untuk program apa pun, adalah membaca nilai yang disimpan. Dalam kontrak berikut, kita perlu membaca nilai 'product_quantity'. Untuk menyediakan kemampuan ini, fungsi baca atau fungsi get ditambahkan. Dalam fungsi ini kami tidak melakukan manipulasi apa pun pada nilai yang disimpan, kami hanya mengambil nilai yang disimpan.

apa yang ditambahkan di java

Mari kita sekarang memecah fungsi get kita (get_quantity)

Tidak. Kata kunci Nilai
satu get_quantity (){tidak ada parameter yang lewat}
2 publik{siapa pun dapat mengakses fungsi}
3 melihat{menandakan fungsi hanya membaca status kontrak, tidak mengubah status kontrak, karenanya melihat}
4 mengembalikan variabel tipe uint256 {didefinisikan apa yang dikembalikan oleh fungsi}
function get_quantity () tampilan publik kembali (uint256) {return product_quantity}

Fungsi penyetel

Membaca data diperlukan dan kami telah menyelesaikannya di bagian terakhir, tetapi sebagian besar skenario juga memerlukan kemampuan untuk menulis / memperbarui data. Kemampuan khusus ini disediakan dengan menambahkan fungsi penyetel. Fungsi ini mengambil nilai dari pengguna dalam bentuk parameter masukan. Menggunakan nilai yang diberikan ke fungsi oleh pengguna, nilai variabel 'product_quantity' ditulis / diperbarui.

Mari kita sekarang memecah fungsi set kita (update_quantity)

Menambahkan fungsi untuk memperbarui nilai kuantitas produk

Tidak. Kata kunci Nilai
satu update_quantity (nilai uint256){nilai parameter tipe uint256 diteruskan}
2 publik{siapa pun dapat mengakses fungsi}
3 Tidak diperlukan karena status diperbarui oleh fungsi
4 mengembalikan variabel tipe uint256 (ditentukan apa yang dikembalikan oleh fungsi)
fungsi update_quantity (nilai uint256) publik {product_quantity = product_quantity + value}

Memasukkan semua ini bersama-sama, seperti inilah keseluruhan kontrak seharusnya.

kepadatan pragma> = 0.4.0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Menerapkan Kontrak Cerdas

Saatnya menguji kontrak pintar. Untuk menguji kontrak pintar ini, kami akan menggunakan Remix IDE Online .

Remix adalah taman bermain online untuk kontrak pintar ethereum . Remix sepenuhnya berbasis browser. Remix memberi Anda IDE online (lingkungan pengembangan terintegrasi) tempat Anda dapat menulis kontrak pintar Anda. Remix memberi Anda kemampuan kompilator soliditas online. Kontrak pintar di Remix IDE dapat dikompilasi menggunakan versi kompiler tertentu dengan mulus.

Remix juga menyediakan kemampuan untuk menguji kontrak pintar dengan cepat.

Remix menyediakan perangkat lengkap untuk memulai pengembangan kontrak pintar dan pengujian unit kontrak pintar, tanpa melakukan instalasi apa pun pada mesin lokal Anda. Ini sangat berguna untuk memulai dengan soliditas karena pengembang hanya perlu fokus pada penulisan kontrak pintar, bukan khawatir tentang infrastruktur.

c ++ daftar sortir

Dengan Remix IDE yang Anda butuhkan hanyalah browser dan koneksi internet untuk memulai pengembangan kontrak pintar. Pengembangan cepat, pengujian, dan validasi ide untuk kontrak pintar.

Remix baru-baru ini meningkatkan UI mereka.

Remix-UI-Smart-Contracts-Edureka

Klik pada ikon file seperti yang disorot pada gambar di atas, file explorer akan terbuka.

  1. Mengklik ikon plus, file baru dapat dibuat, beri nama file PurchaseOrder.sol
  2. Ini akan membuat file kosong bernama PurchaseOrder.sol, klik dan buka file ini.
  3. Mari kita salin dan tempel seluruh kontrak di PurchaseOrder.sol.
  4. Klik ikon kedua, di menu kiri tepat di bawah ikon file, opsi kompilator soliditas akan muncul.
  5. Di bawah label Compiler, pilih versi compiler. Versi yang dipilih saat ini adalah 0.5.8.
  6. Posting pilihan versi compiler, klik 'Compile PurchaseOrder.sol'. Ini akan menyusun kontrak pintar.

7. Setelah kontrak pintar berhasil dikompilasi, klik tombol 'Detail Kompilasi' dan detail berikut akan muncul. Setelah kompilasi, tersedia dua informasi kunci

    • ABI - Antarmuka biner aplikasi. Ini adalah file json yang merinci semua metode yang diekspos dalam kontrak pintar bersama dengan data meta dari metode tersebut. Lebih lanjut tentang ini akan dibahas di blog berikutnya.
    • Kode Bytecode- Kode operasi EVM (mesin virtual Ethereum), logika kontrak pintar diubah menjadi bytecode saat kompilasi.

8. Untuk menguji kontrak pintar, kontrak pintar perlu diterapkan. Untuk menerapkan kontrak pintar, klik ikon berikutnya di menu kiri, di bawah ikon kompilasi. Layar berikut akan muncul. Untuk menguji kontrak pintar, kontrak pintar perlu diterapkan. Untuk menerapkan kontrak pintar, klik ikon berikutnya di menu kiri, di bawah ikon kompilasi. Layar berikut akan muncul.

Opsi Penerapan

Layar penerapan, menyediakan beberapa pilihan, mari kita lihat satu per satu.

  • Lingkungan: Ini dapat dianggap sebagai opsi yang mirip dengan memilih untuk membeli laptop dari Amazon, Flipkart, Newegg (semua ini pengecer online) Anda membuat pilihan di mana Anda ingin membeli, berdasarkan kebutuhan Anda. Demikian pula, dalam kasus Remix, kami memiliki opsi di mana untuk menerapkan kontrak pintar dan menguji kontrak pintar. Dropdown di samping label lingkungan menyediakan tiga pilihan
    • JavaScript VM - node tunggal Ethereum lokal berputar di memori browser dan menyediakan 5 akun uji yang telah didanai sebelumnya yang dapat digunakan untuk transaksi (penerapan, fungsi pemanggilan)
    • Penyediaan Web3 yang diinjeksi - Ini bergantung pada MetaMask. Metamask seperti broker atau perantara, yang memungkinkan aplikasi web untuk berinteraksi dengan kontrak pintar. Metamask memberikan kemampuan untuk mengelola identitas dan juga menandatangani transaksi untuk dikirim ke jaringan ethereum.rdpihak memberikan bantuan Anda untuk menentukan jaringan blockchain tempat kontrak pintar akan digunakan.
    • Penyedia Web3 - jika Anda menjalankan node Ethereum lokal dan titik akhir RPC tersedia, opsi ini dapat digunakan. Kontrak pintar akan diterapkan ke node Ethereum lokal.
  • Akun: Informasi ini diisi berdasarkan lingkungan yang dipilih. Sebagai contoh. JavaScript VM menyediakan 5 akun pengujian yang didanai sebelumnya. Jika penyedia Web3 dan Injected Web3 tidak menyediakan akun pengujian yang didanai sebelumnya.
  • Batas gas: Ini menentukan jumlah maksimum Gas yang bersedia dikeluarkan oleh pemrakarsa untuk transaksi apa pun. Ini adalah tempat untuk melindungi dari loop tak terbatas dan menghabiskan semua dana akun jika kondisi loop tak terbatas.
  • Nilai: Nilai yang mungkin diperlukan untuk dikirimkan saat menerapkan kontrak pintar. Ini adalah nilai opsional.

Untuk menerapkan kontrak, pilih opsi JavaScript VM, pilih akun pertama dari drop-down akun, perhatikan saldo akun (100 eter).

Pastikan nama kontrak pintar yang muncul adalah PurchaseOrder, klik terapkan. Tindakan kunci yang akan terjadi

  1. Saldo akun berubah dari 100 eter menjadi 99.999999 eter, jumlah yang dikurangkan adalah biaya transaksi untuk menerapkan kontrak pintar.
  2. Di bawah kontrak yang diterapkan, ubin baru untuk kontrak pintar akan muncul, yang juga akan memberikan alamat kontrak pintar baru seperti ini (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. Di jendela konsol, informasi berikut akan muncul
    1. Hash transaksi - secara unik mengidentifikasi penerapan kontrak
    2. Biaya transaksi
    3. Alamat kontrak

Berinteraksi dengan kontrak yang diterapkan

  1. Di bawah kontrak yang diterapkan, dua metode interaksi berikut ini tersedia update_quantity dan get_quantity.
  2. Kedua metode interaksi ini adalah metode publik yang ditentukan dalam kontrak 'Pesanan Pembelian'.
  3. Metode update kuantitas 'update_quantity' membutuhkan parameter masukan, karenanya kotak masukan.
  4. Dapatkan kuantitas metode 'get_quantity' mengambil nilai product_quantity.
  5. Mari kita periksa apa yang terjadi ketika get_quantity dipanggil, nilai kembalian 100 ditampilkan, yang diinisialisasi dalam konstruktor. Ini tidak menyebabkan terjadinya transaksi
  6. Mari kita panggil update_quantity dan berikan 30 sebagai masukan. Ini menyebabkan terjadinya transaksi

Singkatnya, setiap operasi yang menyebabkan operasi tulis ke status kontrak (yaitu, mengubah variabel kontrak) akan menghasilkan transaksi.

Operasi apa pun yang hanya membaca status kontrak tidak menyebabkan transaksi.

Kesimpulan Pengembangan Kontrak Cerdas

Dengan ini, kami baru saja membuat kontrak pintar pertama kami, hanya menggores permukaan soliditas. Kami baru saja melihat apa yang diperlukan untuk menguji kontrak pintar mulai dari menerapkan kontrak pintar hingga memulai transaksi.

Di blog berikutnya yang merupakan kelanjutan dari seri pengembangan kontrak pintar, kita akan membahas lebih dalam tentang dasar-dasar soliditas, mempelajari penerapan kontrak pintar lebih dalam.

Dengan itu, saya menyimpulkan ini Kontrak Cerdas blog pengembangan. Saya harap Anda menikmati membaca blog ini dan merasa informatif.

sayaJika Anda ingin mempelajari Kontrak Cerdas, membangun karier di domain Blockchain dan mendapatkan keahlian dalam pemrograman Ethereum, mendaftarlah secara online langsung di sini, yang dilengkapi dengan dukungan 24 * 7 untuk memandu Anda selama periode belajar Anda.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar 'Pengembangan kontrak pintar' dan kami akan menghubungi Anda kembali di awalst.