Ala*_*n K 5 blockchain ethereum solidity smartcontracts
我对可靠性很陌生,当我使用 remix 来测试我的合约时,我想将一些 eth 从我的帐户转移到智能合约。我已经尝试过这段代码,但它似乎从合约中转移了 eth,但没有从我的帐户中转移。
function addStaker (uint _stakeAmount) public membership(master, msg.sender) returns(bool) {
if(!members[msg.sender].alreadyExist) {
Member memory newMember = Member(msg.sender, true);
members[msg.sender] = newMember;
bool sent = payable(address(this)).send(_stakeAmount);
require(sent, "invalid balance");
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如何将 eth 从我的账户转移到智能合约?
智能合约无法从地址中提取合约指定数量的 ETH。金额始终需要由发件人指定并签名。
合约只能验证发送的金额:
function addStaker() public payable {
require(msg.value == 1 ether);
}
Run Code Online (Sandbox Code Playgroud)
如何选择金额取决于您使用的钱包软件。对于 Remix,“部署和运行交易”选项卡中有“值”输入,您可以在其中指定随交易发送的 ETH 数量。