1 个稳定版本
3.0.0 | 2022年3月23日 |
---|
#11 在 #委托者
89KB
111 行
委托者智能合约
委托者智能合约是我们展示在链上执行其他智能合约的案例。
它总共由 4 个不同的智能合约组成
- 委托者(根):将调用委托给 Adder 或 Subber 智能合约
- 加法器:增加 Accumulator 智能合约中的值
- 减法器:减少 Accumulator 智能合约中的值
- 累加器:拥有一个简单的
i32
值,可以被增加或减少
为了测试这个智能合约组合,您需要执行以下步骤。
您可以使用我们的 合约 UI 上传合约。如果您想本地测试,我们的 substrate-contracts-node
是启动本地智能合约链的一个简单方法。
-
使用
./build-all.sh
脚本编译所有合约。您将在target/ink/
文件夹中收到所有智能合约的相应.contract
包target/ink/delegator.contract
target/ink/adder/adder.contract
target/ink/subber/subber.contract
target/ink/accumulator/accumulator.contract
-
将 Accumulator、Adder 和 Subber 的
.contract
包上传到链上。 -
注意记录上传合约的相应代码哈希。您可以从上传合约的页面复制合约哈希 [链接]
-
给定所有代码哈希和起始值,实例化 Delegator 智能合约。确保捐赠足够大(如果您使用我们的
substrate-contracts-node
,它为1000000
)。Delegator 智能合约将为您实例化其他智能合约。 -
现在您可以使用 Delegator 智能合约提供的操作。具体来说,使用
delegate
来委托调用 Adder 或 Subber,以增加或减少 Accumulator 智能合约中存储的值,以及使用switch
来切换当前委托的智能合约。初始委托的智能合约是 Adder。
__注意:__
根据您的Substrate版本,您可能会遇到UI中预填充的gas估计值的一个bug,并出现错误ExtrinsicFailed: OutOfGas
。作为解决方案,请手动设置最大允许的gas(例如,设置为5000)。
依赖项
~5–7MB
~128K SLoC