我做了一个简单的ERC20令牌智能契约,但是我的transferFrom函数不能工作。我一直收到“注意:如果你发送值的话,构造函数应该是可支付的。”即使我宣布它是应付的。
function transferFrom(address from, address to, uint256 value) payable public returns(bool success) {
require(
allowed[from][msg.sender] >= value
&& balances[from] >= value
&& value >= 0
);
balances[from] -= value;
balances[to] += value;
allowed[from][msg.sender] -= value;
Transfer(from, to, value);
return true;
}
发布于 2019-07-28 00:31:15
如果您正在使用转移,您的功能是启动一种支付形式。应付款项是指在将乙醚拿到合同时,哪个职能只对以太付款作出反应。
您需要从您的函数中删除传输调用。
转移(从价值转移到价值);
那就行了。然后,如果您愿意的话,可以发出不同的应付款功能。
发布于 2018-02-18 18:23:51
我想是你刚来的时候。可能有两个问题:调用函数和需求。首先让我解释一下payable函数。当您声明一个函数为应付款时,这意味着转换将发送以太到该函数。
如何调用应付函数,
contractObj.sampleFunction.sendTransaction(ar1, arg2,{from: <FROM>, value:<Eth_in_wei>});如果您不使用eth事务调用函数,它将抛出一个error.Note:如果您发送值,则应支付构造函数
来到你们的基地:
transferFrom()函数将检查用户A是否允许使用X号令牌自动借入B地址?如果是,它将从A中扣除令牌并贷记到B地址
第一,用户A必须使用B地址和令牌数调用审批()函数。在“批准”方法中,直接将X个令牌数分配给B。
因此,您必须调用transferFrom(),然后,经过一段时间或第三方合同将调用地址A、地址B和Y的()方法。
当您想将存储变量保存在实体中时,需要使用{from:,gas:}调用sendTransaction(),如果函数是payable,则值键将是部分。
有关参考资料,请参阅以下连结:
https://theethereum.wiki/w/index.php/ERC20_令牌_标准
https://medium.com/@jgm.orinoco/understanding-erc-20-token-contracts-a809a7310aa5
https://ethereum.stackexchange.com/questions/40089
复制相似问题