Remix
出現錯誤:處理事務時出現 VM 異常:revert’,‘code’:-32000。使用 Web3.py 部署到 Ganache 時
我收到以下錯誤消息:處理事務時出現錯誤:VM 異常:revert’,‘code’:-32000 我已連接到 Ganache。這是我的程式碼:
import json from web3 import Web3 ganache_url = "HTTP://127.0.0.1:7545" web3 = Web3(Web3.HTTPProvider(ganache_url)) web3.eth.defaultAccount = web3.eth.accounts[0] abi = json.loads('[{"constant":false,"inputs":[{"name":"_greeting","type":"string"}],"name":"setGreeting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"greet","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"greeting","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]') bytecode = "608060405234801561001057600080fd5b50600436106100415760003560e01c8063a413686214610046578063cfae321714610101578063ef690cc014610184575b600080fd5b6100ff6004803603602081101561005c57600080fd5b810190808035906020019064010000000081111561007957600080fd5b82018360208201111561008b57600080fd5b803590602001918460018302840111640100000000831117156100ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610207565b005b610109610221565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014957808201518184015260208101905061012e565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018c6102c3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101cc5780820151818401526020810190506101b1565b50505050905090810190601f1680156101f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061021d929190610361565b5050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103595780601f1061032e57610100808354040283529160200191610359565b820191906000526020600020905b81548152906001019060200180831161033c57829003601f168201915b505050505081565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106103a257805160ff19168380011785556103d0565b828001600101855582156103d0579182015b828111156103cf5782518255916020019190600101906103b4565b5b5090506103dd91906103e1565b5090565b61040391905b808211156103ff5760008160009055506001016103e7565b5090565b9056fea165627a7a72305820715b80cf94752eff03321ef662bbb7b4bc5d4b91ecdf692a31c3d23ecf73afc50029" Greeter = web3.eth.contract(abi=abi,bytecode=bytecode) tx_hash=Greeter.constructor().transact()
這是我的 Solidity 契約:
pragma solidity ^0.4.21; contract Greeter { string public greeting; function Greeter () public { greeting ="Hello"; } function setGreeting (string _greeting ) public { greeting = _greeting; } function greet()view public returns (string){ return greeting; } }
最後一條語句:
tx_hash=Greeter.constructor().transact()
不編譯。我究竟做錯了什麼?先感謝您 :)
編輯:根據 Majd TL 的建議,在 web3 = Web3(Web3.HTTPProvider(ganache_url)) 添加了一個“)”。
好的,我想通了:我的 Solidity 程式碼有一些問題。使用這個用 0.5.7 編譯的工作。
pragma solidity ^0.5.0; contract MessageContract{ string private message = "Hello World"; function getMessage() public view returns(string memory){ return message; } function setMessage(string memory newMessage ) public { message = newMessage; } }