社区生态 | TRC10在智能合约上的转账


▼简介


TRC10 代币是波场上系统层面的一种代币。和TRC20相比,TRC10代币更具灵活性。在Odyssey 3.2版本中,开发者和他们的智能合约调用者能够通过智能合约根据合约逻辑来和TRC10代币进行互动,从而更好地在商业场景中使用代币。和TRC20代币不同的是,发送TRC10代币与在智能合约中转账TRX是一样的,也就是说TRC10代币的用量和TRX相仿。


▼将TRC10代币转至智能合约账户


TRC10代币可以通过合约调用被转到智能合约上。合约调用使用的是 DeployContract 和 TriggerContract 的两个 gRPC API。


▼Wallet-CLI 和示例 


部署合约 (DeployContract)



壳层



触发合约(TriggerContract)



壳层



▼新的参数说明 


代币价值(tokenValue)


调用者想要从调用者账户发到合约上的代币数量。


代币ID (tokenId)


代币的标号,是protobuff 格式的64位整数。当值为空时钱包客户端中会以#号显示。


注意:

OriginEnergyLimit 是Odyssey 3.2版本中的一个新功能,可以在调用者使用开发者能量的时候限制能量的消耗。这意味着合约所有者可以设置能量上限,防止其他用户过度使用所有者的资源。

TokenId 是Odyssey 3.2版本中的一个新功能。它可以在账户里被称作assetV2的新地图字段中找到。使用 GetAccount(账户) 可以得到TokenId和它的值。TokenId 由系统设置,从 1_000_001开始。当一个新的 TRC10 代币被创建时, TokenId的数字就会加1,成为这个新代币的ID。


▼TRC10 与智能合约的互动 


TRC10 合约示例 


Solidity



▼TRC 代币种类


Odyssey_v3.2 将TRC10代币定义了一个新类型,代表了代币转账操作中的TokenId。TRC10 代币可以被转化成 uint256类型,反之亦然。


▼代币转账 



Odyssey_v3.2 为TRON的Solidity 编译器中的TRC10 代币定义了一个新的代币转账函数,该函数也被Java-TRON所支持。当一个地址类型变量触发这个函数时,当前合约将会把一定数量的代币从合约账户转到当前地址账户。代币转账函数和转账(uint256)函数有相似的机制。只有2300点能量被发送至这个函数和其相关的回退函数。


▼代币余额查询 



Odyssey_v3.2 为TRC10代币余额查询定义了一种新的函数。当一个新的地址类型变量触发函数时,会返回地址账户所有的代币数量。


▼代币价值&代币ID 


Msg.tokenvalue代表了当前信息调用中的代币值,一般默认为0, Msg.tokenid 代表了当前信息调用中的代币ID,一般默认为0。


Solidity 编译器


GitHub


Odyssey v3.2(https://github.com/tronprotocol/solidity/tree/Odyssey_v3.2)


注意事项 :

由新的波场/Solidity Odyssey_v3.2编译器生成的字节码在JAVA-TRON Odyssey_v3.2中的ALLOW_TVM_TRANSFER_TRC10提案被通过之前将无法被使用。因此,直到ALLOW_TVM_TRANSFER_TRC10提案在链上被批准前,任何依靠波场编译器的工具不应使用版本3.2编译器并将其公之于众。


原文链接:

https://medium.com/@TRONSCAN_ORG/tronscan-class-trc10-transfer-in-smart-contracts-6a75e9fe3dd2


了解更多:


官网: https://tronscan.org/

微博: https://www.weibo.com/tronscan

电报群: https://t.me/tronscan_org

推特: https://twitter.com/TRONSCAN_ORG

Medium:https://medium.com/@TRONSCAN_ORG



为了增进波场社区成员对TRONSCAN和TRON生态的了解,TRONSCAN策划发布系列教程,帮助用户更好的使用TRONSCAN和融入TRON社区生态,欢迎大家在下方留言互动,和我们探讨区块链的前沿技术并告诉我们你最关心的话题。文章首发Medium,国内为翻译版,更新进度有迟延,尽请见谅。



- END-


发表评论

暂时没有评论,赶紧抢沙发吧!