我需要从我的代币合约中可靠地转移 BNB,有人可以帮忙吗?在 bsc 网络上。
1141 次
1 回答
1
要将 BNB 从您的合约中转移给收款人,您可以transfer()
使用address payable
.
该ether
单位只是将数字乘以10^18
,因为该transfer()
方法接受最小单位的金额 - 而不是 BNB(或 ETH,具体取决于您所在的网络)。
pragma solidity ^0.8;
contract MyContract {
function foo() external {
address recipient = address(0x123);
payable(recipient).transfer(1 ether);
}
}
如果你想接受来自发送方的 BNB,你需要将你的函数标记为payable
. 然后他们将能够发送 BNB 以及执行您的功能的交易。
如果您想转移属于您的合约地址的代币,您可以执行代币合约的功能transfer()
。
pragma solidity ^0.8;
interface IERC20 {
function transfer(address recipient, uint256 amount) external returns (bool);
}
contract MyContract {
// this function can accept BNB
// the accepted amount is in the `msg.value` global variable
function foo() external payable {
IERC20 tokenContract = IERC20(address(0x456));
// sending 1 smallest unit of the token to the user executing the `foo()` function
tokenContract.transfer(msg.sender, 1);
}
}
于 2021-12-12T12:34:06.870 回答