前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >皮卡丘说:会玩口袋妖怪,你就懂区块链

皮卡丘说:会玩口袋妖怪,你就懂区块链

作者头像
区块链大本营
发布2018-12-20 17:26:40
6760
发布2018-12-20 17:26:40
举报
文章被收录于专栏:区块链大本营区块链大本营

翻译 | 王柯凝

编辑 | 波波

提起皮卡丘,小编心里一直有个怨念,比小编至今无法在国内玩上 Pokemon Go 的怨念还深,那就是口袋妖怪的卡牌,尤其是那张喷火龙!

不过,怨念归怨念,儿时的集换式卡牌游戏到底是教会了我们交易的规则和原理,而中本聪最初在比特币白皮书中通篇用词也是“点对点交易”。这两者之间又有什么关联呢?

最近,区块链和口袋妖怪的双重爱好者 Jack Dossman 用这个卡牌游戏仔细解释了一番比特币的交易原理,区块链不过就是另一种游戏——我们从小一直都在玩的游戏。

口袋妖怪之于区块链,正如皮卡丘在电影预告中那句台词,“我们能搞定它!”难道不是吗?不信你读一读全文:

穿越时空的长廊,我们突然变成了两个10岁的孩子,坐在操场上,手里拿着心爱的皮卡丘卡牌,那可是我们费尽千辛万苦才积攒起来的心爱之物。

恰好,我们手里都有一张对方梦寐以求的卡牌,所以我们决定交换。这很简单,在我们看来这两张卡牌价值相当,是一笔非常公平的交易,我给你我的卡,你给我你的卡。OK,成交!

作为两名10岁的孩子,在没有老师的监督下,我们也能保证卡牌交易顺利得进行。最后,我们都得到了那张梦寐以求的卡牌,所以,这是一次很成功的交易。

是不是很简单?我们都得到了自己想要得到的东西。现在,我们来想象一下,如果我们交易的是数字皮卡丘卡牌,会发生什么?

在这场游戏中,假设我手里有一张最贵的卡牌,并且整个游戏中有且只有这一张,现在,我想拿这张卡牌跟你交易。

第一版喷火龙——这可是最有价值的卡牌哟!

现在问题来了,由于是数字卡牌,你怎么确定我转让给你的时候没有备份一份?如果备份了,它的价值肯定就会降低。如果我制作了一千个副本,然后将这一千份都当做是全世界唯一的版本卖掉……

你没办法保证我不这样做。这对整个社区来说简直就是一场灾难,曾经稀有的卡牌就因为供过于求就变得毫无价值可言了。

这种做法有个学名,叫做“双重支付”。也就是说,在交换数字产品时,你怎么知道对方没有同时向两个人发送同一份资产?又怎么确保对方没有备份我们交易过得那张皮卡丘卡牌?。

针对“双重支付”这一问题,我们有一个对策:使用分类账(交易记录)跟踪我们的交易。通过分类账,任天堂游戏公司就可监督和跟踪每个皮卡丘卡牌的交易,保证没有人存储卡牌副本。

但是,没有绝对完美的对策,同样,分类账也存在缺点。现在,我们不再是学校的的那两个孩子了,得需要通过第三方的监督来完成这笔交易,即中间人

我们得信得过这个第三方,相信他不会篡改分类账。那么问题又来了:你怎么保证我转让给你的那张卡牌,任天堂游戏公司的员工没有私下里送给别人?

这就尴尬了:我们没办法100%的确定没人篡改过分类账。

这里有一个特别不可思议的想法:任天堂游戏公司并不只是把分类账保存在总部的某台计算机上,而是将分类账副本分发给每个皮卡丘卡牌的交易者,这样可以吗?

全世界有成千上万的皮粉们,如果每个人都有分类账副本的话,当我将这张稀有卡牌转让给你的时候,每个人都会收到交易通知。

分类账中有记录:我们交易的这张卡牌全世界有且只有一张。因此,如果我私下里复制一个副本的话,我的分类账副本就无法跟别人的匹配,这个卡牌副本也就不可能再交易。

这样,就解决了卡牌副本这一问题。

但是,问题又来了:网络如何验证我们的卡牌或者其他交易是否正确呢?

这就有点复杂了。在解决这个问题之前,我们先看一个例子:假设有1000台计算机参与了皮卡丘卡牌交易网络,我们称参与交易网络中的这1000台计算机为1000个网络节点。

这1000个节点(计算机)都共享分类账副本,并且都运行了允许与网络上其他节点(计算机)通信的免费软件。

这1000个节点都需要认可共享分类账上记录的这笔交易,那么,他们是如何实现的呢?

很简单,我们两个人的交易会放入一个待验证的临时交易池中,等待各个节点确认交易。

然后,给定一个时间,比如是10分钟,这些节点在这个时间内竞相验证所有待验证的交易事务。

这些节点又叫做“矿工”,他们都希望自己成为第一个验证交易的“矿工”,因为第一个验证交易的“矿工”可以获得奖励——皮卡丘卡牌。

若干个等待验证的交易事务称为一个“块”,皮卡丘卡牌所有的的交易历史都存储在这些“块”的“链”上,构成共享分类账,这个“链”就是“区块链”。

接下来,“矿工”们就开始相互竞争,他们都想成为第一个验证新区块的节点,因为有奖励呀!他们花费大量的计算力解决一个个加密难题,从而验证新区快。

是不是听起来很古怪?但事实的确是这样。

“矿工”们花费大量的计算力验证“块”,这其中蕴含的数学问题比较复杂。我们只需要知道,这些“矿工”们为了验证“块”,做了很多艰苦的工作。你可不要妄想弄乱分类账,因为代价实在是太大了!

一旦“矿工”找到了待验证“块”的加密解决方案,就会使用数字签名对“块”进行签名,证明这个“块”已经被验证了,然后告知网络上的其他“矿工”,并将已验证的“块”分发给他们,以便对分类账副本进行更新。同时,这个“矿工”也会得到皮卡丘卡牌奖励。

但是,网络上没有哪个节点是彼此相互信任的,因此,每当有新的块出现时,每个节点都会根据自己现有的分类账副本,检查块中的每个交易事务,来检验这个卡牌有没有重复交易。

这就是网络达成共识的方式。

现在,我还想吃一顿美味的午餐,得需要一张卡牌和你交易。这时候,我还是使用刚刚已经和你交易过的那张卡牌,可以吗?

将已经转让给你的A卡牌,再当做B卡牌给你,这就是非法双重支付。

网络其实也不知道A卡牌和B卡牌到底哪个是对的,那么,网络是如何做决策的呢?

A卡牌和B卡牌这两笔交易都会被放入待验证的交易池中,一般来说,交易是按照时间顺序排序,但也有特殊情况。

由于“矿工”们也是按照时间顺序进行验证,也就是说交易越靠前越安全,如果B卡牌交易先被验证了,那么分类账副本持有者就将B卡牌交易看做真实交易,A卡牌交易就是非法双重支付。

如何知道哪个交易是合法的呢?这时候,最好的办法就是等待。

这两个交易不可能都被网络认可,总会有一个交易是无效的。我们只需要等待,看看“区块链”中下一个新“块”包含哪一笔交易。

一般来说,等了10多分钟后,有时候甚至需要更长时间,就可以检查网络是否验证了B卡牌交易,如果验证了B卡牌交易,你就拥有了皮卡丘卡牌,然后就可以放心的为我提供午餐了。

如果我特别贪婪的想避开这些规则,进行双重支付,会怎样?

我从分类账中找到刚刚完成的卡牌交易并删除,这样,我就可以再次使用这张卡牌进行交易,获得更多的午餐了,我简直就是天才!

由于交易存储在块中,并按照时间顺序线性连接,所以现在可能有一堆块连接在它后边了。

假设在我交易后,“区块链”上已经添加了9个新“块”,那么我就可以往前找,找到第10个“块”,这就是我交易所存储的地方,把这个“块”删除,OK,搞定!

现在高兴可是为时过早了!

你可别忘了,每个“块”上都有数字签名,数字签名是根据“块”中的信息自动生成的。如果删除了交易,“块”中的数据就会改变,数字签名也会随之改变。

更糟糕的是,后续每个“块”的数字签名都由前一个“块”决定,如果某个“块”的数字签名改变了,那么在这之后新产生的“块”的数字签名都会随之改变。

所以,你不仅要修复第10个“块”上的数字签名,还得修复后续9个“块”的数字签名。这可是一个相当大的工程!

这还不是最糟糕的,还有更麻烦的事呢。

现在,你只是修改了自己持有的分类账副本,而其他分类账副本已经认可了之前的交易。为了得到网络上多数节点的共识,你还得修改该网络上50%以上的分类账副本。

要想修改这所有的数字签名,就意味着需要大量的计算力重新计算网络中多个“块”的数字签名。更直白点来说,就是得需要好几个仓库的计算机,7*24小时全天候不停的运行。天呢,这得需要多大的工作量!

很明显,你还是放弃吧!

就这样,我们创建了一个开放、去中心化、不可逆的防篡改数字网络,来交易有价值的资产。这就是比特币和区块链技术的原理,我们可以看到,区块链技术赋予了比特币无与伦比的迷人特性。

读到这里,我想为你点个赞,只需要弄懂口袋妖怪卡牌游戏,你对区块链的理解就已经超过了 95% 的入门者。

简单吧?皮卡丘说的没错!

原文链接:https://medium.com/s/story/blockchain-explained-with-pokemon-cards-ecdd90e4297a

— END —

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档