加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

区块链的技术世界观:账本的技术演进

发布时间:2018-11-22 04:27:44 所属栏目:建站 来源:午夜咖啡
导读:本文是基于我在 360 区块链开放日上的分享整理完善而成,演讲时有些逻辑没有讲明白,感觉用文字表述可能更好一些。作为自己区块链系列的开篇第一篇,谈谈怎么从技术的角度理解区块链。 说到区块链技术分享,区块链相关的各种技术词汇就纷至杳来。区块链领

多运营方账本

区块链的技术世界观

上面的账本都只考虑同一个主体运营维护的场景,内部的信任较高。但如果是多方共同维护一个账本的场景,也就是上一个方案的不同机房其实属于不同的主体。这样的场景下,另外一方无法直接信任应用的最终状态,所以在不同机房同步的不能是应用的状态,而是应用的 Event(事件)。无论是本机房用户写操作的 Event 还是从其他机房同步过来的,都需要经过业务逻辑校验处理后再变更应用状态。这实际就是 EventSource/CQRS 的架构,也是很多联盟链的架构。多机房场景下其实也会用这种架构,主要区别是在对从其他机房同步过来的 Event 的信任度。这时候,账本技术的挑战除了跨机房分布式共识算法,还有共识算法和业务逻辑融合。在前面场景里的共识算法,基本只关心数据,不关心业务,共识算法只保证数据的一致性,并不保证数据在业务场景下的合法性。但在这个场景下,共识算法要保证只对合法的数据达成一致,二者融合了。无法直接沿用上面几种分布式共识算法,需要考虑作弊情况的共识算法,比如 BFT 这样的。

有人会问,有什么动力要将同一个账本交给多个运营方呢?那我们拿互联网电商来说明这个场景。当前的电商,一方面对接商家和商家的库存管理系统,另外一方面对接银行和快递系统,以及最终用户。一个商品,从库存管理系统,到电商平台,用户购买后,从银行扣钱,发送快递,实际上是同一个账本上的信息在不同的运营方系统之间的同步。当前的实现方式是通过远程调用或者商家和用户介入手工操作。那不同的账本之间如何保证一致性呢?只能定时对账清算,因为远程调用本质上只是信息传递,无法保证一致性。如果这时候有个多方共享的账本,架构就会像上面那样,不仅架构更优雅,同时结算效率会更高。

关于联盟链的技术架构以及模式的更详细分析,我会在下一篇文章中细说。

去中心化账本

去中心化账本这个概念没有非常准确的定义,但我们这里可以简单的理解成 Peer to Peer 网络 + 账本。Peer to Peer 网络的特征是无准入机制,给人的印象也是不可靠,更不追求一致性,而账本是要追求一致性的。比特币创造性的把二者结合起来。所以一般所说的去中心化账本,或者公链,关键一个特性就是无准入机制。

之前的账本都是有准入机制的,并且账本本身的运营成本以及收益通过系统外的机制来解决,那如果去掉准入限制,同时账本的运营成本以及收益也通过账本系统内置的机制来调节,会有哪些新的挑战?

  1. 如何激励生产者?生产者为什么提供服务器资源?如何度量生产者的工作?
  2. 如何实现一致性?无准入机制的情况下,节点数不确定,随时加入退出,无法用 BFT 这样的投票共识算法。
  3. 如何防攻击?比如生产大量数据(DoS攻击),伪造大量节点(女巫攻击)。有了激励就有了攻击和作弊的利益动机,传统的 Peer to Peer 网络没有激励,一般人也不会做损人不利己的事情。

下面我们通过几个公链是来分析上面的问题。

Bitcoin: A Peer-to-Peer Electronic Cash System

比特币首先带给我们的是一套内生的激励机制。虽然比特币到底应该理解成货币,还是数字黄金,还是股票,大家争论不休。这里我们把比特币设想成一个创业公司,这个创业公司要做一个记账交易系统。于是它发行了2100万股,发行规则直接写到了这个记账系统的代码中,分期释放,奖励给给这个系统提供运行资源的人。而用户拿什么来交易呢?也用它的股票来做交易媒介。这样它就实现了软件系统在经济上的自举,也带给软件系统一种能力:在程序算法中引入经济博弈机制。

Proof of Work

PoW 到底应该算是激励的评估机制,还是共识算法,还是反 DoS 策略?实际上它兼具多种功能。所以这也是公链的共识算法和传统分布式共识算法的差异之处,容易让人迷惑。

最早应用 PoW 的是 hashcash,它的主要目的就是通过 PoW 来实现邮件的反垃圾,关键点是通过 PoW 制造额外成本,这样发邮件少的用户可以接受成本,但发垃圾邮件的用户就很难承担这样的成本。

同时,有了成本也就可以作为贡献的评估标准,Proof of Work 这个词,顾名思义,就像是一个工作的评估机制。运行比特币系统,需要机房,机器,带宽等,如何通过程序来评估资源提供者的工作呢?比特币的做法就是算哈希函数,要求算出来的哈希值小于一个难度。虽然简单粗暴,但它难计算,易验证,是一种可行的办法。

中本聪共识(Nakamoto Consensus)

只有 PoW 是无法实现一致性的,需要再加上其他的一些策略,统称为中本聪共识。

  1. 内置的校验机制(包括 hash 难度校验,merkle 校验,链式关系校验,UTXO 校验等),每个区块只认可通过校验的合法区块,拒绝非法区块。
  2. 最长链选择 如果由于网络延迟造成软分叉,每个节点应该在最长的一条链上继续工作。
  3. 如果有节点试图违反以上规则,则会带来经济成本(自己挖出的块不合法被拒绝,在短链上的工作不被认可等),通过经济上的博弈实现防作弊。

中本聪共识的特点是无交互,纯异步,每个节点只需要按照内置的规则处理即可,无需和其他节点交互协调。

区块与链式结构

区块链的技术世界观

比特币带来的区块与链式结构,也是区块链这个名字的由来。但区块和链式结构是必须的吗?真的存在一条这样的全局链式结构吗?实际上区块只是一种为了降低网络开销的批量操作,链式结构的主要目的是建立一种时间上的依赖关系,即便两个交易本身不相关,但由于链式结构的存在,后面的交易实际上给前面的交易做了背书,增加了篡改和回滚的成本,因为一旦想要撤回前面的交易,必然也会影响后来的交易。这种结构和关系只是共识协议的一部分,并不存在这样一个全局的结构,具体每个节点如何保存数据,是节点自己决定的。链式结构虽然存在分叉,但只要配合共识机制,最终可以选择出一条唯一的链,达到最终一致性。也就是说,只要能达到这个目标,区块和链式结构并不是必须的,也没必要因为这个名字纠结什么是真正的区块链。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读