对于区块链技术,资本界和媒体圈多充满憧憬,认为该技术可以为社会带来去中心化的新局面。
如果你只是对区块链感兴趣,并没有深入学习的打算,本文应该是一篇很好的“导论”。

《cryptokitties》社交游戏"链养猫"
"
区块链本质上是一个去中心化的分布式账本数据库。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次比特币网络交易有效确认的信息。
这是区块链的定义,因此要逐步了解区块链,我们需要一步步了解如下东西。
去中心化
先来考虑一个中心化集中式处理的过程。你要在某宝上买衣服,交易流程是:
打钱给支付宝 ► 支付宝通知发货 ► 卖家发货 ► 确认收货 ► 把钱打给卖家

中心化 交易模式
在这个过程中,牵扯到除了你和卖家的第三方,即支付宝,你和卖家的交易都是围绕支付宝展开。因此,如果支付宝系统出了问题便会造成这笔交易的失败。并且虽然你只是简单的买了一件衣服,但是你和卖家都要向第三方提供多余的信息。假设支付宝不承认你的交易,那你支付的钱就没了。

去中心化的处理方式
而去中心化的处理方式:你只需要和卖家交换钱和衣服,然后双方都声称完成了这笔交易,就OK了。
可以看出在某些特定情况下,去中心化的处理方式会更便捷。设想如果有成千上万笔交易在进行,去中心化的处理方式会节约很多资源,使得整个交易自主化、简单化,并且排除了被中心化代理控制的风险。
去中心化是区块链技术的颠覆性特点,它无需中心化代理,实现了一种点对点的直接交互,使得高效率、大规模、无中心化代理的信息交互方式成为了现实。
当然,上述的例子有一个很大的潜在问题:没有了中心化代理无法保证每笔交易的准确性和有效性。
比如:老王借了我100块钱,但是死不承认怎么办?这里就引出了区块链的其它特性。
性质上的基础难题
在去中心化以后,整个系统中没有了权威代理,信息的准确性和可信度便会面临问题。
➊ 准确性
两个相距很远的联盟要传递信息,兔子部落派遣一个信使去跟二哈部落说:“准备出发!”。二哈收到信息后又派了一个信使去兔子说:“收到!”。然后兔子又派一个信使去二哈说:“知道你收到了!”。然后二哈又派一个信使去兔子说:“知道你知道我收到了!”......周而复始没完没了。

信息的不一致性
在这种情况下,因为是点对点的通信,双方不可能在这种情况下达到信息的一致性。
➋ 可信度
拜占庭罗马帝国在军事行动中,采取将军投票的策略来决定是进攻还是撤退,也就是说如果多数人决定进攻,就上去干。假设军队中有奸细(比如将军已反水,或者传令官修改军令),无法保证最后投票的结果反映了真实意愿。

区块链可信度
拜占庭将军问题可以理解为在一个去中心的系统中,有一些节点是错误的,它们可能向外界广播错误的信息或者不广播信息。
区块链技术的诞生
现在让我们来一步一步在去中心化的系统中解决这些问题,见证区块链技术雏形的诞生。
我们假设一个去中心化的系统借贷模型:如果A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是B,A借给了我100块钱!”,此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱”。

去中心化借贷模型
你看,这个时候一个去中心化的系统就建立起来了,这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如B突然又改口说“我不欠A钱!”,这个时候人民群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!”)。
在上述的模型中,任何东西都可以在这个模型中交换,甚至你可以凭空杜撰一个东西,只要大家承认,你就可以让你杜撰的东西流通。
比如:我在人群中高喊一声“我创造了10个BTB”,我甚至不需要知道BTB是什么,也不需要关心世界上是不是真的有BTB,只要大家都听到,然后在自己的小本本上记下“唐有10个BTB”,于是我就真的有10个BTB了。

区块链之BTB
从此以后,我便可以声称我给了某人1个BTB,只要路人甲乙丙丁都收到并且承认了这一信息,那我就算完成了这次交易,哪怕世界上没有BTB。
但是这个系统中一共就只有10个BTB,于是有人动了坏心思,他也在人群中高呼“我有10个BTB!”怎么办?大家是直接在本本上记下他有10个BTB么,这样不是人人都可以伪造BTB了么。

为了防止这种现象发生,我决定在我创造BTB的时候给我的BTB打上标记(更准确地说,我是给我喊的那句“我创造了10个BTB”打上标记,比如标记为001),这样以后在每一笔交易的时候,我在高喊“我给了某某1个BTB!”的时候,会加上额外的编号:“No.001 我创造了10个BTB。No.002 我给了某某1个BTB!”,这样就解决了伪造的问题。上述模型就变成一个简化的区块链协议。要搞清一个问题——区块链是比特币的底层技术。

真正的比特币区域链技术要复杂的多
理论定义

区块链理论定义
● 区块链是一个放在非安全环境中的分布式数据库(系统)。
● 区块链采用密码学的方法来保证已有数据不可能被篡改。
● 区块链采用共识算法来对于新增数据达成共识。
本文转自浙江创业创新联盟,由氢创社整理发布!