TRC-10智能合约中转账

介绍

与 TRC-20 代币相比,TRC-10 代币面临用户体验灵活性问题。 在Odyssey 3.2中,开发人员及其智能合约调用者可以根据合约逻辑,在智能合约中进行TRC-10代币转账,从而使他们能够更好地在业务场景中控制代币执行。 与TRC-20代币不同,发送TRC-10代币与在合同中传输TRX方法类似, TRON开发者在solidity中增加了专门用于TRC-10的转账和查询的接口。

TRC10在合约中转账示例

pragma solidity ^0.5.0;

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);
    }
}

TRC 10代币类型

Odyssey_v3.2 为TRC10 代币定义了一种新类型(trcToken),它代表代币转账操作中的 tokenId。 TRC10 代币可以转换为 uint256 类型,反之亦然。

trcToken id = 1000001;

合约中TRC10转账

address.transferToken(uint256 tokenValue, trcToken tokenId) 

Odyssey_v3.2 为 TRON solidity 编译器中的 TRC10 代币转账定义了一个新的 transferToken 函数,并且在 JAVA-TRON 中也得到了支持。 TransferToken 函数与 transfer(uint256)函数一样,只有 2300 能量被发送到此函数,及其相关的回退函数。

合约中查询TRC10余额

address.tokenBalance(trcToken) returns(uint256 tokenAmount)

Odyssey_v3.2为 TRC10 代币余额查询定义了一个新的 tokenBalance 函数。

TokenValue & TokenID

Msg.tokenvalue 表示当前 msg 调用中的标记值,默认值为 0。 Msg.tokenid 表示当前 msg 调用中的标记 Id,默认值为 0。