首頁 >web前端 >js教程 >在不到幾分鐘的時間內使用 OpenZepplin 和 Solidity 建置和部署智慧合約

在不到幾分鐘的時間內使用 OpenZepplin 和 Solidity 建置和部署智慧合約

Linda Hamilton
Linda Hamilton原創
2024-11-10 03:51:02474瀏覽

我擔任開發人員已有 10 多年了。我很幸運能夠成為 Apache 提交者和 PPMC,在 Google 上發表演講,為 Manning Publications 寫一本書,以及其他一些事情。 由於就業市場不佳,人們正在努力尋找好工作,我開始看到區塊鏈中的商機,更具體地說 - 我看到了一些幫助其他人建立自己的企業的絕佳機會。我想分享一些我在過去幾週學到的技術知識。

我一直在努力了解分散式應用程式(DApp)的優缺點。有許多工具可供您選擇來開始建立它們。在本文中,我將向您提供一種在本地建置、部署智慧合約並與之互動的固執己見的方法。 沒有基於網路的工具,只有命令列。

先決條件:

我使用的是 Node 18.17,但是,這應該適用於更高版本的節點。

如果您還沒有安裝節點 18.17,請安裝它

$ nvm install 18.17

首先,建立您的資料夾並將 cd 放入其中

$ mkdir hello-world && cd hello-world

初始化專案

$ npm init -y

在我們的專案中本地安裝 Hardhat

$ npm install --save-dev hardhat

關於 npx 的旁注

npx 用於執行專案中本機安裝的可執行檔。 建議在每個專案中本地安裝 Hardhat,以便您可以逐一專案地控製版本。

設定項目

$  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

創建成功後你會看到這個。

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

要驗證所有內容是否如預期執行,您現在應該在目前目錄中看到兩個欄位。

查看您的目錄中所建立的內容

$ ls -lta
package.json
hardhat.config.js

建立你的第一份合約

使用 Hardhat 時,您可以將 Solidity 原始檔 (.sol) 儲存在contracts 目錄中。我們將編寫第一個簡單的智能合約,稱為儲存:它將讓人們儲存一個可以稍後檢索的值。 這是與 Hardhat 簽訂的另一份首發合約的變體。 我正在手動完成整個過程,因此我們了解所有移動部分。

建立contracts資料夾並開啟檔案進行編輯

$ mkdir contracts &&  vim contracts/Storage.sol

將以下內容新增至 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;
    }
}

將以上內容寫入檔案後,使用 :wq 或 :x 關閉 vim

編譯Solidity

以太坊虛擬機(EVM)無法直接執行Solidity程式碼:我們首先需要將其編譯為EVM字節碼。 我們的 Storage.sol 合約使用 Solidity 0.8,因此我們需要先配置 Hardhat 以使用適當的 solc 版本。 我們在 Hardhat.config.js 中指定 Solidity 0.8 solc 版本。

$ nvm install 18.17

運行命令

$ mkdir hello-world && cd hello-world

部署設定

我們將建立一個腳本來部署我們的儲存合約。我們將此檔案儲存為scripts/deploy.js。

$ npm init -y
$ npm install --save-dev hardhat

我們在腳本中使用以太坊,因此我們需要安裝它和@nomicfoundation/hardhat-ethers 外掛程式。

$ npm install --save-dev @nomicfoundation/hardhat-ethers ethers
我們需要在配置中新增我們正在使用 @nomicfoundation/hardhat-ethers 外掛程式。

我們的安全帽配置現在應該如下所示;

$  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”

設定本地區塊鏈

我們需要一個可以部署合約的環境。以太坊區塊鏈(通常稱為“主網”,即“主網路”)需要花費真實貨幣才能使用它,以以太幣(其原生貨幣)的形式。這使得它在嘗試新想法或工具時成為一個糟糕的選擇。

為了解決這個問題,存在許多「測試網」(「測試網路」):但是,您仍然需要處理私鑰管理、12秒或更長的阻塞時間,並實際獲得免費的乙太幣。

在開發過程中,最好使用本地區塊鏈。它在您的機器上運行,為您提供所需的所有以太幣,並立即開採區塊。

建立本地實例

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

部署智能合約

部署您的智能合約

$ ls -lta
package.json
hardhat.config.js

從控制台進行交互

部署我們的儲存合約後,我們可以立即開始使用它。
我們將使用 Hardhat 控制台與本地主機網路上部署的儲存合約進行互動。

我們需要指定我們在部署腳本中顯示的儲存合約的位址。

重要的是,我們明確設定 Hardhat 的網路來連接我們的控制台會話。如果我們不這樣做,Harhat 將預設使用新的臨時網絡,我們的儲存合約將不會部署到該網路。

$ mkdir contracts &&  vim contracts/Storage.sol

發送交易

第一個函數 store 接收一個整數值並將其儲存在合約儲存中。由於函數會修改區塊鏈狀態,因此我們需要向合約發送交易來執行它。
我們將發送一個交易來呼叫帶有數值的儲存函數:

$ nvm install 18.17

查詢狀態

另一個函數稱為retrieve,它傳回儲存在合約中的整數值。這是區塊鏈狀態的查詢,所以我們不需要發送交易:

$ mkdir hello-world && cd hello-world

因為查詢僅讀取狀態且不傳送交易,所以沒有交易雜湊可報告。這也意味著使用查詢不需要任何以太幣,並且可以在任何網路上免費使用。

總結

我們創建了一個最小的智能合約並將其部署到本地區塊鏈實例,以演示如何從區塊鏈寫入和讀取值。 如果您覺得這篇文章有幫助,請按讚和/或分享。

請隨時發表您認為合適的建議或更正。這些文章都是我上班前和下班後寫的,我會盡快把它們拿出來。

謝謝!

參考:
安全帽文件

以上是在不到幾分鐘的時間內使用 OpenZepplin 和 Solidity 建置和部署智慧合約的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn