通过智能合约将Eth转移到其他账户?



以下代码中eth默认以Wei的形式转账,但我希望金额以Ether的形式转账,我该怎么做?

function (uint amount) public payable {
someaddress.transfer(amount);
}

Wei是Ether的最小单位,具体为1 ETH == 1,000,000,000,000,000,000(或1e18) Wei。

transfer()函数始终接受以wei表示的金额。因此,如果您只想传递1作为输入参数,这意味着您想要发送1个完整的ETH,您可以将该值乘以1e18,有效地将ETH转换为wei。

function (uint ethAmount) public payable {
uint weiAmount = ethAmount * 1e18;
someaddress.transfer(weiAmount);
}

注意:还有以太全局单位,但在当前的Solidity版本(0.8)中,它只能与数字文字结合使用-不能与变量结合使用。

uint weiAmount = 1 ether; // ok
uint weiAmount = ethAmount ether; // syntax error