在智能合约中转账 TRX
在智能合约中,可以通过调用 Solidity 内置的地址成员函数,向其它地址转移存储在合约中的 TRX。
在 Solidity 中,有三种主要方法可以用于在合约中发起 TRX 转账:transfer(), send(), 和 call()。
- 对于简单的 TRX 转账,推荐使用最安全的
transfer()方法。 - 关于这些地址成员函数的详细技术说明和差异,请参考 Solidity 官方文档。
本文将以 transfer() 方法为例进行说明。
pragma solidity ^0.8.0;
contract SimpleTransfer {
receive() external payable {}
fallback() external payable {}
event TRXTransferred(address indexed recipient, uint amount);
// 函数:向指定地址转账指定数量的 TRX
function safeTransferTRX(address payable _recipient, uint _amount) external payable {
// 确保转账金额大于 0
require(_amount > 0, "Amount must be greater than zero.");
// 确保合约余额足够
require(address(this).balance >= _amount, "Insufficient TRX balance in contract.");
// 使用 transfer() 进行转账。
// 如果转账失败(例如:目标合约拒绝接收),交易将自动 Revert。
_recipient.transfer(_amount);
emit TRXTransferred(_recipient, _amount);
}
// 查询合约当前的 TRX 余额
function getBalance() public view returns (uint) {
return address(this).balance;
}
}
Updated 7 days ago