簡體   English   中英

如何從特定地址調用合同功能

[英]How to call a contract function from a specific address

我想使用web3從我持有私鑰的特定地址調用合同功能(不調用sendTransaction)。 我還連接了合同實例。 我知道我必須像web3.personal.unlockAccount(address,password,duration)之類的東西,然后指定發件人地址。 所以我的問題是,“密碼”是我輸入私鑰的地方嗎? 解鎖后如何將該地址傳遞給fromAddress。 還是有更簡化的方法來解決這個問題?

輸入私鑰的“密碼”在哪里?

,不是。 實際上,它是一個密碼,您在創建帳戶時輸入該密碼,並用於生成密鑰庫文件。


如果使用web3.personal.unlockAccount(address,password,duration) ,則需要將密鑰keystore文件保存在geth的chaindata附近的keystore文件夾中。


另一種方法使用起來會web3.eth.sendRawTransactionweb3.py ,但是這將是笨重從中調用合同法一點點。

key = '0x' + 'YOUR-PRIVATE-KEY
transaction = {
    'to': _to,
    'value': 0,
    'gas': 300000,
    'gasPrice': 23000000000,
    'nonce': web3.eth.getTransactionCount(_from),
    'chainId': int(web3.admin.nodeInfo['protocols']['eth']['network']),
    'data': b''
}

signed = web3.eth.account.signTransaction(transaction, key)
print("Transaction Hash: " + web3.toHex(web3.eth.sendRawTransaction(signed.rawTransaction)))

我的建議是通過使用web3.eth.account.encryptweb3.py因為web3.js尚缺乏此功能)來創建以太坊客戶端可識別的密鑰文件,並在生成密鑰文件后將其放在正確的文件夾中並嘗試簡單地解鎖帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM