首页 曝光台 我是怎么向5岁的孩子解释智能合约的

我是怎么向5岁的孩子解释智能合约的

我是怎么向5岁的孩子解释智能合约的配图(1)

作者 | 张   问

编辑 | 杨舒芳

EOS的生态已经开始扩张,但是最近一段时间出现了种种问题,而这些问题的本质之一在于EOS的治理没有完善。在BM的第二版宪法中,他提出了代码的意图就是法律,而这个代码的意图的另一个名字,就是李嘉图合约,这究竟是什么东西?和之前的智能合约有什么关系? 

这个事情,我们需要分几步来看。智能合约,先了解一下。 

什么是合约

合约,就是合同,我们很常见了。让两方或者多方之间,在未来一段时间内有联系的东西。比如前几天沸沸扬扬的租房合同,小明要住老王的房子,要做的就是付租金。那租房合同,就是连接小明和老王的纽带,而更重要的是,这二位之间,是要有一些信任的。

而智能合约,就是一种能让电脑看懂的合约。合约里所有的条件都写成代码,然后自动执行。我们还说租房的问题,假如合约上写的是小明给老王5000块,一个月后,小明会去住老王的房子。我们把合约写成代码,当代码执行的时候,就开始自动判断条件成不成立,小明付没付款?没有,不执行。付了,那到没到一个月?到了,那赶紧执行。

那智能合约有什么过人之处?用代码最重要的意义,就是人们不再需要信任的成本了。只要代码是对的,那合约肯定会自动判断条件,自动执行。我们只看代码,什么自如,蛋壳,不需要第三方了,代码就像三体人,不会说谎。

信任的问题解决了,又引来了新的问题,你怎么确定代码执行的结果就是写代码的人想要的结果?换句话说,代码有bug,怎么办?

我们刚才的举例,很简单,几行代码就能搞定,但是实际上,合约可能会非常复杂,因为条件非常多,产生出来的结果的可能性就非常的多。在代码完成后,我们可能会测试一下,看看能不能跑起来,但是要测试出每一种结果几乎是不可能的。前一阵的EOSBet被黑客攻击就是一个最好的例子。

EOSBet是一个博彩游戏,比大小,不过需要用EOS来玩,有一个聪明的哥们,发现了代码的漏洞。他自己做了一个假的EOS,游戏里并没有检测出来。这就意味着,他凭空造出了钱,拿去赌博。输了就输了,没损失,赢了的话,赢回来的是真钱。

我们先假设,这确实是个漏洞。写代码的人是不想让大家这么玩的,但是他没有检测出这个结果,这就尴尬了。他不提前说的话,没有人知道这位码农是怎么想的,也就是说,谁都不了解代码到底想要什么样的结果,那怎么办?

我是怎么向5岁的孩子解释智能合约的配图(2)

李嘉图合约 

这个时候,我们就开始介绍李嘉图合约这个东西了。简单来说,这个合约解释的就是代码的意图,就是代码到底想要什么样的结果。李嘉图合约要保证人们和程序都可以读懂,出现任何情况都可以帮助澄清事实。 

之前EOS的一个节点介绍过这个李嘉图合约,其实早在1998年这个概念就有了。早期的金融密码学的一批人之一,Lan Grigg1998年在他的作品《金融密码学的7个阶段》中首次提出了李嘉图合约。只不过当时的技术并没有实现。

这个东西,怎么用?我们还用EOS来举例。

假如有一个DApp,智能合约写的是“AB一个EOSB要返还给A一个EOS”,并且这个合约运行的非常顺利,但是你突然发现这个合约有个漏洞,即使你返还给我一个你自己造的EOS,代码也检测不出来,合约也可以执行。如果没有李嘉图合约,我认了。 

但是如果我的智能合约里面有一个李嘉图合约,里面写了我的代码意图是“AB一个EOSB要返还给A一个EOS”,那么,如果你还给我一个其他的东西,这不是我代码的本意,我们就不能冰释前嫌了。 

当然这里举的例子都是非常简单的,真实情况会复杂的多。简单来说,智能合约是一套机器可读的文件,电脑会按照条件,自动执行,而李嘉图合约可以列出代码全部的意图,对代码的输出流程做了约束。这两个东西放在一起,确实可以让EOS的治理更加完善,只不过完全实现,还需要一段不短的时间。

免责声明:
1、本文仅代表陀螺专栏作者本人观点,不代表陀螺财经观点或立场。如有侵权等其它事项,请联系作者,会尽快删除。
2、转载须注明作者和稿件源自陀螺财经,违者将依法追究责任。

相关文章

冲科技
区块链+TMT资讯媒体

26篇

文章总数

10万+

总热度

热门文章

rss订阅