什么是区块链的链外交易和链内交易

简介:

以比特币为代表的公有区块链系统一直有一个广为诟病的缺点:交易性能低。交易性能低包括两方面:一是交易吞吐量小,二是交易速度慢。交易吞吐量是指系统在单位时间内处理请求的交易数量。交易速度是指系统对交易从提交请求到确认交易成功的平均时间。

在比特币区块链系统中,这两个值低得可怜。交易吞吐量是平均每秒7笔,交易速度是平均1小时能完成交易确认。对比一下一般商业银行的核心系统交易处理能力,交易吞吐量超过每秒2000笔,交易速度基本要达到实时。 

正是由于比特币区块链的交易性能太低,很多人认为这个性能缺陷是导致比特币无法成为交易货币的重要原因。是什么导致了比特币区块链系统的交易性能低呢?

区块链作为一种分布式账本技术,核心功能是要把账目都记下来。通常公有区块链的记账方式相当于每个人都在一页账页上一条一条的记录交易,记录了一定时间后,通过某种竞争办法选出记录的最好的一张纸,大家都复制一份,添到自己的账本上,然后开始新的账页记录和竞争。

 区块链研习 | 什么是区块链的链外交易和链内交易

这里面有两个限制:账页的大小和记账的周期。账页大小确定了每个区块所能容纳的交易数量,每个区块容纳的交易数量除以记账周期就是交易吞吐量;

区块链研习 | 什么是区块链的链外交易和链内交易

而记账周期则直接决定了交易确认时间,记账周期乘以大概率确认区块有效性的区块数(比如比特币里我们通常认为6个区块基本上就能确定交易有效)就是交易确认时间。 

区块链研习 | 什么是区块链的链外交易和链内交易

要想提升公有区块链的性能,最直接的办法就是增加每个账页内的交易数量(区块扩容)和减少记账周期。(比特币的扩容之争,以及比特币现金(BitCoin Cash)的出现,就是区块扩容引起的,以后我们会详细讲这个问题。)对于区块扩容,通常直接影响到区块的传播速度。当然,以现在的网络带宽和速度来看,比特币当初确定的1MB大小的区块确实是比较小,但是小区块也有小区块的好处——可以采用更多的通讯方式进行传播,比如卫星通讯。

减少记账周期,则会影响到区块传播的范围。如果区块过大并且记账周期太短,就会造成去中心化程度的降低。原因很简单,一个矿工挖到了一个区块,其他矿工还在下载接收这个区块时,他已经开始挖下一个区块了。显然,接收一个区块所占用的时间在一个记账周期中的比例越低,对于全体矿工来说就越公平。否则,先发优势过于明显,导致整个系统的去中心化程度降低。与此同时,整个网络同时挖出块的概率将会大大增加,就会需要更加复杂的机制来解决这个问题。 

因此,对于公有链来说,用改变区块链自身的方式来提升区块链的交易性能,想要追赶现在金融系统的交易处理能力,难度还是非常高的。换句话说,我们想提高公有链的链内交易的交易性能,难度极大。

区块链研习 | 什么是区块链的链外交易和链内交易

转回头看看传统金融系统的结构。在我国,不同的商业银行通过央行提供的大小额支付系统实现了跨行交易。而普通用户在使用银行系统的时候,很多交易都是在同一个银行内进行的,只有涉及到跨行交易时,交易数据才会被提交到央行的系统上进行处理。因此,大小额支付系统上的交易数大大降低了。 

区块链上也可以采用类似的办法来解决。我们把这种方式统一叫做链外交易。也就是说,某一个组织或者机构可以提供一些服务,让我们在链外记录这些交易,每隔一定的时间,把这些交易的结果写入区块链即可。

举例来说:Alice、Bob、Charlie、Dave 4个人之间发生了一系列交易:一开始每个人都有100美元,然后Alice转给Bob 50,Bob转给Dave 120,Dave转给Alice 50,Dave转给Charlie 100,Charlie转给Bob 80,Bob转给Dave 100。整个转账过程如图所示:

区块链研习 | 什么是区块链的链外交易和链内交易

这些交易之间经过清算,结果就是:

区块链研习 | 什么是区块链的链外交易和链内交易

尽管转账的过程非常复杂,但是只需要在链上记录下来每个时刻的账户状态(就是每个时间段的清算结果),最终结果与所有交易信息都记到链上效果是一样的。区别在于从链上的数据并不知道交易发生的真实情况。

除了这个区别以外,还有一个重要的区别:在链外交易时,提供这些链外交易服务的组织或机构的信用与整个公有链的信用是有差别的。在链外交易时,这些交易已经不是一个去中心化的交易了,而是一种局部的中心化的交易系统。当然,由于定时会把交易清算结果写回链上,一旦结果写回链上,我们就能够确认提供链外交易的组织是否存在篡改数据的情况。

从经济学角度上看,小额交易由于额度较小,对于链外交易的服务商来说,篡改数据获得的利益要小于持续提供服务带来的盈利。因此,小额交易转移到链外进行,从信任角度来讲,没有过于明显的区别。未来公有链的发展趋势很可能最终变成一个类似央行清算中心的服务提供者,而实际上大量的小额交易只需要在链外交易中进行即可。



本文作者:敖萌
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
4月前
|
算法 安全 区块链
区块链如何实现交易匿名性
**区块链匿名性摘要:** - 匿名性源于公钥/私钥系统,公钥作地址,私钥验证交易,不透露身份信息。 - Coin Mixing 和 CoinJoining 混合交易,使资金流向难以追踪。 - 匿名币如 Monero、Zcash 使用零知识证明和环签名技术增强匿名。 - 隐身地址和一次性地址增加隐私,公私钥交换确保安全交易而不暴露身份。 - 多层次加密与协议结合,保障区块链交易隐私。
|
11月前
|
供应链 安全 区块链
区块链钱包合约代币质押系统开发(模式详情)
一组条件在时间的推移中不可能一直正确的,而智能合约是不可变的,更新当前的预编程条件几乎是不可能的
|
区块链
区块链101:区块链交易是如何运作的?
区块链101:区块链交易是如何运作的?
|
网络协议 JavaScript 前端开发
以太链丨火币链丨币安链丨波场链代币合约流动性质押挖矿分红系统开发逻辑及方案(LP代币分红机制开发)
 Chaincode是一个程序,Chaincode运行在一个被背书peer进程独立出来的安全的Docker容器中,Fabric中支持多种语言实现链码,包括golang、javascript、java等。当前主要以Golang为主,性能和稳定性都较好
|
JavaScript 前端开发 程序员
以太链丨火币链丨币安链丨波场链DAPP代币合约流动性质押挖矿分红系统开发实现技术方案及详细代码
在确定部署智能合约前,需要定义业务逻辑和需求,即相关各方定义智能合约的具体业务条件,由开发人员作为最后的接收方。开发人员再来根据业务逻辑设计合约的体系结构,包含设计智能合约中数据的结构,以及合约中数据状态改变与之相关的方法代码。
|
JavaScript Java Go
深入分析以太链/波场链/火币链/币安链LP代币合约流动性质押挖矿分红机制系统开发详细逻辑及源码
 Fabric's smart contract is called chain code, which is divided into system chain code and user chain code. System chain code is used to realize system level functions, and user chain code is used to realize user application functions. The chain code is compiled into an independent application that
|
Web App开发 算法 测试技术
关于以太链丨波场链丨币安链dapp代币预售合约流动性质押挖矿系统开发详情及功能
The security smart chain (BSC) can be described as a blockchain parallel to the security chain. The difference with the security chain is that BSC has the smart contract function and is compatible with the Ethereum Virtual Machine (EVM). The design goal here is to maintain the high throughput of the
|
数据挖掘 大数据 区块链
区块链交易所开发,合约交易模式搭建
合约交易就是指买卖方对约定未来某一个时间按特定价格接收相应数量的某种资产的协议进行交易。合约交易的买卖目标是由交易所统一化制订的规范化合约,交易所要求了其商品种类,成交时间,数量等规范化信息内容,合约代表了买卖方所得到的权利和义务。
270 0
区块链交易所开发,合约交易模式搭建
|
存储 区块链
区块链实战(一)实现简单的区块与区块链交易
区块链实战(一)实现简单的区块与区块链交易
141 0
区块链实战(一)实现简单的区块与区块链交易