首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >他俩靠区块链养猫赚了10万美金,还将投机方式毫无保留地公布了出来

他俩靠区块链养猫赚了10万美金,还将投机方式毫无保留地公布了出来

作者头像
区块链大本营
发布2018-05-11 14:24:03
6812
发布2018-05-11 14:24:03
举报
文章被收录于专栏:区块链大本营区块链大本营

CryptoKitties是一款区块链养猫游戏,玩家在购买以太币之后可以在游戏中进行虚拟猫咪的交易、贩售和驯养。本篇文章我们就将为大家介绍两位币圈玩家从CryptoKitties里面赚到十万美元并创下有史以来最大出售纪录的内幕。他们后来还曾运行过一个自动套利机器人,可以在交易高峰期进行自动投机买卖,技术性非常强。想必对很多准备学习区块链的人来说,这些故事都会很有趣。

编译 | reason_W

下面就是他们的故事:

去年一个周六的晚上,我正在测试以太坊智能合约,突然感觉有什么不对:交易卡住了,确认时间比平常长了很多。后来的一项调查显示,当天晚上的交易量比平时多出10-20倍,并且许多交易对象的地址都是同一个:0x06012..66d(https://以太币erscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d )。这让我第一次注意到著名的CryptoKitties游戏。

投资

第二天早上,我就和俄罗斯一家顶级加密对冲基金的好友Oleg Ostroumov 来讨论这种不寻常的现象。虽然一开始只是出于单纯的好奇,但敏锐的Oleg 却立马发现了一个利润丰厚的投资机会。首先,我们明显会是早期入场者。其次,这款游戏的发展趋势看起来几乎符合爆款产品的所有特征,就像Pokemon Go一样,并且处于曲棍球棒效应的早期阶段。(小编注:曲棍球棒效应(Hockey-stick Effect)是指在某一个固定的周期(月、季或年)内,前期销量很低,到期末销量会有一个突发性的增长,而且在连续的周期中,这种现象会周而复始,其需求曲线的形状类似于曲棍球棒)。

随后我们面临的问题就是:应该购买哪些Kitty猫?当时市场上有4种排序方法:最便宜的优先,最昂贵的优先,最新的优先,最早的优先(注意:网站的排序后来重新进行了设计)。前3个选项的排行显然不会很长久:因为任何人都可以随时在市场上投放更便宜,更昂贵或更新的Kitty猫。最早的才是永远的。因此,我们决定购买10只以内的Founder猫,尽管它们的价格标签已经很高:有人早在价格还是25以太币的时候就抢走了它们,再出售的时候标价已经到了50 以太币(当时约合25000美元)。而Founder 猫1号的交易价格则更为夸张,到了150 以太币 。

Oleg以每只50 以太币的价格购买了Founder猫4号、6号和8号,而我则投了5000美元,购买了Founder猫4号20%的股权。我们对当时市场的狂热抱乐观态度,并以每只250 以太币的价格将其重新标价出售,出售价格为购买价格的5倍。

这中间还有一个小插曲,我们第一次设置的gasPrice(即在以太币交易中你愿为交易支付的每单位gas 的价格)很低,所以没有设置成功。后来不得不折腾了一个小时重新安装MetaMask(一款以太坊轻钱包)(当时它没有还没有增加gasPrice重设功能,后面才加上)。我们从中获得的经验就是:如果你要花25,000美元买一件东西,就千万不要试图节省20美元的费用。

在挂断电话后,我觉得这可能会是我个人投资史上最高的一项纪录了,居然花了5千美元。实在是心疼啊。

套利退出的微妙艺术

在接下来的几天(12月2日至5日),这个游戏真的进入了病毒式的爆发阶段。很多人都像被冲昏了头一样的成瘾,很难专注于其他任何事情。但显然,这种狂热不会持续太久:这个游戏机制比 Pokemon Go还要简单,只有两种功能可供选择,如果不贩售就只能驯养它来生小猫咪。我们当时认为它可能会持续几个星期的泡沫期,因此提前制定合理的退出策略并坚持下去就非常重要。

Google上“CryptoKitties”的搜索趋势,按国家分类也非常有趣

我们使用了三个指标。

第一个是“CryptoKitties”这一关键词在google上的搜索趋势,这显示了人们接触到这款游戏的信息频率,是一个相当不错的领先指标。

其次是GasGuzzlers,它展示了以太坊网络中所有消耗gas的智能合约以及所消耗的gas份额(CryptoKitties在进入时约为4%,在人气高峰时约为20%)。

第三,我们一直通过一个非常漂亮的应用https://kittysales.herokuapp.com/ 关注它的市场状况和近期销售价格。

GasGuzzlers上展示了最受欢迎的以太坊智能合约。CryptoKitties目前的交易量虽然只占0.92%,但当时却达到了惊人的25%

12月4日至5日,一些不太有名气的小猫(35号,78号,87号)卖出了近200以太币的价格,我们对一开始设定的出售价格有了一点信心。然而在度过12月6日的顶峰之后,这款游戏的受欢迎程度明显趋于下降。注意到这一点,我们在12月6日开始紧急寻找买家,试图迅速将自己的Kitty猫出手。但是没有一个人可以按照我们标出的250 以太币价格买下来。我想以低一点的100 以太币重新把猫卖出去,但Oleg坚持250 以太币。鉴于我们对Kitty猫的价值存在分歧,我们达成了一笔交易:我按照100 以太币每条Kitty猫的估值将我20%的股份卖给他,这基本上使我的现金翻了一番。但我不知道的是我顶多再为这笔交易高兴20分钟……

卖出去之后我还在好奇地观察市场。结果,就在我和Oleg达成交易的20分钟后,我就看到了我们的Founder猫4号正在按照250 以太币的价格出售。我一开始想当然地认为这是Oleg在自己和自己交易,搞什么小把戏,我都不屑问他。但就在这时我才猛然意识到坚持的全部力量:这是一次真正的交易,我们连买家是谁都还不知道,但却已经创下了当时比特币的交易记录。

Founder猫18号和4号卖出了市场最高价

自动套利

能在比赛中有这样一个开始真是非常幸运。我们后来还讨论了可以用它再做些什么。对于最稀有的小猫而言,高峰期的炒作显然已经过时并且看起来有些荒谬可笑。但游戏的长尾效应仍然存在:人们仍然想玩,并想为自己养一些小猫。

所以我们在Kitty猫变得便宜的这段长尾期上运行了一个自动套利机器人。就像任何转销商策略一样,它基本上由以下三个步骤组成:

  • 确定定价应该大致相同的Kitty猫分组。我们当时参考的参数是稀有度,冷却度和世代(只有第0代和第1代昂贵得离谱)。如果这三个参数都相同,则小猫就会被认为价值相同(我们忽略了Kitty猫的艺术设计或者属性差异上的价值)。
  • 在每个分组中将价格过低的Kitty猫购买下来。我们当时只购买了每个分组中最便宜的Kitty猫。
  • 转售买下的Kitty猫来赚钱。我们希望尽量避免与其他潜在的转销商一直竞争到底,因此只将每个Kitty猫按照略低于第二便宜价格进行出售(类似于Google的第二价格拍卖)。

在尝试了几个区块链库之后,我们发现通过重构我以前的Bancor前端代码(https://hackernoon.com/front-running-bancor-in-150-lines-of-python-with-ethereum-api-d5e2bfd0d798 )可以达到最佳效果。

策略是:观察Kitty猫出售的交易,如果满足标准,则立即购买。这种即时反应机制与 front-running (抢先交易,指交易商在执行客户买卖委托前,先替自己的账户买卖的非法操作,通常是因为交易商认为客户的买卖将改变市场价格,因此抢先买卖以图利)非常相似,不过我们的策略更像post-running:把“买入”交易放在“拍卖列表”之后,因此它需要立即发生。在更技术的层面上,有下面几种实现方法:

  • 无论何时看到待处理的“列表”交易,都可以尝试在同一个区块内购买Kitty猫。您可以以较低的价格发送“买入”交易(例如,如果“列表”的价格是每gas支付25 gwei,您可以支付24.999 gwei),或者支付完全相同的费用。在前一种情况下,您可能会低于区块截止门槛,然后如果碰上活动高峰,您的交易将保持“待定”状态数小时。在后一种情况下,您就会有让矿工将“买入”交易置于“列表”交易之前的风险(因为gasPrice是相同的,订单可以和任意卖家达成,并且由矿工软件决定最终和谁交易),这会导致我们的交易失败。
  • 等到“上市”交易确认后,立即发出“买入”交易,并以高价购买,确保在下一个区块内确认。

虽然我们并不认为这个可爱的游戏会成为一个特别密集的竞技场,但确实碰到了在用同样的策略跟我们抢夺小猫的竞争对手!由于两个选项都有其自身的好处,我们必须实施所有策略才能获得最高的机会(这可以通过同时运行3个帐户实现,或在同一个帐户内重复使用nonce实现,不过过多的技术细节就不在这里陈述了)。

def handle_transaction(tx):
  # if(tx[u'to'] == KITTY_AUCTION):
  #   kitty_frontrun(tx)
  if (tx[u'to'] == KITTY_CORE_CONTRACT):
    kitty_instabid(tx)
def kitty_instabid(tx):
  if (get_tx_method(tx) == CREATE_SALE_AUCTION):
    generation, cooldown, price = get_kitty_params(tx)
    gas_price = int(tx[u'gasPrice'], 16)
    is_good_deal = price < calculateThresholdPrice(generation, cooldown)
    if (is_good_deal):
      try_buy_kitty(..., gas_price=gas_price) # buy in same block
      await_confirmation(tx)
      try_buy_kitty(..., gas_price=200 gwei) # buy in next block
while True:
  tx = nextPendingTX()
  handle_transaction(tx)

另一种我们考虑的可能是:假设你想购买一只Kitty猫,并且其价格正在逐渐线性下降。不要马上购买,而应该等到另一个竞争者出现并抢在他们之前,这样才能以最低的价格买下来。虽然当一个邪恶的幕后主谋很有意思,但这个市场崩溃太快了,我们不能一直对Kitty猫保持太多关注。

后记

在高峰期平息下来一个多月后,我们收到了一个惊喜:有人用29以太币的价格买下了6号Kitty猫,虽然低于最初的购买价格,但也是很不错的价格了(因为当时以太币的价格已经翻了一番)。

而那只8号Kitty猫则留了下来,得到了Oleg的悉心照料。小猫咪有了自己的笔记本贴纸,T恤,甚至还有定制的银针。我听说它还将有自己的Instagram频道。

最后我想说的是,这是一堂关于投机狂热的生动的实践课。我没有坚持下去而Oleg则太过坚持,但我们两人都把我们的钱翻了几乎一番,这是一个非常了不起的结果。是的,虚拟的Kitty猫根本没有可以保本的内在价值或价格底线。尽管如此,人们仍然还会玩这个游戏甚至赢。当然,尽管我们已经相当接近,但预测泡沫顶端的位置实际上是不可能的。

至于我从这次冒险中赚到的5000美元,我决定将它捐赠给MCCME(https://www.mccme.ru/index-e1.html)的暑期信息学校(https://lksh.ru/ ),这是俄罗斯一个特殊的编程训练营,我曾作为高中生在里面学习,还有新闻自由基金会。

小互动:你撸猫赚到钱了吗?分享你的小故事给我们吧~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 区块链大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 投资
  • 套利退出的微妙艺术
  • 自动套利
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档