美文网首页
添加地址秒到空投代币——怎么做到的?

添加地址秒到空投代币——怎么做到的?

作者: 野人植树 | 来源:发表于2018-05-19 17:56 被阅读0次
image.png

前言

币圈好像不按常规的套路来,各种撒币送钱的事情刷新了我的三观。本体登记一个邮箱白名单就可以获得1000ont,当前市值4万+RMB。这期间还有个叫牛油果送币方式如上图,发送0个eth就可以获得2000+ENU,目前市值1千+RMB。。。。。

新玩法

最近看到一些直接添加对应合约地址就能获得代币的。比如这个:surprise, 代币sps,添加合约地址:0xd9A72fEc8683db0666769D841d6D127F350B4418 ,即可获得276 个代币。
打开imtoken点击+号,搜索这个合约地址,确认添加,过了一会果然获得了276个sps的代币。

怎么做到的呢?

本着程序员的好奇心了解了下:
surprise以太坊浏览器合约信息地址:https://etherscan.io/address/0xd9a72fec8683db0666769d841d6d127f350b4418#code

uint256 public totalSupply        = 208932000 ether;

可以看到总量为:208932000 * 10^18 个!!这么天文级别的数字,一个地址就送276个,可以基本确定是某个程序员开的一个小玩笑。(不排除有些项目未来真的产生价值)

接下来看看如何实现添加地址就实现代币分发的:

我们知道刚刚这个添加合约地址的动作,其实是调用了代币合约的 balanceOf() 方法,来看下这个方法有什么古怪:

    uint256 startBalance              = 276 ether;
    
    mapping(address => bool)  touched;
    mapping(address => uint256) balances;

    function getBalance(address _a) internal constant returns(uint256)
    {
        if( currentTotalSupply < totalSupply ){
            if( touched[_a] )
                return balances[_a];
            else
                return balances[_a].add( startBalance );
        } else {
            return balances[_a];
        }
    }
    

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return getBalance( _owner );
    }

可以看到在balanceOf 》getBalance 中添加了一个判断,如果当前钱包地址没有添加过就给这个地址分发定义好数量的代币。

最后我们在看看这个surprise代币目前的分发情况:


image.png

从中可以看到当前还剩有:2702868000000000000000000 个!!每次276个也就是说还需要9793*10^18个新钱包地址领完所有的sps代币。。。

结语:

至此问题已经明了,加合约地址就送代币确实是技术可行的。但是否未来有没有价值就另外一说了,希望大家有自己的判断。

相关文章

网友评论

      本文标题:添加地址秒到空投代币——怎么做到的?

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