首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链要去中心化么?

区块链(Blockchain)技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。Wikipedia 给出的定义为:

A blockchain—originally, block chain —is a distributeddatabase that maintains acontinuously-growing list of data records hardenedagainst tampering andrevision. It consists of data structure blocks—which hold exclusively data ininitial blockchain implementations,and both data and programs in some of themore recent implementations—with each block holding batches of individualtransactions and theresults of any blockchain executables. Each block containsa timestamp andinformation linking it to a previous block.

简而言之,区块链技术让参与系统中的任意多个节点,把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。

01 区块链本质

区块链实质是由多方参与共同维护一个持续增长的分布式数据库,也被称为分布式共享账本(Distributed Shared Ledger),其核心在于通过分布式网络、时序不可篡改的密码学账本及分布式共识机制建立彼此之间的信任关系,利用由自动化脚本代码组成的智能合约来编程和操作数据,最终实现由信息互联向价值互联的进化,如图1所示。

图1 从传统集中记账方式(左)到分布式总账(右)

区块链是一种与传统集中记账方式不同的记录技术。参与到区块链系统上的节点,可能不属于同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。与传统的记账技术相比,其特点包括:维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;无需集中的控制而能达成共识,实现上尽量分布式;通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。

02 区块链工作原理

所谓区块链,正是由一个个区块组成的链状数据结构及存储方式。每个区块分为区块头和区块体,区块头主要用来实现区块链接的前一区块哈希散列值(Hash Value),而区块体主要包括交易账本,如图2所示。

图2 区块链的账本

以交易场景为例,区块链工作原理如下:首先客户端将发起的一笔交易经数字签名后广播给网络上其他节点并等待确认;网络中的节点对收到的数据记录信息进行校验,通过校验后,数据记录被记录到一个区块中;全网所有接收节点对区块执行共识算法,区块通过共识算法过程后被正式纳入区块链中存储,全网节点均表示接受该区块。而表示接受的方法,就是将该区块的随机散列值视为最新的区块散列值,新区块将提供永久和透明的交易记录并以该区块链为基础进行延长,实现资金转移。

03 区块链技术特点

具体来说,区块链技术作为创造信任的机器,主要有以下特点:

分布式结构。区块链构建在分布式网络基础之上,账本并不是集中存放在某个服务器或数据中心,也不是由第三方权威机构来负责记录和管理,而是分散在网络中的每一个节点,每一节点都有一个该账本的副本,所有副本同步更新。

信任机制。区块链技术通过数学原理和程序算法,使系统运作规则公开透明,实现交易双方在不需要借助第三方权威机构信用背书下通过达成共识建立信任关系。

公开透明。区块链对其上的节点可以做到开放、透明。任何人都可以加入区块链,也能查询区块链上的区块记录;同时所有用户看到的是同一个账本,能看到这一账本所发生和记录的每一笔交易。

时序且不可篡改。区块链采用带有时间戳的链式区块结构存储数据,具有极强的可追溯性和可验证性;同时由密码学算法和共识机制保证了区块链的不可篡改性。

04 区块链层次模型

区块链技术的模型是由自下而上的数据层、网络层、共识层、激励层、合约层和应用层组成,共有六层。

数据层、网络层、共识层这三层是区块链的必要元素。

1)数据层:最下层是“数据层”,封装了底层数据区块的链式结构,以及相关的非对称公私钥数据加密技术和时间戳等技术,这是整个区块链技术中最底层的数据结构。

2)网络层:中间是网络层,包括P2P组网机制、数据传播机制和数据验证机制等。

3)共识层:第三层是共识层,封装了网络节点的各类共识机制算法。

而激励层、合约层和应用层不是区块链的必要元素,一些区块链应用并不完整地包含上面三层结构。

第四层是“激励层”,将经济因素集成到区块链技术体系中来,包括经济激励的发行机制和分配机制等,主要出现在公有链当中。

第五层是“合约层”,封装各类脚本、算法和智能合约。

第六层是“应用层”,封装了区块链的各种应用场景和案例,未来的可编程金融和可编程社会也将搭建在应用层。

在区块链加密技术出现之前,互联网上的信息拷贝起来是零成本的,数字资产具有无限可复制性,如果没有可信赖的第三方监督,我们根本无法确认一笔数字现金是否被花掉,因此可能出现重复支付问题。

为了解决这个问题,区块链参照了“拜占庭将军问题(Byzantine failures)”[5]的算法。该问题是一个协议问题,指拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒,而将军们只能依靠信使来传递信息。如何才能防止受到叛徒欺骗而做出错误决策呢?数学家设计的算法是让将军在接到其上一位将军标有进攻时间的信件之后,写上同意或反对并盖上的自己的图章,然后把信转发给其他所有的将军,在这样的信息周转之后,最后会出现一个盖有超过半数将军图章的信息链,以保证将军们在互不信任的情况下达成共识。

莱斯利·兰伯特把拜占庭将军问题引入点对点通信。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。

区块链的技术原理参考了拜占庭将军问题的算法,通过盖戳的形式来进行公证。网络上的每一个参与者的电脑都会有一份总账的备份,也都能在这本总帐里记上一笔,并且所有的备份都是在实时的、持续的进行更新、对账、以及同步着拷贝,即全网记账,每个节点都可以来竞争盖戳,互相认证。这使得一个不可信网络变成了一个可信的网络,使得所有参与者可以在某些事情上达成一致。

05 区块链并不一定去中心化

理想化的区块链系统,是由许许多多节点组成的点与点的网络结构,似乎既不需要中心化的硬件设备,也不需要任何管理它的机构。在很多文献中都提出区块链是去中心化的(Decentralized),即整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,且任一节点的损坏或者失去都会不影响整个系统的运作。

需要指出的是,区块链并不一定是去中心化的。实际上,软件系统的网络架构一般有三种模式:单中心、多中心、分布式,Decentralized只表明不是单中心模式,它可能是多中心或弱中心,也可能是分布式的。把Decentralized翻译成“去中心化的”可能与最早由国内“币圈”所做出的翻译偏差有关,实际上在中国台湾地区,大多译为“分散式的”而不是“去中心化的”。因此,把Decentralized翻译成“分布式”或者“多中心化”,可能更切合今天技术和金融场景应用的实际。

在人类社会的历史上,信息传播的延迟和谬误导致信息不对称,形成了各种中心化的强权组织和阶级分化。虽然信息社会特别是社交媒体的出现已经减弱了这种情况,但是目前仍无法达到绝对的信息对称。我们期待在区块链搭建的机器社会中进行深刻且迅速的社会关系变革,形成绝对信息对称,但是至少目前在机器社会还难以实现,即不能完全去中心化。

2016年TheDAO受攻击事件也表明,完全去中心化至少在现阶段是不可行的。The DAO是一个基于以太坊公有链的众筹项目,成为史上最大的众筹项目。然而由于其智能合约的漏洞,导致The DAO被黑客攻击并转移走价值6000万美元的数字货币,最后不得不黯然落幕。这给以太坊生态系统带来了很多负面影响。此次事件之后,很多人对区块链的“去中心化”进行了反思:在挽回这个损失的过程中,原有的去中心化机制未能解决问题,最后还是通过“集中式”的方式,强制以太坊进行“硬分叉”完成交易回滚。

如果我们仔细研究中本聪的论文中,就会发现其中只有Peer-to-Peer(P2P),而没有Decentralized一词。业界也正在逐渐对区块链并不一定去中心化形成共识。在2016年6月召开的W3C区块链标准会议上,以太坊的核心开发团队EthCore明确表示,不再使用Decentralized这个词,而是用P2P、Secure、Serverless这类纯技术性词语。

但是如果简单地宣称去中心化,或会被误读成是在某种程度上存在着一种既想从事金融活动,又不愿意接受金融监管的倾向。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180510B1I1W200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券