簡體   English   中英

Web3.py:如何在沒有源代碼的情況下調用令牌函數

[英]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.

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