首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空投合同无效

空投合同无效
EN

Stack Overflow用户
提问于 2018-08-06 06:04:41
回答 1查看 424关注 0票数 2

我正在尝试实现这个空投:https://github.com/odemio/airdropper/blob/master/Airdropper.sol最初,我开始为我们的用例编写测试,但是空投不起作用。

代码语言:javascript
复制
function airdrop(address source, address[] dests, uint[] values) public onlyOwner {
    // This simple validation will catch most mistakes without consuming
    // too much gas.
    require(dests.length == values.length);

    for (uint256 i = 0; i < dests.length; i++) {
        require(token.transferFrom(source, dests[i], values[i].mul(multiplier)));
    }
}

然后我搬到Remix去完成整个空投过程,包括我们的合同部署,象征性的制造和津贴。

在Remix调试器中,我发现问题出现在行require(token.transferFrom(source, dests[i], values[i].mul(multiplier)));上。

我还使用Remix上相同的值直接在合同上测试了transferFrom函数。

我在尝试空投时遇到的错误是:

代码语言:javascript
复制
transact to Airdrop.airdrop errored: VM error: revert. 
revert The transaction has been reverted to the initial state. 
Note: The constructor should be payable if you send value. Debug the transaction to get more information.

是什么导致了这个问题,我如何进一步调试呢?:)谢谢,祝您愉快!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 13:42:55

错误可能有以下几个原因:

  1. source没有足够的令牌来覆盖所有的传输。
  2. 一个或多个目标地址无效。
  3. approve没有正确完成(需要批准的是空投合同,而不是事务的发起者)。

您可以通过删除require来缩小其范围,并查看是否有任何下降(按照您编写的方式,一个失败将回滚整个事务)。

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

https://stackoverflow.com/questions/51701409

复制
相关文章

相似问题

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