链上链下协同计算

  • 什么是“链上”和“链下”
  • 链下信息如何可信上链?
  • 链上链下数据协同技术
    • 链上链下协同治理介绍
    • 链上链下协同治理应用
      • 链上链下协同的文件系统
      • 链上链下协同的数据处理系统
      • 链上链下协同预言机
  • 分布式身份标识(DID)
  • 链下计算,链上验证
    • 可验证的链下计算
    • “飞地”型链下计算
    • 链下安全多方计算
    • 激励驱动型链下计算
  • 脱链模式
    • 挑战响应模式
    • 链下签名模式
    • 内容可寻址存储模式
    • 委托计算模式
    • 低合约足迹模式
  • layer2 链下扩容
    • 侧链扩容
    • 状态通道
    • Plasma
    • Rollup
    • Layer 2扩容路线对比
  • 链下计算
    • TEE( Trusted Execution Environment )
    • Truebit
  • 链间通信 Interoperation
    • Cosmos
    • Polkadot
  • 参考文章

什么是“链上”和“链下”


区块“链”的链,包含“数据链”和“节点链”。数据链指用链式结构组织区块数据,构成数据校验和追溯的链条;“节点链”指多个节点通过网络连接在一起,互相共享信息,其中的共识节点则联合执行共识算法,产生并确认区块。

交易“上链”的简要过程如下:

1、记账者们收录交易,按链式数据结构打包成“区块”。

2、共识算法驱动大家验证新区块里的交易,确保计算出一致的结果。

3、数据被广播到所有节点,稳妥存储下来,每个节点都会存储一个完整的数据副本。

交易一旦“上链”,则意味着得到完整执行,达成了“分布式事务性”。简单地说,就像一段话经过集体核准后在公告板上公示于众,一字不错不少,永久可见且无法涂改。

“上链”意味着“共识”和“存储”,两者缺一不可。交易不经过共识,则不能保证一致性和正确性,无法被链上所有参与者接受;共识后的数据不被多方存储,意味着数据有可能丢失或被单方篡改,更谈不上冗余可用。

除此之外,如果仅仅是调用接口查询一下,没有改变任何链上数据,也不需要进行共识确认,则不算“上链”。

或者,某个业务服务本身和区块链并不直接相关,或其业务流程无需参与共识,所生成的数据也不写入节点存储,那么这个业务服务称为“链下服务”,无论它是否和区块链节点共同部署在一台服务器,甚至和节点进程编译在一起。

当这个业务服务调用区块链的接口发送交易,且交易完成“共识”和“存储”后,才称为“上链”;如果这个交易没有按预期被打包处理,那么可以叫“上链失败”。

事实上,几乎所有的区块链系统,尤其是和实体经济、现实世界结合的区块链应用,都需要链上链下协同,用“混合架构“来实现,系统本身就包含丰富的技术生态。

链下信息如何可信上链?

先看一个典型问题:“智能合约运行中要使用链外信息,怎么办?”

比如,链上有个世界杯决赛竞猜游戏,但世界杯不可能在链上踢吧;或者需要参考今天的天气,天气显然不是链上原生信息,应该从气象局获取;在跨境业务中,可能用到法定汇率,而汇率一定是来自权威机构的,不能在链上凭空生成。

这时候就要用到“预言机(Oracle)”,由一个或多个链下可信机构将球赛、天气、汇率等信息写到链上的公共合约,其他合约统一使用这份经过共识确认的可信信息,不会出现歧义。考虑到安全和效率,预言机(Oracle)会有多种具体做法,实现起来相当有趣。


预言机(Oracle)是链上获取链外数据的核心机制。当区块链上的某个智能合约有数据交互需求时,预言机在接收到需求后,帮助智能合约在链外收集外界数据,验证后再将获取的数据反馈回链上的智能合约。预言机提供一种无须信任的方式提供外在的信息,在智能合约和外在真实世界之间架一副桥梁,比如提供体育比赛的结果、天气数据、资产价格等。

由于中心化的预言机会有信任中心化系统带来风险,目前主流的预言机平台主要是去中心化预言机,例如Chainlink是以太坊上去中心化预言机平台,如下图所示,通过链上智能合约和链下的数据节点,通过奖惩机制和聚合模型的方式,进行数据请求和馈送。

Chainlink实现智能合约与数据源和API的连接,可实现跨链和链下的交互和支付。Chainlink采用分布式数据源(Distributing Sources)、分布式预言机(Distributing Oracles)、使用可信硬件(Use of Trusted Hardware)三种方案。目前预言机技术解决了链上获取链下可信数据源的问题,但是功能比较单一,性能比较差,采用可信硬件的方式虽然能提升性能,但是依旧存在功能比较单一的问题。

预言机功能架构解读 ——

听起来好像预言机也没什么了不起,只是一种中间件调用外部数据,然后把数据返回到区块链中,但理想很简单,现实很骨感,如果思考下去,你会发现在使用过程中有几个难点:

  • 如何保证获取的外部数据源真实可信?

  • 如何保证数据在传输和处理过程中的安全?

  • 预言机 – 区块链的触角时效性、成本…?

针对上述问题,我们根据趣链区块链平台预言机架构流程图进行阐述说明。

预言机架构模型图

首先,预言机一般会作为区块链的一个独立模块或第三方服务与执行引擎进行交互。预言机只负责数据的可信获取,不直接参与交易的执行。首先,用户通过合约调用的形式(也可以通过特殊的API接口服务等其他方式发起预言机服务请求)发起预言机的服务请求,通过调用某个内置合约接口(图中“预言机服务”接口),告知区块链执行引擎,用户想要执行一笔含预言机服务的交易。

其次,执行引擎执行过程中检测到对预言机的服务请求,通过内部通信组件将它转发给预言机模块,这个请求里会封装请求外部数据源的一些信息,如一个Web数据请求,会包含常见的URL、HTTP Headers等信息。

再次,预言机在收到服务请求后,向外部数据源发起数据获取请求,拿到数据后利用交易生成器产生一笔新的内部回调交易,并对其进行签名(这一过程会使用TEE等硬件技术保障安全及不可篡改)。

最后,预言机将这笔回调交易发向执行引擎,执行对获取到的数据组织、管理、存储等一系列操作,至此一个完整的含预言机服务的区块链交易执行流程结束。

根据上述的生命周期流程,我们对开头的问题进行一一探讨:

1)如何保证获取的外部数据源真实可信

这是预言机使用过程中最核心的问题,回答是没有绝对可信,只能做到相对可信。我们在设计过程中主要在数据源认证、数据获取标准流程、数据格式统一等方面进行约束:

a)数据源选取和可信认证。预言机需要谨慎选择外部数据源,必须保证对每个选取的外部数据源,都可以验证其是可信的,如对于Web的数据获取,选取的数据源需持有证书。

b)数据获取标准流程。开发者必须明确执行引擎、用户、外部数据源与预言机的数据交换流程,且对于不同的数据源类型要能够统一或明确区分数据的交互流程,确保交互方案可执行可落地。

c)数据交互格式的统一定义。不同的数据源类型有不同的数据交互格式,以传感器作为数据源和以Web作为数据源获取到的数据格式是不一样的,针对不同情况,明确统一的数据编解码层,以对不同数据源的数据进行请求和解释。

2)如何保证数据在传输和处理过程中的安全

预言机通过两个阶段对进行中的数据实现可靠保证。

a)数据从网上到本地,采用HTTPS协议(底层采用TLS协议)去保障连接和数据的正确性、完整性。

b)数据从本地到链上,预言机采用可信执行环境 ( TEE ) 技术,TEE是CPU内一块安全区域,和操作系统独立运行,可以确保数据处理过程中的机密性、可靠性,趣链区块链平台研发了基于SGX的TEE实现以及基于国产芯片的TEE实现,进行预言机的安全保护。

3)时效性、成本等

链外的数据交互处理相对于链内来说,在数据源可信度、预言机可信度、处理复杂度等方面都会增加,而真实场景中可信度的不同,严重影响着预言机的实现效率以及实现成本。在公有链中,默认多方完全不可信,所以会通过多预言机模型实现聚合处理、共识规则、奖惩机制及声望系统,以达到提高作恶成本的作用,这无疑增加了功能实现的复杂度;在联盟链场景中,预言机使用场景相对可信封闭,且机构节点间可信度高,单预言机实现效率高、成本低,但存在单点作恶的问题,所以各位在使用过程中应该因地制宜,根据场景具体选择最适合的实现方式。

链上链下数据协同技术

链上链下协同技术涉及的技术很广,目前市场上的平台只实现了链上链下协同的部分功能,例如链上获取链外数据的预言机、链下文件存储的可信存储、以及链下计算等。国外对这些技术有一些研究,主要应用在数字货币领域。国内区块链应用以联盟链为主,链上智能合约获取的数据主要来自于可信的业务系统产生的数据,另外国内大部分厂商提的链上链下协同技术目前主要指链上存数据哈希,链下存完整数据这种协同方式,链下链下协同技术目前并没有形成完善的平台。

目前国内外对链上链下数据协同的技术才刚刚起步,也有一些协同研究,包括侧链和状态通道,为了提高性能和计算能力。这有点像云计算和边缘计算。现在数据是算好,起码区块链上要给别的数据留下通道。跨链技术,为了增加链与链之间互操作性和可扩展性。链下计算,提高数据的隐私保护能力。

链上链下协同治理介绍

关于链上链下协同治理介绍,要从链上和链下的概念分析开始


链上包括节点链和数据链:节点链指节点通过区块链网络层进行连接,共享 信息,执行交易共识和区块上链的任务;数据链是指一个个区块以链式结构进行 存储的形式。交易通过记账节点按照链式结构打包成区块,进行分布式共识,经 过共识后的区块会被广播到所有节点,完成上链过程。上链过程会产生大量的共 识开销、存储开销、计算开销和网络开销,虽然区块链为交易提供了背书,但这 使得区块链的可用性大打折扣,结合联盟链的高可用性和高性能两大关键性指标, 这显然不符合区块链应用的发展方向。

链下也称为 Layer 2 层,应用链下扩容方案,只在参与该交易的节点之间进行 直接交易,不需要将交易进行全网广播,其效率仅取决于参与节点之间的网络性 能,因此链下扩容方案不会受到原有区块链性能的影响,不存在链上扩容方案的 性能瓶颈。但目前链下扩容方案存在技术难度高、实施周期长等问题,且可能对 安全性和去中心化带来损害,因此提出将链上链下有机结合的链上链下协同治理 方案。

综上所述,链上链下协同治理中,链上指的是区块链,链下指的是暂时脱离 于主链的复杂业务逻辑,也可以理解为传统的信息系统。链上链下协同治理将区 块链系统与传统信息系统进行有机融合,充分发挥联盟链的高性能、安全隐私、 高可用性技术和高可拓展性技术优势,最终实现联盟区块链的大规模应用。

链上链下协同治理应用

目前,链上链下协同治理确立了 4 个基本发展方向:可定义的数据分发、高 性能可编程引擎、模块化安全密码学协议和大规模高性能点对点网络,用以实现区块链尤其是联盟链,高性能、高安全、隐私保护、高可拓展性以及可监管的 特性。链上链下协同治理的应用实例如下:

链上链下协同的文件系统


传统信息系统模型中,文件共享并不是分布式共享,是具备点对点特性的局 部共享,在区块链系统中文件共享需要广播给所有节点,并让所有节点对共识后 的文件进行存储,当面对海量数据时,这种存储模型显然是力不从心的,此时链 上链下协同的文件系统的提出解决了以上问题。

链上链下协同的文件系统将文件纹身存储在链下的文件存储系统中,仅将文 件的数据指纹和作者、持有人签名、访问地址等标识性信息上链。在需要向对方 分享信息时,通过专用通道点对点的传送文件,或分享专用的地址,让对方去指 定的地址下载文件。对方收到文件信息,计算文件的数据指纹与链上信息进行比 对,若一致则证明收到了完整的正确信息。

链上链下协同的文件系统通过 MD5或 HASH的形式为文件计算数据指 纹,实现链上锚定和链下存储的功能,为区块链实现了海量存储、低成本管理和 高效率分享的文件存储模型,实现了效率、功能和隐私安全的三平衡。

链上链下协同的数据处理系统


首先,数据处理系统中的操作包含增删改查等功能,是信息系统的基础,对 客户端和服务器进行串联,是信息系统中最为重要的一部分。其次,传统数据处 理系统中,数据处理操作的效率普遍高于基于区块链的数据处理系统,原因是基 于区块链的数据处理系统中,区块链为数据安全提供背书的同时,增加了数据 处理操作成本,该方面也成为了阻碍区块链大规模应用的重要难题之一。最后, 针对以上问题,提出链上链下协同的数据处理系统,实现效率和安全的平衡。

因为区块链的不可篡改特性,所以区块链中数据处理操作的核心是增操作和 查操作,以下将针对以上两个操作进行详细叙述。

增操作,也称为上链操作,区块链上链是一种多方分布式协作过程,存在复 杂的密码学计算和众多的网络节点通信过程,会产生共识开销、计算开销、网络 开销和存储开销,相比较传统信息系统,该过程是极度缓慢的,为了缓解该情况, 提出了以 Layer 1 层扩容为基础,Layer 2 层扩容为辅助,链上链下协同扩容的解决 方案,将大体量数据集,如图像、视频、PDF 等置于链下,通过创建大规模数据 加密通道实现链上链下数据协同。

查操作,数据一旦“上链”,就不会改变,且只增不减,数据本身有明显特 征(如区块高度、互相关联的 HASH 值、数字签名等)可以检验数据的完整性和 正确性,在链上还是链下处理并无区别,任何拥有完整数据的节点都能支持独立 的复杂查询。于是,提出将数据完整地从链上导出,包括从创世块开始到最新的 所有区块、所有交易流水和回执、所有交易产生的事件、状态数据等,通通写入 链外的关系型数据库(如 MySQL)或大数据平台,构建链上数据的“镜像”,然后可以采用这些引擎强大的索引模型、关联分析、建模训练、并行任务能力,灵 活全面地对数据进行查询分析。

链上链下协同模型的引入基本解决了区块链中数据上链和链下查询的问题, 但由此引发了区块链中智能合约使用链下数据的问题。

链上链下协同预言机

所谓预言机(Oracle),是由一个或多个链下可信机构,将球赛、天气、汇 率等信息写到链上的公共合约,其他合约统一使用这份经过共识确认的可信信息, 不会出现歧义。Oracle 预言机是实现数据可信上链和链上链下协同模型高效安全的 必要一环,真正串联起链上和链下两部分。

分布式身份标识(DID)

DID是一套涵盖了分布式身份管理、可信数据交换的规范。权威机构为用户完成KYC,颁发凭据。用户将身份标识的摘要公布到链上,而将自己隐私数据存在链下(这一点非常重要)。

使用时,用户采用“明确授权”和“选择性披露”的策略,仅需出示少量的信息或加密证明,与链上数据进行对照校验,即可证明用户凭据和数据可信性,达成了“数据多跑路,用户少跑腿”、保护了用户隐私的可喜效果。

这种设计很好地将链上链下结合起来,逻辑闭环自洽,并不因为数据存在链下,就削弱了链上的功效,反而使得链的授信模型更为重要。

DID规范定义了语义清晰、层次分明的数据结构,以及通用的交互协议。开源项目WeIdentity完整地实现了DID协议,并提供丰富的周边支撑工具和服务,值得参考。

链下计算,链上验证

新交易的发生导致链上的“状态”发生了改变,区块链可以被看作是处理一个“状态转换”函数的机器。链下计算是一种将计算“状态转换”函数的过程由链上转移至链下,而后相应的结果交由链上验证的模型。


首先,任意链下节点从区块链中检索相关的状态作为输入。与链上对数据完全公开的处理模式不同,链下计算过程中的相关信息可以是公开的,也可以是私密的。

基于输入值,链下的节点计算出“状态转换”函数的结果,而后将其发送至链上。公开的输入无需隐藏计算过程,而私密输入的计算过程则需要保持私有。链上对该函数值进行校验,如果函数值正确,则其被记入链上的状态。

为什么需要引入链上验证的环节呢?因为链下计算“状态转换”函数并提交结果时,可能存在造假或者欺诈的情况,引入链上的验证者(Verifier)则可以有一个校正的B计划。

链下计算的四种主要模式

可验证的链下计算

要实现可验证的链下计算模型,有三种算法可以作为路径:

(1)概念

这一模式涉及到两类角色:验证者与证明者(Prover),前者位于链上,后者位于链下。该模式的运作过程同链下计算的基本定义类似,在此不赘述。

(2)主要特性

非交互性。证明者能够在一条信息中(即一次链下到链上的传输过程),使验证者信服。交互性强的方案将产生多笔区块链事务,增加区块链网络的负担并抬高验证成本。

低廉的验证成本。特殊情况下,如对机密性的信息进行检验时,相对较高的验证成本是可接受的;否则正常情况下,链下计算+链上验证的成本应该低于纯粹的链上计算成本。

(3)实现情况

要实现可验证的链下计算模型,有三种算法可以作为路径:

1)zk-SNARKs

zk-SNARKs是零知识证明这一算法的变体,其名称是:Zero knowledge(零知识)、Succinct(简要性)、Non-interactive(非交互性)以及Arguments of Knowledge(知识论证)、Proofs(证明)这些词汇的复合缩写。

相比零知识证明这一“本体”,zk-SNARKs使得证明者和验证者间互动极少甚至没有,并且其验证成本较低,计算安全性相对较高。

目前,zk-SNARKs依赖于证明者和验证者之间的初始化可信设置——这意味着需要一组公共参数来构建zk-SNARKs,从而创建私有事务。这些参数被编入协议中,是证明交易有效性的必要因素之一。其潜在的问题是,参数通常由小部分群体制定,可能存在信任问题。此外,在理论上,如果证明者拥有足够的算力,就可以提交假证据,影响整个系统。这是为什么量子计算机被认为是这种算法的威胁的原因。

目前部署zk-SNARKs算法的知名项目有Zcash、Loopring等。

以太坊也有望部署zk-SNARKs。2019年1月份时,以太坊基金会与初创企业Matter在以太坊测试网络上,联合发布了使用zk-SNARKs的侧链扩容方案。

2)Bulletproofs

该算法是由伦敦大学学院的Jonathan Bootle与斯坦福大学的Benedikt Bunz于2017年末共同提出,它属于非互动性的零知识证明可验证计算方案,相较zk-SNARKs,它的验证成本更高一些,但是不需要可信的初始设置。

Monero是主要加密通证中率先部署Bulletproofs这一算法的。据Monero官网所述,2018年夏季,其社区发布了针对Monero部署Bulletproofs的审计报告,且Bulletproofs率先在Monero Stagenet上部署,至2018年10月,Monero主网完成了Bulletproofs的部署。

据Monero Research Lab研究人员Sarang Noether的说法,自Bulletproofs部署以来,Monero上事务的平均体积下降了80%,交易费用也显著下降。

3)zk-STARKs

该算法由以色列理工学院的Eli-Ben-Sasson教授创造。它是zk-SNARKs的替代品,并且被认为是一种更高效的算法,但囿于其难以部署的现状,未来是否会有更高的性价比尚未可知。

与Bulltetproofs类似,zk-STARKs不需要初始化可信设置——因为它使用抗碰撞哈希函数(collision-resistant hash functions)进行更精简的对称加密,并且该算法消除了zk-SNARKs中存在的数论假设——后者执行成本高且易受到量子计算机的攻击。

但是相比于zk-SNARKs,它的缺点在于证明可能会更复杂,从而限制了其潜在性能的发挥。

“飞地”型链下计算

(1)概念

这一计算模式基于TEE。在该计算模式中,链下计算专门于可信的“飞地”中进行,“飞地”的每一条消息都可以被可信的外部实体认证并出具证明。启动计算时,公开的输入值从区块链上获得,而私密的输入值则由链下节点选择性地加入进去。输出结果的完整性通过链上验证“飞地”的证明进行验证。一旦验证成功,新的状态会被记入区块链。

(2)实现情况

目前Enigma与Ekiden等项目尝试了该方案。

在Enigma项目中,计算既可在链上执行,也可在单独的链下“飞地”中执行。Enigma的特定脚本语言允许开发者将目标项标记为私密的,进而强制要求以链下模式进行计算。

与Enigma相反,Ekiden不支持链上计算,区块链仅被用于持久的状态存储。代码和私有输入值由仅同“飞地”通讯的链下客户端提供,一旦计算完成,“飞地”将结果直接反馈回客户端,与此同时,状态被记录到区块链中。

链下安全多方计算

(1)概念

安全多方计算可以实现在各方均不知道完整数据内容的情况下,通过联合它们对各自部分数据的计算结果,得到最终结果(等于利用完整数据进行计算的结果)。

链下安全多方计算的实现效果也是如此,区别之处在于引入了链上、链下的概念:

首先,隐私数据被分为多份,并以私密输入值的形式分布在一众链下节点间。区块链当前的状态值可被作为公共输入值。然后链下节点计算各自部分的链下状态转换值。

链下节点发布各自结果并进行组合,然后将其置于链上。

链下安全多方计算协议需要满足的一个特性是公共审计,具体的一个例证是,不参与上文过程的审计者可以校验计算结果的正确性。由此,计算结果的正确性可被链上审计者在验证阶段校验,或由链下审计者通过评估链上审计者的审计跟踪(系统活动的流水记录)来校验。

(2)实现情况

安全多方计算的实现手段一般来说可分为三类:

1) 基于Yao混淆电路的构造方法;

2) 基于秘密分享的构造方法;

3) 基于同态加密的构造方法。

目前已有较多项目尝试使用安全多方计算协议,如Defi、Enigma等。

激励驱动型链下计算

(1)概念

该模式假设参与计算的各方都是理性的经济人(即参与方以最小的代价最大化自己的利益)。该模式主要涉及到两类角色:处理计算任务的求解者(Solver)、重新计算求解者所处理过的计算任务并检验其是否有误的验证者。但在一些方案中会引入更多的角色。

(2)实现情况

激励驱动型链下计算中最知名的解决方案莫过于TrueBit,其基本原理为:

用户提出计算需求并支付佣金,如果某个链下的求解者认为佣金价格符合预期,则进行计算并公布结果。此外,求解者也需要提供一笔保证金。

相对于用户与求解者而言的第三方——验证者(同样位于链下),可重新运行上述计算并检验其是否有误;如若发现求解者给出错误结果,则可以发起挑战,提交到链上仲裁。同样地,验证者需要提供一笔保证金。

通过链上的智能合约,求解者与验证者共同进行一个验证游戏,而用户置于链上的代码则被用于验证求解者、验证者双方答案的真伪,正确一方获取佣金,另一方则需支付整个验证过程所产生的gas费用。

TrueBit还设计了累积奖金(Jackpot)机制,用以维护验证者生态环境。系统会随机选择一些交易,要求求解者同时提交正确答案和强制错误(Force error,即错误的答案),二者之一会上链请求验证,当强制错误被验证者验证并挑战时,求解者无需遭受惩罚。所有事务的佣金将被抽取一小部分,汇聚成奖金池,用以在累积奖金机制中支付给挑战成功的验证者。

脱链模式

我们现在介绍一组已识别的脱链模式,它们可以单独使用或组合使用,以将计算和数据移出区块链。每种模式都旨在维护区块链的关键属性,并包括确保它们不会受到不必要程度的损害的技术。

挑战响应模式

背景:智能合约对具有明确定义的最终状态的状态机进行建模。状态转换的计算成本很低,但检查给定状态是否为最终状态是昂贵的。

解决方案:

其他客户端可以通过提供有效的状态转换来证明声明错误。使用这种模式,计算永远不必在链上执行


示例:国际象棋的最终游戏条件太昂贵而无法在链上检查。然而,玩家可以很容易地检查链下的情况。因此,玩家无需在智能合约中检查最终游戏条件,而是简单地声称检查伙伴。如果声称是错误的,他的对手可以简单地通过提交一个有效的动作来证明他是错误的。如果声称是真实的并且对手无法提交有效的移动,则获胜者将被支付。下图概述了国际象棋的完整挑战响应协议,还考虑了平局和超时。

讨论:这种模式允许在智能合约充当状态机的场景中有效地脱链计算。由于它允许将复杂的操作完全移出链外,并规避了链上交易的复杂性上限,因此它可以扩展可能用例,并有可能节省成本。但请注意,该模式增加了链上交易的总量,这需要仔细计算成本。此外,还需要提高参与实施该模式的智能合约的各方的可用性,因为使用超时对于确保进度至关重要。


实施:这种模式不需要除了智能合约之外的其他技术。

链下签名模式

背景:两个网络参与者知道他们将在未来执行一组交易。他们想降低这些交易的成本,或者想对其他网络参与者隐藏它们。

解决方案:两个参与者一起指定一个包含函数的智能合约,该函数将作为参数给出的外部状态应用于合约状态。此功能包括签名检查,以确保两个参与者都同意状态更改。只有当两个参与者的有效签名都提供了请求的新状态时,才会应用新状态。该合约被部署到区块链上,并且两个参与者都可以选择存款。然后,参与者在不涉及区块链的情况下执行纯粹的脱链和点对点交易:一个参与者计算一个新状态,将其包装在交易中,对其进行签名并将其发送给他的对手。然后接收者检查新状态,在他同意的情况下签署交易并将其发送回发送者。该交易由双方签署,现在可以由参与者在任何时间点发送到智能合约。在验证两个签名后,合约会相应地更新其状态。

示例:参与者 A 和 B 创建具有签名锁定状态更新功能的智能合约,并分别存入 50 个单位的加密货币。现在,A 想要将 10 个单位转移给 B。为此,她在本地创建了一个交易,其中包括 A 和 B 的余额分别为 40 和 60 的新状态。她签名并将其发送给 B,B 也签名.现在,B 可以使用该交易随时更新链上余额。但是,A 和 B 可以进行进一步的链下价值转移,而无需在链上进行结算,除非一方的存款用完。这种链下价值转移模式的应用通常被称为支付渠道。

讨论:这种模式允许高效的链下交易,而不会将信任引入系统。核心观点是,能够解决交易的保证与实际在链上执行交易一样好。签署新状态类似于在传统金融交易中写支票。使用链下交易可以节省大量成本,因为交易费用仅适用于链上结算。此外,该模式可以增强隐私和机密性,因为除了最终结算之外的所有交易都对网络隐藏。从区块链网络的角度来看,这种模式有助于减轻系统的负载,从而增强可扩展性。

除了简单的价值转移之外,还有许多其他应用。我们能够通过使用这种模式将国际象棋游戏的核心部分移出链下。这不仅有助于降低游戏成本,还有助于消除对块间隔的时间依赖性。

由于在大多数情况下需要向智能合约进行初始存款,因此与许多同行建立合约可以锁定大量资金。此外,恶意参与者可以通过拒绝签名来冻结资金。因此,合约应指定触发自动结算的超时。

由于在大多数情况下需要向智能合约进行初始存款,因此与许多同行建立合约可以锁定大量资金。此外,恶意参与者可以通过拒绝签名来冻结资金。因此,合约应指定触发自动结算的超时。

实施:除了链上智能合约外,这种模式还需要一个点对点的通信渠道来交换已签署的链下交易。例如,在以太坊生态系统中,耳语消息协议 (Whisper Messaging Protocol )能被使用。有多种努力可以利用这种模式为现有区块链构建链下价值转移网络:闪电网络为比特币生态系统提供了实现,而 Raiden 则针对以太坊网络。

内容可寻址存储模式

背景:大量数据与智能合约相关联。链上存储太贵了。

解决方案:将数据链下存储在内容可寻址存储系统中,并将引用存储在智能合约中。使用智能合约的客户端可以检索参考并基于该参考检索数据。然后,他们可以通过从自身重新计算其地址并将其与存储在智能合约中的引用进行比较来验证数据的正确性。

示例:智能合约对一件数字艺术品的所有权进行编码。然而,一件艺术品由于其大小而在链上存储会非常昂贵。为了解决这个问题,描述被存储在一个内容可寻址存储系统中,该系统通过它们的哈希值来存储文件。文件哈希也存储在智能合约中,作为艺术品的参考。然后,客户可以从合约中检索外部存储的艺术品的哈希值,并使用它来查询存储系统。然后可以简单地对结果进行散列以验证其正确性


讨论:这种模式允许将数据不信任地外包到链下存储系统,因为数据的修改会立即更改其地址并使其引用无效。

通过应用该模式,应用程序的存储成本可以大大降低,并且最初无法存储在链上的文件现在可以在不引入信任的情况下被引用。此外,由于数据检索是在客户端从外部存储系统完成的,因此可以通过向该系统添加访问控制来实现隐私功能。但是,这需要根据用例仔细考虑,因为泄漏的数据可以通过重新计算其地址来立即确认是真实的。

虽然不在此模式的范围内,但所需的外部内容可寻址存储系统本身必须可靠且可用。在不可用或数据丢失的情况下,应用程序的基于区块链的部分也可能变得不可用。

将来,这种模式可以扩展到支持对存储在链下的数据的去信任计算:首先,可以将智能合约引用的内容寻址数据发送到合约。然后,可以在链上验证完整性。如果成功,智能合约可以修改数据,更新对新数据的引用并将其写入事件。然后,不受信任的外部工作人员可以将该数据写回从中检索输入的内容可寻址存储系统。虽然理论上很有趣,但我们还没有观察到这种扩展。因此,它不是模式的一部分。

实施:如前所述,内容可寻址存储系统需要与智能合约一起工作。星际文件系统 (IPFS) 和 Swarm 是两种这样的技术,它们通过哈希处理数据并试图确保可用性和持久性。

委托计算模式

背景:(a)参与区块链网络的节点想要证明其私有数据的属性而不发布它。 (b) 节点想要执行过于复杂而无法在链上执行的计算。

解决方案:将计算外包给不受信任的第三方,除结果外,还要生成正确执行的证明。与其执行计算本身,不如验证链上正确执行的证明


示例:有一个 ID 卡信息哈希的链上列表,指的是被允许调用智能合约函数的人。现在,列出的任何人都可以证明他有一张身份证,该身份证授权他通过在本地散列他的卡信息并提供包括正确性证明在内的结果来调用合约功能。证明不需要透露卡上的任何信息。

讨论:这种模式允许将计算的无信任外包给不受信任的各方。第三方,也称为证明者,不必透露任何私人输入或证明创建的中间结果。唯一泄露的信息是证明者知道正确计算输出所需的所有信息。为此,可以使用非交互式零知识证明,更具体地说是零知识简洁非交互式知识论证(zkSNARKs)。

与区块链上的常规计算不同,这种模式允许脱链计算隐藏执行期间使用的信息。因此,不必公开信息而是计算结果极大地增强了隐私。此外,可以以验证成本独立于链下计算的复杂性的方式设计证明。因此,在达到复杂度阈值后,计算的链上验证比其链上执行更便宜。这个结果可以用来增加区块链的吞吐量。即使超过链上计算复杂度限制的操作仍然可以使用这种模式在链外执行。

最先进的非交互式零知识证明需要在生成证明之前执行可信设置阶段。根据用例的不同,这可能会在整个系统中引入不受欢迎的信任。此外,计算的证明生成会导致其不可验证执行的开销。然而,既没有用于方便地规范链下计算的高级语言,也没有用于简单的链上证明验证的工具。因此,虽然功能强大并且已经在实践中使用,但这种模式目前仅应用于相当特定的场景,例如 zCash,这是一个基于比特币的区块链,它实现了隐私保护交易。

实施:为了验证智能合约的链下计算,底层区块链需要支持检查证明所需的操作。这些可以是特定于用例的,也可以是可用于验证任何证明的通用构建块。虽然 zCash 直接将其特定计算的验证逻辑添加到其协议中,但以太坊计划添加操作以支持使用以太坊改进提案 196 和 197 验证任意 zkSNARK。

低合约足迹模式

背景:更改智能合约的状态需要进行链上交易。为了激励网络处理交易,必须支付费用。该费用取决于所调用的智能合约功能的复杂性及其对存储的使用。

解决方案:为了优化费用,合约的设计应尽量减少链上交易的数量和规模。可以使用以下两种技术来减少占用空间。

  • 不要在状态改变后检查链上的条件。让节点在本地执行条件检查,并在成功的情况下触发链上检查。

  • 优化写入,而不是读取。从智能合约中读取是本地链下操作,不需要链上交易。最大限度地减少写入并存储没有冗余的信息。在读取期间本地计算派生数据。

示例:

  • 在服务市场应用程序中,服务提供商需要确保在消费者支付的时间段结束后将消费者从链上授权列表中删除。他没有定期触发条件检查或将条件检查链接到另一个合约功能并冒着频繁重新评估的风险,而是在本地跟踪访问周期并在它过去后触发链上检查。这将链上评估的数量减少到一个。

  • 如果服务提供者想知道当前订阅了他的服务的客户数量,他不应该在智能合约中添加计数器。他可以随时从授权列表中本地计算该号码。这节省了存储空间和计数器更新操作。

讨论:这种模式最初可能看起来不像是一种脱链方法,因为它没有明确地将某些东西从链中取出。但是,它首先会阻止信息在链上存储或处理。因此,这可能是最不明显,但最常用和最直观的脱链模式。

实施:除了智能合约之外,不需要额外的组件或技术来实施这种模式。

layer2 链下扩容

Layer 2扩容的本质——把区块链上的部分运算任务放到链下,并将计算结果传回链上,从而实现区块链运算能力的提升。与之相对的Layer 1扩容是在区块链协议上进行改进,从而实现扩容。而Layer 2扩容不改变区块链协议本身,通过链上智能合约与链下交互从而实现扩容。其核心环节在于Layer 1与Layer 2的数据交互,以及如何保证Layer 2上的资产安全。

纵观Layer 2扩容技术的发展,目前的技术路线主要包括侧链扩容、状态通道扩容、Plasma和Rollup:

  • 侧链扩容的核心就是用另一条独立的区块链来承接目前交易,从而提高计算效率降低手续费。
  • 状态通道在2014年左右被提出,它的核心是通过哈希锁定并在链下进行一系列交易,只把交易结果上链,尤其适合解决小额高频支付的手续费过高的痛点。
  • 在2017年左右Plasma的扩容路线被提出,为了解决侧链扩容中的侧链安全性对资产的威胁,Plasma的设计原则就是即使在侧链出故障的情况下也能保证用户能第一时间提出自己的资产。
  • Rollup的概念则是在2018年被提出,将交易信息高度压缩打包上链,即使链下数据完全不可用,也能提出资产。

这些技术路线之间并非泾渭分明,而是一种相互融合的演化发展,展现着区块链生态的自发性生长。

侧链扩容

侧链扩容路线成熟,生态活跃却饱受争议

侧链是与主链兼容的区块链网络,它与主链是相对概念,以太坊侧链扩容技术路线的本质就是打造一个兼容以太坊的区块链网络,并运用跨链机制实现从主链到侧链的资产转移,并在侧链上部署应用,分担主链网络拥堵。

侧链是一条独立的区块链,拥有自己独立的共识机制,安全性不依靠主链,往往会采取DPOS、POA等更有效率的共识机制。

侧链技术路线的重点在于跨链机制的设计。跨链机制的基本原理就是通过锁定主链上的资产,并在侧链发行相关资产,如果想要回到主链,只需要销毁侧链上的资产,并在主链上解锁相关资产。因为区块链自身不能获取其它链上信息,那么谁传递并确认信息从而决定资产的锁定与发行就成为了关键问题,为了解决这个问题,可以采取通过第三方主体验证的公证人人机制,或者通过区块链自身进行验证的中继机制。公证人可以采用单一主体,也可以是是多个主体进行验证并多签确认交易。


侧链扩容的最大风险在于侧链自身的安全性和跨链过程的安全性:一旦侧链出现故障,转移到侧链的资产便极有可能丢失。公证人和侧链的运行节点一旦作恶,便可以从主链上转移用户的资产(Plasma和Rollup技术路线都是为了解决这个问题,保障用户免受中心化和系统故障的威胁)。

尽管跨链机制已经日趋成熟,侧链扩容变得越来越方便和高效,但这种扩容路线却存在着很大的争议。

2020年年底火热至今的交易所公链,就可以看作是一种以太坊的侧链扩容,承接了以太坊的生态外溢,取得了引人注目的用户增长速度和链上资产数量。以币安智能链BSC为例,它兼容了以太坊的数据与智能合约,采取相似的区块链数据结构与协议,并采用了TPS更高的DPos共识机制。以太坊资产和应用可以轻松转移到BSC上,开发者也有成熟开发工具在BSC上进行应用开发。同时交易所凭借自身的生态和用户优势,为BSC引流了数量可观的用户。因为与以太坊协议的相似性,大量对标以太坊Defi的BSC项目快速上线,以太坊上的生态应用也有部分向BSC上迁移。

相较于以太坊,交易所公链大大降低了合约运行的手续费,对小额资产或者初次接触区块链应用的用户更为友好,快速增长的用户和链上交易也证明了这一点。对于行业而言,交易所公链的崛起对去中心化生态的利弊存在着很大的争议,既降低了用户门槛、带来了生态活跃,也是一种中心化的威胁。侧链扩容还存在另一个争议点,用于扩容的侧链还属于以太坊的生态吗?侧链本身能算是以太坊的Layer 2扩容方案吗?如果交易所公链算是以太坊Layer 2扩容的一种,从发展现状和用户数量来看,侧链扩容目前确实是Layer 2扩容最成熟和活跃的路线。

状态通道

状态通道专注于小额支付,但使用体验和可用性较差

状态通道是交易双方在链上锁定资产创建支付通道,并在链下进行交易,当用户从主链取出资产时,只需把链下多次交易的结果证明提交至主链智能合约验证即可。

状态通道摊薄了多次交易的手续费用,尤其适合小额多频的交易场景。这种技术早在比特币时期就被提出,因为链上交易的手续费都与交易金额无关,这导致小额交易的手续费用占很高。

以状态通道扩容项目雷电网络为例,流程如下:

参与者双方需要将资产锁定在智能合约中,这一步保证了参与者可以相互转账和接收资产,直到参与者关闭了支付通道;参与者维护者自己的账户余额,双方通过发送签名后的交易证明进行交易;交易可以不断地进行,直到其中一方决定取出资产并关闭通道,他可以随时向智能合约展示交易证明来关闭通道,另一方如果与退出方有交易的话也需要在当时展示交易证明;当双方都展示余交易明后,便可以从智能合约中取回存款。当另一方不能及时展示交易证明时,系统会判定他没有接收到任何转账,并按照单方的证明进行分配,这种机制保证了任何人都一定能取回他的资金,即使对方不配合。


我们可以看出状态通道的优势在于:采用了双方净结算降低了单次交易费用;双方交易细节不上链保障了交易隐私;同时退出机制最大程度的保障了参与方的资金安全。

但在使用体验上有着严重不足:第一,只能和开通通道或者在支付网络内的用户进行交易;第二,必须经常性地关注交易对手方是否选择关闭通道,从而展示接收的交易以保障自己的权益;第三,状态网络扩容机制的拓展性较差,难以实现链下交易外其他操作。

Plasma

Plasma保障资产安全,信息不可用成最大阻碍

Plasma 要做的是通过多级(分层)子链来减轻区块链主链的压力,从而达到近乎无限的扩容。

  • 子链负责处理各自数据和业务,可以有自己独立的共识算法

  • 父链中保存了子链块 hash 和子链的校验规则,必要时进行仲裁和经济惩罚

Plasma可以看作是一种保障资产安全的侧链技术,它将链下的状态证明上传主链,即使链下出现了安全问题,用户也能够证明并提出资产。Plasma技术架构目前主要有两种主流的机制Plasma MVP、PlasmaCash。

Plasma MVP是通过UTXO和Merkle proof来实现用户在不借助第三方的情况下实现资产退出的。在链下的交易以UTXO的形式记录在Merkle tree上,并把相应哈希值上传至主网的智能合约,这样用户只需要提供Merkle proof便能证明自己所拥有的UTXO,从而提出资金。

当用户提出资产时需要一段质疑期进行欺诈证明,其他任何人都可以通过举证该用户已被花费的UTXO实现质疑。因为主链通过智能合约虽然能够验证用户提供的证据,却无从得知的用户隐藏的信息(比如有些UTXO已经花费掉了)。

对于子链反欺诈,Plasma 采用了欺诈证明(Fraud Proof)的办法来解决。

每个子链,需要在主链(以太坊)上创建智能合约,明确子链的游戏规则,诸如子链的块验证,父链跟子链的 token 转换等。同时,子链出块方需要在父链中锁定资金,用于后续追责。

业务数据保存在子链,子链的块 hash 同步到父链中作为凭证。任意第三方可以负责监督子链的运行,如果发现欺诈行为,可以把问题区块提交父链验证,便于追责和问题区块回滚。
不难看出,欺诈证明跟 TrueBit 基本思路有相似之处:智能合约换成了区块链,图灵状态换成了区块哈希。

Plasma MVP的“群体离开问题”:当大部分用户都想离开Plasma,则所有的状态证明全部都要被提交到以太坊上,并在挑战期内接受“挑战”。由于Plasma是不限用户数量的,但以太坊区块的处理能力却很有限,因此如果整个Plasma的有效状态全部都提交给以太坊进行处理,会彻底堵死以太坊,导致交易的处理时间被大大拖延甚至遥遥无期。


Plasma Cash的机制与Plasma MVP非常类似,不同之处在于资产在子链上以NFT的形式进行记录,其具体流程如下:

1、 用户在合约中锁定资产时,在Plasma上会收到一个代表所有存入资产的NFT;

2、 Plasma Cash采用特定的默克尔树,每个NFT都有指定的位置,当发生转账时,相应位置记录转账信息,并将默克尔树的根哈希上传主链;

3、 在交易时需要提供该NFT之前的交易记录;

4、 当用户退出时,需要提交前两次交易的merkle proof;

5、 当用户取出资产时,存在一个质疑时段,任何人都可以通过交易记录进行质疑该用户操作。


总体而言,Plasma技术路线的优点在于能够在Layer 2发生故障的情况下保证用户的资产安全,这种运用去中心化密码学的保障机制使得Plasma路线一度被社区热捧。

但Plasma技术路线存在的问题在于以下几点:第一,在这种技术框架下限定了子链的数据结构,使得通用性拓展变得非常困难;第二,Plasma机制存在数据不可用问题,即主链没办法获取所有链下数据,只能通过根哈希进行简单验证,这也导致了退出机制比较复杂,往往需要很长的周期(数日)进行欺诈证明,同时用户需要保存自己的数据,时刻注意子链变化,非常影响使用体验。

Rollup

交易数据压缩上链,通用化平台即将落地,Rollup技术路线前景可观

Rollup机制指的是高度压缩交易并打包上传主链,并通过零知识证明或欺诈证明验证交易包的真实性,解决了Plasma的数据不可用问题。Rollup机制实现了数据在链上,运算在链下的分层模式,从而最大程度地保证了资产的安全性。

为了实现交易的高度压缩,Rollup子链上维护着账户资产数据,每个账户都有自己相应编号。因此只需4个字节就能实现223个账户的索引,足以应对绝大多数情况。与此类似,Rollup在所有能够压缩、又不影响可读性的地方都进行了压缩,压缩后的交易只有不到原来的十分之一。通过对交易的压缩,Rollup机制能够更有效率地利用现有的Layer 1网络容量,从而实现扩容,并且在扩容的同时保证了数据的链上可用性。


Rollup机制的核心问题就是验证压缩交易包中交易的真实性。对于这个问题,解决方案主要分为两种类型:基于零知识证明的ZK Rollup;基于欺诈证明的Optimistic Rollup。目前两种方案都在快速发展,不同的团队选择了不同的技术机制,以太坊主链上的项目们也做出了自己Layer 2迁移的选择。

采用零知识证明的ZK Rollup是通过在发送交易包时,同时发送交易对应的零知识证明,智能合约通过零知识证明验证交易包的真实性。总体流程如下:

1、用户转入并锁定资产,Layer 2状态树添加账户信息并生成对应资产;

2、在Rollup网络中,用户签名并发送交易;

3、排序者收集交易,压缩打包成交易包,并生成零知识证明,并按照交易包更新状态树;

4、排序者将交易包和零知识证明广播至主链;

5、智能合约通过零知识证明验证交易包的真实性,并且更新数值,执行相应的转账操作。

ZK Rollup的最大优势就是高度去中心化和验证效率高。在侧链更新状态的同时生成零知识证明,矿工运行的智能合约能够通过零知识证明验证交易包中的新状态是否源于旧状态叠加交易产生,从而实现了Layer 2数据到Layer 1去中心化的数据验证,同时因为Layer 1能快速识别来自Rollup的数据真实性,能快速完成资产的取出。

ZK Rollup的劣势在生成零知识证明的过程复杂且困难,不仅需要大量运算,而且应用的定制化开发难度大,难以实现兼容现有应用的通用平台。

Optimistic Rollup(OP Rollup)技术路线选择相信操作者提交的交易包真实性,并对欺诈的行为做出处罚。操作者需要质押了一定数量的资产,只有满足资产质押的条件智能合约才会接收其发送的交易包,任何人都可以针对交易包的真实性发布欺诈性证明,一旦欺诈行为被判定便会失去所有的质押资产。通过对排序者和质疑者的经济学激励,使系统达到安全性的平衡。

当质疑者通过重新计算状态值,发现交易包的错误时,他可以向智能合约发送一个欺诈性证明。欺诈性证明包括所有必要的信息,包括交易前的账户状态、交易对应的Merkleproof等。智能合约能够运用欺诈性证明,通过重放交易的方式检验交易包的真实性,实现欺诈交易的检验。

这种模式下的验证效率被降低了,但它的好处在于能够更容易实现通用平台,从而兼容EVM智能合约,使得开发者工作量大大减少,这使得项目迁移的难度大大降低,为OP Rollup项目占领Layer 2蓝海提供了先天优势,也能最快速度地解决以太坊网络的燃眉之急。

OP Rollup机制的缺点在于欺诈证明机制使得资产的存入和转出都需要等待较长的质疑期,因为一旦合约中储存的资产离开Rollup合约后,就不太可能进行交易的回滚和资产的追回了。相较于ZK Rollup,Optimistic Rollup的验证效率低,交易压缩率也更低,因此扩容能力也更差。

Layer 2扩容路线对比

以太坊Layer 2扩容路线脉络梳理,机制传承而非一蹴而就

从侧链扩容到Rollup机制,不难发现这些技术路线之间并不是泾渭分明,而是一种相互融合的演化发展。最新的Optimistic Rollup机制中的欺诈性证明,早在状态通道扩容中就有类似的机制。而通过锚定主链来保护侧链的资产安全性,也从最开始的Plasma方案传递到了Rollup技术路线。而跨链机制更是在大部分技术路线中都有运用。

链下计算

以太坊声称要做计算机,EOS 要做全球操作系统,但无论是做计算机还是做操作系统都得正视计算这个问题,链上计算的开销是非常大的,链上每一个 EVM 的 Code 计算需要全球计算机都算一遍,才能得出结果,所以有人做了这么一个计算的扩展,在链外做 Computation。

这个方式大致有两种

TEE( Trusted Execution Environment )

第一种是在可信的执行的环境中,把这个计算算出来,然后传到链上去,再加上可信环境的一个证明。

这个证明不是计算结果的对和错,而是证明这个计算是在安全的环境里运行的。

可信的执行环境在工业界相对来说还是比较成熟,ARM 芯片是支持 TrustZone 方案的,我们用的苹果和安卓手机的指纹,它的秘钥信息都是存在 TrustZone 里面的。它的优缺点通过介绍其实也比较清楚了。

优点:

  • 隐私性很强,因为所有东西都是在黑箱子里面的。
  • 性能也非常的高,单个机器执行即可,因为我信任的不是这台机器,而是这个 Trust Zone。
  • 功能非常的灵活,不像 Plasma 比较单一,它可以做各种各样的东西甚至是远超过 EVM 的东西,因为 EVM 里面做一些加密运算是很难的
    缺点:
  • 黑箱计算引入了未知的风险
  • 依赖于硬件限制了它的扩展性,因为不可能每个人都有一个符合硬件要求的设备来运行这套系统。
  • 系统的安全性是依赖于厂商的,厂商是可以在 Trustware 里面做任何的事情,这个也引入了风险.

所以这种依赖于安全执行环境的 Layer 2 方案一般是由联盟链或者是企业内部的链来使用的。

Truebit

第二种叫 Trurbit,它解决的也是链外运算的问题,这个项目很有趣。

TrueBit 解决的是智能合约容量问题。

我们知道,以太坊中的智能合约需要每台矿机执行计算。复杂的智能合约需要耗费大量的计算资源,经济上体现为智能合约用户需要交付大量的以太币(gas)作为驱动。

TrueBit 的思路是把智能合约的运算外包给第三方,把复杂的计算任务放到链下执行。通过经济激励,促使第三方之间互相监督,保证计算结果正确性。以太坊作为一个数字法庭,对计算结果作为终极校验并惩罚作恶者。

这里面有好几个角色,包括用户、Solver 和 Challenger。

第一个是计算需求的提出者(用户),这个计算需求是用 Truebit 的 VM 来描述的,在实际操作的时候,Truebit 的 VM 是用 Rust 实现的

用户可以选择悬赏的方式找人来帮他做运算,运算的执行人叫做 Solver。Solver 把每一步的运算状态都算成一个哈希折叠到默克尔树里面,在最后,Solver 把所有运算结果的默克尔树的根哈希,以及运算的最终结果提交到区块链上。

而 Challenger 需要自己算一遍生成结果,如果他发现算的结果和 Sovler 算的不一样,他就能根据错误信息找到哪一步或者是哪几步错了。Challenger 就能把这个状态和状态运行的指针上传到区块链上,挑战这个 Solver。

因为 Truebit 在链上拥有指令集,而且 State 可以证明它在原来的默克尔树里面,于是链可以计算这个 State 加指令得到一个新的 State,通过这个链可以开始判断,这个 State 是 Solver 生成的 State 还是 Challenger 生成的 State,谁对谁错。

Truebit 只需要链上的一步运算,就能够证明所有运算是正确的还是错误的,它能把普通运算折叠成了最关键的计算,交给主链去运算,验证。

TrueBit 的基本过程是这样的:

  1. 用户(任务请求方 下文称为 Task Giver)上传需要执行的代码(下文成为任务),并提供佣金。
  2. 链下第三方计算者(下文称为 Solver)发现这个任务,认为佣金可以接受,执行计算任务并答公示运算结果,同时提供一笔保证金。
  3. 另外的第三方验证者(下文称为 Verifier)重新执行任务,如果发现 Solver 造假,可以发起挑战,同样需要提供一笔保证金。
  4. 通过链上的智能合约让 Solver 和 Verifier 玩一个验证游戏(verification game),通过 Task Giver 在链上提供的执行代码验证答案真伪,提供正确答案的一方获取佣金,造假的一方从保证金中支付整个验证过程所需的 gas。
  5. 如果在挑战期内没有人能提供证据证明 Solver 造假,Solver 获得佣金。

链间通信 Interoperation

链间通信是一个跨链的技术,它和 Plasma 不一样,两条链之间没有特别强的主次关系,其子链和侧链仍然有权利自己产生资产,自己运行,然后通过某种协议和主链或者其他链进行跨链交互,大家进行数据互通。接下来简单介绍两个项目。

Cosmos

Cosmos 的系统架构如图所示,它中间有一个 Cosmos Hub,周围的叫做 Zone,可以认为中间是一个交换链,周围其他是子链。Zone 是用 Tendermint 来做的,采用的是 BFT 共识以及区块链框架,它也满足 Instant Finality(即时终结性),如果系统是少于三分之一的作恶节点,它一定是正确的。它引入了链间通讯协议( Inter-Blockchain Communication ,简称 IBC) ,这个是类似 Plasma 和 State Channel 的一个协议。


它的简单流程如下,A、B链都是 Zone。

  • 用户在 A 链上锁了 10 个币
  • A 链10 个币被锁住的密码学证明被提交到了 B 链上
  • 如果被 2/3 的验证者验证通过,则它是有效的。
  • B 链上将会产生 10个币

而之所以需要 Cosmos Hub 的原因是它能够把 Zone 相互建立的IBC 的数量从 N^2 变成 N,不过这个也是有前提的,即所有的 Zone 必须是 Instant Finality,你给我一个证据,我就认为你的币就锁在那里,拿不出来了,它不能是概率确认的,不能这里生成,那里又推翻了。

但是由于比特币和以太坊是概率确认的链,如果这样 Cosmos 就连接不到它们上面了,所以它做一个Peg Zone,这是一个代理链,给概率确认的链做了一个代理,这样 Cosmos 就能和它们交互了。

Polkadot

相对 Cosmos 来说 ,Polkadot 是非常完善的项目,但它的架构和 Cosmos 几乎是一致的。它的中间叫做 Relay Chain ,是 Cosmos 中 Hub 的角色,周围的 Para Chain 是 Cosmos 中 Zone 的角色。

Para Chain 用的是 Parity Substrate 这么一个框架,这个链是基于 BFT 的,所以也是 Instant Finality,而这样同样会遇到连接概率确认的区块链的问题,所以它提了一个 Bridge Chain 这样的概念,这个和 Cosmos 的 Peg Zone 是一样的。

但是 Polkadot 的 Parity Substrate 相对 Cosmos 的 Tendermint 是做的是比较完善的。Polkadot 的创始人用 Rust 实现的 VM 以及 BFT 做了一个升级,增加了随机选举验证节点的方式加速了共识协议,所以它的速度会非常快,而且它部署智能合约以及升级节点的能力也很强。而且 Substrate 上引入了相对其他链更完善的治理机制。

现在我们重点来说说它的安全机制,这个是和 Cosmos 区别非常大的。它提了一个概念叫做共享安全池( Shared Pool Security ),在 Polkadot 里面,它的记账节点和出块节点是混在一起的。

其中有几个角色, Collator、Validator、Fisherman 、高阶Validator、 Nominator。其中 Collator 是做区块的打包和收集和交易的验证,但是它没有权利把这个区块给确认,即他不能把区块写到区块链里面,而把区块写到区块链里是 Validator 来做的。

Collator 是针对每一条链的,每条 Para Chain 都有一组有相对应的 Collator,但是 Validator 是整个全网公用,是随机选出来的。

假设 PareChain 有一组 Collator 生成了一个区块,这个区块由哪些 Validator来验证我们并不清楚,它是随机选的,而选出的 Validator 将会投票看区块是否合法,只有合法才能写到这个子链的区块链里面。

而 Fisher Man 是用来监督 Validator的,那些经得起考验的 Validator,可以变成一个更高阶的 Validator,高阶的 Validator 可以判断这个 Fisherman 的监督是正确还是错误,比方说 Fisherman 举报这个 Validator 作恶,之后高阶 Validator 会判断它是不是真的作恶了。

高阶 Validator 的选举需要满足两个要求,一方面 Fisher Man 没有举报过低阶 Validator ,另外一方面 Nominator 会来提名谁能来当高阶的 Validator,这是一个互相制衡的结果。但是它是怎么制衡,它最新的设计里面还没有公开,它只是大致实现了这样的一个点。

参考文章

  1. 中国工程院院士陈纯:链上链下数据协同技术是联盟链发展的重要方向
  2. 一文读懂“链上”和“链下”
  3. 预言机 – 区块链的触角
  4. 赋予区块链“∞”的能力
  5. 链下计算,尚在征途的扩容良方——区块链技术引卷之十三
  6. 【论文笔记17】链上还是链下?关于链外计算和数据的见解
  7. 国盛区块链|科创未来(六):迭代与竞争——以太坊的Layer 2扩容之路
  8. Layer2 | 链下计算
  9. Layer2 | 链间通信 Interoperation
  10. 简析区块链链下扩容:状态通道、TrueBit、Plasma
  11. 一种链上链下数据协同一致的扩容方案研究