Dart 是用于構(gòu)建 dApp 的最通用的編程語(yǔ)言之一甸饱,本文將展示在 Dart 中與智能合約交互病线、調(diào)用函數(shù)和監(jiān)聽(tīng)事件是多么容易。
使用 Web3dart 生成智能合約 dart 綁定。
web3dart 包帶有一個(gè)非持婕希酷的生成器掉房,允許您從 ABI 生成 dart 類。雖然這可能不適用于超級(jí)復(fù)雜的智能合約慰丛,但通過(guò)使用 build_runner 從 ABI/字節(jié)碼創(chuàng)建函數(shù)和類來(lái)簡(jiǎn)化流程大有幫助卓囚。
首先我們使用pubspec.yaml以下依賴項(xiàng)創(chuàng)建我們的項(xiàng)目。
接下來(lái)诅病,我們使用 hardhat哪亿、truffle 或任何您喜歡的 solidity 編譯器來(lái)編譯我們的智能合約以獲得 abi。
然后我們可以將我們的 ABI 放在一個(gè)合約文件夾中贤笆,確保用.abi.json擴(kuò)展名重命名它蝇棉。
接下來(lái)我們 使用dart run build_runner build -v
構(gòu)建項(xiàng)目。
這將生成一個(gè)Lock.g.dart文件芥永,其中包含在智能合約的 ABI 中找到的不同方法篡殷、類和事件。
接下來(lái)埋涧,我們使用hardhat將智能合約部署到測(cè)試鏈板辽。
一旦我們部署了智能合約,localhost我們就可以輕松編寫一個(gè) dart 腳本來(lái)測(cè)試我們是否可以與部署的智能合約正確交互:
我們可以訪問(wèn) Lock 智能合約的 dart 實(shí)現(xiàn)中存在的不同函數(shù)和事件棘催。
通過(guò)運(yùn)行dart main.dart
我們可以很容易地看到我們已經(jīng)能夠與我們部署的智能合約進(jìn)行無(wú)縫交互劲弦。