在智能合约中转账 TRC-10

在 Solidity 合约内部,使用 trcToken 类型和 transferToken 内置函数转账 TRC-10 Token。

📘

前置阅读

自 Odyssey 3.2 起,智能合约可通过 TRON 特有的 Solidity 内置函数直接转账 TRC-10 Token。TRC-20 是合约层标准,通过合约实现;TRC-10 是协议层 Token,在合约内部转账时使用专用语言扩展,而非调用其他合约的 transfer 函数。

示例:合约中的 TRC-10 转账

pragma solidity 0.5.10;

contract transferTokenContract {
    constructor() payable public {}

    function() payable external {}

    function transferTokenTest(address payable toAddress, uint256 tokenValue, trcToken id) payable public {
        toAddress.transferToken(tokenValue, id);
    }

    function msgTokenValueAndTokenIdTest() public payable returns (trcToken, uint256) {
        trcToken id = msg.tokenid;
        uint256 value = msg.tokenvalue;
        return (id, value);
    }

    function getTokenBalanceTest(address accountAddress) payable public returns (uint256) {
        trcToken id = 1000001;
        return accountAddress.tokenBalance(id);
    }
}

TRON 特有的 TRC-10 内置功能

trcToken 类型

Odyssey 3.2 引入了 trcToken 类型,用于表示转账操作中的 TRC-10 Token ID。

trcToken id = 1000001;

address.transferToken(value, tokenId)

从合约向地址发送 TRC-10 Token。接收方必须声明为 payable

address.transferToken(uint256 tokenValue, trcToken tokenId)

address.tokenBalance(tokenId)

查询某地址的 TRC-10 Token 余额,返回值为 uint256

address.tokenBalance(trcToken) returns (uint256 tokenAmount)

msg.tokenvaluemsg.tokenid

当智能合约函数调用附带 TRC-10 Token 时,msg.tokenvalue 代表转账的 Token 数量,msg.tokenid 代表 Token ID。


相关资源