区块链技术简介
区块链技术背景
以下用一些场景不严格地引出区块链技术概念。
原始的借贷
小明找小王借了100元,约定小王一年后归还小明110元。
一年过去了…
小明找小王讨要110元,小王拒不承认,“没有啊,我没找你借100元啊!”
这样交易的双方便出现了分歧,小明明明吃亏但苦无证据。
小王又找小明借款,小明这次怕小王又赖账,就签字画押作为证据,
这是最原始的借贷贸易方式。但是一般都是熟人之间,建立在双方互信的基础上。规模小。
引入第三方信用背书(trusted third party)
小明有很多钱想用来做投资,隔壁村小李正好缺一笔钱用来开店铺,这时小李找到的小明,但是小明怕小李拿了钱不认账或者跑路。小李借不到钱又没办法证明自己信誉很无奈。
这时在全国各地非常有声望的钱老板站了出来,对小明说,把钱给我,我来提供信用担保,我作为中间人帮你投资给小李并给你利息。这样,小李便找钱老板那里借钱。
这样,即便小明,小李等陌生人相互不认识,但通过第三方权威,钱老板作为信用背书,便可以放心地交易。
支付宝也是同样的道理,如果没有支付宝,买家不敢付钱给卖家,怕卖家不发货。
银行,或者支付宝都是一种第三方的信用背书。
第三方信用背书的特征
第三方信用背书都是中心化的解决方案。
中心化的方案特征是:
- 这个第三方是大家都认可的权威。
- 大家的贸易往来都是通过第三方这个中心往来。
去中心化
用技术或者规则来实现不需要第三方权威参与认证的信用保障 (有些是为了逃脱第三方监管,例如很多黑客的交易采用比特币,虽然有人提出第三方权威比方说支付宝万一出现漏洞或者内部问题导致所有人的账户出问题的灾难性结果,而区块链数据分布在各处,更安全,但是更安全这个角度可能是伪命题,支付宝也有异地容灾等安全保障,动机上很多人可能更多考虑逃脱第三方监管或者以去中心化的区块链技术作为噱头来实现一个新的信用体系,这个后面再讨论)。
如何去中心化
假设有这样的场景:
- “小李找小明借了100元钱(2019/10/01)”
- “小张想租小赵的1亩地100天(2019年1月1日起),每天租金1元钱” 这样的合约,为了保障互信,需要公证。
但是村里所有人都信得过的钱老板出去旅游了,没人作为公证人。怎么办呢?
可以随便找一个人做公证吗?如果这个人不可靠,将 “小李找小明借了100元钱(2019/10/01)” 改成了 “小李找小明借了10000元钱(2019/10/01)” 这样小明还钱时有苦说不出了。
一个办法是村里的小李,小明,小赵,小张以及所有相同规则体系下的甲乙丙丁等人全部发一个账本记账,所有人的账本都一样。
当小李想找小明借100元钱时,所有人的账本都统一记录:
"小李找小明借了100元钱(2019/10/01)"
当小张想找小赵租1亩地时,所有人的账本都统一记录:
"小张想租小赵的1亩地100天(2019年1月1日起),每天租金1元钱"
所有人的账本在最完美的情况下都是完全一样的。
需要公证时,只需要核对这些账本记录即可,发现每个账本都记录了小李找小明借了100元钱,小李就不能赖账了。
存储的账目并不一定是与经济相关(所以账目一词不妥,但为了便于理解),任何信息都行,特征是记录成功后不能篡改了,并且具有分布式存储的特征。
例如老干妈可以将辣酱的核心配方资料加密后记录到去中心化的账目系统上,此数据丢失概率很低,只要保证很难解密就非常安全。
风险
来看看这种去中心化(p2p网络)的风险在哪里,假设小李想赖账,改了账本记录,或者某个贼(黑客)偷偷溜到小明家改了账本,账本记录出现了不一致,怎么办呢?
添加一个规则,只要大于一半的账本都记录了相同的记录,则这条记录可信, 其他人数据无效。
那么要想篡改一条记录,则需要偷取超过一半人手里的账本,并修改记录。
参与的人数(记录账目的节点数)越多,修改难度越大,风险越低。
注意这里还没有涉及到区块链技术,只涉及到去中心化的分布式技术(peer-to-peer, p2p)。
区块链技术
回顾之前的分布式记账的场景,当小强账户有101元,到小李店里消费100元,余额1元,所有人的账本都统一记录:
"小强账户有101元,到小李店里消费100元,余额1元"
理想情况下大家都同时记录了这样一条记录,但是现实情况(网络延迟)并不完美,例如:
小强,小李账本上添加一条记录:
"小强账户有101元,到小李店里消费100元,余额1元"
小强去小赵家,小李到小明家窜门并告诉他账本上加一条记录
"小强账户有101元,到小李店里消费100元,余额1元"
然后小明告诉甲,甲又告诉了乙丙丁加上如上记录。
所以当小强在小李店里消费100元并记账时,某些时刻小明或者小赵或者甲乙丙丁等人账本上是没有这样一条记录的。
所以去中心化的分布式系统具有延迟,数据暂时性不一致的特点。
double-spending(多重支付)问题
因为有延迟导致数据出现暂时性的不一致的情况的存在,以上去中心化的分布式技术(p2p)还不成熟,不能很好地处理去中心化分布式系统应用在电子支付的double-spending(多重支付)问题。
例如以上小强到小李店里买东西,并记账:
"小强账户有101元,到小李店里消费100元,余额1元"
但小强又趁小王账本上还没有这条记录时,又在小王店里消费98元,小王并不知道小强余额仅剩下1元,以为他余额还有101元,就同意了买卖并记账:
"小强账户有101元,到小王店里消费98元,余额3元"
这样小强用101元多次支付,购买了198元的商品。
而比特币是第一个在去中心化的分布式系统中解决多重支付问题的系统,其解决方案便是区块链技术。
区块链技术如何解决多重支付问题
TODO
区块链另一个好处是让篡改数据变得更加困难
区块链的技术可以让篡改某一条记录变得更加困难,但这不是它的主要作用,因为分布式系统已经比较好得解决了数据篡改的问题。
以下详述原因:
TODO
挖矿
但是记录账本需要消耗精力,尤其在加入了区块链技术后(计算机要电费),赔钱的事情大家都不愿意主动去做。
为了调动大家的积极性,于是添加一个规则,第一个成功记账的人获得赏金。
有了赏金,就有了为了获取赏金而谋取收益的产业,这就是比特币挖矿。
小结
去中心化的分布式技术具有分布式数据存储,防篡改,匿名可信(用技术规则保障信用而不是用社会规范)的数据安全特征。
区块链技术解决了去中心化分布式技术在电子支付中的double-spending问题,使得去中心化的电子支付交易成为可能。 但与此同时其交易效率较低。
区块链技术可以看做在去中心化的分布式技术基础之上解决了其数据暂时性不一致的问题,不仅可应用于电子支付,还可用于例如公证,投票等领域。