SoK Off The Chain Transactions
摘要
本文对区块链进行了简单介绍,分析目前区块链的缺点——交易吞吐量和速度慢的原因,在此基础上引出解决此问题的方法,也是本轮将要论述的主题——链外交易。之后介绍了链外交易的基本概念和结构,并对两种类型的链外交易:通道和信任链进行了简单分析。对于通道,本文介绍了通道的结构和生命周期,通道同步技术,通道路由算法等,对于信任链,我们介绍了其基本概念和两类信任链:分别是是基于帐户的NOCUST,以及基于UTXO的Plasma。最后,本文介绍了链外交易的隐私保护和安全性。
关键词:区块链、比特币、链外交易
Abstract
This paper gives a brief introduction to blockchain, analyzes the shortcomings of blockchain at present - the reason for slow transaction throughput and speed, and on this basis leads to the method to solve this problem, which is also the topic of this round - off chain transactions. Then it introduces the basic concept and structure of out of chain transactions, and analyzes two types of out of chain transactions: channel and trust chain. For channels, this paper introduces the structure and life cycle of channels, channel synchronization technology, channel routing algorithm, etc. For trust chains, we introduce their basic concepts and two types of trust chains: account based NOCUST and UTXO based Plasma. Finally, this paper introduces the privacy protection and security of off chain transactions.
Keywords:Blockchain, Bitcoin, Off chain Transactions
一、 概述
区块链被认为是继蒸汽机、电力、互联网之后的第四次技术革命。由于区块链技术具有去中心化、公开透明、可追溯性和不可篡改等特点,在一定程度上,可以解决“中心化”导致的信息不对称问题,从而实现去中心化社会。目前,区块链技术已经被广泛应用到互联网金融领域。区块链是一个去中心化的分布式账本数据库,每一个节点都有一个“账本”,记录着每一笔交易的发生过程或原因。区块链记录着每一笔交易中的相关信息,并且这些信息具有不可篡改的特性。但区块链目前表现出很高的延迟,无法处理与传统托管金融系统相当的负载。[1]
区块链链上交易与其他支付方式相比
区块链的第二层次的协议基于(第一层)区块链,它只作为争端的追求权,交易并不直接写入,通过向外部传送交易,从而防止每个交易扩散到整个网络。第二级协议的交易只需数秒,成本就会降低,并且可以扩大区块链。
二、 引言
以比特币为代表的公共区块链体系,其最大的缺陷就是交易表现不佳。交易表现较差的原因有两个:一是交易吞吐量较小,二是交易速度较慢。交易吞吐量是指一个系统每小时处理的请求数目。交易速率是指从一个客户提交一个请求到一个交易被确认的平均时间。这两个数值在比特币的区块链系统中是非常低的。平均的交易吞吐量为7次/秒, 速率平均每1小时可以完成1次交易。和普通的商业银行相比,每秒的交易吞吐量都在2000以上,几乎是实时的。[2]
区块链
因为比特币区块链在交易速度及吞吐量中表现得如此之差,许多人都将其视为其性能上的不足,从而使其不能作为一种交易货币。是什么原因造成比特币区块链系统的低效能呢?
作为一种分布式的帐簿技术,区块链的核心作用就是记录所有的帐款。一般情况下,公共区块链的记账方法就是一页一页的记录,记录一段时间后,就会用一种竞争的方法,将最好的一张记录下来,然后所有人都抄录一份,加入到自己的账簿中。
这里面有两个限制:账页的大小和记账的周期。账页大小确定了每个区块所能容纳的交易数量,每个区块容纳的交易数量除以记账周期就是交易吞吐量;
而记账周期则直接决定了交易确认时间,记账周期乘以大概率确认区块有效性的区块数(比如比特币里我们通常认为6个区块基本上就能确定交易有效)就是交易确认时间。
要提高公共区块链的效能,最简单的方法是在每一页面上增加交易(区块扩展),并缩短记录时间。对于区块的扩展,一般会对区块的传输速率产生直接的影响。当然,考虑到目前的带宽和速率,最初的1 MB规模的比特币的确是小了一点,但小块也有小块的优势,那就是可以使用更多的通信手段,比如卫星通信。
区块链
减少记账周期,则会影响到区块传播的范围。如果区块过大并且记账周期太短,就会造成去中心化程度的降低。原因很简单,一个矿工挖到了一个区块,其他矿工还在下载接收这个区块时,他已经开始挖下一个区块了。显然,接收一个区块所占用的时间在一个记账周期中的比例越低,对于全体矿工来说就越公平。否则,先发优势过于明显,导致整个系统的去中心化程度降低。与此同时,整个网络同时挖出块的概率将会大大增加,就会需要更加复杂的机制来解决这个问题。
因此,对于公有链来说,用改变区块链自身的方式来提升区块链的交易性能,想要追赶现在金融系统的交易处理能力,难度还是非常高的。换句话说,我们想提高公有链的链内交易的交易性能,难度极大。
区块链
再回过头来看一下传统的金融体系。目前,国内各大商业银行均采用中央银行的大额小额支付系统进行跨行业务。而一般的用户,在银行系统中,大部分的业务都是在一家银行内部完成,而当涉及到跨行业务的时候,这些数据就会通过中央银行的系统来进行处理。结果是,大量的小额付款系统中的交易量大幅减少。
区块链上也可以采用类似的办法来解决。我们把这种方式统一叫做链外交易。也就是说,某一个组织或者机构可以提供一些服务,让我们在链外记录这些交易,每隔一定的时间,把这些交易的结果写入区块链即可。
尽管转账的过程非常复杂,但是只需要在链上记录下来每个时刻的账户状态(就是每个时间段的清算结果),最终结果与所有交易信息都记到链上效果是一样的。区别在于从链上的数据并不知道交易发生的真实情况。
除了这个区别以外,还有一个重要的区别:在链外交易时,提供这些链外交易服务的组织或机构的信用与整个公有链的信用是有差别的。在链外交易时,这些交易已经不是一个去中心化的交易了,而是一种局部的中心化的交易系统。当然,由于定时会把交易清算结果写回链上,一旦结果写回链上,我们就能够确认提供链外交易的组织是否存在篡改数据的情况。[2]
从经济学的观点来看,由于小额交易的限额很低,所以在链外交易中,通过篡改数据所获取的收益要比通过不断地提供服务所能得到的收益要少。所以,从信用的角度来说,小额交易向外部转移,并没有太大的差别。将来,公共链的发展趋势将会是一个类似于中央银行的结算中心的服务提供商,而事实上,很多小规模的交易都是通过外部的交易完成的。[2]
三、 链外交易基本结构
链外交易基本结构示意图
如图所示,链外交易主要分为4层:硬件层、网络层、区块链层、链外层:[3]
(1) 硬件层:可信执行环境(Trusted Execution Environments ,TEE)提供了一个完全隔离的环境,可防止其他软件应用程序、操作系统和主机所有者篡改甚至了解在TEE中运行的应用程序的状态,从而在其他层实现了高效协议,如链外支付[4],可以消除争议流程和向后兼容[5]。例如,Intel Software Guard eXtensions(SGX)提供了一个TEE的实现。TEE和区块链具有互补性。一方面,区块链可以保证其状态的强可用性和持久性,而TEE不能保证可用性(因为主机可以自行终止TEE),也不能可靠地访问网络或持久性存储。另一方面,区块链的计算能力非常有限,必须公开其整个状态以供公开验证,而TEE产生的开销与本地计算相比最小,并通过远程认证提供机密状态的可验证计算。因此,构建能够同时利用两者的混合协议是很有吸引力的。
可信执行环境
(2) 网络层:区块链的网络层,作用是节点之间的信息交流和传递,参与区块数据的校验和记账过程[6]。在区块链中,网络层是保证其可扩展性、安全性和隐私的关键。有效的网络层能够提高交易的吞吐量,增强对恶意程序的抗性[7]。除了公用区块链P2P网络,区块链矿工们也会利用专门的矿工P2P网络,例如光纤来实现交易[8]。
(3) 区块链层:第一层是一个固定的、只能附加的区块链,它可以从网络中收集所有的交易。每次交易都会对更新的区块链状态进行编码。交易可以在双方之间进行数字资源的交换或者调用一个应用(也就是智能合同)。区块链的完整性通过参与者之间执行的共识算法来保证。共识算法依赖于例如计算上昂贵的工作量证明(PoW)或大量替代品[9]。设计第二层协议的关键是底层区块链的脚本语言。类似比特币的区块链基于受限的脚本语言,并通过一组未抑制的事务输出(UTXO)进行操作,而其他区块链支持图灵完备语言,实现高度表达的智能合约[10]。第二层协议通常假设区块链层的两个属性:完整性(即,仅将有效交易添加到账本)和与上限的最终同步性(即在关键超时之前,将有效交易最终添加到账本中)。
(4) 链外层:我们将链外或层间协议定义为:1、不会立即在区块链上发布每一笔交易(与链上交易相反);2、完全依赖于父链的共识算法的协议;链外协议有两种类型,分别是,通道:在n个同等方之间形成通道,COMMIT-CHAINS: 依赖于一个中央但不可信的中介。侧链由于具有自己的共识算法,因此不属于第二层[11]。
四、 通道
4.1通道概述
通道示意图
一个通道允许n个用户通过一致同意商定智能合约的新状态来建立。通道的生命周期包括三个阶段。1、通道建立;2、通道转换;3、通道关闭。
(1) 通道建立:所有参与用户通过在区块链上锁定资金来合作打开一个通道。资金只能通过一致的协议或通过预先定义的退款条件来释放。
(2) 通道转换:一旦通道被建立,所有参与用户都可以通过两步流程更新通道的状态。首先,某个用户提出一个新的状态转换,向所有其他用户方发送一个签名命令和新的状态。每一方将状态转换计算为,其中表示应用的转换函数,表示与应用相关的给定命令。其次,所有其他用户方重新计算状态转换,以验证提议的状态,然后再签署它并将其签名发送给所有其他用户方。
(3) 通道关闭:如果一个诚实的用户在本地超时前没有收到n个签名,它就认为对提议的状态有分歧。诚实的一方可以触发区块链第一层争端,在没有其他各方合作的情况下强制执行新的状态转换。
通道为各用提供的财产和安全保障有以下几点[12]:
(1) 一致建立:只有当所有用户方同意建立通道时,通道才被视为开放。
(2) 一致过渡:第二层的过渡,即没有链上争议,需要所有用户方同意。
(3) 平衡安全:诚实的一方用户总是可以在链上发生争议时从通道中撤回约定的平衡状态。
(4) 状态进展:用户可以随时在链上强制执行链外状态转换,因此状态机总是到达终端状态[13]。
建立通道:Bob和Coffeeshop都把资金存入到链上地址,Bob存入0.05BTC,Coffeeshop存入0BTC。只有通道关闭时,链上的资金才会被释放,用户才能真正拥有该资金[14]。
建立通道
通道转换:Bob和Coffeeshop之间的交易在链下进行,可以是多次交易。他们在建立的支付通道内通过相互在白条上签名来完成交易。每次交易,双方都保存一份相同的带有双方签名的白条。保存的白条是处理后续交易,解决交易纠纷的关键。
交易打白条
通道关闭:任何一方都可以申请关闭链下支付通道来进行交易结算。比如BoB 可以拿着白条:Bob 0.045 BTC Coffeeshop 0.005 BTC,到链上申请关闭链下支付通道,并进行交易结算,结算完成后 Bob 可以拿到 0.045 BTC,Coffeeshop拿到 0.005 BTC。