本博客只做该综述论文的总结和部分概念的解释工作,适合新手入门学习。
所有引用到的网络文章在博客最后都有原链接,强烈建议认真阅读并支持原作者,侵删。
摘要:本文通过调查和分类与区块链系统和网络的理论发现和基本机制密切相关的最新高质量研究成果,进行了彻底的调查。最后总结了几个有前途的开放性问题,并展望了未来的研究方向。
中心化安全机制很容易出现单点故障,即中心节点出错时整个系统将停止运转。相比较之下,去中心化的区块链可以在没有可信第三方的情况下解决单点故障问题。区块链凭借其去中心化的特点,已经深入到与我们日常生活的方方面面密切相关的多个应用领域,如加密货币、商业应用、智慧城市、物联网应用等。
为了完成分类工作,本文选取了67篇前言区块链相关研究论文。按照数量排序,前三的主题分别是物联网、共识协议和安全隐私。按照时间排序得到如下结论:1)论文数量逐年增加;2)主题多样性逐年增加。本文将这些论文分为了7类,这样的分类主要是基于文章所涵盖区块链的不同方面,分别是:
通过上述研究我们可以发现区块链技术已经巧妙地融入了越来越多的应用领域,区块链理论和技术将在各个领域带来大量的创新、激励和大量的应用场景。根据对这些调查文章的分析,我们相信在不久的将来会有更多的调查文章发表,很可能在分片技术、可扩展性、互操作性、智能合约、大数据、人工智能技术、5G及超越、边缘计算、云计算等许多领域。
目前并没有一个能够提高区块链性能、帮助了解区块链的前沿理论、模型和有用工具的研究文章。以下几个方面尤其需要进一步的研究:
区块链的性能包括很多方面的指标,例如吞吐量、延迟、存储效率、可靠性、可扩展性、可交互性等。很多理论可以更进一步提升区块链的性能指标,例如可扩展性的解决方案、新协议和底层架构都值得更多的关注。
以下几个主题应该被更重视:
在整理的66篇文章中都并未提及区块链的性能指标、数据集和开发工具相关的问题,本文将回顾这几个方面的研究。
通过本文,我们希望通过强调区块链的前沿理论研究、建模和有用工具来填补空白。我们尤其试图包括其他现有调查文章未包括的最新高质量研究成果。我们相信,这项调查可以为区块链的进一步发展提供新的思路。
区块链是P2P网络上内容分发和分布式共识的一个很有前途的范例。本节介绍了区块链的一些基本概念、定义和术语。
比特币被视作创造了第一个加密货币的区块链系统,其衍生出了两个主要技术——中本共识和UTXO Model:
中本共识(Nakamoto Consensus):为了达成区块协议,比特币采用了中本共识,在该共识中“矿工”通过解决一个难题来产生新的区块。在这样的难题解决情境下——也被称为挖矿场景——矿工们需要计算一个随机值,该随机值满足所需的难度等级。通过改变这个难度,比特币系统能保持一个平稳的区块生成速率——大约10分钟生成一个新区块。当一个矿工生成了一个新区块,他就将这个信息广播给网络中其他所有的矿工。其他矿工接收到这个新的区块后将该区块添加到旧链上。如果所有其他矿工都及时接收到了这个新区块,那么链的长度就加一。但是由于网络延迟,不是所有时候都能保证所有矿工及时接收到新的区块。在一个矿工接收到上一个区块之前产生了一个新区块时,一个分叉就出现了。比特币系统通过维持最长链来解决这个问题。
个人理解:如果两个人同时产生了一个区块并将这个区块广播出去,那么就一定会面临部分人接收到了新区块A而另一部分人接收到了新区块B的情况,在这种情况下第一波人将新区块A拼接到旧链上并继续计算新的区块,而另一波人则将新区块B拼接到旧链上并继续计算新的区块,接下来会出现三种情况:1)第一拨人中的某个人先计算出了下个区块:在这种情况下比特币系统维护第一个新链而舍弃第二个新链,第二拨人白算;2)第二拨人中的某个人先计算出了下个区块:在这种情况下比特币系统维护第二个新链而舍弃第一个新链,第一拨人白算;3)两拨人中的某两个人同时计算出了下个区块:在这种情况下就回到了一开始的情景,继续分拨直到出现第一种或第二种情况,不同点在于一旦分叉合并,那么白算的人就会更多,因为另一条链上有更多人在继续算下一个区块。这里分为两拨人是为了方便举例子,事实上完全可能出现多组人同时计算多个链的下一个区块的情况,只不过由于维护最长链的原则存在,最终只会有一个链被比特币系统选中并加以维护。
UTXO模型:未花费交易输出(the Unspent Transaction Output, UTXO)模型已经被加密货币例如比特币以及其他著名的区块链系统所采用。UTXO是一组数字货币,每一组都代表了基于加密技术的所有者和接收者之间的所有权链(a chain of ownership)。在区块链中,整个UTXO形成一个集合,其中每个元素表示交易的未花费输出,并且可以用作未来交易的输入。一个client可以拥有多个UTXO,并且该客户的总代币是通过将所有相关的UTXO相加来计算的。使用该模型,区块链可以有效地防止双重支付攻击。
双重支付攻击:在加密货币交易中,同一笔资金被发送到两个或多个不同的地址,以欺骗系统认为这些交易是有效的。双重支付是加密货币世界中的一个重要问题。
以太坊是一个支持智能合约运作的开源区块链平台。作为以太坊中的代币,以太币(Ether)被用来奖励给那些进行计算以确保区块链的共识的矿工。以太坊运行在去中心化的以太坊虚拟机(Ethereum Virtual Machines, EVMs)上,在这里脚本运行在由公共以太坊节点组成的网络上。与比特币相比,EVM的指令集是图灵完备的。
图灵完备:图灵完备性(Turing Completeness)是针对一套数据操作规则而言的概念。数据操作规则可以是一门编程语言,也可以是计算机里具体实现了的指令集。当这套规则可以实现图灵机模型里的全部功能、解决全部计算问题时,就称它具有图灵完备性。
以太坊还引入了一种内部定价机制,称为gas。一个gas单位度量了在事务中执行操作所需的计算工作量。因此,gas机制对于抑制智能合约中的垃圾邮件非常有用。以太坊2.0是基于原始以太坊的升级版本。升级包括从PoW(Proof of Work,工作量证明)到PoS(Proof of Stake,权益证明)的过渡,以及基于分片技术的吞吐量改进。
Account/Balance(账户/余额)模型:与比特币使用UTXOs来组成状态,以太坊采用了一种银行使用的、更加常见和直观的模型——账户/余额模型。在每一个账户中都实现了一个交易增加计数器nonce,用来在这个简单的模型结构中防止双重支付攻击。在这个模型中基本分为两种账户,分别是外部拥有账户(External Owned Accounts, EOAs)和合同账户(Contract Accounts, CAs),前者受到用户私钥控制,后者通过合约代码控制。
以下内容来自Fabric官方文档而非论文内容。
比特币和以太坊属于同一类区块链,我们将其归类为**公共非许可(Public Permissionless)**区块链技术。这些基本上都是公共网络,允许任何人在上面匿名互动。随着比特币、以太坊和其他一些衍生技术的普及,越来越多的人想要将区块链基础技术、分布式账本和分布式应用平台用到企业业务中去。但是,许多企业业务对性能要求较高,目前非许可区块链技术无法达到。此外,在许多业务中,对参与者身份要求比较严格,如在金融交易业务中,必须遵循“了解客户(Know-Your-Customer,KYC)”和“反洗钱(Anti-Money Laundering,AML)”的相关法规。对于企业应用,我们需要考虑以下要求:
Hyperledger Fabric是一个企业级许可分布式账本技术平台,专为在企业环境中使用而设计,与其他流行的分布式账本或区块链平台相比,它有一些主要的区别。首先,Fabric 平台是许可的,这意味着它与公共非许可网络不同,参与者彼此了解而不是匿名的或完全不信任的。此外,该平台最重要的区别之一是它支持可插拔的共识协议,使得平台能够更有效地进行定制,以适应特定的业务场景和信任模型。
EOSIO是一个于2018年发布的区块链平台,它构建了一个区块链底层的技术架构,类似区块链中的操作系统,使得更多的开发者能够基于EOSIO平台快速方便的构建分布式应用软件。与比特币和以太坊不同,EOSIO的智能合约不需要支付交易费。EOSIO称其吞吐量可以达到每秒数百万个事务。此外,EOSIO还支持低块确认延迟,低开销的拜占庭容错等。这些出色的功能吸引了大量用户和开发人员在受治理的区块链中快速轻松地部署分散的应用程序。例如,自首次推出以来,在不到一年半的时间里,总共产生了8980万个EOSIO区块。
区块链中的共识机制是为了容错,在区块链网络的相同状态上达成协议。常见的基于证明的共识协议包括PoW和PoS。在工作量证明PoW中,矿工们通过解决难题和其他人竞争,这些难题是难以解决但容易验证的。一旦矿工在尝试大量可能值后找到了需要的随机值,他就被奖励一定数量的加密货币用于创造新的区块。相较之下,权益证明PoS不存在矿工这个角色。相应的,新的区块是由委员会中随机选择的验证者伪造的。被选中成为验证者的概率线性相关与它的权益大小。
该文章对点点币中的PoW+PoS共识机制进行较为清晰的说明。
举例子:A是一名矿工,他在点点币中挖矿。与比特币的相同的地方在于,A也是通过解决难题的工作量证明方式来挖到矿。与比特币的不同的地方在于,A抵押的币龄越大,A解决难题的难度就越小。100前,A在点点币中以矿工身份抵押了30点点币,算下来今天A在点点币中抵押的币龄已经达到了100×30=3000。A要解决的难题公式非常简单:hash(block_header) ≤ target × coinage。在抵押点点币后的第一天,A需要计算出一个随机值nonce,该随机值与旧链拼接后再计算哈希值,最终得到的结果居然需要小于target × 30!这对于A来说简直是一个不可能完成的任务。但是等到一百天以后的今天,A需要做的工作相同,只不过A计算出的最终结果只需要小于target × 3000就够了。非常幸运,A今天算出来了这个值,也就意味着A挖到了点点币中的这个新矿。但是A还没有从新矿中赚到钱,这是因为A并不是真的获得了挖矿奖励,而是被选中成为了交易的领导者。此时在链上有很多人在排队完成自己的交易,看到A被选为了领导者后,很多人纷纷来找A,希望A能够主持自己的交易。在这之中,B和C的交易两人愿意支付0.5%的手续费给A,而D和E的交易两人出手阔绰,愿意支付1.5%的手续费给A。想都不用想,A立刻就同意让D和E上链进行交易记录,可怜的B和C只能等待下一个领导者了。说回这边,A需要在链上记录D和E的这笔交易,同时从这笔交易中扣除自己币龄的1.5%作为手续费收入囊中。这时A突发奇想,既然自己是交易的领导者,那我为何不直接把两人交易的资金转给自己呢?反正D和E只是交易的双方,无权干涉记录的内容。但是最终A的理智战胜了欲望,A还是正常履行了领导者的责任,完成了这笔交易,每个人都得到了自己想要得到的东西。交易结束后,A再次查看自己的账户,发现自己的点点币余额中增加了手续费那部分币。A很高兴,并且希望能够继续担任领导者来赚取手续费,不过很可惜,当A查看自己的币龄时,A发现自己的币龄已经被清空了,原来当A被选为领导者一次后,先前抵押的币龄都将被清空。想要重新成为领导者,A不得不重新投入点点币作为抵押重新解决难题。同时,A看到了新闻上偷偷篡改链上交易内容的领导者F,以太坊给F的惩罚很简单:没收抵押的那部分点点币币,并且加入失信名单。看到这A暗暗松了一口气,庆幸自己没有犯糊涂。
而以太坊在2022年完全舍弃了PoW的共识机制,采用了完全的PoS共识机制来生成新的区块,详情请阅读以太坊官方文档,自己总结的大致过程如下:
作为一个分布式公开交易数据库,区块链已经成为了去中心化应用的平台。尽管它的知名度与日俱增,区块链技术仍面临可扩展性的问题:吞吐量不随网络大小的增加而增加。因此,能够解决可扩展性问题的可扩展区块链协议仍是研究重点。很多不同的方向,例如链下(Off-chain),有向无环图DAG和切片技术已经用于解决该问题。
链上交易的交易在区块链上完成且对于区块链网络中所有节点都是可见的,而链下交易则通过可信第三方认可事务的正确性在链下完成交易。由于确认一次链上交易需要经过很多步骤,链上交易面临较长的延迟。相较之下,链下交易可以立即完成因为这些交易不需要再链上网络的队列中等待。
在数学中DAG是一个有限的、有向的无环图。在区块链领域中,DAG被视作可以将区块链升级到下一个版本的革命性技术。这是因为DAG中不需要区块,所有的交易都遵循DAG网络上的规定连接到多个其他交易上,因此数据可以在网络参与者之间直接传输。这为区块链提供了一个更快、更便宜、更易扩展的解决方案。实际上,区块链的瓶颈主要是区块这种结构带来的。因此,无区块DAG可能是一个有前途的解决方案,可以大幅提高区块链的可扩展性。
该文章详细的说明了DAG和区块链的关系。
为了解决比特币所采用的共识协议——中本协议——所具有的严重的吞吐量低、可扩展性差的问题,切片技术可以通过将区块链网络切分为多个小区域的方式来缓解这两个问题,因为每个切片都可以并行处理一堆未经确认的交易,以生成中等规模的区块切片,然后将这些中间块合并到最后一个块中。基本上,分片技术包括网络分片,事务分片和状态分片。
切片技术的一个弊端是当恶意网络节点属于同一个切片时彼此之间可能相互勾结。因此,基于分片的协议利用重组策略来解决此类安全威胁。然而,重组带来了跨分片的数据迁移。因此,如何高效地处理跨分片交易成为分片区块链背景下的新兴课题。
ACCEL:比特币区块确认机制
Monoxide:
Prism:
以比特币为例,如果比特币全网的全节点有1万个,比特币每一个区块的大小是1M,那么每当一个区块被记录到比特币系统中时,这1万个节点每一个都要存储这个区块,所以全网一共要耗费10G(= 1M x 10000)的存储空间。而这10G的存储空间是把一份数据重复存储了1万份。
区块链作为一种去中心化的数据保护机制,其可靠性在预防数据造假中起着重要作用。以下文章研究了实现数据伪造预防的基本支持机制:
现在区块链系统的关键瓶颈问题就是可扩展性问题。例如,当网络大小增加时区块链的吞吐量并没有增加。为了解决这个问题,提出了很多可扩展性增强措施。
Elastico:无权限区块链分布式协议
RapidChain:基于拜占庭弹性分片的协议
SharPer:许可的区块链系统
D-GAS:一种针对以太坊分片的动态负载均衡机制
NRSS:区块链分片策略
OptChain:一种不同于随机分片的新分片范式
SSChain:非重组结构
Eumonia:面向区块全局排序的无许可并行链协议
CycLedger:为基于分片的分布式账本设计的协议
区块链的互操作性对跨链交易起着重要的作用,这种互操作性主要包括多个区块链之间的有效通信和数据交换。
Jin等人:
提出了一种新的互操作架构,支持多个区块链(如比特币和以太坊)之间的跨链合作。
作者还将多链生态系统的互操作分为被动和主动两种模式
HyperService:第一个跨异构区块链提供互操作性和可编程性的平台
通常来说,基于区块的数据结构被无需许可的区块链系统采用,因为区块可以有效地分摊加密成本。然而,在当今的许可区块链中,区块的优势已经饱和,因为区块处理引入了大量的批处理延迟。为了解决许可性区块链存在的性能差、隐私泄露、跨应用交易处理机制抵消等问题,Amiri等人提出了CAPER。这种许可型区块链可以很好地处理分布式应用程序的跨应用程序事务,在CAPER中,区块链帐本形成一个有向无环图,其中每个应用程序只访问和维护其自己的帐本视图,包括其内部和所有跨应用程序事务。
图被广泛用于区块链网络中。例如默克尔树被很多区块链协议所采用,使用DAG技术构建它们的区块。不同于这些常见的图结构,本文回顾了利用图论更好地理解区块链的最新研究。
看不懂……
分为市场风险评估、庞氏骗局侦查、洗钱检测、加密经济系统的肖像等。
尽管这几年出现了不同种类的区块链,很少有人致力于衡量不同区块链系统的性能。
可扩展性仍然是大多数区块链系统面临的重要挑战。例如,拜占庭容错共识协议面临O(n2)数量的消息,其中n为参与者的数量,这就使得可扩展性无法实现。因此,可扩展区块链急需新的物理分布式拜占庭协议和可扩展性解决方案的理论模型——例如边缘链、子链、链下、共享技术、DAG甚至无链。
分片技术包括3种典型的类别,即事务分片、网络分片和状态分片。通过对现有分片技术研究的广泛回顾,发现区块链分片弹性机制仍然缺失。特别是对于状态分片,当区块链节点发生故障时,如何保证故障区块链节点中实时运行状态的正确恢复对区块链的弹性和鲁棒性至关重要。
尽管已经提出了许多基于委员会的分片协议,但这些协议最多只能承受1/3的攻击,一旦超过1/3的攻击,2/3投票的机制就难以正常运行了,因此需要增强协议的健壮性。此外跨分片交易是不可避免的,因此如何保证跨分片交易的吞吐量、延迟等性能指标也是重要问题之一。
3.2.2小节中介绍过的该文章对跨链交易起到了很好的导向作用,但是目前仍然缺少安全的跨链交易加速机制。
尽管多链技术可以通过并行挖掘多个链实例来提高吞吐量,但如何以全局一致的顺序构建和管理所有链上的区块仍然是基于多链的可扩展协议和解决方案面临的挑战。
为了提升区块链的性能,例如降低交易确认的延迟,可以利用RDMA (Remote Direct Memory Access)和高速网卡等先进的网络技术来加速区块链网络中矿工之间的数据访问。
区块链网络建立在P2P网络之上,P2P网络包括mac层、路由层、网络层和应用层等典型层。基于拜占庭容错的协议基本上是为网络层工作的。实际上,针对区块链网络的其他层,可以提出各种协议、算法和理论模型来提高性能。
大数据和区块链在一些性能指标上存在明显差异。例如,大数据是中心化管理技术,强调异构计算机环境下的隐私保护与无冗余的非结构化框架;而区块链则是去中心化的,为了达到去中心化必须有数据冗余,并且数据类型简单、结构化且不可变。如何将这两种技术融合在一起,实现互利共赢是一个值得深入研究的问题。
尽管最新的研究回顾了大量的建模和理论来更好地理解区块链,但仍然需要更复杂的方法和有洞察力的机制来帮助研究人员获得对高性能区块链系统的新认识。
目前已有很多区块链方面的工作是讨论基于区块链的安全与隐私保护应用,安全性和隐私性也是区块链本身的关键问题。例如,交易的隐私可能会被攻击者攻击。然而,针对这些问题的专门研究仍然不足。
加密劫持矿工存在于web浏览器中。这类恶意代码正在侵占网络用户的计算能力、内存等硬件资源。因此,有必要开发反加密劫持机制和策略来保护普通的浏览器用户。
双花攻击、智能合约欺诈等加密货币区块链的安全问题日益受到工业界和学术界的关注。然而,针对加密货币区块链安全问题的理论研究还很少。例如,在多链上探索矿工之间的惩罚和合作是加密货币区块链的一个有趣话题。
对于区块链领域的大多数初学者来说,他们面临着缺乏强大的模拟/仿真工具来验证他们的新想法或协议的困境。因此,强大的仿真/仿真平台,易于部署可扩展的实验平台,将对研究社区大有帮助。