首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使我们不发送ETH,也使用“应付款”?

即使我们不发送ETH,也使用“应付款”?
EN

Ethereum用户
提问于 2018-06-04 10:52:44
回答 2查看 43关注 0票数 0

当我们想发送一些ETH时,我们需要使用"payable“关键字。但是,即使我们想发送一些tokens (即uint256 token),我们也需要在函数中再次使用"payable“关键字,如下所示?或者我们可以移除它?

代码语言:javascript
运行
复制
struct AssetStruct {
        address owner;
        bool isOwner;
    }

    mapping(uint256 => AssetStruct) assetStructs;
    uint256[] public assetList;   
    mapping(address => uint) public balance;
    mapping(uint256 => mapping (address => mapping(address => bool))) public isPaymentDoneMutual;

function playerPaymentMutual(uint256 _id, address _player, uint256 _token)  payable public  returns(bool isIndeed) {

                address _owner;

                _owner = assetStructs[_id].owner;

                balance[_owner] = balance[_owner] + _token;

                balance[_player] = balance[_player] - _token;

                isPaymentDoneMutual[_id][_player][_owner] = true;

                        return true;
}
EN

回答 2

Ethereum用户

回答已采纳

发布于 2018-06-04 10:55:56

在传输令牌时不需要payable

这主要有两个原因:

1)你不能转移以太

2)令牌不直接传输。它们不会从您的钱包移动到另一个钱包中--传输是通过调用令牌契约来执行的,它只是在内部调整数字(更改balances变量内容)。

票数 1
EN

Ethereum用户

发布于 2018-06-04 10:56:37

您只需要使用payable修饰符来允许您的函数接受以太。这是没有必要发送以太。

希望这能有所帮助。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/50378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档