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

Linda Hamilton
Linda Hamiltonasal
2024-11-10 03:51:02477semak imbas

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”

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 ✨

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!

Kenyataan:
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