如何解决如何与 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''
。
解决方法
事实证明,这样做的方法如下:
subject manual_label prediction value boolean_idx
A __label__Religione_e_Magia (__label__Bibbia_storie_dal_Vecchio_e_dal_Nuov... ... __label__Bibbia_storie_dal_Vecchio_e_dal_Nuovo_Testamento
B __label__Religione_e_Magia (__label__Religione_e_Magia,__label__Storia) ... __label__Religione_e_Magia
C __label__Mitologia_classica_e_storia_antica (__label__Societa_civilizzazione_cultura,) ... __label__Societa_civilizzazione_cultura
D __label__Essere_umano_uomo_in_generale (__label__Essere_umano_uomo_in_generale,) ... __label__Essere_umano_uomo_in_generale
E __label__Religione_e_Magia (__label__Religione_e_Magia,) ... __label__Religione_e_Magia
其中 transaction = {'from': w3.eth.accounts[6],'value': w3.toWei(1,'ether')}
tx_hash = Voting.functions.voteForCandidate(1).transact(transaction)
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
只是不同帐户名称的列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。