Rumah hujung hadapan web tutorial js Membina dan menggunakan kontrak pintar dengan OpenZepplin dan Solidity dalam masa kurang daripada beberapa minit

Membina dan menggunakan kontrak pintar dengan OpenZepplin dan Solidity dalam masa kurang daripada beberapa minit

Nov 10, 2024 am 03:51 AM

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pertama, buat folder anda dan cd ke dalamnya

$ mkdir hello-world && cd hello-world
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mulakan projek

$ npm init -y
Salin selepas log masuk
Salin selepas log masuk

Pasang Hardhat secara tempatan dalam projek kami

$ npm install --save-dev hardhat
Salin selepas log masuk
Salin selepas log masuk

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”
Salin selepas log masuk
Salin selepas log masuk

Building and deploying a smart contract with OpenZepplin and Solidity in less than minutes

Anda akan melihat ini apabila berjaya mencipta.

✔ What do you want to do? · Create an empty hardhat.config.js
✨ Config file created ✨
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jalankan arahan

$ mkdir hello-world && cd hello-world
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Penyediaan penempatan

Kami akan membuat skrip untuk menggunakan kontrak Storan kami. Kami akan menyimpan fail ini sebagai skrip/deploy.js.

$ npm init -y
Salin selepas log masuk
Salin selepas log masuk
$ npm install --save-dev hardhat
Salin selepas log masuk
Salin selepas log masuk

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”
Salin selepas log masuk
Salin selepas log masuk

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 ✨
Salin selepas log masuk
Salin selepas log masuk

Menggunakan Kontrak Pintar

Gunakan kontrak pintar anda

$ ls -lta
package.json
hardhat.config.js
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1672
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

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.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

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.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

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 Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

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 vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

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.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

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.

Peranan C/C dalam JavaScript Jurubah dan Penyusun Peranan C/C dalam JavaScript Jurubah dan Penyusun Apr 20, 2025 am 12:01 AM

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.

Dari laman web ke aplikasi: Aplikasi pelbagai JavaScript Dari laman web ke aplikasi: Aplikasi pelbagai JavaScript Apr 22, 2025 am 12:02 AM

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.

See all articles