Zeppelin OS - langkah lain menuju kontrak pintar yang aman

Ethereum sekarang menjadi salah satu platform paling populer untuk membuat aplikasi terdesentralisasi, yang sedang dikembangkan secara aktif. Salah satu inovasi Zeppelin yang akan kita coba hari ini dengan tangan kita sendiri. Dan bagi mereka yang berada di "tangki," Zeppelin adalah perusahaan yang mengembangkan dan memverifikasi keamanan kontrak pintar. Pustaka kontrak pintar OpenZeppelin adalah produk mereka yang paling terkenal.



Ternyata alat pengembangan untuk Solidity masih berkembang, terkadang tidak memungkinkan pengembang untuk menggunakan kekuatan penuh dari teknologi kontrak pintar. Sebagai contoh, "perpustakaan standar" adalah batasan, karena setiap kali kode yang ada dimuat kembali ke jaringan, yang mengarah pada peningkatan biaya "penempatan" kode dan jumlah kesalahan potensial. Semua ini mengarah pada batasan signifikan dalam pembuatan aplikasi desentralisasi yang besar dan multi-fungsional.


Apa itu zeppelin OS?




Zeppelin OS adalah platform sumber terbuka yang terdiri dari alat dan layanan melalui EVM, yang dirancang untuk mengembangkan dan mengelola aplikasi yang didesentralisasi.


Tim Zeppelin mengidentifikasi empat komponen paling penting, beberapa di antaranya sudah diterapkan dan tersedia untuk digunakan.


  • Zeppelin OS Kernel adalah platform "inti" yang diperbarui dan digerakkan oleh komunitas. Ini terdiri dari satu set perpustakaan di blockchain yang dapat dihubungkan oleh pengembang ke proyek mereka. Pioneer adalah OpenZeppelin, yang sudah tersedia untuk digunakan.
  • Penjadwal Zeppelin OS akan memungkinkan kontrak untuk meminta eksekusi fungsi yang tidak sinkron, dan juga akan memungkinkan setiap peserta untuk membayar biaya gas, menerima hadiah untuk ini.
  • Zeppelin OS Marketplace adalah komponen penting dari interaksi antara kontrak dan aplikasi, semacam App Store / Google Play untuk blockchain. Memungkinkan Anda menggunakan layanan lain untuk membuat aplikasi yang lebih kompleks.
  • Zeppelin OS off-chain tools - seperangkat alat untuk bekerja dan menganalisis aplikasi yang didesentralisasi.

Saatnya mencobanya sendiri!


Saya benar-benar ingin mulai bekerja dengan Zeppelin OS, menulis kontrak pertama dan memperbaruinya. Periksa apakah semuanya benar-benar begitu dan apakah pengembang telah tertipu.


Oleh karena itu, meninggalkan perangkat penyimpanan yang diperbarui dan proksi untuk artikel mendatang, kami akan beralih ke fungsi yang sudah diterapkan.


Semua dokumentasi Zeppelin OS dapat dilihat di sini . Pertama, Anda perlu menginstal zo:


$ npm install --global zos 

Sekarang buat direktori proyek dan semua yang Anda butuhkan untuk itu:


 $ mkdir zostest && cd zostest $ npm init $ zos init zostest 

Setelah itu, semua file konfigurasi yang diperlukan akan dibuat, jadi sekarang Anda dapat melanjutkan untuk menulis kontrak. Sebagai kontrak pengujian, mari kita menulis "repositori variabel" kecil:


 pragma solidity 0.4.24; import "zos-lib/contracts/migrations/Migratable.sol"; contract SimpleStorage is Migratable {  uint storedData; function initialize(uint256 _x) isInitializer("SimpleStorage", "0") public { storedData = _x; }  function get() public constant returns (uint) {    return storedData;  } } 

Kami menyusun dan menambahkan kontrak kami:


 $ zos add SimpleStorage 



Jalankan jaringan uji (di terminal terpisah):


 $ npx ganache-cli --port 9545 

Kami mendorong ke jaringan lokal kami, sambil membuat file konfigurasi baru zos.local.json :


 $ zos push --network local 



Masalahnya kecil, tetap membuat kontrak kami yang diperbarui, secara bersamaan jalankan initialize() dengan argumen 88 untuk "repositori" kami:


 $ zos create SimpleStorage --init initialize --args 88 --network local 



Sekarang mari kita coba menambahkan fungsi untuk menambah variabel di "penyimpanan", misalnya, ini:


 pragma solidity 0.4.24; import "zos-lib/contracts/migrations/Migratable.sol"; contract SimpleStorage is Migratable {  uint storedData; function initialize(uint256 _x) isInitializer("SimpleStorage", "0") public { storedData = _x; } function incrementStorage(uint256 _x) public { storedData += _x; }  function get() public constant returns (uint) {    return storedData;  } } 

Maka Anda perlu memperbarui kontrak di jaringan:


 $ zos push --network local 



 $ zos update SimpleStorage --network local 



Sekarang Anda bisa melihat apa yang terjadi. Untuk melakukan ini, gunakan truffle console :


 $ npx truffle console --network=local truffle(local)> sS = SimpleStorage.at(<proxy-address>) 

Dan <proxy-address> dapat dilihat di zos.local.json di kolom yang sesuai, dan kami akan memeriksa apa yang kami miliki di "repositori" dan apakah kami dapat meningkatkan variabel:




Semuanya bekerja dengan baik, ada banyak peluang untuk menguji kontrak. Saya akan mengatakan bahwa Zeppelin OS dapat digunakan sebagai alat pengembangan pasti.


Apa yang telah kita lakukan


Kami memeriksa bahwa dengan Zeppelin OS Anda dapat menggunakan, memperbarui, menyusun, dan menguji kontrak. Tampaknya menjadi alat yang hebat bagi mereka yang suka bekerja dengan baris perintah, dan Remix menggigil di browser. Plus, Anda dapat merekomendasikan memulai pengantar Soliditas dan kontrak pintar dengan proyek khusus ini.

Source: https://habr.com/ru/post/id424801/


All Articles