


Membina dan menggunakan kontrak pintar dengan OpenZepplin dan Solidity dalam masa kurang daripada beberapa minit
Saya telah menjadi pembangun selama lebih 10 tahun sekarang. Saya cukup bernasib baik untuk menjadi komiter Apache dan PPMC, bercakap di Google, menulis buku untuk Manning Publications dan beberapa perkara lain. Memandangkan pasaran kerja tidak hebat dan orang ramai sedang bergelut untuk mencari kerja yang baik, saya mula melihat peluang perniagaan dalam rantaian blok, lebih khusus - saya melihat beberapa peluang hebat untuk membantu orang lain membina perniagaan mereka sendiri. Saya ingin berkongsi beberapa perkara teknikal yang saya pelajari dalam beberapa minggu lepas.
Saya telah berusaha memahami kebaikan dan keburukan aplikasi yang diedarkan (DApps). Terdapat banyak alat di luar sana untuk anda pilih untuk mula membinanya. Dalam artikel ini saya memberi anda pendekatan berpandangan untuk membina, menggunakan dan berinteraksi dengan kontrak pintar secara tempatan. Tiada alatan berasaskan web, hanya baris arahan.
Prasyarat:
Saya menggunakan Node 18.17, walau bagaimanapun, ini sepatutnya berfungsi dengan versi nod yang lebih baru.
Pasang nod 18.17, jika anda belum memilikinya
$ nvm install 18.17
Pertama, buat folder anda dan cd ke dalamnya
$ mkdir hello-world && cd hello-world
Mulakan projek
$ npm init -y
Pasang Hardhat secara tempatan dalam projek kami
$ npm install --save-dev hardhat
Sidenote tentang npx
npx digunakan untuk menjalankan boleh laku yang dipasang secara setempat dalam projek anda. Adalah disyorkan untuk memasang Hardhat secara setempat dalam setiap projek supaya anda boleh mengawal versi berdasarkan projek demi projek.
Menyediakan Projek
$ npx hardhat init Need to install the following packages: hardhat@2.22.15 Ok to proceed? (y) You should see the option show up. Select “ Create an empty hardhat.config.js”
Anda akan melihat ini apabila berjaya mencipta.
✔ What do you want to do? · Create an empty hardhat.config.js ✨ Config file created ✨
Untuk mengesahkan semua yang dilaksanakan seperti yang diharapkan, anda kini akan melihat dua medan dalam direktori semasa anda.
Lihat apa yang telah dibuat dalam direktori anda
$ ls -lta package.json hardhat.config.js
Bina kontrak pertama anda
Apabila menggunakan Hardhat anda boleh menyimpan fail sumber Solidity (.sol) dalam direktori kontrak. Kami akan menulis kontrak pintar mudah pertama kami, yang dipanggil Storage: ia akan membenarkan orang ramai menyimpan nilai yang boleh diambil kemudian. Ia adalah variasi kontrak pemula lain dengan Hardhat. Saya sedang menjalankan proses secara manual supaya kami memahami semua bahagian yang bergerak.
Cipta folder kontrak dan buka fail untuk diedit
$ mkdir contracts && vim contracts/Storage.sol
Tambahkan yang berikut pada fail Storage.sol
// contracts/Storage.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Storage { uint256 private _value; // Emitted when the stored value changes event ValueChanged(uint256 value); // Stores a new value in the contract function store(uint256 value) public { _value = value; emit ValueChanged(value); } // Reads the last stored value function retrieve() public view returns (uint256) { return _value; } }
Selepas menulis perkara di atas pada fail tutup vim dengan :wq atau :x
Menyusun Solidity
Mesin Maya Ethereum (EVM) tidak boleh melaksanakan kod Solidity secara langsung: kita perlu menyusunnya terlebih dahulu ke dalam kod bait EVM. Kontrak Storage.sol kami menggunakan Solidity 0.8 jadi kami perlu mengkonfigurasi Hardhat terlebih dahulu untuk menggunakan versi solc yang sesuai. Kami menentukan versi Solidity 0.8 solc dalam hardhat.config.js kami.
$ nvm install 18.17
Jalankan arahan
$ mkdir hello-world && cd hello-world
Penyediaan penempatan
Kami akan membuat skrip untuk menggunakan kontrak Storan kami. Kami akan menyimpan fail ini sebagai skrip/deploy.js.
$ npm init -y
$ npm install --save-dev hardhat
Kami menggunakan eter dalam skrip kami, jadi kami perlu memasangnya dan pemalam @nomicfoundation/hardhat-ethers.
$ npm install --save-dev @nomicfoundation/hardhat-ethers ethers
Kami perlu menambah dalam konfigurasi kami bahawa kami menggunakan pemalam @nomicfoundation/hardhat-ethers.
Konfigurasi hard hat kami kini sepatutnya kelihatan seperti ini;
$ npx hardhat init Need to install the following packages: hardhat@2.22.15 Ok to proceed? (y) You should see the option show up. Select “ Create an empty hardhat.config.js”
Sediakan blockchain tempatan
Kami memerlukan persekitaran di mana kami boleh menggunakan kontrak kami. Blockchain Ethereum (sering dipanggil "mainnet", untuk "rangkaian utama") memerlukan perbelanjaan wang sebenar untuk menggunakannya, dalam bentuk Ether (mata wang asalnya). Ini menjadikannya pilihan yang salah apabila mencuba idea atau alatan baharu.
Untuk menyelesaikan masalah ini, beberapa "testnet" (untuk "rangkaian ujian") wujud: Walau bagaimanapun, anda masih perlu berurusan dengan pengurusan kunci persendirian, masa sekatan selama 12 saat atau lebih dan benar-benar mendapatkan Eter percuma ini.
Semasa pembangunan, adalah idea yang lebih baik untuk menggunakan blockchain tempatan. Ia berjalan pada mesin anda, memberikan anda semua Eter yang anda perlukan, dan melombong blok serta-merta.
Buat contoh tempatan
✔ What do you want to do? · Create an empty hardhat.config.js ✨ Config file created ✨
Menggunakan Kontrak Pintar
Gunakan kontrak pintar anda
$ ls -lta package.json hardhat.config.js
Berinteraksi daripada Konsol
Dengan kontrak Storan kami digunakan, kami boleh mula menggunakannya dengan segera.
Kami akan menggunakan konsol Hardhat untuk berinteraksi dengan kontrak Storan kami yang digunakan pada rangkaian hos tempatan kami.
Kami perlu menyatakan alamat kontrak Storan kami yang kami paparkan dalam skrip penggunaan kami.
Adalah penting untuk kami menetapkan rangkaian secara eksplisit untuk Hardhat untuk menyambungkan sesi konsol kami. Jika kami tidak melakukannya, Hardhat akan lalai menggunakan rangkaian fana baharu, yang kontrak Storan kami tidak akan digunakan.
$ mkdir contracts && vim contracts/Storage.sol
Menghantar transaksi
Fungsi pertama, menyimpan, menerima nilai integer dan menyimpannya dalam storan kontrak. Kerana fungsi ini mengubah suai keadaan rantaian blok, kami perlu menghantar transaksi kepada kontrak untuk melaksanakannya.
Kami akan menghantar transaksi untuk memanggil fungsi kedai dengan nilai angka:
$ nvm install 18.17
Keadaan menyoal
Fungsi lain dipanggil dapatkan semula, dan ia mengembalikan nilai integer yang disimpan dalam kontrak. Ini adalah pertanyaan keadaan blockchain, jadi kami tidak perlu menghantar transaksi:
$ mkdir hello-world && cd hello-world
Oleh kerana pertanyaan hanya membaca keadaan dan tidak menghantar transaksi, tiada cincang transaksi untuk dilaporkan. Ini juga bermakna bahawa menggunakan pertanyaan tidak memerlukan sebarang kos Eter, dan boleh digunakan secara percuma pada mana-mana rangkaian.
Membungkus
Kami telah mencipta kontrak pintar yang minimum dan mengerahkannya ke contoh blockchain tempatan untuk menunjukkan cara kami boleh menulis dan membaca nilai daripada rantaian blok. Jika anda mendapati artikel ini membantu, sila berikan ia suka dan/atau kongsi.
Sila komen dengan cadangan atau pembetulan yang anda rasa sesuai. Saya menulis artikel ini sebelum dan selepas bekerja, saya mengeluarkannya secepat mungkin.
Terima kasih!
Rujukan:
Dokumen Hardhat
Atas ialah kandungan terperinci Membina dan menggunakan kontrak pintar dengan OpenZepplin dan Solidity dalam masa kurang daripada beberapa minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.
