VRC-10智能合约中转账

介绍

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

VRC10在合约中转账示例

pragma solidity ^0.5.0;

contract transferTokenContract {
    constructor() payable public{}
    
    function() payable external {}
    
    function transferTokenTest(address payable toAddress, uint256 tokenValue, vsToken id) payable public    {
        toAddress.transferToken(tokenValue, id);
    }
    
    function msgTokenValueAndTokenIdTest() public payable returns(vsToken, uint256){
        vsToken id = msg.tokenid;
        uint256 value = msg.tokenvalue;
        return (id, value);
    }
    
    function getTokenBalanceTest(address accountAddress) payable public returns (uint256){
        vsToken id = 1000001;
        return accountAddress.tokenBalance(id);
    }
}

VRC 10代币类型

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

vsToken id = 1000001;

合约中VRC10转账

address.transferToken(uint256 tokenValue, vsToken tokenId)

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

合约中查询VRC10余额

address.tokenBalance(vsToken) returns(uint256 tokenAmount)

为 VRC10 代币余额查询定义了一个新的 tokenBalance 函数。

TokenValue & TokenID

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