solidity智能合约与智能合约转账授权或智能合约向另一个智能合约转账

迷南。 2022-11-13 05:22 455阅读 0赞
  1. //代码通用于5点几到6点几版本
  2. library TransferHelper {
  3. function safeApprove(address token, address to, uint value) internal {
  4. bytes4(keccak256(bytes('approve(address,uint256)')));
  5. (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
  6. require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
  7. }
  8. function safeTransfer(address token, address to, uint value) internal {
  9. bytes4(keccak256(bytes('transfer(address,uint256)')));
  10. (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
  11. require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
  12. }
  13. function safeTransferFrom(address token, address from, address to, uint value) internal {
  14. bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
  15. (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
  16. require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
  17. }
  18. function safeTransferTRX(address to, uint value) internal {
  19. (bool success, ) = to.call.value(value)(new bytes(0));
  20. require(success, 'TransferHelper: TRX_TRANSFER_FAILED');
  21. }
  22. }

发表评论

表情:
评论列表 (有 0 条评论,455人围观)

还没有评论,来说两句吧...

相关阅读

    相关 智能合约

    智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。