区块链密码学分析,从数据分析、密码学角度看区块链未来
编者按:区块链技术是近年来的热点话题。无论是比特币、以太坊等密码学货币价格的大幅波动,还是各国政府机构对区块链技术的大力研发投入,都预示着区块链技术已经处在时代的“风口浪尖”。本文从数据分析及密码学的角度,结合最近微软亚洲研究院可信系统研究组发表的两篇论文,向大家介绍区块链技术的相关现状以及技术趋势。
区块链是一个复杂的点对点系统,其中既包含技术的部分(例如网络、密码学、虚拟机等),也包含对生态中各个角色的决策(例如攻击者、共识维护者即矿工、交易所等)。例如,区块链中的节点都需要按照技术的部分来运行,同时根据自身的利益,也可以采取对应的决策对区块链系统产生正向或者反向的影响
微软亚洲研究院可信系统研究组多年来持续探索区块链技术的前沿发展,对技术部分以及生态部分都有着长期的研究。因此,可信系统研究组的研究员们从技术和生态两个角度分别阐述了区块链技术的相关现状及未来趋势:1、生态部分,从数据分析的角度,研究共识维护者的行为以及发展趋势; 2、技术部分,通过研究目前最热门的密码学技术之一——零知识证明,探索其如何能更高效地服务于区块链系统。
数据分析——以太坊头部三大矿池拥有53%的算力
区块链系统以其“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”、“集体维护”等特征闻名业界,金融、供应链管理、医疗健康等领域也在利用其特性,积极部署区块链系统。但在基于工作量证明共识(Proof-of-work, PoW)的区块链系统中,还存在“51%算力攻击”威胁着系统安全,也就是说,如果有某种势力拥有系统中的51%算力,那么就有可能“颠覆”系统。
在现实中,头部矿池掌控大量算力,也拥有威胁系统安全的潜在力量。如图1所示,以太坊的头部三大矿池(Spark Pool, Ethermine, F2Pool)已掌握超过占全网53%的算力,已经能够发起”51%算力攻击“。此外,其他 PoW 区块链亦存在头部矿池掌握大多数算力的情况。
图1:以太坊算力分布图(源自 Etherscan,2021.03.22)
为了深入了解、分析区块链系统,微软亚洲研究院和清华大学的科研人员提出了对以太坊矿池参与者的首次大规模研究。研究员们通过数据分析了解矿池参与者的算力分布和挖矿行为,进一步刻画以太坊算力去中心化程度,并将研究的分析见解发表了论文“Characterizing Ethereum’s Mining Power Decentralization at a Deeper Level”。该工作已被全球计算机网络领域的重要会议 INFOCOM 2021 接收。
论文地址:https://www.microsoft.com/en-us/research/uploads/prod/2021/02/infocom-camready.pdf
该文章作者中,曾丽仪来自清华大学,现为微软亚洲研究院实习生,与微软亚洲研究院创新工程组郭众鑫、可信系统研究组陈洋、陈硕、张宪等在区块链研究上有长期的合作。
以太坊的挖矿生态结构如图2所示,区块记录矿工帐号,这些帐号来自矿池管理者或者独立矿工,他们可直接获得系统发放的挖矿奖励,当矿池收到奖励后再通过链上交易分发给矿池参与者。过去,分析算力去中心化的研究工作主要停留在分析头部矿池的算力分布,忽略了其他挖矿参与者的算力情况。因此,微软亚洲研究院的研究员们认为研究以太坊算力去中心化情况不能仅仅局限于分析挖矿节点(矿池和独立矿工)的算力分布,也应该考虑矿池参与者的挖矿行为和算力分布情况,为度量算力去中心化程度和防止算力集中的解决方案提供更多洞悉。
图2:以太坊挖矿生态结构图
然而,以太坊帐号都是去实名化的,单从链上交易无法准确识别矿池参与者的帐号,目前学术界并没有关于矿池参与者的真实数据集。所以,需要结合链上和链下的多个数据源才可以识别矿池参与者帐号和矿池分发奖励交易。数据集识别流程如图3所示。
图3:以太坊挖矿数据集识别流程图
由于部分矿池会在 Etherscan(以太坊搜索引擎)公开帐号信息,部分大型矿池也会给挖矿参与者提供查询挖矿收益信息的 API,以用于识别某个以太坊帐号是否属于其矿池参与者。因此,研究员们可以在 Etherscan 上爬取公开身份的矿池帐号,并从以太坊区块链数据库提取识别的矿池发出的交易,收集这些交易的接收帐号,从而用于矿池 API 识别。能被矿池 API 识别的帐号就可确认为矿池参与者帐号,然后再相应地提取识别的矿池发至矿池参与者的奖励交易。
通过首个大规模对以太坊矿池参与者的识别和分析研究,微软亚洲研究院和清华大学的研究员们创建了首个大规模以太坊挖矿数据集 E-PAR。该数据集涵盖了以太坊自上线(2015年7月30日)以来至2020年4月10日近5年的数据,其中包含所有矿工帐号的奖励交易、识别的矿池帐号、识别的矿池参与者帐号和矿池发至矿池参与者的奖励交易,且覆盖了近两年内占全网平均77%算力的挖矿行为。
E-PAR 数据集揭示了矿池之下矿池参与者的算力分布情况、矿池参与者同时参与多个矿池或在多个矿池间跳转的挖矿行为、矿工选择加入矿池的多元原因,从而进一步丰富了以太坊算力去中心化程度的评估,讨论了矿池挖矿算力的可控性,推理思考了现有研究工作提出的阻止矿池集中算力的解决方案的可行性,给区块链社区带来了基于数据驱动的深层次的算力分布研究。想要了解更多详细情况,可查看数据集。
数据集 GitHub 地址:https://github.com/yangsrc/pool-dataset
密码学——零知识证明提升区块链性能和隐私
除了从数据分析角度解析区块链生态的发展趋势,微软亚洲研究院的研究员们还从技术角度,探索了使用现代密码学提升区块链性能以及隐私保护的重要技术——零知识证明。
零知识证明(Zero-Knowledge Proof)于20 世纪 80 年代初被提出,是现代密码学的重要基础之一,也是现代密码学研究的热点。其在隐私性和可验证性之间搭建起了一座桥梁,原理如下:证明者 P 能在不透露 w 的情况下,向验证者 V 发送一个证明(proof),证明 P 本人知道一个 w,使得给定公开输入 x、公开输出 y 以及程序 f,满足 f(x,w)=y。举例而言,假设 P 为金融机构,V 为监管部门,w 为涉及用户交易的隐私数据,f 为交易是否合规的验证程序,x 为公开数据,y 为是否合规的结果,那么零知识证明将保证金融机构能在不透露用户隐私的情蓑衣网小编况下,向相关监管部门证明其涉及到用户的交易是合规的。
正是由于零知识证明独特的性质,所以它被广泛应用于区块链系统中,以增强区块链的隐私保护、增加区块链的交易吞吐:
增强隐私:由于区块链的链上交易数据公开可见,所以各种交易数据容易被提取、分析,导致隐私泄露,这是业界认为区块链缺乏隐私保护机制的原因。而经过零知识证明加持之后,区块链中的用户就可以将相关的链接关系以及交易金额等信息隐藏起来,并能让区块链矿工验证交易的正确性,从而达到隐私保护的目的。目前,零知识证明已被广泛应用在各种隐私保护区块链中,例如 Monero、Zcash 等(了解更多相关细节,可参考文章《一文读懂区块链上的隐私与监管问题》)。
提升吞吐:除了隐私问题,区块链的低吞吐率也遭业界诟病。例如随着以太坊上 DeFi 应用的兴起,以太坊交易数量猛增并造成拥堵,导致产生极高的交易费用。运用零知识证明技术,用户可以先将相关交易发送给交易聚合节点,然后聚合节点再生成关于大量交易都是有效的零知识证明,并把对应的证明发送至合约由矿工们进行验证,从而节省矿工对大量交易进行重新计算的开销,极大降低被聚合交易的交易费用。这种技术被称为 zk-rollup,目前有很多项目都在进行相关的开发,例如 zkSync,zkSwap。
回到零知识证明本身,证明者生成证明的过程往往涉及大量复杂的密码学计算,这就使得生成证明的时间会特别长,大大超出了应用可以接受的延迟范围,并极大地限制了零知识证明的使用场景。例如由于 Zcash 之前生成证明的开销太大,普通用户大量使用了没有隐私保护的交易方式,从而引发了隐私泄露;又例如现在的 zk-rollup 技术处理的交易所涉及到的程序复杂度都相对较低,一旦之后的复杂度有所提升,那么就会造成聚合节点生成证明的时间过长,进而影响交易的实时性。
针对这个问题,来自微软亚洲研究院、北京大学、清华大学及上海树图区块链研究院等机构的科研人员联合提出了名为“PipeZK”的高效硬件加速系统,可将零知识证明的证明过程加速10倍以上,证明过程的延迟下降一个数量级。PipeZK 系统可广泛应用于隐私保护以及区块链 Layer-2 技术场景中,并可显著增强区块链的交易隐私保护,提高交易吞吐率。相关论文“PipeZK: Accelerating Zero-Knowledge Proof with a Pipelined Architecture”已被计算机体系结构领域的全球顶级学术会议 ISCA’21 接收。
论文地址:https://www.microsoft.com/en-us/research/publication/pipezk-accelerating-zero-knowledge-proof-with-a-pipelined-architecture/
zk-SNARK 协议是近年来最流行且最高效的零知识证明协议之一,其证明过程主要由两部分计算构成(如图4):一个是高次多项式的乘法(下文简称 POLY),一个是大规模的椭圆曲线向量积(下文简称 MSM)。通过深入研究,研究员们发现这两部分都可以用一种高效的流水线(Pipeline)方式进行并行加速,让 ASIC(application-specific integrated circuit,专用集成电路)的计算资源高效化并能协同 CPU 处理这两部分的计算。
图4:zksnark 的主要计算部分:多项式乘法(POLY)及椭圆曲线向量乘(MSM)
针对 POLY 部分,研究员们主要采用了 number theoretic transforms(NTT)算法进行处理(如图5)。为了处理 zk-SNARK 中 POLY 计算规模太大,从而造成 ASIC 片上计算资源及片下内存访问速度太慢的问题,研究员们设计了一种高效的流程来将大规模的 NTT 迭代分解为小规模 NTT,并使用 FIFO 等数据结构来提升内存的访问效率。除此之外,研究员们还使用了 data tiling 以及片上矩阵转置等方式来提升片下内存的效率。通过 PipeZK 系统,POLY 部分可以被加速20倍以上。
图5:POLY 部分的优化设计
针对 MSM 部分,研究员们采用了高效的 Pippenger 算法处理椭圆曲线的向量乘,并分析了对应标量部分的数据分布,使用了与之适配的调度机制,从而优化了片上资源利用,提升了并行度(图6)。研究员们还进一步使用了一种粗粒度的处理方式将 ASIC 上的计算单元进行了解耦,使之能各自独立地处理计算任务,避免了计算单元的闲置。实验结果表明 PipeZK 系统能将?MSM 部分的延迟降低77倍以上。
图6:MSM 部分的优化设计
研究员们在多种测试集以及零知识证明的应用上测试了 PipeZK,其都能取得可观的性能加速。例如在一系列密码电路(如 AES、SHA256 等)的零知识证明上,PipeZK 甚至比当前最流行的 GPU 算法快(接近)20倍。在 Zcash 的交易证明生成上,PipeZK 系统目前也能将证明过程的延迟加速5倍以上。经分析,目前终端到终端的性能瓶颈已经集中在了 witness 生成以及 G2 曲线计算上,相信通过后续的优化,加速比将会得到进一步的提升。
区块链的研究方兴未艾,数据分析以及密码学相关的研究只是提供了两个角度。其他方向例如区块链的系统/共识性能优化、合约安全、Layer-2 技术、应用创新等,近年来也都产生了大量的工作。微软亚洲研究院在区块链其他方向上也正在进行着创新和探索,未来会给大家带来更多前沿工作的介绍。
文章从网络整理,文章内容不代表本站观点,转账请注明【蓑衣网】