番外篇-如何開發(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標(biāo)準(zhǔn)庫 ”的地位
    • Openzeppelin是一套已經(jīng)寫好的智能合約,不需要重新發(fā)明輪子。使用他們已經(jīng)審計(jì)過的可擴(kuò)展智能合約,可以節(jié)省無數(shù)時(shí)間
  • Chainlink
    • https://chain.link/
    • Chainlink是預(yù)言機(jī)里的NO.1

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

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

1.1.3. 編譯 & 測(cè)試 & 部署 框架

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

1.1.4. 安全分析/審計(jì)

代碼發(fā)布到區(qū)塊鏈上時(shí),審計(jì)是至關(guān)重要的,因?yàn)槿魏稳硕伎梢圆榭矗坏┧l(fā)布了,就有可能被利用!因此,有一些工具可以幫助我們確保在代碼中減少錯(cuò)誤,這是非常重要的。這個(gè)領(lǐng)域已經(jīng)出現(xiàn)了一些工具,使我們的智能合約更加安全。

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

1.1.5. 監(jiān)控運(yù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",會(huì)自動(dòng)連接錢包,錢包切換網(wǎng)絡(luò),則可以將合約部署到該網(wǎng)絡(luò)上!部署時(shí)候會(huì)觸發(fā)交易,產(chǎn)生Gas費(fèi)

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

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

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

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

1.2.5. 在瀏覽器中查看交易明細(xì)

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

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

1.3. 其他Demo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)推薦

亚洲爆乳无码专区www| 四虎影院最新域名| 一个人看的视频在线| 日本3p视频在线看高清| 久久精品国产99国产精2020丨 | 性欧美videos喷水| 中文字幕欧美视频| 欧洲vodafonewifi14| 国产亚洲人成a在线v网站| V一区无码内射国产| 尹人久久久香蕉精品| 久久久久亚洲精品美女| 欧美日韩国产另类一区二区三区 | 2021国产麻豆剧果冻传媒电影| 小猪视频免费网| 久久久噜噜噜www成人网| 欧美丰满白嫩bbwbbw| 亚洲视频在线观看网址| 福利在线一区二区| 国产一卡2卡3卡四卡精品一信息| 2345成人高清毛片| 国产网红无码精品视频| 中日韩中文字幕| 婷婷五月综合激情| 中文字幕在线永久在线视频2020| 日韩午夜在线视频| 亚洲伊人色一综合网| 欧美成人一区二区三区在线观看| 午夜老司机免费视频| 精品欧美一区二区三区精品久久| 国产精品69白浆在线观看免费| 99久久免费国产精精品| 少妇大叫太大太爽受不了| 久久久精品国产免大香伊| 御书宅自由小说阅读无弹窗| www色在线观看| 天天射天天色天天干| 一级黄色片免费观看| 妞干网免费观看视频| JAPANESE国产在线观看播放| 国产真实伦实例|