我将合同部署到Goerli测试网。部署成功。我在Remix中对其进行了测试。
合同代码:
pragma solidity ^0.5.0;
contract Test{
string private str;
constructor() public {
str = " ";
}
function getStr() public view returns(string memory _str){
_str = str;
}
function setStr(string memory _str) public{
str = _str;
}
}
然后,我尝试使用web3和MetaMask建立Web界面。
<script>
ethereum.enable()
var abi = [
{
"constant": false,
"inputs": [
{
"internalType": "string",
"name": "_str",
"type": "string"
}
],
"name": "setStr",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": true,
"inputs": [],
"name": "getStr",
"outputs": [
{
"internalType": "string",
"name": "_str",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
];
var address = 0x4316d047388e61EBC3Ed34DFf4cEE215840decDa;
var myContract = web3.eth.contract(abi);
var TestC = myContract.at(address);
console.log(TestC);
var x = TestC.getStr();
</script>
当我运行它时,它返回:
未捕获的错误:地址无效
在c(inpage.js:1)
在inputCallFormatter(inpage.js:1)
在inpage.js:1
在Array.map()
在o.formatInput(inpage.js:1)
在o.toPayload(inpage.js:1)
在[呼叫时](inpage.js:1)
在u.call(inpage.js:1)
在u.execute(inpage.js:1)
at(index):46
我需要做什么?
答案 0 :(得分:0)
您的变量storm rebalance
应该是一个十六进制字符串,而不是原义的十六进制数字-即使最终会被以太坊节点转换为数字。
尝试以下方法:
address