![](https://img.haomeiwen.com/i10912555/ca11122be5d4cc98.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代币目前的分发情况:
![](https://img.haomeiwen.com/i10912555/d17f8263076a8041.png)
从中可以看到当前还剩有:2702868000000000000000000 个!!每次276个也就是说还需要9793*10^18个新钱包地址领完所有的sps代币。。。
结语:
至此问题已经明了,加合约地址就送代币确实是技术可行的。但是否未来有没有价值就另外一说了,希望大家有自己的判断。
网友评论