当我们想发送一些ETH
时,我们需要使用"payable
“关键字。但是,即使我们想发送一些tokens
(即uint256 token
),我们也需要在函数中再次使用"payable
“关键字,如下所示?或者我们可以移除它?
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;
}
发布于 2018-06-04 02:55:56
在传输令牌时不需要payable
。
这主要有两个原因:
1)你不能转移以太
2)令牌不直接传输。它们不会从您的钱包移动到另一个钱包中--传输是通过调用令牌契约来执行的,它只是在内部调整数字(更改balances
变量内容)。
发布于 2018-06-04 02:56:37
您只需要使用payable
修饰符来允许您的函数接受以太。这是没有必要发送以太。
希望这能有所帮助。
https://ethereum.stackexchange.com/questions/50378
复制