无法退出合同
unable to withdraw from the contract
我有一个非常简单的合同,它适用于混音。我可以存款(回退)和取款。
我想在我的 webapp 上用 web3js 库来做。
合约有这些功能
fallback() external payable {}
modifier onlyOwner(address caller) {
require(caller == _owner, "You are not the owner of the contract");
_;
}
function getContractAmount(address caller) public view onlyOwner(caller) returns (uint256){
return address(this).balance;
}
function withdraw() external {
address payable to = payable(msg.sender);
to.transfer(getContractAmount(to));
}
在我的网络应用程序上,我能够与我的合约的其他功能进行交互,所以我也导入了地址合约和 ABI。
我有这个功能
contract.methods.withdraw().call().then((res) => {
console.dir(res)
$('#info').html(res);
})
.catch(revertReason => {
console.log({ revertReason });
$('#info').text(revertReason);
}
)
但我无法检索我的智能合约的金额(是的,智能合约有以太币)
与 console.dir,我得到“u”
call() 方法用于 read-only 个调用。
由于withdraw()
函数改变了状态,你需要send()一个事务。
contract.methods.withdraw().send({
from: senderAddress
})
您的 web3 实例或节点需要知道 senderAddress
的私钥使用 wallet.add() 将私钥添加到 web3 实例。
我有一个非常简单的合同,它适用于混音。我可以存款(回退)和取款。 我想在我的 webapp 上用 web3js 库来做。
合约有这些功能
fallback() external payable {}
modifier onlyOwner(address caller) {
require(caller == _owner, "You are not the owner of the contract");
_;
}
function getContractAmount(address caller) public view onlyOwner(caller) returns (uint256){
return address(this).balance;
}
function withdraw() external {
address payable to = payable(msg.sender);
to.transfer(getContractAmount(to));
}
在我的网络应用程序上,我能够与我的合约的其他功能进行交互,所以我也导入了地址合约和 ABI。
我有这个功能
contract.methods.withdraw().call().then((res) => {
console.dir(res)
$('#info').html(res);
})
.catch(revertReason => {
console.log({ revertReason });
$('#info').text(revertReason);
}
)
但我无法检索我的智能合约的金额(是的,智能合约有以太币)
与 console.dir,我得到“u”
call() 方法用于 read-only 个调用。
由于withdraw()
函数改变了状态,你需要send()一个事务。
contract.methods.withdraw().send({
from: senderAddress
})
您的 web3 实例或节点需要知道 senderAddress
的私钥使用 wallet.add() 将私钥添加到 web3 实例。