[英]Web3.py : How to call token functions without source code
我用OpenZeppelin框架創建了一個基本的MintableToken
,但是我丟失了我的源代碼。 我想要更多我的代幣,我試圖通過web3.py這樣做
這是我目前的代碼
web3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/MYAPI"))
web3.eth.defaultAccount = 'MYACC_ADDR'
abi = [
{
"constant": False,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": False,
"stateMutability": "pure",
"type": "function"
}
]
address = web3.toChecksumAddress('CONTRACT_ADDR') # FILL IN YOUR ACTUAL ADDRESS
contract = web3.eth.contract(address=address, abi=abi)
print(contract.functions.mint('MYACC_ADDR', 200).call())
通過python3 mint.py
運行此代碼python3 mint.py
打印True
,但實際上並未調用該契約。 有小費嗎?
"stateMutability": "pure"
這是錯誤的,意味着默認情況下web3.py
將對節點進行本地調用,而不是發送實際的事務。
我相信它應該是這樣的:
"stateMutability": "nonpayable"
當然,在更改之后請注意,您需要為web3.py
提供一個from
地址和一個私鑰來簽署交易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.