智能合约开发与部署:从Populus到投票应用
1. Populus开发框架下的智能合约测试
在智能合约开发中,测试是确保其功能正确性的关键环节。在Populus开发框架里,我们不仅可以对无参数构造函数的智能合约进行测试,还能处理有参数构造函数的合约。
当测试涉及到交易取款时,由于经理账户取款后余额减去初始余额不会恰好是1以太币,因为账户需要支付手续费。所以,我们使用一个粗略的测量方法来确保取款成功,只要差值低于10 gwei即可。gwei是用于计算交易费用的货币单位,1 gwei等于1,000,000,000 wei。可以使用以下代码进行断言:
assert abs((after_withdraw_balance - initial_balance) - web3.toWei('1', 'ether')) < web3.toWei('0.00000001', 'ether')
运行测试的命令为:
(populus-venv) $ py.test tests/test_donation.py
对于有参数构造函数的智能合约,我们以 Greeter2.vy
合约为例:
greeting: bytes[20]
@public
def __init__(greeting_param: bytes[20]):
self.greeting = greeti