值得信赖的区块链资讯!
如何使用DAppTools
在编写智能合约时,开发者只需要了解一种语言,例如Solidity、Vyper或Rust。但是,选择一个框架并围绕该框架学习所有的语言可能会很棘手。
学习像DappTools这样的简约命令行框架可以避免这些问题,且能使得Web3开发者的生活更加轻松。
在本篇DappTools教程中,你将学习如何通过DappTools框架创建、测试以及部署智能合约。
下面是本教程随附的视频教程:
视频详情:
DappTools是什么?
DappTools是一个类似于Hardhat和Brownie的框架,可以帮助智能合约开发者测试、部署和维护他们的代码。如果部署一个合约,你会将编译后的字节码存储在哪里?如何跟踪它的去向?重新部署新代码的难度如何?这些都是可以通过使用智能合约开发框架来解决的问题。
DappTools最初是用Haskell语言编写。然而最近,Paradigm团队采用了DappTools并用Rust重写了它,并称他们的新创造为Foundry。两者的工作方式相似,因为它们都以命令行为中心,高效,并且常常会涉及编写带有大量模糊测试的Solidity测试代码。
DappTools是许多业内领先协议的流行选择。
为什么使用 DappTools?
如果你是热爱Linux、bash脚本、追求高效、以命令行为中心来编码的开发者,那么这绝对是你应该尝试的智能合约框架。此外,如果你不熟悉JavaScript 或Python,这对你也很有用!
我们在学习什么?
在本教程中,我们将学习如何:
-
使用DappTools
-
使用dapptools-starter-kit部署由Chainlink驱动的混合型智能合约
以下是通过此入门工具包使用Chainlink服务的一些示例:
-
Chainlink Price Feeds:
https://docs.chain.link/docs/get-the-latest-price/
-
Chainlink VRF:
https://docs.chain.link/docs/chainlink-vrf/
-
Chainlink Keepers:
https://docs.chain.link/docs/chainlink-keepers/introduction/
安装
要求
首先,我们需要安装一些东西。
-
Git:
https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-
DappTools:
https://github.com/dapphub/dapptools#installation
你可能已经安装过make命令,如果没有的话,你需要make。可以按照这些步骤检查你是否已安装make。
开始
一旦我们安装了这些工具,我们就可以克隆入门工具包仓库并开始使用它。
shgit clone https://github.com/smartcontractkit/dapptools-starter-kitcd dapptools-starter-kitmake # This installs the project's dependencies.make test
现在你有了这些文件,我们来看看所有的东西是做什么的:
-
Makefile:放置脚本的文件。DappTools是基于命令行的,makefile能帮助我们运行只需要输入几个字符的大型命令。
-
lib:此文件夹用于存放外部依赖项,例如OpenZeppelin或ds-test。
-
out:编译代码的去向。类似于 Brownie 中的 build 文件夹或 Hardhat 中的 artifacts 文件夹。
-
src:这是智能合约文件所在的位置。类似于Brownie和Hardhat中的contracts文件夹。
测试
现在我们做一些测试!要进行测试,我们可以运行make test或dapp test。
来自DappTools的所有命令都可用于此仓库,包括dapp build、ethsign和dapp test等。
导入外部依赖
假设我们想使用OpenZeppelin标准创建一个 NFT。要安装外部合约或包,我们可以使用dapp install命令。我们需要指定GitHub仓库的组织和要安装的仓库名称。
首先,我们需要提交到目前为止的更改。DappTools将外部包作为git子模块引入,因此我们需要先提交。
运行:
git add .git commit -m ‘initial commit’
然后,我们可以安装我们的外部包。例如,对于OpenZeppelin,我们将使用:
dapp install OpenZeppelin/openzeppelin-contracts
现在应该可以在lib文件夹中看到一个标有openzeppelin-contracts的新文件夹,因为它是从 GitHub 下载的。这个仓库已经包含OpenZeppelin合约,所以会有一些重复,但我们仍然需要了解它是如何工作的。
部署
要进行部署,首先需要设置ethsign和.env文件。
设置你的帐户/ethsign
要将你的私钥导入DappTools,可以使用keystore或ethsign。ethsign附带dapptools的安装。对于ethsign,运行以下命令:
bash
ethsign import
现在将提示你输入私钥和密码。你可以从MetaMask等钱包中获取私钥。成功后,将私钥的地址添加到.env文件中的ETH_FROM变量下。有关示例,请参见.env.example文件。
可查看Makefile了解有关其背后工作原理相关的上下文。
如果你要部署到测试网,请确保你的钱包中有测试网ETH和LINK。你可以从 Chainlink水龙头(https://faucets.chain.link/)中获取测试网 LINK。
设置.env文件
你可以在.env.example中看到.env应该是什么样子的示例(部署到真实网络)。
-
ALCHEMY_API_KEY:可以通过获取 Alchemy (https://www.alchemy.com/)帐户获取。
-
ETH_FROM:发送交易的钱包地址。你必须将要使用的地址的私钥加载到ethsign中,可参考上文。
-
ETHERSCAN_API_KEY:用于在Etherscan验证合约(可选)。
-
ETH_RPC_URL:用于在使用make deploy时有一个默认的部署网络(可选)。
测试网和主网部署
在.env文件中设置ETH_RPC_URL或ALCHEMY_API_KEY,然后运行以下命令中的一个:
计数器合约(Keeper兼容合约):
bashmake deploy CONTRACT=Counter
Price Feeds合约:
bashmake deploy CONTRACT=PriceFeedConsumer
Chainlink VRF消费者合约:
bashmake deploy CONTRACT=VRFConsumer
你可以在scripts文件夹中各自的deploy文件中改变其部署参数。所有的构造器参数都在./src/helper-config.sh文件夹中创建。在这里你可以为不同网络分配不同的构造器参数。
本地测试网
# 在一个终端上dapp testnet将你的ETH_RPC_URL改为http://127.0.0.1:8545然后运行你的部署脚本。
在Etherscan上进行验证
部署完合约后,你可以在Etherscan上对该合约进行验证:
ETHERSCAN_API_KEY=<api-key> dappverify-contract<contract_directory>/<contract>:<contract_name><contract_address>
例如:
ETHERSCAN_API_KEY=123456765 dapp verify-contract ./src/Counter.sol:Counter 0×23456534212536435424
可查看DappTools文档以了解如何通过DappTools完成验证合约。
与合约交互
为了与我们的合约交互,我们使用seth命令。假设我们已经将 PriceFeedConsumer.sol 部署到 Kovan,现在我们要调用 getLatestPrice 函数。我们要怎么做呢?
ETH_RPC_URL=<YOUR_RPC_URL> seth call <YOUR_CONTRACT_ADDRESS> "getLatestPrice()"
例如:
ETH_RPC_URL=https://alchemy.io/adsfasdf seth call 0xd39F749195Ab1B4772fBB496EDAF56729ee36E55 "getLatestPrice()"
我们会得到类似 0x0000000000000000000000000000000000000000000000000000004c17b125c0的输出,这是 326815000000 的十六进制表示。
这是调用交易(不是花费gas)。要更改区块链的状态(消耗gas),我们要使用seth send。
假设我们部署了一个 VRFCConsumer 合约,我们想要调用getRandomNumber:
首先,我们需要在 Kovan 链上向我们的合约发送一些 LINK:
ETH_RPC_URL=<YOUR_RPC_URL>ETH_FROM=<YOUR_FROM_ADDRESS> seth send <LINK_TOKEN_ADDRESS>"transfer(address,uint256)" <VRF_CONSUMER_ADDRESS>1000000000000000000
如:
ETH_RPC_URL=https://alchemy.io/adfasdfETH_FROM=0×12345 seth send 0xa36085F69e2889c224210F603D836748e7dC0088"transfer(address,uint256)" 0xa74576956E24a8Fa768723Bd5284BcBE1Ea03adA100000000000000000
这里100000000000000000 = 1 LINK
然后,我们可以调用 getRandomNumber 函数:
ETH_RPC_URL=<YOUR_RPC_URL>ETH_FROM=<YOUR_FROM_ADDRESS> seth send <VRF_CONSUMER_ADDRESS> "getRandomNumber()"
稍等一会后,读取结果:
ETH_RPC_URL=<YOUR_RPC_URL> seth call<VRF_CONSUMER_ADDRESS> "randomResult()"
可以看到,将这些脚本放在我们的脚本文件夹中会很好用。如果你也想参与贡献,请提交PR(Pull Request)!
资源列表
本教程的一些有用资源:
-
DappTools
-
Hevm Docs
-
Dapp Docs
-
Seth Docs
-
Chainlink
-
awesome-dapptools
总结
DappTools 是一个非常强大的应用程序,可以帮助你构建颠覆性的dApp。我们建议你了解并尝试一下,看看你能够利用Chainlink去中心化服务来创造一些什么作品。
获取更多关于Chainlink的信息,请访问chain.link或在docs.chain.link阅读文档。要讨论集成问题,请联系专家。
比推快讯
更多 >>- Polymarket BTC 今日高于 72000 美元概率仅 4%,昨夜一度拉升至 74000 美元后回落
- WLFI 社区投票通过治理质押系统提案,赞成率为 99.12%
- 数据:共计 39,628,312 枚 SAHARA 从匿名地址转出,价值约 1.02 亿美元
- Bitdeer 本周出售 158.8 枚 BTC,当前仍维持零持仓
- Aave 发布 Aave V4 以太坊主网激活治理提案
- 伊朗被曝考虑允许部分油轮通过霍尔木兹海峡 前提是运载石油必须以人民币结算
- 澳大利亚将释放战略燃料储备,应对中东局势引发的供应担忧
- Coinbase 与 Bybit 洽谈投资合作协议,或助其推进美国合规市场布局
- Alchemy 推出 AgentCard,面向 AI Agent 支持 Polymarket 交易及外卖购物等功能
- 特朗普声称伊朗已被彻底击败
- CZ:区块浏览器应过滤垃圾交易,以减少地址投毒风险
- 美国众议院金融服务委员会主席:《CLARITY 法案》或可弥补《GENIUS 法案》留下的监管空白
- 数据:3 月 1 日至今仅 77 艘船通过霍尔木兹海峡
- 微软正在内测 OpenClaw 或将整合进 Teams 应用,预计下周将发布路线图
- 特朗普家族加密项目推出超级节点,锁仓 500 万美元代币可获得团队接触机会
- 贝莱德数字资产主管:不会推出过于复杂的加密 ETF 结构
- FBI:AI 深度伪造加剧诈骗风险,纳税季骗局更难识别
- 微软 Copilot AI 助手今年将登陆 Xbox 主机
- 美国驻伊拉克大使馆遭袭,其防空系统被摧毁
- 美国驻伊拉克使馆遭无人机袭击
- 昨日美国现货比特币 ETF 净流入 1.804 亿美元,连续五个交易日净流入
- 伊朗导弹击中美国在沙特的 5 架加油机
- 剑桥研究:比特币可承受全球 72% 以下海底电缆断裂,但定向攻击五大托管服务商或致网络瘫痪
- 数据:DEGO 涨超 30%,HUMA 涨超 21%
- 麻吉大哥将以太坊多单加仓至 8500 枚 ETH,单月胜率达到 75%
- 特朗普政府已启动美国石油储备释放程序
- 特朗普顾问:建议美国宣布胜利并从伊朗冲突中脱身
- USDC 发行规模首次突破 800 亿美元,创历史新高
- 某新地址 1 倍做多原油,3 日浮盈超 118 万美元
- RootData:IMX 将于一周后解锁价值约 158 万美元的代币
- X 平台产品负责人:额外分发 33.5 万美元创作者激励,资金来源于 AI 生成战争视频未披露者与虚假信息发布者对应激励
- Kalshi 与 Cash App 达成合作以便于用户充值
- POAP 平台自 3 月 16 日将转入维护模式,无法提供徽章发行功能,现有徽章收藏品不受影响
- 灰度以太坊迷你信托质押 57600 枚 ETH,价值约 1.216 亿美元
- Circle CEO:USYC 已成为全球最大规模代币化货币市场基金
- Kraken 关联 SPAC 寻求潜在并购标的,目标公司估值最高或达 100 亿美元
- 美国减少对经霍尔木兹海峡出口的能源依赖推动重启加州石油管道
- Polymarket 上预测 USDT 年底市值将达 2000 亿美元概率达 79%,USDC 年底市值将达 1000 亿美元概率达 60%
- L1 公链 Pharos 获港股上市公司协鑫新能源投资认购,估值近 10 亿美元
- Paradigm 发布首份预测市场民意调查报告,约 36%的美国选民已成预测市场用户
- 数据:Hyperliquid 平台鲸鱼当前持仓 34.07 亿美元,多空持仓比为 1.02
- 新加坡最大洗钱案“福建帮”亲属伦敦资产拟被英国没收,约合人民币 5500 万元
- 三只鲸鱼累计从 CEX 提取总计 16,728 枚 ETH
- Kalshi 周交易笔数首破 2000 万笔,创平台历史新高
- 分析:STRC 本周创下 7.45 亿美元单日交易量,或可对应约 5000 枚比特币购买力
- Santiment:交易所比特币储备占比已降至 2017 年 11 月以来的最低水平
- Polymarket 美国平台名义交易量超 7.5 亿美元,交易笔数超 500 万笔
- 美国军事官员透露战争可能还会持续几周,伊朗称哈尔格岛是红线
- 数据:美国 SOL 现货 ETF 单日总净流入 759.64 万美元
- 微软推出医疗 AI 产品 Copilot Health,迈向医疗超级智能
比推专栏
更多 >>- 懂王:那就大家一起難受吧|0313亞盤後
- 当黄金被「困」在迪拜,是时候旗帜鲜明「唱多」香港了
- 東大、波斯、阿拉伯【第七次/進展/能源變量】|0310東3.5
- 从 HSK 到 USDGO:香港两大持牌机构,开始「脱钩」
- There is no new boss YET
- New situation and new games|0305 Asian
- B52 Were on the way to Iran|0304 Middle East
- 开放独角兽门票:从 Robinhood 到 MSX,一场 Pre-IPO 的链上平权实验
- Big player's 『Trigger moment』|0227Europe
- 简街有没有「操纵」BTC?拆解 AP 制度,读懂 ETF 申赎机制背后的定价权博弈
观点
比推热门文章
- 数据:共计 39,628,312 枚 SAHARA 从匿名地址转出,价值约 1.02 亿美元
- Bitdeer 本周出售 158.8 枚 BTC,当前仍维持零持仓
- Aave 发布 Aave V4 以太坊主网激活治理提案
- 伊朗被曝考虑允许部分油轮通过霍尔木兹海峡 前提是运载石油必须以人民币结算
- 澳大利亚将释放战略燃料储备,应对中东局势引发的供应担忧
- Coinbase 与 Bybit 洽谈投资合作协议,或助其推进美国合规市场布局
- Alchemy 推出 AgentCard,面向 AI Agent 支持 Polymarket 交易及外卖购物等功能
- 特朗普声称伊朗已被彻底击败
- CZ:区块浏览器应过滤垃圾交易,以减少地址投毒风险
- 美国众议院金融服务委员会主席:《CLARITY 法案》或可弥补《GENIUS 法案》留下的监管空白
比推 APP



