所以我有一个我已经定义然后编译的solidity合约:
voting_contract_compiled = compile_contract('Voting')
voting_deployment_tx_receipt, Voting = deploy_contract(w3, voting_contract_compiled, 10)
当我这样做时,Voting.all_functions()
我得到:
[<Function getNumVoters()>,
<Function getStatus()>,
<Function getWinner()>,
<Function isVotingOpen()>,
<Function totalVotesFor(int256)>,
<Function validateAndCacheVote()>,
<Function voteForCandidate(int256)>,
<Function votesReceived(int256)>]
这是我定义的功能。我现在要做的是与来自默认帐户以外的发件人的这些功能进行交互。我不知道该怎么做。我是否需要编译另一份合同(这似乎不是正确的选择),但似乎每当我这样做时Voting.something
,它指的是那里的默认帐户,所以制作新合同是我唯一能想到的,但这似乎也是错误的然后我将实例化一个新合同。
我想做类似的事情:
account1 = {'from': w3.eth.accounts[1], 'value': w3.toWei(1, 'ether')}
Voting.functions.voteForCandidate(1).transact(account1)
但我明白了TransactionFailed: execution reverted: b''
。