在智能合约中转账 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 类型
trcToken 类型Odyssey 3.2 引入了 trcToken 类型,用于表示转账操作中的 TRC-10 Token ID。
trcToken id = 1000001;address.transferToken(value, tokenId)
address.transferToken(value, tokenId)从合约向地址发送 TRC-10 Token。接收方必须声明为 payable。
address.transferToken(uint256 tokenValue, trcToken tokenId)address.tokenBalance(tokenId)
address.tokenBalance(tokenId)查询某地址的 TRC-10 Token 余额,返回值为 uint256。
address.tokenBalance(trcToken) returns (uint256 tokenAmount)msg.tokenvalue 与 msg.tokenid
msg.tokenvalue 与 msg.tokenid当智能合约函数调用附带 TRC-10 Token 时,msg.tokenvalue 代表转账的 Token 数量,msg.tokenid 代表 Token ID。
相关资源
- TRC-10 —— TRC-10 标准概览
- TRC-20 —— 新项目推荐的同质化 Token 标准
- 编写与编译 Solidity —— TRON 上的 Solidity 基础知识
Updated 26 days ago