Bagaimana cara menulis Kontrak Pintar pertama anda?



Ketahui asas-asas Pembangunan Kontrak Pintar dan mulailah menulis kontrak pintar pertama anda. Anda juga akan mengetahui cara menguji kontrak pintar.

Di dalam , anda telah mengetahui apa itu Kontrak Pintar, Bahasa Kontrak Pintar yang berbeza dan cara menubuhkan Persekitaran Pembangunan Kontrak Pintar. Dalam artikel ini, anda akan belajar bagaimana membina kontrak pintar pertama anda. Saya akan menggunakanRemix IDE untuk membangun dan menguji kontrak pintar.

Topik di bawah ini dibahas dalam tutorial pembangunan kontrak pintar ini:





Membina Kontrak Pintar anda

Kontrak pintar pesanan pembelian sederhana akan dikembangkan sebagai sebahagian daripada siri blog ini. Semasa siri ini berkembang dan ketika konsep baru bahasa pengaturcaraan padat diperkenalkan, kontrak pintar pesanan pembelian akan berkembang dan bertambah baik.



Struktur Kontrak Pintar

Kontrak pintar soliditi, pada dasarnya, adalah koleksi berikut

  • data - yang mengekalkan keadaan semasa kontrak
  • fungsi - yang menggunakan logik untuk mengubah keadaan kontrak

Kontrak pintar ketenangan mengikuti struktur standard. Sebarang kontrak pintar bermula dengan pernyataan berikut



Arahan Pragma

Kata kunci 'pragma' dapat digunakan untuk mengaktifkan ciri atau pemeriksaan penyusun tertentu. Pernyataan di bawah mentakrifkan bahawa fail sumber (kontrak pintar) tidak akan dikompilasi dengan penyusun lebih awal dari 0.4.0 dan versi penyusun selepas 0.6.0. Pengisytiharan ini memastikan tidak ada tingkah laku yang tidak diinginkan diperkenalkan ketika versi penyusun baru diperkenalkan.

pepejal pragma> = 0.4.0<=0.6.0 

Pengisytiharan kontrak

Kontrak dinyatakan menggunakan kata kunci 'kontrak'. Ini menyatakan kontrak kosong yang dikenali dengan nama 'PurchaseOrder'.

kontrak PurchaseOrder {}

Menyimpan data yang berkaitan dengan kontrak

Setiap kontrak atau secara umum setiap program mungkin memerlukan untuk menyimpan beberapa data. Menambah data ke program memberikan tahap fleksibiliti. Menjauhkan diri dari nilai keras dalam program ke nilai yang disediakan pengguna adalah ciri penting. Pemboleh ubah membolehkan anda menyimpan data, melabel data, mengambil data dan memanipulasi data.

Pembangunan Kontrak Pintar: Memperkenalkan Pemboleh ubah

Dalam kekukuhan, pemboleh ubah terdiri daripada dua jenis

  1. Jenis nilai: Jenis pemboleh ubah ini dilewatkan oleh nilai, iaitu selalu disalin ketika digunakan sebagai argumen fungsi atau dalam tugasan. Contohnya: bilangan bulat, alamat boolean, dll.
  2. Jenis Rujukan: Pemboleh ubah jenis ini terdiri daripada jenis kompleks dan diteruskan dengan rujukan, pemboleh ubah ini tidak sesuai dengan 256 bit dan harus dikendalikan dengan teliti kerana menyalinnya mahal.

Menambah data pada Kontrak Pintar

Mari tambahkan beberapa pemboleh ubah data pada kontrak. Untuk setiap pesanan pembelian, mesti ada sejumlah produk yang berkaitan dengannya. Mari kita tambahkan pemboleh ubah_produk yang berupa bilangan bulat atau nombor jenis data.

cara menggunakan kaedah tostring

Pemboleh ubah yang kami perkenalkan sekarang adalah bilangan bulat tanpa tanda dan diwakili oleh uint256, 256 di sini menandakan penyimpanan 256 bit.

  • U - tidak bertandatangan (bermaksud jenis ini hanya dapat mewakili bilangan bulat positif, bukan bilangan bulat positif dan negatif)
  • INT - bilangan bulat
  • Berukuran 256 - 256 bit
  • nilai minimum uint256 yang dapat diberikan ialah 0
  • nilai maksimum yang boleh diberikan uint256 ialah 2 ^ 256-1 [bilangan yang sangat besar]

Kuantiti produk hanyalah nilai positif dan andaian semasa adalah kita akan memenuhi nilai kuantiti produk yang sangat besar.

berapa banyak perkataan terpelihara di java

Pemboleh ubah 'product_quantity' yang dinyatakan adalah sebahagian daripada keadaan kontrak dan oleh itu wujud atau disimpan di ruang kontrak. Pada masa ini, pemboleh ubah ini akan menetapkan nilai 0 secara lalai.

kontrak PurchaseOrder {uint256 product_quantity}

Mendefinisikan pembina

Pembina dipanggil semasa kontrak digunakan. Pembina memulakan kontrak dengan beberapa nilai. Dalam senario semasa, kuantiti produk ditetapkan menjadi 100, ketika kontrak digunakan. Pembina parameter juga dapat dibuat dengan meneruskan pemboleh ubah dan menginisialisasi product_quantity menggunakan nilai lulus.

Perkara utama yang perlu diberi perhatian di sini adalah pengubah akses 'awam' yang berkaitan dengan pembina. Kata kunci awam menetapkan bahawa sesiapa sahaja boleh mengakses fungsi ini, ini bukan fungsi yang terhad.

pembina () awam {product_quantity = 100}

Menambah fungsi

Mari kita tambah fungsi untuk menjadikan program kita interaktif. Fungsi adalah keupayaan terkawal yang dapat ditambahkan ke program. Sebarang fungsi didahului oleh fungsi kata kunci. Secara keseluruhan ini adalah bagaimana pengisytiharan fungsi' fungsi '

Dapatkan fungsi

Salah satu syarat yang paling biasa, untuk mana-mana program, adalah membaca nilai yang disimpan. Dalam kontrak berikut, kita perlu membaca nilai 'product_quantity'. Untuk memberikan kemampuan ini, fungsi baca atau fungsi get ditambahkan. Dalam fungsi ini kita tidak melakukan manipulasi terhadap nilai yang tersimpan, kita hanya mendapatkan kembali nilai yang tersimpan.

Mari kita hancurkan fungsi get kita (get_quantity)

Tidak. Kata kunci Nilai
satu get_quantity (){tiada parameter dilalui}
2 awam{sesiapa sahaja boleh mengakses fungsi}
3 pandangan{menandakan fungsi hanya membaca keadaan kontrak, tidak mengubah keadaan kontrak, oleh itu melihat}
4 mengembalikan pemboleh ubah jenis uint256 {ditentukan apa yang dikembalikan oleh fungsi}
fungsi get_quantity () pulangan pandangan umum (uint256) {return product_quantity}

Fungsi setter

Membaca data diperlukan dan kami telah mencapainya di bahagian terakhir, tetapi kebanyakan senario juga memerlukan kemampuan untuk menulis / mengemas kini data juga. Keupayaan khusus ini disediakan dengan menambahkan fungsi setter. Fungsi ini mengambil nilai dari pengguna dalam bentuk parameter input. Dengan menggunakan nilai yang diberikan kepada fungsi oleh pengguna, nilai pemboleh ubah 'product_quantity' ditulis / dikemas kini.

Mari kita hancurkan fungsi set kita (update_quantity)

Menambah fungsi untuk mengemas kini nilai kuantiti produk

Tidak. Kata kunci Nilai
satu update_quantity (nilai uint256){nilai parameter jenis uint256 dilalui}
2 awam{sesiapa sahaja boleh mengakses fungsi}
3 Tidak diperlukan kerana keadaan semakin diperbarui oleh fungsi
4 mengembalikan pemboleh ubah jenis uint256 (ditentukan apa yang dikembalikan oleh fungsi)
fungsi update_quantity (nilai uint256) awam {product_quantity = product_quantity + value}

Memasukkan semua ini bersama-sama, begini rupa keseluruhan kontrak.

pepejal 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 } } 

Menggunakan Kontrak Pintar

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

Remix adalah taman permainan dalam talian untuk kontrak pintar ethereum . Remix sepenuhnya berasaskan penyemak imbas. Remix memberi anda IDE dalam talian (persekitaran pembangunan Bersepadu) di mana anda boleh menulis kontrak pintar anda. Remix memberi anda kemampuan penyusun kekukuhan dalam talian. Kontrak pintar dalam Remix IDE dapat disusun menggunakan versi penyusun tertentu dengan lancar.

Remix juga memberikan keupayaan untuk menguji kontrak pintar dengan cepat.

Remix menyediakan kumpulan alat yang lengkap untuk memulakan pengembangan kontrak pintar dan unit menguji kontrak pintar, tanpa melakukan pemasangan pada mesin tempatan anda. Ini sangat berguna untuk permulaan dengan kesungguhan kerana pemaju hanya perlu fokus untuk menulis kontrak pintar, dan bukannya bimbang tentang infrastruktur.

Dengan Remix IDE, yang anda perlukan hanyalah penyemak imbas dan sambungan internet untuk memulakan pembangunan kontrak pintar. Pengembangan, pengujian, dan pengesahan idea yang cepat untuk kontrak pintar.

Remix baru-baru ini meningkatkan UI mereka.

Remix-UI-Smart-Contracts-Edureka

Klik pada ikon fail seperti yang disorot pada gambar di atas, penjelajah fail akan terbuka.

  1. Mengklik ikon tambah, fail baru dapat dibuat, beri nama fail PurchaseOrder.sol
  2. Ini akan membuat fail kosong bernama PurchaseOrder.sol, klik dan buka fail ini.
  3. Mari kita copy paste keseluruhan kontrak di PurchaseOrder.sol.
  4. Klik pada ikon kedua, di menu kiri tepat di bawah ikon fail, pilihan penyusun soliditi akan muncul.
  5. Di bawah label Penyusun, pilih versi penyusun. Versi yang dipilih sekarang ialah 0.5.8.
  6. Pilih pilihan versi penyusun, klik pada 'Compile PurchaseOrder.sol'. Ini akan menyusun kontrak pintar.

7. Setelah kontrak pintar berjaya disusun, klik pada butang 'Kompilasi Perincian' dan butiran berikut akan muncul. Penyusunan catatan, dua maklumat penting disediakan

lulus dengan nilai dalam java
    • ABI - Antara muka binari aplikasi. Ini adalah fail json yang memperincikan semua kaedah yang dinyatakan dalam kontrak pintar bersama dengan data meta kaedah. Lebih banyak mengenai perkara ini akan dibincangkan di blog seterusnya.
    • Bykod- Kod operasi EVM (mesin maya Ethereum), Logik kontrak pintar ditukar menjadi kod bytk pada penyusunan.

8. Untuk menguji kontrak pintar, kontrak pintar perlu digunakan. Untuk menggunakan kontrak pintar klik pada ikon seterusnya di menu kiri, di bawah ikon kompilasi. Skrin berikut akan muncul. Untuk menguji kontrak pintar, kontrak pintar perlu digunakan. Untuk menggunakan kontrak pintar, klik ikon seterusnya di menu sebelah kiri, di bawah ikon kompilasi. Skrin berikut akan muncul.

Pilihan Penerapan

Skrin penyebaran, menyediakan beberapa pilihan, marilah kita melihatnya satu persatu.

  • Persekitaran: Ini boleh dianggap sebagai pilihan yang serupa dengan memilih untuk membeli komputer riba dari Amazon, Flipkart, Newegg (semua ini adalah peruncit dalam talian) anda membuat pilihan di mana anda ingin membeli, berdasarkan keperluan anda. Begitu juga, jika berlaku Remix, kita mempunyai pilihan untuk menggunakan kontrak pintar dan menguji kontrak pintar. Lungsur turun di sebelah label persekitaran memberikan tiga pilihan
    • JavaScript VM - node tunggal Ethereum tempatan tersusun dalam memori penyemak imbas dan menyediakan 5 akaun ujian prabayar yang dapat digunakan untuk transaksi (penggunaan, fungsi memanggil)
    • Penyediaan Web3 yang disuntik - Ini bergantung pada MetaMask. Metamask adalah seperti broker atau orang tengah, yang membolehkan aplikasi web berinteraksi dengan kontrak pintar. Metamask menyediakan keupayaan untuk menguruskan identiti dan juga menandatangani transaksi yang akan dihantar ke rangkaian ethereum. Orang tengah atau 3 inirdpihak memberikan pertolongan kepada anda untuk menentukan rangkaian blockchain yang akan digunakan oleh kontrak pintar.
    • Penyedia Web3 - jika anda menjalankan nod Ethereum tempatan dan titik akhir RPC tersedia, pilihan ini dapat digunakan. Kontrak pintar akan digunakan ke nod Ethereum tempatan.
  • Akaun: Maklumat ini diisi berdasarkan persekitaran yang dipilih. Sebagai contoh. JavaScript VM menyediakan 5 akaun ujian prabayar. Sekiranya penyedia Web3 dan Web3 yang disuntik tidak menyediakan akaun ujian prabayar.
  • Had gas: Ini menentukan jumlah maksimum Gas yang sanggup dibelanjakan oleh pemula untuk sebarang transaksi. Ini adalah tempat untuk melindungi daripada gelung tak terhingga dan menghabiskan semua dana akaun sekiranya keadaan gelung tak terhingga.
  • Nilai: Nilai yang mungkin diperlukan untuk dihantar semasa menggunakan kontrak pintar. Ini adalah nilai pilihan.

Untuk menggunakan kontrak, pilih pilihan VM JavaScript, pilih akaun pertama dari drop-down akaun, perhatikan baki akaun (100 eter).

Pastikan nama kontrak pintar yang muncul adalah PurchaseOrder, klik pada deploy. Tindakan utama yang akan berlaku

  1. Baki akaun berubah dari 100 eter menjadi 99.999999 eter, jumlah yang ditolak adalah kos transaksi untuk menggunakan kontrak pintar.
  2. Di bawah kontrak yang digunakan akan muncul jubin baru untuk kontrak pintar, yang juga akan memberikan alamat kontrak pintar baru seperti ini (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. Di tetingkap konsol maklumat berikut akan muncul
    1. Transaksi hash - mengenal pasti penggunaan kontrak secara unik
    2. Kos urus niaga
    3. Alamat kontrak

Berinteraksi dengan kontrak yang dikerahkan

  1. Di bawah kontrak yang diterapkan, berikut dua kaedah interaksi tersedia update_quantity dan get_quantity.
  2. Kedua-dua kaedah interaksi ini adalah kaedah umum yang ditentukan dalam kontrak 'Pesanan Pembelian'.
  3. Kaedah pembaruan kuantiti 'update_quantity' memerlukan parameter input, oleh itu kotak input.
  4. Dapatkan kuantiti kaedah 'get_quantity' mengambil nilai dari nilai_produk.
  5. Mari kita periksa apa yang berlaku apabila get_quantity dipanggil, nilai kembali 100 ditunjukkan, yang dimulakan dalam konstruktor. Ini tidak menyebabkan transaksi berlaku
  6. Mari kita gunakan update_quantity dan berikan 30 sebagai input. Ini menyebabkan transaksi berlaku

Ringkasnya, sebarang operasi yang menyebabkan operasi tulis ke keadaan kontrak (iaitu mengubah pemboleh ubah kontrak) akan menghasilkan transaksi.

Sebarang operasi yang hanya membaca keadaan kontrak tidak menyebabkan transaksi.

Kesimpulan Pembangunan Kontrak Pintar

Dengan ini, kami baru sahaja membuat kontrak pintar pertama kami, hanya menggaru permukaan kekukuhan. Kami baru saja melihat apa yang diperlukan untuk menguji kontrak pintar bermula dari menggunakan kontrak pintar hingga memulakan transaksi.

Di blog seterusnya yang merupakan kesinambungan dari siri pengembangan kontrak pintar, kita akan membahas dasar-dasar solidariti dengan lebih mendalam, dengan menyelami penerapan kontrak pintar dengan lebih mendalam.

Dengan itu, saya menyimpulkan ini Kontrak Pintar blog pembangunan. Saya harap anda seronok membaca blog ini dan menganggapnya bermaklumat.

SayaSekiranya anda ingin mempelajari Kontrak Pintar, membina karier dalam domain Blockchain dan memperoleh kepakaran dalam pengaturcaraan Ethereum, mendaftar secara langsung-dalam talian di sini, disertakan dengan sokongan 24 * 7 untuk membimbing anda sepanjang tempoh pembelajaran anda.

Ada soalan untuk kami? Sila sebutkan di bahagian komen 'Pembangunan kontrak pintar' dan kami akan menghubungi anda di earliest.