狠狠色噜噜狠狠狠狠2021,久久精品国产亚洲av麻豆白洁,777米奇影视盒,国内精品老年人视频网站

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

今天咱們聊聊如何開發(fā)智能合約,非常入門的分享~

1. 如何開發(fā)智能合約

1.1. 基本流程 & 主流工具

1.1.1. 編寫合約代碼

  • Solidity仍然是一騎絕塵(EVM)
  • Vyper是不太活躍語言,python語法(EVM)
  • Rust不能應(yīng)用在EVM的區(qū)塊鏈。然而Rust可以部署到Solana、Terra等鏈上,或者在Polkadot構(gòu)建區(qū)塊鏈應(yīng)用。Rust是一種性能良好的通用語言,甚至在智能合約之外使用

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

1.1.2. 底層依賴

  • Openzeppelin
    • https://openzeppelin.com/
    • Openzeppelin鞏固了自己作為 “solidity標準庫 ”的地位
    • Openzeppelin是一套已經(jīng)寫好的智能合約,不需要重新發(fā)明輪子。使用他們已經(jīng)審計過的可擴展智能合約,可以節(jié)省無數(shù)時間
  • Chainlink
    • https://chain.link/
    • Chainlink是預(yù)言機里的NO.1

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

  • 節(jié)點服務(wù)商
    • 封裝了底層鏈的各種API & 節(jié)點計算資源
    • Top服務(wù)商:Alchemy、QUIckNode(很全,Base鏈推薦)、Infura(當前主導(dǎo)地位)、Blockdaemon(Base鏈推薦)、Blast(Base鏈推薦)

1.1.3. 編譯 & 測試 & 部署 框架

  • Hardhat
    • 目前最主要的智能合約開發(fā)框架
    • 基于javascript和solidity的開發(fā)框架
  • Foundry & DappTools
    • Dapptools是一個專注于命令行的工具,F(xiàn)oundry是用Rust編寫的Dapptools,是Dapptools的繼承者
    • Foundry2022年才誕生,發(fā)展速度很快,測試運行速度也很快,提升開發(fā)效率
  • Brownie & Apeworx
    • 這兩個都是基于Python的,同時支持solidity和vyper
    • Brownie已經(jīng)處于維護模式,Apeworx即將成為Brownie的繼承者
  • Remix
    • 最適合初學者的平臺,Web IDE
    • 適合快速嘗試想法、分享

1.1.4. 安全分析/審計

代碼發(fā)布到區(qū)塊鏈上時,審計是至關(guān)重要的,因為任何人都可以查看,一旦它發(fā)布了,就有可能被利用!因此,有一些工具可以幫助我們確保在代碼中減少錯誤,這是非常重要的。這個領(lǐng)域已經(jīng)出現(xiàn)了一些工具,使我們的智能合約更加安全。

  • Eth Security Toolbox
  • Echidna
  • Slither
  • Mythril
  • Code4rena
  • Immunefi

1.1.5. 監(jiān)控運維

  • Openzeppelin的Defender
  • Tenderly

1.2. 基于Remix的Demo

https://remix.ethereum.org

1.2.1. 編寫合約代碼(Solidity)

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

1.2.2. 編譯合約代碼

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

1.2.3. 部署合約

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

如果“環(huán)境”選擇了"Injected Network",會自動連接錢包,錢包切換網(wǎng)絡(luò),則可以將合約部署到該網(wǎng)絡(luò)上!部署時候會觸發(fā)交易,產(chǎn)生Gas費

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

1.2.4. 執(zhí)行合約(合約交互)

這里是UI的交互,主流的就是代碼方式了

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

1.2.5. 在瀏覽器中查看交易明細

https://goerli.basescan.org/tx/0x26…9db22

番外篇-如何開發(fā)智能合約入門(智能合約怎么開發(fā))

1.3. 其他Demo

  • Hardhat (純代碼交互了,不再有UI界面了)
    • https://hardhat.org/tutorial/boilerplate-project

2. 進一步了解開發(fā)合約

2.1. 合約本身代碼開發(fā)(Solidity)

  • Solidity官方文檔
    • https://docs.soliditylang.org/zh/latest/index.html
  • 比較有趣的學習課程
    • https://cryptozombies.io/ (Solidity的部分比較有意思,其他的一般)

2.2. 合約交互開發(fā)

2.2.1. 智能合約交互的代碼編寫

  • 以太坊節(jié)點只能識別一種叫做 JSON-RPC 的語言。這種語言直接讀起來并不好懂。當你你想調(diào)用一個合約的方法的時候,需要發(fā)送的查詢語句將會是這樣的:
  • 幸運的是 Web3.js 把這些令人討厭的查詢語句都隱藏起來了, 所以你只需要與方便易懂的 JavaScript 界面進行交互即可。你不需要構(gòu)建上面的查詢語句,在你的代碼中調(diào)用一個函數(shù)看起來將是這樣:

2.2.2. 合約交互背后是誰提供服務(wù)(節(jié)點服務(wù)商,也叫Provider)

  • 在 Web3.js 里設(shè)置 Web3 的 Provider(提供者) 告訴我們的代碼應(yīng)該和 哪個節(jié)點 交互來處理我們的讀寫。這就好像在傳統(tǒng)的 Web 應(yīng)用程序中為你的 API 調(diào)用設(shè)置遠程 Web 服務(wù)器的網(wǎng)址。
  • 你可以運行你自己的以太坊節(jié)點來作為 Provider。 不過,有一個第三方的服務(wù),可以讓你的生活變得輕松點,讓你不必為了給你的用戶提供DApp而維護一個以太坊節(jié)點— Infura.(當然還有其他的)

2.2.3. 合約對外交互的關(guān)鍵

  • Web3.js 需要兩個東西來和合約對話: 它的 合約地址 和它的 合約ABI。
    • 合約地址:合約部署后就會生成一個合約地址
    • 合約ABI:ABI 意為應(yīng)用二進制接口(Application Binary Interface)。 基本上,它是以 JSON 格式表示合約的方法,告訴 Web3.js 如何以合同理解的方式格式化函數(shù)調(diào)用。
  • 實例化合約
    • 一旦有了合約的地址和 ABI,你可以像這樣來實例化 Web3.js。

{ "jsonrpc": "2.0", "method": "eth_sendTransaction", "params": [{ "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", "gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675" }], "id": 1}

CryptoZombies.methods.createRandomZombie("Vitalik Nakamoto ") .send({ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", gas: "3000000" })

// 實例化 myContractvar myContract = new web3js.eth.Contract(myABI, myContractAddress);

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2024年7月8日 下午7:16
下一篇 2024年7月8日 下午7:27

相關(guān)推薦