国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

11M 以太坊 ethereum OpenZeppelin : 開發(fā)智能合約

這篇具有很好參考價值的文章主要介紹了11M 以太坊 ethereum OpenZeppelin : 開發(fā)智能合約。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? 設置項目
? 第一份合同
? 編譯 Solidity
? 添加更多合約
? 使用 OpenZeppelin 合約
? OpenZeppelin Tutorials 教程
? Contact 聯系方式

? 設置項目

創(chuàng)建項目后的第一步是安裝開發(fā)工具。

以太坊最流行的開發(fā)框架是Hardhat,我們用ethers.js介紹了它最常見的用途。下一個最受歡迎的是使用web3.js的Truffle。每個人都有自己的長處,舒適地使用它們是很有用的。

在這些指南中,我們將展示如何使用 Truffle 和 Hardhat 開發(fā)、測試和部署智能合約。

要開始使用 Hardhat,我們將把它安裝在我們的項目目錄中。

$ npm install --save-dev hardhat

安裝好后,我們就可以運行了npx hardhat。hardhat.config.js這將在我們的項目目錄中創(chuàng)建一個 Hardhat 配置文件 ( )。

? 第一份合同

我們將 Solidity 源文件 ( .sol) 存儲在一個contracts目錄中。這相當于src您可能從其他語言中熟悉的目錄。

我們現在可以編寫我們的第一個簡單的智能合約,稱為Box:它將讓人們存儲一個可以稍后檢索的值。

我們將此文件另存為contracts/Box.sol. 每個.sol文件都應該包含單個合約的代碼,并以它命名。

// contracts/Box.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Box {
    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;
    }
}

? 編譯 Solidity

以太坊虛擬機(EVM)不能直接執(zhí)行 Solidity 代碼:我們首先需要將其編譯成 EVM 字節(jié)碼。

我們的Box.sol合約使用 Solidity 0.8,因此我們需要首先配置 Hardhat 以使用適當的 solc 版本。

我們在hardhat.config.js.

// hardhat.config.js

/**
 * @type import('hardhat/config').HardhatUserConfig
 */
 module.exports = {
  solidity: "0.8.4",
};

然后可以通過運行單個編譯命令來實現編譯:

npx hardhat compile
Solidity 0.8.4 is not fully supported yet. You can still use Hardhat, but some features, like stack traces, might not work correctly.

Learn more at https://hardhat.org/reference/solidity-support"

Compiling 1 file with 0.8.4
Compilation finished successfully

compile內置任務將自動查找目錄中的所有合約,contracts并使用 Solidity 編譯器使用hardhat.config.js.

您會注意到artifacts創(chuàng)建了一個目錄:它包含已編譯的工件(字節(jié)碼和元數據),它們是 .json 文件。將此目錄添加到您的.gitignore.

? 添加更多合約

隨著項目的發(fā)展,您將開始創(chuàng)建更多相互交互的合約:每個合約都應該存儲在自己的.sol文件中。

為了看看這看起來如何,讓我們在我們的合約中添加一個簡單的訪問控制系統Box:我們將在名為 的合約中存儲一個管理員地址Auth,并且只讓Box那些Auth允許的帳戶使用。

因為編譯器會拾取contracts目錄和子目錄中的所有文件,所以您可以自由地組織您認為合適的代碼。在這里,我們將Auth合約存儲在一個access-control子目錄中:

// contracts/access-control/Auth.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Auth {
    address private _administrator;

    constructor(address deployer) {
        // Make the deployer of the contract the administrator
        _administrator = deployer;
    }

    function isAdministrator(address user) public view returns (bool) {
        return user == _administrator;
    }
}

跨多個合約分離關注點是保持每個合約簡單的好方法,并且通常是一種很好的做法。

但是,這不是將代碼拆分為模塊的唯一方法。您還可以在 Solidity 中使用繼承進行封裝和代碼重用,我們將在接下來看到。

? 使用 OpenZeppelin 合約

可重用的模塊和庫是偉大軟件的基石。OpenZeppelin Contracts包含許多有用的構建塊,可用于構建智能合約。在構建它們時您可以高枕無憂:它們已經過多次審計,其安全性和正確性經過實戰(zhàn)考驗。

導入 OpenZeppelin 合約
可以通過運行以下命令下載最新發(fā)布的 OpenZeppelin Contracts 庫:

$ npm install @openzeppelin/contracts

要使用 OpenZeppelin 合約之一,import它通過在其路徑前加上@openzeppelin/contracts. 例如,為了替換我們自己的Auth合約,我們將導入@openzeppelin/contracts/access/Ownable.sol以添加訪問控制Box:

// contracts/Box.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Import Ownable from the OpenZeppelin Contracts library
import "@openzeppelin/contracts/access/Ownable.sol";

// Make Box inherit from the Ownable contract
contract Box is Ownable {
    uint256 private _value;

    event ValueChanged(uint256 value);

    // The onlyOwner modifier restricts who can call the store function
    function store(uint256 value) public onlyOwner {
        _value = value;
        emit ValueChanged(value);
    }

    function retrieve() public view returns (uint256) {
        return _value;
    }
}

OpenZeppelin合約文檔是學習開發(fā)安全智能合約系統的好地方。它具有指南和詳細的 API 參考:例如,請參閱訪問控制指南以了解有關Ownable上述代碼示例中使用的合約的更多信息。

? OpenZeppelin Tutorials 教程

CN 中文 Github OpenZeppelin 教程 : github.com/565ee/OpenZeppelin_CN
CN 中文 CSDN OpenZeppelin 教程 : blog.csdn.net/wx468116118
EN 英文 Github OpenZeppelin Tutorials : github.com/565ee/OpenZeppelin_EN

? Contact 聯系方式

Homepage : 565.ee
微信公眾號 : wx468116118
微信 QQ : 468116118
GitHub : github.com/565ee
CSDN : blog.csdn.net/wx468116118
Email : 468116118@qq.com文章來源地址http://www.zghlxwxcb.cn/news/detail-666979.html

到了這里,關于11M 以太坊 ethereum OpenZeppelin : 開發(fā)智能合約的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【區(qū)塊鏈 | 智能合約】Ethereum源代碼(8)- Ethereum服務和以太坊P2P協議發(fā)送廣播源碼分析

    【區(qū)塊鏈 | 智能合約】Ethereum源代碼(8)- Ethereum服務和以太坊P2P協議發(fā)送廣播源碼分析

    在“【區(qū)塊鏈 | 智能合約】Ethereum源代碼(2)- go-ethereum 客戶端入口代碼和Node分析”一文中,我們提到Ethereum作為一個service,被Node 注冊進去。Node start的時候會啟動其注冊的所有服務,Ethereum service也是一樣。 初始化方法

    2024年01月21日
    瀏覽(42)
  • 【區(qū)塊鏈 | 智能合約】Ethereum源代碼(3)- 以太坊RPC通信實例和原理代碼分析(上)

    上一節(jié)提到,以太坊在node start的時候啟動了RPC服務,以太坊通過Rpc服務來實現以太坊相關接口的遠程調用。這節(jié)我們用個實例來看看以太坊 RPC是如何工作的,以及以太坊RPC的源碼的實現 1,RPC啟動命令 : go-ethereum的RPC服務默認地址:http://localhost:8545/ 通過以下命令修改默認地

    2024年02月02日
    瀏覽(35)
  • 【區(qū)塊鏈技術開發(fā)】OpenZeppelin智能合約庫:提高智能合約的安全性和可靠性,加速去中心化應用DApp的開發(fā)與部署。

    專欄:【區(qū)塊鏈技術開發(fā)】 前期文章: 【區(qū)塊鏈技術開發(fā)】使用Infura連接以太坊節(jié)點和OpenZeppelin庫來構建安全、可靠的智能合約 【區(qū)塊鏈技術開發(fā)】 Solidity使用Truffle Box工具實現預構建模板、自動化部署、創(chuàng)建智能合約示例代碼 【區(qū)塊鏈技術開發(fā)】 Solidity使用truffle工具創(chuàng)建

    2023年04月24日
    瀏覽(92)
  • 以太坊智能合約開發(fā)(五):Solidity成績錄入智能合約實驗

    每個學生分別部署合約Student.sol ,保證只有自己可以修改姓名。老師部署合約StudentScore.sol,用于錄入學生成績,查詢學生信息。查詢學生信息時,需要調用學生部署的合約Student.sol。 student.sol合約,用于學生對自己信息進行管理。 學生的基本信息作為狀態(tài)變量: 聲明構造函

    2024年02月07日
    瀏覽(42)
  • 以太坊–智能合約開發(fā)介紹及環(huán)境搭建

    以太坊–智能合約開發(fā)介紹及環(huán)境搭建

    目錄 1.?智能合約的概念 2.?智能合約的優(yōu)點 ?3.?智能合約開發(fā) 3.1?支持智能合約的區(qū)塊鏈 3.2?以太坊智能合約開發(fā)工具 3.3?以太坊智能合約開發(fā)語言 4.?智能合約開發(fā)環(huán)境搭建 4.1 準備工作 4.2?Node 與 NPM 4.3?Truffle 框架 4.4?Ganache 4.5?Metamask 4.6?VS code 與 Solidity插件 智能合約 (

    2024年02月05日
    瀏覽(30)
  • 以太坊智能合約開發(fā):Solidity 語言快速入門

    以太坊智能合約開發(fā):Solidity 語言快速入門

    在本文中,我們從一個簡單的智能合約樣例出發(fā),通過對智能合約源文件結構的剖析與介紹,使大家對Solidity語言有一個初步的認識。最后,我們將該智能合約樣例在 Remix 合約編譯器中編譯、部署,觀察其執(zhí)行結果。 在開始之前,我們先對Solidity有個初步的了解,即Solidity是

    2023年04月09日
    瀏覽(32)
  • 基于openzeppelin編寫solidity可升級的智能合約

    基于openzeppelin編寫solidity可升級的智能合約

    ????????現代軟件的設計原則是“敏捷開發(fā),迅速迭代”,功能升級或bug修復是所有軟件系統都要面對的問題。甚至可以說軟件質量在很大程度上依賴于升級和修補源代碼的能力。當然Dapp(去中心化應用)也不例外,尤其Dapp一切都是透明的,這使得任何級別的bug都會被成

    2024年01月18日
    瀏覽(25)
  • 區(qū)塊鏈DAPP開發(fā) 以太坊智能合約框架有哪些

    Truffle 是一個在以太坊進行 DApp 開發(fā)的世界級開發(fā)環(huán)境、測試框架。 使用 Truffle 開發(fā)有一以下優(yōu)點: 內置智能合約編譯,鏈接,部署和二進制(文件)管理。 可快速開發(fā)自動化智能合約測試框架。 可腳本化、可擴展的部署和遷移框架。 可管理多個不同的以太坊網絡,可部署

    2024年02月02日
    瀏覽(25)
  • 基于以太坊的智能合約開發(fā)Solidity(基礎篇)

    基于以太坊的智能合約開發(fā)Solidity(基礎篇)

    參考教程:基于以太坊的智能合約開發(fā)教程【Solidity】_嗶哩嗶哩_bilibili (1)程序編譯完成后,需要在虛擬機上運行,將合約部署好后便可執(zhí)行剛剛編寫的函數。(注意, 合約一旦部署,就會永久存在于區(qū)塊鏈上,且不可篡改 ,不過可以銷毀) (2)執(zhí)行完成后,可以得到以

    2024年02月04日
    瀏覽(28)
  • 以太坊智能合約開發(fā):Solidity語言中的映射

    以太坊智能合約開發(fā):Solidity語言中的映射

    本文我們介紹Solidity語言中的映射,包括映射的基本定義、語法、映射的變量聲明和基本讀寫操作。并且通過兩個智能合約例子演示了映射的定義與基本操作。 Solidity中關于映射的一些定義: 映射以鍵-值對(key = value)的形式存儲數據; 鍵可以是任何內置數據類型,包括字節(jié)

    2024年02月05日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包