在普遍的游戏场景中,通常会有类似于抽奖啊、邀请人随机奖励啊等等。你在游戏中进行这些场景的时候是否想到过以下问题:
1.为什么中奖的几率总是微乎其微?
2.你得到的奖励真的是那个开奖结果上所说的奖励吗?
3.为什么钱充得越多越容易中?
游戏中的随机数
通常对于一个游戏的抽奖、随机奖励、输赢概率、难度概率等等类似场景中,多数都会是程序生成一个随机数,然后指明那个随机数代表了什么,之后向玩家展示。
其实,就我上述所说的却还只是一个正常也就是相对公平的实现方式。因为如果仅仅只是随机,那么无论中奖的概率是多少,都会有中奖的概率,即便是随机1-10这些数字,大于8会中奖,那么也有十分之二的几率会中奖。
然而,通常来说,游戏的运营商并不会那么容易让我们得到我们想要的结果。因此,它们会干预随机数,甚至是如果你真正得到了奖励,他们还会篡改你的结果。
此类例子
笔者曾经就亲身经历过一个例子。
当时我的客户让我为其开发一款邀请抽奖的游戏,要求就是用户邀请了一定人数之后,就可以抽奖,有概率会获得大额现金。
但程序的逻辑却并非这样,真实的逻辑是下面这样的:
1.用户邀请人数
2.如果用户邀请的人数越多,超过一个阈值,则随机概率增加,反之永远不会中奖
3.如果用户抽中了大奖,降低为运营商可承受的等级。
在这个项目中,抽奖的数据是有排行榜的,得到的金额和用户都是可见的,因此又追加了下面的逻辑:
1.注册三十个官方小号(可以占领排行榜,也可以充当游戏初始数据)
2.为这三十个小号在不容易察觉的情况下虚拟出假的数据:比如现在第一名不是官方的,那我们就造一个官方的第二名出来,让第一名和第二名相差数据很少,这样就可以激励第一名继续拉新。如果第一名是官方的,那么也是如此。
3.官方三十个号全部占领排行榜前三十。
为什么?
为什么会出现这种状况?
因为对于这样的游戏来说,游戏规则也好,数据也和抽奖随机数的代码也罢,全都是由游戏运营商来制定的。对于我们玩家来说只要点下抽奖按钮的那一刻,根本就不会知道后台发生了什么,也根本不知道我们究竟是否抽中了。
你可以要求运营商公布其代码或者数据,大部分运营商并不会这么做,会找出一堆安全或者隐私之类的借口。然而即便是真的像你公布了,你也正好能够看得懂,你能保证那不被篡改了吗?
区块链的游戏
从上述我们可以看出,造成此类问题是因为:数据、代码不公开、透明,数据可以被篡改。
如果游戏的数据和代码公开了,那么我们就可以知道这游戏是否真的公平,不公平我们不玩儿就是了。
如果数据不被篡改,那么在公平的前提下,我们中奖便是中奖了。
而这正是区块链的特性,这便涉及到了智能合约(我会在以后的小节中为大家讲解)。
在区块链上,游戏代码便是智能合约代码,它们的源码都被公开到了区块链浏览器上,在那里你可以看到整个游戏的所有代码,它们是否公平一查便知。其次,对于区块链来说,数据一旦生成是不可更改的,也就没有了数据篡改的可能。
更甚至是,对于智能合约而言,只有销毁,没有暂停与终止。游戏发行商一旦制定了规则,就不会因为玩家中奖太多什么什么的变更规则。