大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
一、区块链数据结构与算法
首先,讲一下区块链基本的技术内容。
区块链,本质是由两个部分构成:第一部分是数据结构,第二部分是算法。这两部分是可以分割的,也最好分割开来看。
首先看区块链的数据结构,其实非常简单:它是由很多的区块组成的,每个块都包括很多的数据,主要是交易数据。区块互相之间的链接就是通过hash过程,也就说我们把前一块的内容hash成一个数字签名,然后放在后一块里面,形成一个链式结构。
在我的示意图里面,大家也可以看到每一块还可能有自己的随机数,这个随机数的作用是方便对hash结果提要求,比如说比特币要求hash结果前面要有多少个零。这样可以保证hash的过程是一个比较复杂的过程,增加计算复杂性,通过POW这个模式来达成共识。区块链的数据结构保证了,如果要修改前一块数据必须连带修改后一块数据。这表示,如果一个数据的历史越长,你要去修改它也就越困难。
除了数据结构,区块链第二个组成部分就是算法,即区块是怎么产生的?区块的产生机制,如果我们从原始教义派就是bitcoin,也既是中本聪最开始提出来的想法,必须是无许可的或者说permissionless的方法。这个方法最基本的想法就是“完全平等公开”,也即网络上任何一个个体都可以成为产生区块的矿工。这样做的目的是提高安全性。
无许可方式允许任何人参加区块链生产,这些人中就会有坏人,因此基本上说,它就需要采用拜占庭协议来解决共识问题。所以,它通常效率比较低,也就是说,每个区块,它需要很长的时间产生。而且对于bitcoin来说,区块产生以后还不能保证它在链上的稳定性,因为不知道最新的块是不是在最长链上。通常你还要等到后面的区块产生以后才可以确定,因此确认时间就更加漫长。
从提高效率的目标来讲,最近提出来一些区块产生机制,通常采用许可(permissioned)的方式。也就说,区块并不是每个个体都可以产生的,而是在协议里面被允许的那些个体才可以,它们的特点就是比较快。
采用许可方式的好处就是可以不用解决拜占庭协议问题或者采取轻量级的解决办法。原因是,在产生区块的过程中,矿工都是留下记录的,可以事后审计(audit)。如果产生问题的话,就可以把出问题的矿工驱除出去。通过这些方式可以用比较快的方式来产生区块。
第三种产生机制甚至比许可更中心化,也就是由一个特定的一个中心来产生区块。当然,很多人会认为,如果你用一个完全中心化的方式来产生区块,那你就不是区块链!
但是,我认为这个问题完全可以从另外的一个角度来考虑。
我们可以回头再来考察前面提到的区块链数据结构。它的hash结构具有“单向不可修改性”,也就是说,如果任何一块被留下作为证据之后,那么它前面的区块基本上就不能再被修改伪造了。在这种情况下,如果由一个特定中心来产生区块, 其他的参加者只作为一个听众或者是记录者,他只要记录某一个区块以后,那么前面的区块再被特定中心修改,其实是可以被追溯的。
因此,我认为在区块产生机制上,不一定要追求纯粹的无许可去中心方式。为了效率,采用许可或者特定中心产生区块的方式,我认为都没有太大的问题。这也是我主张将区块链数据结构和产生算法分开考虑的主要原因。
二、区块链的革命性
区块链之所以引发这么多的热点,是因为它有以下几个革命性。
第一个就是加密货币的发行。大家可以从新闻上看到,包括最近币安被骇的事件,其实都跟货币发行或者交易所有关。因为涉及到钱的问题,大家可能都会比较感兴趣。根据估算,在今天我们有数以千种加密币,总的价值是在四千二百二十亿美元左右,这还是非常可观的。区块链可以发行代币的关键原因就是,它本质上是一个去中心化的公共账本。解决了记账的透明性和可信性(不可修改性)之后,货币,其本质就是一个记账功用,就水到渠成了。
除了可信公共账本,我认为,区块链另一点真正具有革命性的是智能合约的产生。智能合约就是把一段程序放在区块链上作为一个合同,这个合同的条款在条件成立后可以被自动执行,而执行的结果就被记入区块链作为完成的交易。智能合约将会成就区块链的各种应用。
这两张投影片借用自IBM的区块链总经理Marie Wieck上周在西北大学演讲。第一张代表了IBM对于区块链如何产生商业革命的观点。
最上边图中,我们看到的是一个traditional business processes是怎样进行的:参加交易的两个party,包括party A,party B,互相之间进行交易。这个过程中的合同、文本、交易的记录,很多时候都是存在交易方自己的地方,参与的银行和事务所也有自己的记录。这其中的Clearing House来完成清算的话,通常需要花比较长的时间去对比互相之间的记录,解决可能产生的纠纷。除了银行以外,也会涉及到auditor,通过一个很复杂的过程来对比互相之间的交易记录。
下边图显示在区块链革命之后,中间复杂漫长的Clearing House被区块链代替了。通过区块链,交易各方,包括银行、监管机构都不保存自己的记录,所有的记录都保存在公共的区块链账本上面。这样做的好处就是说极大的提高了效率,简化了paperwork, 也极大的增加了可信度,和减少纠纷的产生。以前的很多繁琐的对账,以及法律官司就都不需要了,区块链就给你解决了这些问题。
从这个图来考察,我们可以看到,区块链的主要应用不是在一个公司内部,而是在公司和公司之间。所以,这个事情到底是这个由谁去做?一个单独的公司可能很难去做这件事情。从区块链的基本数据结构来看,区块链对于做商业交易是个利器。
因此,一点都不奇怪为什么银行和金融市场推动区块链的比例是最高的,达到20%。其次是健康业,百分之十五;IT业大概百分之十二。当然,区块链的革命不光发生在传统的商业上。
因为,区块链上记录的数据不一定是交易,也可以是其他的数据。
三、区块链的三块基石
区块链建立在三块基石上,第一个是分布式计算,第二个是密码学,第三个是博弈论。
展开来看,首先是分布式计算,刚才我们讲了,permissionless的区块链需要在不同的矿工或者是不同的个体之间来产生区块,因此,它需要分布式计算来解决共识(consensus)甚至是拜赞庭共识的问题。区块链一个比较重要的应用驱动是智能合约,从智能合约开始的时候直到今天,很多人都把智能合约看成是一个串行的程序。后来DAO bug出来以后,大家寻找产生bug的原因,最后发现把智能合约看成串行程序是错误的,应该当成是并行分布计算。实际上,所有的智能合约都必须看成并行计算,只有这样,在设计智能合约的时候才不会产生问题。
第二块基石是密码学。以区块链的基本链接结构为例,前一块的数据,被hash以后放在后一块里面,那么这个hash为什么会具有不可修改性,这其实就是密码学中最基本的工具,即单向函数。单向函数是指,我从数据变成hash是一个很容易的事情,但是,我要从这个hash转回去找到它对应的数据,这是一个很难的问题。其实区块链处处是密码学的应用,包括数字签名,认证,智能合约,预言机,以及零知识证明等方面。
区块链的最后一块但是是最重要的基石是博弈论,这点大家可能不是特别认同。
但是,博弈论这点是我今天想着重强调的。大家来看区块链,我们会发现,无论是从链内到链外,或是链的边界,都是博弈论在发挥作用。甚至区块链的出现和产生其实都可以用博弈论来思考解释。
四、博弈论的高度看待区块链革命
用诺贝尔奖得主Myerson的话来说,博弈论是一切社会科学的基础。
今天为大家抛砖引玉,先大概讲讲我自己想到的几个方面。
第一个是区块链的社区组织。如果我们大家来考察比特币,其实它的去中心化是很可怀疑的。为什么?
首先,我们来看比特币矿工,现在,比特币挖矿被集中在几个大的矿池,好像五到六个矿池基本上就垄断了它的挖矿,在这种情况下, 比特币多大程度上还能被认为是去中心化的?
另外一个是区块链开发人员(俗称码农)。任何一个区块链都运行在自己的程序代码上,谁来写这个程序?然后谁去维护这个程序?那么这个码农集体是不是就导致了一个中心的出现?
我们从博弈论的角度来考察区块链,首先来分析,为什么码农愿意维护、开发区块链的代码?到目前来看,驱动力或者说在ICO的时候,在传统法律的保障下,使得很多空气币可以发行,然后在用资金来开发运行区块链,即先进行ICO,等代码、区块链落地以后,再按照承诺发代币给买家。
这其中就存在一个问题,即——如果区块链的演化、维护主要由码农来做的话,那么我们怎么防止码农成为新的中心或者是独裁者?在现有的区块链里面,比如DAO bug出来以后就进行硬分叉,其实这已经形成了一个独裁。
因此,从这个地方来思考的话,在一个区块链最初开发的时候,就应该有一个比较好的机制设计,使得区块链在进化过程中,可以有投票和决策机制,而且最好在链内。也就是说,如果我能够把我当前区块链的代码放在链内来维护,并且有一套机制可以来进行代码的进化,这样,区块链发展才会比较系统。
博弈论来考察区块链的发展,第二个有意思的问题,是可以来看货币的诞生。
我不知道多少人读过弗里德曼的《货币的祸害》?注意,这本书的第一章其实跟区块链关系非常大。第一章讲了一个有趣的现象,在一个叫雅浦岛的小岛上,岛上的居民用费Fei来作为他们的货币。这些货币其实就是一些很大、厚重的石轮。在做交易的时候,他们也不去搬动石轮,也就是说,石轮放在哪里就永远放在哪里。甚至很多时候,做完交易以后,都不会在石轮上贴条,以此证明新主人是谁。
现在来看,这就是原始的区块链!为什么?
因为雅浦岛居民采用的就是分布式公共记账本,大家心里的共识:也就说这些大石轮属于谁,是一个公共的认知。交易以后,口耳相传,大家都认同大石轮已经从旧主人那里归属到新主人那里去了。如果我们从雅浦岛上的石币来理解货币的话,货币的本质不是石头也不是美钞,货币其实是记账!
另外,在理解加密货币产生的原因上,我们可以发现货币其实是一种群体心理认同现象。货币本身不一定会有价值,即便你个人不认同,但是,如果周围的人都认同它可以用来记账进行交易的话,那么,你也去会趋向接受它,作为交易的工具。
那么我们来想想今天区块链上发行的数以千种加密货币的话,到底多少可以存活下来?大家可以将其作为一个有趣的问题来思考。
因为,从一个角度来看,区块链的很多代码都是开源的,甚至你可以免费拿来用。免费开始一个新的区块链,我就可以发行货币,这看起来是很容易,但又不是那么容易。这真是一个有意思的博弈论的现象,大概跟传染病流行,时尚风行一样,需要用网络博弈论来建模研究。
五、博弈论机制设计就是区块链的未来
博弈论里对区块链的未来有关键作用的一个东西就是机制设计。
机制设计是博弈论的工程问题,也就说,如果我想要达到一个社会组织目标,其中每个参与者都有自己的输入,我设计的机制就是一个算法,这个算法使得每一个参与者都愿意提供自己真实的信息和采取设计的行为来达成社会目标。
今天,我想用美国国防研究所DARPA在2009年搞的一个红气球挑战游戏来介绍什么事机制设计,以及机制设计的重要性和趣味性。
DARPA的红气球挑战其实为了纪念互联网产生三十周年来做纪念的。这个挑战在举行的半年前就对外公布了,主要内容是,在2009年十月的某个周六,将在美国某十个城市的未知地点升起十个大的红气球,哪个个组织或个人最先准确报告十个红气球的位置,将会赢得四万美金的大奖。
这个挑战出来以后,很多这个博弈论学家对此非常感兴趣。甚至很多人就在计算,如果我做一个有奖征集,谁报告一个红气球的位置,假如我最后得到四万美金的大奖,那么应该奖励单个报告者的最优金额应该是多少?最后的结果是,MIT组织的队伍在这个挑战开始以后少于九个小时的时间里,报告了十个红气球的准确的位置,赢得大奖。
不管意识到没有,每个参加团队都在使用一个机制。这个机制需要激励个人参与,保证真实,又要队伍之间互相竞争以致互相捣乱。
优胜队伍的机制非常有意思,类似于被政府禁止的传销。也就说,他们通过公布组织和奖励规则,形成了一个树形的传销队伍。
核心的四个学者作为传销组织的最上线,然后通上线拉下线的方式来拉人形成网络。鼓励规则激励每一个人都会努力地发现红气球,因为,发现红气球的人能够报告给核心,然后队伍最后赢得大奖的话,发现气球的个人将得到两千美金,他的直接上线会得到一千美金,然后再上线得到五百美金。这样,从发现单个气球的个体,一直走到最上线的话,大概差不多是四千美金。这样,十个气球,4万美金就可以奖励所有的发现者和上线。这个机制设计得非常好。因为,为了增加自己最后得到的奖励的话,你就会尽量去拉下线,下线越多,离你越近,你得到奖励的可能就越高。
在红气球挑战里面还有一个信任问题。例如,有的人采用的方式是有奖征集,即在谷歌上发一个广告说,发现红气球然后把位置发给某个email,如果最后得奖的话,会给你多少奖励。但这就产生一个问题,就是你的路人或者竞争者可能会给你发错误信息。设计机制就很好的解决了信任问题和激励问题,通过上线拉下线的方式,你拉的基本上都是你认识的人,欺骗后果就严重了。
机制设计就是区块链的未来,这主要是跟智能合约结合在一起的。
因为区块链的透明、可信,然后再加上智能合约的自动执行。我相信,在未来的区块链应用上面,智能合约应该会成为大杀器。而在智能合约的设计过程中,我们必须做机制设计,每个区块链的应用都是一个博弈论机制设计!
博弈论机制设计在区块链上的应用可以说是无穷无尽。这里我只能举例讲讲一些我拍脑袋就能想到的东东。
比如说,团购。
团购,现在已经被商家搞得跟一般的折扣没有太大的区别了。但是,团购刚开始提出来的时候,是基于一个很好的机制设计。因为,在传统的零售或者服务业,商家需要做很多广告去招徕客户,现在通过一个合同,就是说只要吸引足够多的人来购买,就给大家一个大折扣。这个机制鼓励每个参与购买的人,都有一个激励使得他们通过口耳相传的方式去给商家做广告,把朋友什么的拉进来—商家省了广告费,客户得到了好处。
但是,互联网对于实现团购机制是不成熟的:机制在什么地方实现,其实是大有问题的。因此,团购慢慢就变成跟传统的折扣没什么区别。我认为,主要是透明和可信问题没有解决。
有了区块链,商家就可以写一个智能合约放在区块链上面,合约规定很清楚,当多少人参与团购的时候,就可以给你多少的折扣。而且,大家在区块链上参与,时刻人数都是透明的,可以看到。所以,对于顾客来说,它就会产生一个很好的激励作用。因此,即使团购这样一个已经被大家用烂的机制,如果能够在区块链上重新进行智能合约实现,都会产生很大很不同的效果。
其次讲讲拍卖。
一般大家熟习的主要是英国拍卖,就是采用往上竞价的方式,每个参与者不断喊价直到别人退出。但英国拍卖往上竞价的方式会用很长的时间,而且,私密性也不是很好。
德国拍卖也叫次高价拍卖,它的机制是,每个竞拍者把自己对拍卖品心中的估值直接写到到竞拍的标书里,将其交给拍卖者。拍卖者收集到所有标书后,会搜索谁是最高的出价者,最高出价者就会得到拍卖品,但是,最高出价者给的价钱,并不是他自己出的价钱,而是所有拍卖价的第二高的那个价钱。
在博弈论机制设计里面可以证明德国拍卖和英国拍卖是等价的。但是德国拍卖中,每一个竞拍者把自己心目中的拍卖品的价格写出来,不需要多次出价,只需要出一次价格,而且也不需要让大众知道出的价。因此,将德国拍卖在区块链上通过智能合约来实现,也会是一个非常好的应用。
第三个例子是我们平时买的保险。
其实我们买的就是一个合同,现实中大家可能参加过车的保险或者是其他保险,理赔的过程通常都会很麻烦,因为保险公司都在想尽可能的去赖账。但是,把保险写成一个智能合约,那么这些问题就都统统消失了。因为,不管保险公司愿不愿意,一旦预言机能够判定被保人受到损失,那么这些赔付都是自动进行的。还有很多金融的衍生产品,比如什么CDO,hedge fund,其实都可以写成智能合约的形式。
第四个例子是博彩或赌博。
如果把它写成智能合约,在区块链上就会得到很好的执行,因为输赢之后的赔付,完全都是自动进行的。区块链在慈善上也会有很好很多的应用。大家可以想象,在慈善活动中,可以设定这样的机制:如果有兴趣,大家都可以参与这个捐款活动,但这个捐款是一个有条件的捐款,比如说,我的条件是,我捐了一百万出去,如果最终的捐款目标能够成,我的捐款就捐出去了,如果没有达成的话,捐款就自动退回来,不用真正的捐出去。这种方式有很好的激励作用,让有捐款的意向的人提前表达出来。
机制设计对于代币的发行,其实也有很重要的作用。
这里,我引用Arvind Narayanan在推特上说的一句话“Create tokens without studying mechanism design is like building new cryptosystems without reading any crypto papers。”翻译过来就是,如果我们发行代币而不去研究机制设计的话,就像我们去建立新密码系统而不去读密码学的文章一样。一句话,代币的发行必须被设计成一个审时度势的博弈论机制。
从这个角度来看比特币的挖矿,它把新块产生过程变成要去解决一个比较复杂的数学问题,这样会花很多的能量和计算去产生新的区块。但是从另外一个角度来说,挖矿产生的新的比特币耗费了一些能量,从人的心理上来讲,它可能会增加对这个代币的认同。
另外,很多人会觉得一个代币如果要作为一个货币的话,就必须有一个稳定的币值,而不像今天的比特币,每天涨跌那么多。
如果我们要去稳定币值的话,其实也可以通过智能合约来控制发币,比如说,币值增加太快的时候就增加发币,下跌的时候就减少发币,通过自动执行的智能合约来稳定币值。有了机制设计,稳定币值在未来也不是不可能的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183789.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...