【发布时间】:2022-01-02 03:34:36
【问题描述】:
我部署了这个合约,旨在将以太币从自己发送到另一个帐户
pragma solidity ^0.8.0;
contract Contract {
address public owner;
address public admin;
constructor(address _admin) public {
owner = msg.sender;
admin = _admin;
}
modifier onlyOwner(address sender) {
require(
sender == admin,
"Only the admin of the contract can perform this operation."
);_;
}
function sendTo (
address toAddress
) public payable onlyOwner(msg.sender) {
payable(toAddress).transfer(msg.value);
}
}
我尝试在客户端与它进行交互:
var contract = new web3.eth.Contract(abi, Address, null);
const transaction = {
from: mainAcct,
to: dummyAcct,
value: '10000000000000000',
gas: 30000
};
await contract.methods.sendTo(dummyAcct).send(
transaction , function(err, hash){
if(!err){
console.log("Transaction hash:", hash);
}else{
console.log(err);
}
});
} catch (e) {
console.log(e);
}
为什么我会在控制台中收到此错误:
Error: Transaction has been reverted by the EVM
任何帮助将不胜感激!
K
【问题讨论】:
-
您是从
mainAcct地址还是从其他地址部署合约? -
是的,来自 mainAcct
-
好的,一个后续问题,因为我一开始误读了你的代码逻辑。在部署过程中,您向构造函数传递了什么值?
mainAcct也是? -
是的,两者都是 mainAcct!