教你分分钟实现imtoken添加即空投代币

作者: 我才是二亮 | 来源:发表于2018-03-01 21:14 被阅读7314次

    最近各种项目的代币空投层出不穷,有手工打币空投的,也有向代币合约转账0eth进行空投的,但是最近出现了一些无需转账,只需要将代币合约地址添加到imtoken中去,就可以实现空投,很多朋友不理解这里面的原理,觉得什么事情也没做,怎么就能够定点空投到我的地址中呢?下面我就来详细解释下如何实现imtoken添加即空投代币的方法。

    ERC-20代币

    采用以太坊创建的ERC-20代币,指的是遵循ERC-20标准的代币,该标准指出,在代币合约中需要实现以下方法:

    balances

    余额变量,该变量里面存储了所有拥有代币的地址的余额

    mapping(address => uint) balances;
    
    balanceOf()

    返回指定地址的账户余额

    // balanceOf方法原型
    function balanceOf(address _owner) constant returns (uint256 balance)
    
    transfer()

    转移 _value 数量的token到地址 _to

    // transfer方法原型
    function transfer(address _to, uint256 _value) returns (bool success)
    
    transferFrom()

    从地址_from发送数量为_value的token到地址_to

    // transferFrom方法原型
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
    

    关于ERC-20的代币标准中索要实现的方法,我仅仅提出这几个,并不是所有,具体可以看附录里面的链接。

    如何实现添加即空投?

    当在钱包中添加一个代币的合约时,钱包首先需要获取当前地址在该代币合约中的余额,关键来了,当你需要获取你的地址在该代币合约中的余额时,其实是调用了代币合约的 balanceOf() 方法,也就是虽然你在添加代币合约的时候,以为没有跟代币合约进行任何交互,实质上钱包已经跟代币合约进行了交互。那么想要实现空投,只需要在balanceOf()方法里面实现一个空投的方法。

    首先看一下,zeppelin的代币最佳实践里面的balanceOf() 方法:

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }
    

    基础的方法仅从 balances 变量中获取你当前地址的余额。

    如果想要实现空投,可以这样:

    uint totalSupply = 100000000 ether; // 总发行量
    uint currentTotalSupply = 0;    // 已经空投数量
    uint airdropNum = 1 ether;      // 单个账户空投数量
    
    function balanceOf(address _owner) public view returns (uint256 balance) {
        // 添加这个方法,当余额为0的时候直接空投
        if (balances[_owner] == 0 && currentTotalSupply < totalSupply) {
            currentTotalSupply += airdropNum;
            balances[_owner] += airdropNum;
        }
        return balances[_owner];
    }
    

    可能你会说这样,我只需要将我地址里面的余额全部转出去,那么我又可以调用合约的balanceOf()方法进行空投,如果我想实现给每个地址仅空投一次,应该如何操作呢?

    我们来新建一个变量:

    uint totalSupply = 100000000 ether; // 总发行量
    uint currentTotalSupply = 0;    // 已经空投数量
    uint airdropNum = 1 ether;      // 单个账户空投数量
    
    // 存储是否空投过
    mapping(address => bool) touched;
    
    // 修改后的balanceOf方法
    function balanceOf(address _owner) public view returns (uint256 balance) {
        // 添加这个方法,当余额为0的时候直接空投
        if (!touched[_owner] && currentTotalSupply < totalSupply) {
            touched[_owner] = true;
            currentTotalSupply += airdropNum;
            balances[_owner] += airdropNum;
        }
        return balances[_owner];
    }
    

    修改之后,即可以进行添加即空投的实现。

    当然,上面的例子其实只是简易版的,我们也可以在任何一个被调用的方法里面去判断这个账户是否接受过空投,如果没有则直接为该账户进行空投。

    空投福利

    分享几个已知的如此方式的空投合约,打开im钱包,点加号进去。复制黏贴合约地址,搜索点添加。币秒到,不需要以太手续费。

    1、ProChain (free 88,888.88枚)合约地址

    0x8377ee6d3545Bc6ff1425ee3015DC648B149C7B2

    2、Simoleon (10,000枚)合约地址

    0x86c8bF8532AA2601151c9DbbF4e4C4804e042571

    3、PNS (80081枚)合约地址

    0xce853db3359326db6d03981c9fb42983bbcdd007

    4、送Surprise (276枚)合约地址

    0xd9A72fEc8683db0666769D841d6D127F350B4418

    附录:

    A. ERC-20代币标准

    B. Zeppelin ERC-20代币合约最佳实践代码

    C. Surprise空投合约源代码

    相关文章

      网友评论

      • b5280673b22b:在哪里添加代币进去实现代币空投? 能详细一些吗?
      • 技不如人_甘拜下风:感谢博主,文章帮主了我很多。 有个问题有些合约宣称 要转账1个到某个地址才被激活。 这个是真激活还是假激活(区块链浏览器上显示)。
      • 王天浩_10e6:最新空投福利汇总,亲测可用!!!
        1,imtoken钱包添加合约地址0x87C9Ea70F72aD55a12bC6155a30e047cF2ACd798 即可获得10858个LEN

        2,添加合约地址: 0xAFA09D4f43CE49b1317651667a8bc62B878Ae888 即可获得3500左右GAY

        3,用eth钱包(非交易所钱包)往这个合约地址 0x4081a0A37116B464ED0b716d888B779b373D3218转0.1个ETH 矿工费调到最低,
        会收到3800个TRX(波场)空投币 ,现价0.3左右

        4,PEW(250个)
        用以太坊钱包(metamask,imtoken等等)发送0个eth到智能合约地址:0xa701122c1b67220a8b6883d03c8ad67896b12466可以获得250个PEW。PEW总量5千万,创始人为youtube视频网站知名主播。
      • bingfulai:im钱包添加LEN,获得LEN 12000,激活翻倍并送1000MQM(推广时) 
        0x87C9Ea70F72aD55a12bC6155a30e047cF2ACd798 
        往地址0xb3D177d1bB65f8C8B5FA0046Cbd938D570a10e53 转一个LEN即可激活
        我才是二亮:@jessica_f82b 是的,eth作为手续费
        d1adb4a78f3a:@bingfulai 请问比如我添加了airdrop说是需要向其他地址转账任意airdrop才能激活,但是当我点击转账时提示我ETH不足,是不是旷工费要用ETH来支付的?
      • SmileAndroid:问个问题,代币空投我获取之后可以查看到当前代币的余额。这个实际是调用智能合约的方法获取的。那该代币的公钥私钥在哪里?比如我随便写一个合约,只要你打开这个合约地址就能获得一万个,然后我跑路了,我不管这个合约了会不会这样情况?
        风筝叔叔:@SmileAndroid 合约还有公钥私钥啊,不就是合约绑定的钱包来控制嘛?我找人做了一个币,没有你说的公钥私钥呢:sweat:
        SmileAndroid:@我才是二亮 今天试了一下合约代币转账,发现总是gas不足,有点舍不得为了试一下这个功能花大概五十块 的费用。所以我想问你下,合约代币不会是不能拿来转账的吧?以太坊的目标难道不是通过这个以太坊平台,可以让别人不用创建独立的分布式网络节点用来出块。也就是通过以太坊的节点建立无数中币种,所以合约代币应该可以流通转账才对吧?
        我才是二亮:@SmileAndroid 当然有可能啊,这个需要依靠项目方了
      • c18ec01e357b:前面技术看不懂,后面空投已到账,非常感谢,就是不知道这些币怎么用?
        我才是二亮:目前来说这些币还没有什么作用,这个只是一种空投的思路

      本文标题:教你分分钟实现imtoken添加即空投代币

      本文链接:https://www.haomeiwen.com/subject/qeinxftx.html