区块链游戏FOMO3D智能合约核心分析


最近做一个区块链的项目,需要彻底分析FOMO3D的智能合约,顺便熟悉一下区块链的开发流程。

首先为了能跑FOMO3D的智能合约我尝试了truffle+galanche,对我来说不太理想,我就自己用python+solc做了一个类似的框架。

可以编译部署发布合约,自动生成前端的JS合约对象以及跑一个aiohttp的测试环境,该环境已经开源https://github.com/bluehook/pyw3c.git,

示例就是全套FOMO3D的智能合约,在分析的过程中我又重新写了一遍FOMO3D也放在示例合约中叫TinyF3D,把所有功能都整合在这一个合约里面,所有FOMO3D实现的功能,Tiny3D都有实现,并且函数名称也保持一致,可以复制到remix里面部署方便测试,交流可加微信号:bluehook。

网上已经有一些FOMO3D的分析文章,我尽量写一些没有分析到的部分。

从另外一个怪异的角度介绍一下FOMO3D这个项目,这个项目的核心是一个函数,这个函数的公式是这样f(x)=sqrt(totala+b^2)-b)/c。

公式不重要,只需要知道这个函数是递增的,比如x=1,f(x)返回1000,x=2,f(x)返回1100,每次x传一样的值返回都一样,了解这个就够了。

现在有这么一个机制:我用x代表奖池的值,f(x)就是整个公式的返回代表当前奖池的值为x时,能够购买的key数量。

这个假设清楚了就继续,那么我现在要购买0.1以太币的keys,我不知道买多少个,反正我就买这么多以太币的,那么可以买多个呢?因为函数是固定的,每一局游戏开始时奖池都是从0开始,也就是说都是从x=0开始,那么我当时能够购买多少keys,反过来想就是要确定当我买了0.1以太币时奖池总奖金x能购买多少keys再减去现在我没有买时奖池总奖金x能购买的keys数量就是我出0.1以太币这一段能买到的keys,

看看公式不难理解:
0.1eth / ( (sqrt((total+0.1)a+b^2)-b)/c) - (sqrt(totala+b^2)-b)/c) ),其中total代表当前总奖池金额。

上面一段是FOMO3D最核心的公式,也是最复杂的公式,剩余的就是流程逻辑,现在来结合流程把上面的函数组合进去。

首先这个合约需要部署,原合约有5个主合约太繁琐,我用我重写合并成的1个主合约TinyF3D来讲,同样适用于FOMO3D,只是不用在合约之间切换。

合约部署后,要开始运行,需要第一个调用的是activate(),这个里面初始化5个地址,第1个是合约的管理者,后面4个是合约的资金流向账户,原FOMO3D通过一个1/N多重签名合约来管理资金,这个模块可以完全根据需要去除让资金自己留向4个账户就可以了。activate()后面再设置开始局的开始时间和结束时间,局ID,最重要是把激活标志设置为activated_ = true;

调用activate()之后,就可以调用一个叫registerNameXID的方法注册一个游戏ID,拿到游戏ID之后,调用buyXid()购买keys,这里就需要上面的公式了,我向buyXid()传入我要购买的金额:0.1以太币,

通过上面的公式:在奖池0的情况下f(0)返回1331个,也就是可以买1331个keys,

如果你再继续买0.1以太币,那么相当于就是f(0.1)(上次花费的钱不可能全部进奖池,这里只是方便)返回1328个,

也就是奖池x=0.1的时候,同样0.1以太币智能购买1328个keys,这就是FOMO3D这个游戏越到后期购买keys越贵的原理,

也是这个游戏最难理解的部分,如果这个理解了,其他基本上没有上面难度,只是有些流程比较绕,所以我重写了FOMO3D合约,去除了多重签名,把playerbook合约的功能集成到了主合约,直接查看TinyF3D就能清楚整个DAPP的游戏逻辑。

只要理解了上面就理解了整个核心逻辑,剩下的枝节我相信有开发经验的都能明白。**

原文地址:http://blog.51cto.com/1557154/2166044

时间: 2024-09-29 00:23:18

区块链游戏FOMO3D智能合约核心分析的相关文章

以太坊Crypto Countries加密国家火爆,区块链游戏成智能合约应用探索突破口

继加密猫(CryptoKitties)之后,以太坊上又出现了几款火爆的区块链游戏,它们是CryptoCountries,Crypto-All Stars,CryptoCelebrities和EtherBots. 这几款游戏目前的知名度还不如CryptoKitties,不过相信用不了多久,它们中的某一款肯定会比CryptoKitties更有名. 为什么这么说,因为它们是比CryptoKitties更好玩的区块链游戏,或者说是CryptoKitties的进化版.加密猫(CryptoKitties)是

区块链里的智能合约安全

写在开头 在我写这遍文章的时候,距离EOS曝出漏洞已经有三天时间,区块链行业热点来的快去的也快,每每出现安全相关问题,都会给整个行业带来震荡.自从我开始关注区块链行业以来,安全事故有增无减,交易平台.智能合约.共识机制等等都成了安全事故的中心. 但是近年来,智能合约明显已经被×××死死盯上了.从前年的THE DAO再到今年的BEC.与此同时网上也出现了很多不同的声音,有人为智能合约的巧妙性叫好,有人也为智能合约的安全性唱衰.本文不会对智能合约本身优劣进行探讨,只针对如何保证智能合约安全来进行深入

何玺评腾讯一起来捉妖,值得期待的区块链游戏

大家还记得前段时间玺哥前段时间写的<腾讯首款区块链游戏23日发布,腾讯精灵还是腾讯妖怪?>一文吗?昨天下午,腾讯正式对外发布了首款区块链+AR捉妖手游<一起来捉妖>,同时,腾讯还对外发布了首款区块链游戏化应用白皮书. 相比国外的区块链游戏,腾讯<一起来捉妖>的玩法更有趣,而且有很多创新的玩法,很赞!游戏大厂出手果然不凡.下面玺哥和大家聊一聊<一起来捉妖>中区块链的应用.玺哥邀请码:83801990一.从现有游戏产业中存在的问题说起<一起来捉妖>白

区块链游戏SDT-LUCK CLUB

Super Single Dog(超级单身狗)是全球知名游戏开发公司LUCK CLUB(幸运俱乐部)旗下首款区块链去中心化游戏. 而SDT则是通过Super Single Dog(超级单身狗)游戏投注获赠,开通社区兑换及Pow挖矿产出等方式.建立在以区块链1.0版本工作量证明机制可编程货币及不可篡改的基础上,沿用区块链2.0智能合约账本可编程金融系统以太坊的技术,深层次拓展区块链3.0去中心化及数据防伪可编程游戏版块的应用. 超级单身狗是一款集合了夺宝.分红于一体的超级刺激.有趣的去中心化游戏.

Fomo3d区块链游戏开发

区块链结合游戏火爆模式:Fomo3d区块链游戏开发[纪如,137.9436.2OI4,可薇可电],在Solidity中,与合约有些不同,Library不能处理ether.你可以把它当作一个EVM中的单例,又或者是一个部署一次后不再部署,然后能被做任意其它合约调用的公共代码. 这带来的一个显然好处是节省大量的gas(当然也可以减少重复代码对区块链带来的污染),因为代码不用一而再,再而三的部署,不同的合约可以依赖于同一个已部署的合约. Fomo3d区块链游戏开发规则: "fomo3D系统"

区块链游戏的革命(上)

伴随着区块链2.0-以太坊的火爆,诞生了各式各样的dapp(decentralized Application).核心数据的存储与交互都是依靠分布式的区块链.完全区别于从前服务器-客户端的模式.在2018年的上半年,平均每天就会有5款dapp诞生. This is an example imageDapp市场CryptoKitties在这一系列的dapp中,各类游戏尤其让人影响深刻.迷恋猫游戏无疑是最成功的的一款.运行在以太坊上的迷恋猫游戏(CryptoKitties)在2017年末曾经引起了以

复仇的小猪游戏区块链游戏定制开发

复仇的小猪游戏区块链游戏,利用区块链技术,加入鸟币,创新玩游戏即挖矿的概念,让玩家在娱乐的同时能够赚钱.这是一款公平公正透明化的对战类游戏,使玩家能够更信任游戏机制.如何搭建类似系统,复仇的小猪游戏区块链游戏DAPP系统开发费用是多少?我们一起来列举下吧. 复仇的小猪游戏区块链游戏模式 复仇的小猪是一款基于区块链技术的游戏,比赛结果及玩家获取的鸟币将被分布式储存,数据不可篡改,去中心化交易保证了交易及资产的安全. 1.复仇的小猪游戏每局游戏双方需拿出一定鸟币作为奖池筹码,胜利方赢得全部筹码. 2

Luck Club-SDT超级单身狗 区块链游戏

Super Single Dog(超级单身狗)是区块链3.0时代加游戏的新型产物. 而Luck Club-SDT则是沿用以太坊智能合约账本,它也是全球知名游戏开发公司LUCK CLUB(幸运俱乐部)旗下首款区块链去中心化游戏Super Single Dog(超级单身狗)游戏的核心金融杠杆驱动. Luck Club-SDT是时代发展区块链技术应用的又一产物,Luck Club-SDT创造全新的区块链游戏,而每个玩家都将享有: 1.分享有奖,不管早还是晚,只要分享都有奖: 2.持有即股东,永久有分红

你与这款区块链游戏的距离:只差3分钟的体验

"Mariana(马里亚纳),此游戏名字取自地球上最神秘.海拔最深的海沟,表示一旦深入下去,就会被吸引." 什么鬼!在一个佛魔Fomo3D.Last winner当道,如此浮躁的环境下,这个名字看起来如此内涵? 现阶段谈起 Dapp 游戏,脑子想到的就是: 能赚钱吗?能翻几倍?啥时候开盘?看到这款游戏感觉似乎和赚钱不搭边呀~ 但经过一天的接触已经让我欲罢不能了,这简直比王者荣耀还刺激! 尤其是在猜中马里亚纳数字分得奖金池30%的奖励之后,依然觉得不过瘾,第二天一大早上班扛着黑眼圈硬生生