从零认识比特币 2.5课 区块链由来和本质与分布式存储

区块链的由来和本质

在网上购买一本书的流程:

1,你下单并把钱打给支付宝

2,支付宝收款后,通知卖家可以发货了

3,卖家收到支付宝的通知之后给你发货了

4,你收到书之后,觉得满意,在支付宝上确认收货

5,支付宝收到通知,把款项打给卖家

虽然是在跟卖家交易,但是所有的关键流程都是在跟支付宝打交道。好处在于,如果哪里出现问题,买家和卖家都可以通过支付宝寻求帮助,让支付宝仲裁。这就是一个简单的基于中心化思维构建的交易模型。

它的关键在于建立权威,通过权威来获取多方新人,同时依赖权威放背后的此本和技术实力确保数据的可靠安全

假如支付宝程序发生重大BUG,导致一段时间内的转账记录全部丢失,而我刚刚转出去的100元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。

这就是中心化最大的弊端——过分依赖中心和权威,也就意味着丧失自己的话语权


那么去中心化的形态是什么样子呢?还是拿刚才那个例子继续,我们构建一个极简的去中心化的交易系统,看看我们是如何在网络上从不认识的卖家手里买到一本书的。

1,你下单并把钱打给卖家;

2,你将这条转账信息记录在自己账本上;

3,你将这条转账信息广播出去;

4,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;

5,卖家发货,同时将发货的事实记录在自己的账本上;

6,卖家把这条事实记录广播出去;

7,你和支付宝收到这条事实记录,在自己的账本上分别记录;

8,你收到书籍。至此,交易流程走完。

刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,但卖家的账本还存在,我的账本还存在。这些都是这笔交易真实发生的铁证。

到这里,相信同学们大概能够从极简交易系统中窥视到了更多区块链的一些影子——

分布式存储,通过多地备份,形成数据冗余

让所有人都有能力共同去维护同一个数据库

让所有人都有能力彼此监督维护数据库的行为


我们为何愿意相信远在千里之外的一个卖书的商家,并且给他付款呢?在中心化的交易系统中,因为在这个交易过程中,我们把信任托付给了国家机构或者大型企业。我们与卖书的人之间是不信任的,但是,由于国家或大型企业的背书,我们愿意让其做个见证,这是一种比较常用的增加互信的方式。

而区块链正是拯救信任危机的利器。它的实质是一个不断增长的分布式结算数据库,能完美解决信息系统中的信任危机。它起源于下面的问题:你凭什么相信一个陌生人?别人凭什么相信你?区块链用算法证明机制来保证这份信任。借助它,整个系统中的所有节点能够在信任的环境下自动安全地交换数据。

现在我们进入正题,来了解下区块链的本质:他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征)。区块链认为,任何有能力架设服务器的人都可以参与其中,来自全球各地的掘金者在当地部署了自己的服务器,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点。一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制完成一次又一次的同步,从而实现在区块链网络中所有节点的数据完全一致。

简单的说,区块链实际上是一个分布式数据库,在这个数据库中记账不是由个人或者某个中心化的主体来控制的,而是由所有节点共同维护、共同记账的。所有的单一节点都无法篡改它。如果你想篡改一个记录,你需要同时控制整个网络超过51%的节点或计算能力才可以,而区块链中的节点无限多且无时无刻都在增加新的节点,这基本上是不可能完成的事情,而且篡改的成本非常高,几乎任何人都承担不起。这就解决了信任问题。


分布式存储

前面我们已经提到,区块链要解决的是如何用一种可信的方式记录数据,使得用户可以信任区块链系统记录的数据,而无须假设记账节点的可信性。怎么实现呢?

“无须信任”技术上的解决办法就是假设互相不信任。因此,每个节点都存有一份完整的数据记录,每条新的交易都要被重新验证。当一个节点重新加入网络并需要同步数据的时候,也是从其他节点同步交易历史,然后重新计算验证,这就决定了其第一个特点,即分布式存储(不能完全信任他人的存储)。

这么多记账节点为什么愿意按照一致性协议记账呢?依靠的就是巧妙的记账激励机制——诚实的记账节点会得到相应的奖赏,且诚实的记录比恶意篡改记录的收益更大——这就是一致性协议设计中的要点。下面就对区块链的数据结构、分布式存储和一致性协议进行详细介绍。

在这里插入图片描述

首先从数据结构来理解区块链,上图展示了比特币区块链的数据结构。

系统中的交易(Transaction)被打包成一个个区块(Block)。在区块链系统运行过程中,区块链每次只能添加一个区块,并且每个区块均包含了用于验证其有效链接于上一个区块之后的数学凭证。正如它的名称“区块链”(Blockchain),一个个区块按照密码学算法链接在一起。这样的组织设计可以很容易地验证数据是否篡改、追踪历史以及保证安全。

其次,区块链的架构是分布式、去中心化的。系统中各个节点组成一个P2P网络,每个节点均分别执行、验证和记录相同的交易,每个节点都可以在本地存储完整的区块链数据。没有一个中心机构能够干预交易的执行顺序和结果。“去中心”在这里不是目的,而是一种达到可信的手段。

最后,为了保证各节点状态的一致性,还需要共识机制,即一致性协议(如PoW、PoS、PoA等)。以PoW为例,为了使得各个节点记录的结果是一致的,在每一时刻系统要选择一个记账节点来计算下一个区块。其他节点对该记账节点的区块结果进行验证,通过后则接受这个区块。为了激励大家高效正确地记账,系统对记账节点有相应的奖赏,这样一来大家会贡献计算和存储资源来争夺记账权。由于可以互相验证,也保证了记账的可靠性。

接下来,我们要解决的问题就是:如何公平地选取这个记账节点,以及如何设计激励机制。PoW中采用的是“猜散列值”这个公平的、依靠消耗算力的方式,也被称作“挖矿”。谁先算出给定要求的散列值,谁就以大概率先争夺到这个记账权。为什么说是概率呢,因为在分布式网络中,由于延迟,消息传递到其他各个节点的时间是不一样的。在不同节点上对下一区块的认可在短时间内可能是不同的。最终,以系统中最长的链条(后续会讲)作为共识结果,即大家认可的账本内容。

发布了47 篇原创文章 · 获赞 4 · 访问量 2264

猜你喜欢

转载自blog.csdn.net/qq_34107425/article/details/104089145
今日推荐