OmniBOLT是什么?全球首个闪电网络智能资产流通规范解读



闪电网络是基于比特币的Layer2解决方案,旨在通过链下通道实现瞬时、小额支付,释放主链的资源压力,提升区块链网络的整体效能,由分布于全球多个国家与地区的数个团队同时开发,它是目前全球区块链行业最为成功的扩容方案之一,同时也是最为关键的DeFi基础设施之一。


众所周知,目前的闪电网络只支持BTC,不支持自定义智能资产的流通。而且即使是BTC,也只是一个支付功能,完全不能满足DeFi应用的需求。

为此,根据闪电网络的基础原理,Omni规范委员会制定了OmniBOLT标准,它是全球首个闪电网络内的智能资产流通标准,也是继OmniLayer后由Omni规范委员会推出的第二个重磅协议。Omni规范委员会以推出OmniLayer协议而著名,该协议是全球最大数字资产的发行平台,目前正在支持全球两万多家区块链企业的运营。

OmniBOLT首次为所有公链以及相关资产接入依照闪电网络原理设计的通道,允许他们在Onion Network内进行交互,这将极大增强各个公链的交互性。OmniBOLT构建在OmniLayer之上,因为在基础层面支持智能资产,所以不仅仅BTC的快速支付能够支持,而且具备以下显著优势:

  • 基于OmniLayer的智能资产快速支付.
  • 不同资产的跨通道原子交换.
  • 建立在闪电通道之上的去中心化交易所.
  • 基于原子交换的抵押贷款合约.
  • 更多适用性强的DeFi(Decentralized Finance)智能合约. 感兴趣的读者可以访问OmniBOLT规范的第6章:

o 抵押贷款,在线商店和DEX

(github.com/omnilaborato).







闪电网络

&

OmniLayer


基于闪电网络的基础理论,OmniBOLT描述了如何在闪电通道间转移OmniLayer上的资产,以及OmniLayer上的资产如何受益于新型快速支付理论。由于已经不限于BTC的流通支持,OmniBOLT是对闪电网络基础理论的极大的扩展,以支持更为广泛的资产流通,以及通过多通证原子交换,实现了了更加具有适用性的复杂合约,也更能够切实支持现实中的应用。

OmniBOLT自身并不发行任何通证。所有的通证都是在OmniLayer上发行,并通过P2(W)SH支持的通道进入OmniBOLT网络,相关资产被锁定在主链上,并可以在任何时候在OmniLayer主链上赎回。











关键概念阐释



  • OBD: OmniBOLT Daemon,OmniBOLT守护进程。
  • 通道(channel): 通道是指闪电网络中的Poon-Dryja通道。通道由 [Alice, USDT, Bob] 组成,这意味着Alice与Bob创建了一条通道并以USDT充值。
  • 资产(property): 指代发行在OmniLayer上的通证,与“asset”等义。
  • 序列到期可撤销合约(RSMC):Revocable Sequence Maturity Contract 被用于惩罚那些广播旧的交易承诺以获得比其原本余额更多的恶意节点。
  • 哈希锁定合约(HTLC): Hashed Time-Lock Contract 链接多个通道,用于将通证从两个没有直接通道的节点间转移.
  • 承诺交易(Commitment Transaction): 指那些创建了但是没有广播的交易,有可能在下一个承诺交易出现时前一个就作废了.
  • 作恶惩罚交易BR: Breach Remedy 被用在序列到期可撤销合约中,如果Alice通过广播旧有交易进行欺骗,BR将会把她所有的资金发送给Bob.
  • 可撤销支付交易RD: 当Alice广播最新的合法交易承诺时,RD从 2-2 P2SH交易输出中支付。它会立即向Bob汇款,并且会在相对于当前区块高度的相对值(例如100区块)之后向Alice汇款.
  • HED: HTLC Execution Delivery,HTLC执行支付交易。
  • HT: HTLC 超时交易交易
  • HBR: HTLC Breach Remedy,作恶惩罚交易
  • HTRD: HTLC Timeout Revocable Delivery, HTLC超时可撤销支付交易
  • HTBR: HTLC Timeout Breach Remedy, HTLC 超时作恶惩罚交易,被用于惩罚在时间锁定期间广播旧有哈希时间锁定交易信息的参与方.
  • 原子交换Atomic Swap: 原子交换技术使得通证间的交易无需借助中心化媒介,比如交易所。
  • HTLSC: Hashed TimeLock Swap Contract, 哈希时间锁定交换合约,由两组分别的哈希时间锁定合约以及具体的代币交换利率与时间锁组成。








序列到期可撤销合约

(Revocable Sequence Maturity)



为了避免恶意者拒绝签名任何的P2SH交易,导致通道另一方的资金被永久锁定在通道中,我们构建了可以取消的承诺交易,也就是序列到期可撤销合约(Revocable Sequence Maturity Contract) 。这里介绍的序列到期可撤销合约最早由Poon和Dryja发明,发表在闪电网络的第一篇白皮书中。

『创建充值』(『funding created』)信息并不意味着双方向通道中存入了任何资金。首轮通讯仅是创建了一个P2SH地址,构建了一个RSMC交易但是没有广播。然后,Alice 与 Bob 可以广播充值交易(funding transaction)以便将真正的Omni上的资产转入通道。


下图表示了我们在广播充值/承诺交易之前必须做的事情。BR1a(Breach Remedy)不需要立即创建,可以在下一承诺交易被构建之前被创建。



概括来说,RSMC由以下五步组成:

第一步:Alice使用临时私钥Alice2来构建一个临时的2-2 多签地址,并等待Bob的签名:Alice2&Bob;

第二步:Alice从Alice & Bob 中构建了一笔承诺支付 C1a,一份输出指向 Alice2 & Bob 的60USDT,另一输出指向Bob的40USDT。

第三步:RD1a是C1a交易的第一个输出,支付给Alice 60USDT。但是RD1a交易带有一个延迟序列值,防止Alice作弊时立即把60USDT支付给她。

第四步:Bob签署 C1a与RD1a,发送回给Alice

第五步:OBD构建赎回交易:C1a/RD1a


上图展示了通道内发生的承诺交易,演示了通道内的状态是如何转换的。








哈希时间锁定合约

(Hash Time-Locked Contract)



"双向支付通道仅允许在一个通道内安全地转移资金。为了构建一个多通道网络,用多跳的方式来安全地转账到目的地,需要构造一个额外的合约:哈希时间锁定合约。"
-- Poon & Dryja, The Bitcoin Lightning Network: Scalable Off-chain Instant Payments

在使用HTLC进行转账时,一个常见的错误理解是,如果Alice想要给David支付10 USDT,她可以用两跳就到达David:

Alice ---(10 USDT)---> Bob ---(10 USDT)---> Carol ---(10 USDT)---> David.


这令人困惑,因为闪电网络中没有个人账户的概念。闪电网络中唯一可用的基本组成部分是通道。所以正确的跳转是这样的:

[Alice --(10 USDT)--> Bob] ==(Bob has two channels)== [Bob --(10 USDT)--> Carol] ==(Carol has two channels)== [Carol --(10 USDT)--> David]

[A, USDT, B] 代表A和B创建的通道, 并且用USDT充值。


Alice向通道[Alice, USDT, Bob]中的 Bob转账10USDT,然后Bob向[Bob, USDT, Carol] 通道中的Carol转账10 USDT, 最终Carol向[Carol, USDT, David]中的David转账10 USDT。

设计HTLC的目的是为了保证中间通道不会扣留住钱,不往下一个通道传输了。所以只有通道内的接收方出示正确的密钥(或Hash原像),他才能得到钱,而为了得到这个正确的密钥,他必须在另一个通道内向密钥持有者支付同等数额的钱。具体过程是这样的:


>如果Bob能给到Alice R, 这个R(Hash(R)的原像)在通道 [Bob,USDT,Carol] 3天前进行10 USDT交易时Carol已经给了Bob,那么 Bob将从通道[Alice,USDT,Bob]内获得10 USDT资金。如果Bob给不了Alice R, 10 USDT将退回给Alice。

使用HTLC进行资金转移时,[Alice-(HTLC中的10 USDT)-> Bob]是一个额外的充值交易的输出,与RD1a / BR1a绑定在一起的未广播交易。.













跨通道多资产原子交换



一般来说,原子交换发生在不同区块链之间,在无信任情况下交换通证,并且保证交易双方都没有机会作弊。OmniBOLT中的通道可充值任何OmniLayer发行的资产。如果某人需要交易其通证,比如USDT/BTC,双方需要在特定时间内使用加密哈希公式来知晓USDT与BTC的接收方。如果参与中的某一方没能在特定时间内确认交易,那么整个交易取消,相关资金被退回原本的账户。这免除了交易的对手风险。

.通道间标准的交换程序如下图所示


- where Tx 1 transfers 1000 USDT to Bob in channel `[Alice, USDT, Bob]`, locked by Hash(R), t1 and Bob's signature.

- Tx 2 transfers 1 BTC to Alice in channel `[Alice, BTC, Bob]`, locked by Hash(R), t2(`t2 < t1`) and Alice's signature .


哈希时间锁定交换合约,由两组分别的哈希时间锁定合约以及具体的代币交换利率与时间锁组成。


如图所示,一个交换合约中有5步。在步骤3中,Alice在[Alice, BTC, Bob]通道中输入R,来解锁交易2以在[Alice, BTC, Bob]中获得她的2枚BTC。因此,Bob也就拿到了R,并使用R来解锁他在通道 [Alice, USDT, Bob]中的900枚USDT。

如果Alice始终不去[Alice, BTC, Bob]通道中输入R,不拿她的钱,那么时间到了交易撤销,两边的钱各自退回,不会有任何一方产生损失。

在向每一个通道中输入R后,交易1与2变为(turn into)一般的承诺交易,这与HTLC转换为承诺交易的过程相同。


与此同时,Bob在另一通道[Alice, BTC, Bob] 中创建了另一个HTLC,及其在Alice一侧的镜像交易,将双方同意的数额的BTC发送给了Alice。时间锁t2被设置为2天,少于t1=3天。


原子交换是许多区块链应用的基础。下一章将呈现更多例子,相关例子将更加直观,帮助开发者构建面向真实商业世界里更为复杂的用例。










应用:抵押贷款、宠物商店

以及,更多可能场景



以下例子采用面向特定场景的多阶原子交换。相关进程将通过图灵完备语言(如Javascript或者Solidity)写就的一段程序执行,调用OBD API以完成基本任务。所有参与者将运行程序以检查所有交易是否有效以及参与方是否诚实。

抵押借贷合约

(Collateral Lending Contract)

抵押借贷为以下特定目的服务:

“你在托管账户中存入某有价值物作为抵押品,我根据合适的LTV(Loan to Value)向你放贷。如果你在商定的日期内还款,我将归还你的抵押品。如果没有,你的抵押品将归我所有。”

实际上,一个HTLSC为贷款中的各方创建了托管账户。我们假设如下场景:

Bob想要从Alice处借900 USDT,他使用1 BTC作为抵押品。
 
Bob发起了一个交换合约(HTLSC 1)
 
Bob---》Alice:交换合约(1BTC,资产为USDT,汇率为900,时间锁为30天,Hash(R1),…)
 
这在通道[Alice, BTC, Bob]中创建了HTLSC。
 
Alice---》Bob:接收到的交换合约(数额为900 USDT,汇率为900,时间锁为20天,Hash(R1),…)。
 
与此同时,Bob需要创建赎回合约(HTLSC 2 )以便将来取回他的1 BTC。
 
Bob---》Alice:交换合约(数量为900 USDT,资产为 BTC,汇率是1/900,时间锁为60天,Hash(R2),…)。
 
Alice---》Bob:接收到的交换合约(数额为1 BTC,汇率=1/900,时间锁为50天,Hash(R2),…)
 
这在通道 [Alice, BTC, Bob] 中创建了HTLSC。

只有当参与方接收两份交换合约,且他们的OBDs帮助创建所有的由HTLSC所要求的对应交易后,Bob能够使用R1通过HTLSC 1 来在通道[Alice, USDT, Bob]中取得他的900 USDT,因此Alice从Bob处获得1 BTC作为抵押物。

在一段时间后,Bob想要赎回他的1 BTC。他使用HTLSC 2中的R2,以经由[Alice, BTC, Bob]通道中的HTLSC2 赎回他的1 BTC,因此 Alice 取得她在通道[Alice, USDT, Bob]中的900USDT。

当然,Alice可以根据BTC的价格设定汇率。例如,她可以要求Bob创建汇率为1/905的交换合约。然后她将在Bob赎回BTC之时获得905 USDT。

在线宠物商店

宠物商店的应用只用到了一阶段原子交换:

  1. Alice使用Omnilayer发行了叫做"PET"的资产, 每一枚PET代表一只加密猫。
  2. Bob 和Alice建立USDT通道和PET通道,并在USDT通道中充值。
  3. Bob 创建HTLSC来支付Alice 100 USDT ,换得一只加密猫。

很简单 :-)

实际应用中,Alice和Bob甚至不需要建立直接的通道。利用HTLC就可以借用别人的通道进行交换了。












官方实现

&

钱包API



OmniBOLT规范官方地址:

github.com/omnilaborato

OmniBOLT规范的实现可以访问官方仓库:

github.com/omnilaborato

API在线文档:

api.omnilab.online/

Javascript API:

github.com/omnilaborato.

GUI debugging 工具:

github.com/omnilaborato


















参考内容



[1]. Bitcoin Lightning network White Paper:lightning.network/lightning-network-paper.pdf

[2]. BOLT规范: github.com/lightningnet

[3]. 闪电网络项目: github.com/lightningnet

[4]. OmniLayer 规范: github.com/OmniLayer/sp

[5]. OmniBOLT 规范: github.com/omnilaborato

[6]. OmniBOLT 项目: github.com/omnilaborato

[7]. OmniLayer 钱包: github.com/OmniLayer/om

[8]. OmniJ的Java实现项目: github.com/OmniLayer/Om










本期编辑|泽润

本期投稿|Neo






关注我们,做前沿数字经济的弄潮儿




编辑于 04-06