ETH 的 TransferFrom() 函数(作为本机令牌而不是 ERC20)?
TransferFrom() function for ETH(as native token not ERC20)?
是否有类似于 transferFrom() 函数的函数,但对于 ETH,原生代币不存在?
如果不是,您将如何制作具有相同功能但用于本机令牌的函数。
谢谢!
无法模拟相同的功能。
代币批准存储在代币合约以及代币余额中。
为了模拟与原生 ETH 相同的功能,还需要在存储 ETH 余额的同一层上有一个审批数据库。但是没有。
除非您可以使用 WETH 令牌(或任何其他自定义令牌),否则您只能让用户将本机 ETH 发送到托管合约。但是在从合约中提取之前,他们将无法使用托管的 ETH。
为简单起见,此示例仅显示一个用户的托管合同。但它可以扩展以跟踪多个用户的资金。
pragma solidity ^0.8;
contract Escrow {
address holder;
address admin;
receive() external payable {}
// only the holder and the admin contract
// can pull funds from this escrow account
function withdraw(uint256 _amount) external {
require(msg.sender == holder || msg.sender == admin);
payable(msg.sender).transfer(_amount);
}
}
是否有类似于 transferFrom() 函数的函数,但对于 ETH,原生代币不存在?
如果不是,您将如何制作具有相同功能但用于本机令牌的函数。
谢谢!
无法模拟相同的功能。
代币批准存储在代币合约以及代币余额中。
为了模拟与原生 ETH 相同的功能,还需要在存储 ETH 余额的同一层上有一个审批数据库。但是没有。
除非您可以使用 WETH 令牌(或任何其他自定义令牌),否则您只能让用户将本机 ETH 发送到托管合约。但是在从合约中提取之前,他们将无法使用托管的 ETH。
为简单起见,此示例仅显示一个用户的托管合同。但它可以扩展以跟踪多个用户的资金。
pragma solidity ^0.8;
contract Escrow {
address holder;
address admin;
receive() external payable {}
// only the holder and the admin contract
// can pull funds from this escrow account
function withdraw(uint256 _amount) external {
require(msg.sender == holder || msg.sender == admin);
payable(msg.sender).transfer(_amount);
}
}