构建实用的去中心化投票应用
1. 投票测试
在投票测试环节,我们需要确保同一账户不能多次投票。以下代码实现了该功能:
with pytest.raises(eth_tester.exceptions.TransactionFailed):
voting.functions.vote(1).transact({'from': account2})
with pytest.raises(eth_tester.exceptions.TransactionFailed):
voting.functions.vote(0).transact({'from': account2})
同时,我们还需要检查获胜提案,代码如下:
def test_winning_proposal(voting, chain):
t = eth_tester.EthereumTester()
account2 = t.get_accounts()[1]
account3 = t.get_accounts()[2]
account4 = t.get_accounts()[3]
set_txn_hash = voting.functions.vote(0).transact({'from': account2})
chain.wait.for_receipt(set_txn_hash)
set_txn_hash = voting.functions.vote(0).transact({'f