Omni
$5.4 1.34%
OmnIBOLT技术细节
fan88


OmniBOLT 的技术细节

OmniBOLT Detailed Introduction


导语:为了帮助社区更好地了解OmniLayer,OmniBOLT,Lightning Network和相关程序,我们发表了一篇扎实的文章来详细解释它们,包括OmniBOLT的核心模块-闪电通道之间的原子交换,让我们开始探索闪电网络的旗舰协议:OmniBOLT!


闪电网络的目标是扩大比特币网络的规模,让网络上的独立的点与点通过链下交易(off-chain payment)促进比特币的快速离链支付。基于OmniBOLT的基本理论,OmniBOLT定义了比特币网络上智能资产层(smart assets layer)的快速流通协议。对于已经通过OmniLayer协议发行的区块链项目而言,这项快速流通协议将让它们更加完善。

因为OmniBOLT的理念是尽可能地支持更多的智能化资产(smart asset),而不仅仅是目前BOLT和LND所实现的快速转账功能,所以OmniBOLT具有以下五个特点:


1. 在OmniLayer上发行的数字资产将支持即时支付(instant payment)

2. OmniBOLT将支持不同资产之间跨链原子交易(Cross channel atomic swap of different assets)

3. 支持基于闪电支付网络的去中心化的交易所(Decentralized exchange on top of lightning channels with quick exchange speed.)

4. 支持基于原子交换的抵押和贷款智能合约(Collateral Lending contract basedon atomic swap.)

5. 将支持更多面向分布式金融(DeFi)的灵活的智能合约(More flexible contracts for Decentralized Finance)


OmniBOLT极大地扩展了Bitcoin闪电网络的功能


内容概要

1. 闪电网络和Omnilayer

2. 概念

3. 可撤销顺序到期合约的解释(Revocable Sequence Maturity Contract Explained)

4. 哈希时间锁合约的解释(Hash Time-Locked Contract Explained)

5. 通道内的原子交换(Atom Swap among Channels)

6. 应用:抵押借贷、网上宠物商店(Applications:collateral lending, online pet store, etc)


1. 闪电网络和Omnilayer(Lightning network and OmniLayer)


基于闪电网络的基本理论,OmniBOLT的说明书描述了如何使OmniLayer上的资产通过闪电通道进行转移,以及OmniLayer资产将如何受益于新的快速支付理论。根据BOLT的layer2协议里关于链下比特币交易的想法,我们提出了这个OmniLayer协议来拓展BOLT协议的框架,并且以OmniLayer来广泛支持各种形式的资产。

OmniBOLT本身不发行token,所有的token都在OmniLayer上发行,并且通过P2(W)SH支持的通道进入OmniBOLT网络,这些token被锁定在主链上,同时也能随时通过OmniLayer主链赎回。


2. 概念和术语(Concept)


·OBD:Omni后台驻留程序(OmniBOLT Daemon)

·channel:channel代表的是闪电网络中的Poon-Dryjachannel。举例来说,channel一般被这样表示:[Alice,USDT,Bob],这代表Alice和Bob创建了一个channel并往channel中注入USDT资金。

·property:指代由OmniLayer发行的数字资产,和asset含义相同

·RSMC(Revocable Sequence Maturity Contract):可撤销序列到期日合约是设计出来用于惩罚进行恶意操作的用户的,这些恶意操作的用户通常会广播之前的commitment transaction来取得本不属于他们的更多的退款。

·HTLC(Hashed Time-Lock Contract):哈希时间锁合约将会使用多个channels来进行tokens 的交换,但用户并不会进行两个点之间的直接交易。

·Commitment Transaction:它会被创建但不会被广播,并且有可能会被下一个commitment transaction宣布无效化。

·BR(Breach Remedy):违约补偿交易一般用于RSMC中,例如假设Alice被一个之前的commitment transaction欺骗了,BR将会把Alice所有的钱转到Bob处。(?)

·HED(HTLC Execution Delivery)HTLC执行交换

·HT(HTLC Timeout)HTLC超时

·HBR(HTLC Breach Remedy):HTLC中的breach remedy transaction

·HTRD(HTLC Timeout Revocable Delivery):HTLC中的revocable delivery transaction

·HTBR(HTLC Timeout Breach Remedy):惩罚像是Alice那样的在time lock period播报了一个更早的hash time-locked transaction的人

·Atomic Swap:原子交换技术使得两种不同的加密货币之间可以不通过中心化的媒介进行货币交换。

·HTLSC(Hashed TimeLock Swap Contract):由两个分离的HTLC组成,这些HTLC有着具体的交换汇率和时间锁


3. 可撤销顺序到期合约的解释(Revocable Sequence Maturity Contract Explained)


为了避免恶意的用户拒绝从P2SH交易中签出任何付款,从而使资金永远锁定在通道中,我们构建了一个Commitment Transaction,这使得其中一个用户可以撤销交易。可撤销序列到期合同(RSMC)是由Poon和Dryja在他们的白皮书中发明的。

所以funding_created消息并不意味着双方都真的把钱存入了这个渠道。第一轮通信


总而言之,

RSMC 由以下五个步骤组成:

1. Alice 创建了一个临时的 2 2 联名地址( 2 2 multi sig address ),这个地址对

应的是 Alice 的临时私匙,名为 Alice2 ,并且等待 Bob 进行签字进而构成: Alice2&Bob;

2. Alice 用 Alice&Bob 构造了一个名为 C1a 的交易承诺,一方将 60USDT 输入

Alice2&Bob 中,另一方将 40USDT 交给 Bob

3. RD1a 是 C1a 的第一个出口,它将支付给 Alice 60USDT ,但 RD1a 有一个序列号

来防止瞬间支付,以此来防止 Alice 作弊。

4. Bob 在 C1a 和 RD1a 上签名,并发回给 Alice

5. OBD 构造一个退款交易: C1a/RD1a

下图展 示了一个 commitment transaction 在通道里发生的具体过程



4. 哈希时间锁合约的解释(Hash Time-Locked Contract Explained)


“双向支付通道只允许在一个通道内安全地转移资金。为了能够使用跨跃多次的网络通道并安全传输到最终目的地,我们需要额外的设计,即哈希时间锁合约(HTLC)。”

——Poon & Dryja, The Bitcoin Lightning Network: Scalable Off-chain Instant Payments

使用HTLC通道的一个常见误解是:如果Alice想支付10 USDT给David,她可以使用2次跳跃到达David,如

这是一点可能有些令人迷惑,但实际上在闪电支付中没有所谓的“个人账户”

personal account ),闪电网络中唯一的构造单位是通道 channel ),所以正确的跳跃路径是


一个HTLC 实现了以下过程:

假设Bob 在这个链中通过通道 [Bob,USDT,Carol] 给 Carol 10 个 USDT ,以此来获取

R ”的具体信息 R 是 Hash R )的原像),那么如果 Bob 可以用这个“ R ”解开

Hash R Bob 就能拿到通道 [Alice, USDT, 中的 10 个 USDT ,否则 Alice 就会把

10 个 USDT 取回。( 编者注: 同理, Carol 也是通过这样的方法获取到 David 手中的信息)


借助于H LTC, 这种在 Alice 和 Bob 之间的内部转账 [Alice ----(10 USDT in HTLC)---->

Bob] 成为了 RD1a/BR1a 的额外的未广播的插入内容。


5. 通道内的原子交换(Atom Swap among Channels)


通常来说,原子交换是在两个不同的区块链之间发生,目的是为了在“不互信”的条件下进行token的交换。在OmniLayer中定义的channels可以装填任何由OmniLayer发行的token。假设一个人想要交易他的token,比如说USDT,而另外一个人的token是BTC,那么双方必须在指定的时间内使用密码哈希函数确认收到了USDT和BTC的资

金。如果其中有一方没有在指定的时间内确认交易成功,那么这整个交易都会无效,双方的资产不会进行交换,并且退回到原来的账户中去。

一个标准的原子交换步骤如下图所示:

HTLSC由两个分离的HTLC组成,它们各自有着额外规定的交换汇率和时间锁。


先前说到,一个swap里有5个步骤,在步骤3中,Alice发送R给Bob,那么她就能解锁transaction2并且从通道[Alice, BTC, Bob]中取回她的1BTC。因此Bob就知道了R,就能用R来解锁他在通道[Alice,USDT, Bob]中的900USDT。


没有参与者能够在此过程中作弊,在输入R进入每个channel之后,transaction1和2就变成了通常意义上确认的转账,这和https://github.com/LightningOnOmnilayer/Omni-BOLT-spec/blob/master/OmniBOLT-05-Atomic-Swap-among-Channels.md#terminate-htlc-off-chain一文中提到的过程一样。


在通道[Alice, USDT, 中, Alice 创造了一个 HTLC 和一个处于 Bob 那边的它的镜像交易,时间锁设置为 t1 。在下图中以三天为例:

与此同时,Bob 在通道 [Alice, BTC, 里创建了另外一个 HTLC ,并且它的镜像

transaction 也在 Alice 那一端,将约定数量的 BTC 发送给 Alice ,时间锁设置为 t2 2天),比 t1=3 天的时间要少。


原子交换是许多区块链应用程序的基础。下一章将展示一些直观的示例,这些示例将帮助我们的读者为现实世界的业务构建更复杂的应用程序。


6. 应用举例:抵押借贷服务,在线电子宠物商店等等

以下几个例子展示了具体场景下使用多级原子交换的过程(multi-stahe swaps)。其中每一个步骤都应该写在利用图灵完备的语言编写的程序上,如JavaScript或Solidity,并调用obd API来执行任务(fundamental tasks)。所有的使用者都应该运行程序,并且检查交易是否是成功运行的(valid),还有一点,使用者应该检查另一方(counterparties)是否是诚实的。


抵押借贷智能合约:Collateral Lending Contract (CLC)

CLC是为了以下目的而产生的:

“假设你把一些有价值的东西抵押进了一个第三方的托管账户(escrow account),与此同时我根据你抵押的东西的价值借给你了一些钱。如果你在约定期限内还清了借款,我会归还抵押物,如果没有还清,那么抵押物将归我所有。”

实际上,在现实中HTLSC为贷款参与者创建了一个托管账户。我们根据这一点继续完善这个借款的场景:

Bob想要从Alice那里借到900USDT,他用1BTC作为抵押物。

所以Bob启动了一次协议(swap)过程HTLSC1:(R1)

1. Bob --> Alice: swap(amount = 1 BTC, property = USDT, exchange_rate = 900, time_locker = 30 days, Hash(R1), ...).


此过程在通道[Alice,BTC,Bob]中创建了HTLSC


2. Alice --> Bob: swap_accepted(amount = 900 USDT, exchange_rate = 900, time_locker = 20 days, Hash(R1), ...).

此过程在通道[Alice,USDT,Bob]中创建了HTLSC

与此同时,Bob需要创建一个赎回交易(Redeem swap)HTLSC2以便日后赎回他的1BTC:(R2)

1. Bob --> Alice: swap(amount = 900 USDT, property = BTC, exchange_rate = 1/900, time_locker = 60 days, Hash(R2), ...).此过程在通道[Alice, USDT, Bob]中创建了HTLSC

2. Alice --> Bob: swap_accepted(amount = 1 BTC, exchange_rate = 1/900, time_locker = 50 days, Hash(R2), ...).


此过程在通道[Alice, BTC, Bob]中创建了HTLSC.


只有当参与者接受这两份swap并且他们各自的OBD API帮助他们创建好了HTLCS所需的对应的交易过程之后,Bob才能利用R1通过HTLCS1在[Alice,USDT,Bob]中取得900USDT,因此Alice得到1BTC当做从Bob处获得的抵押物。

在一段时间后,Bob想要赎回1BTC,他可以利用HTLSC2在通道[Alice, BTC, Bob]中获得他的1BTC,而Alice通过通道[Alice, USDT, Bob]获得900USDT

当然,Alice可以根据她对BTC价格的了解来要求贷款利率。例如,她要求Bob创建一个汇率为1/905的swap。当Bob赎回他的比特币时,她将得到905 USDT。


在线宠物商店:Online Pet Store

以下例子是一个基于Omni平台的交易过程(swap),比上述例子更直观:

1. Alice在Omnilayer上发行了一种数字资产“PET”,其中每一个token代表一个加密货币猫(crypto cat)。

2. Bob和Alice建立一个USDT通道和PET通道,并为USDT通道提供资金

3. Bob 创建了一个HTLSC来向Alice购买一个加密货币猫


名词解释:

·OBD:Omni后台驻留程序(OmniBOLT Daemon)

·channel:channel代表的是闪电网络中的Poon-Dryja channel。举例来说,channel一般被这样表示:[Alice,USDT,Bob],这代表Alice和Bob创建了一个channel并往channel中注入USDT资金。

·property:指代由OmniLayer发行的数字资产,和asset含义相同

·RSMC(Revocable Sequence Maturity Contract):可撤销序列到期日合约是设计出来用于惩罚进行恶意操作的用户的,这些恶意操作的用户通常会广播之前的commitment transaction来取得更多的资产。

·HTLC(Hashed Time-Lock Contract ):哈希时间锁合约将会使用多个channels来进行tokens 的交换,但用户并不会进行两个点之间的直接交易。

·Commitment Transaction:它会被创建但不会被广播,并且有可能会被下一个commitment transaction宣布无效化。

·BR(Breach Remedy):违约补偿交易一般用于RSMC中,例如假设Alice被一个之前的commitment transaction欺骗了,BR将会把Alice所有的钱转到Bob处。(谜语?)

·HED(HTLC Execution Delivery)

·HT(HTLC Timeout)

·HBR(HTLC Breach Remedy):HTLC中的breach remedy transaction

·HTRD(HTLC Timeout Revocable Delivery):HTLC中的revocable delivery transaction

·HTBR(HTLC Timeout Breach Remedy):惩罚像是Alice那样的在time lock period播报了一个更早的hash time-locked transaction的人

·Atomic Swap:原子交换技术使得两种不同的加密货币之间可以不通过中心化的媒介进行货币交换。

·HTLSC(Hashed TimeLock Swap Contract):由两个分离的HTLC组成,这些HTLC有着具体的交换汇率和时间锁


参考资料:

OmniBOLT的reddit: https://www.reddit.com/user/OmniBOLT/?sort=new

OmniBOLT在Medium网上的官网号:https://medium.com/@omniboltofficial

OmniBOLT在Medium上的技术介绍:

Part I |OmniBOLT Detailed Introduction

(https://medium.com/omnibolt/part-i-omnibolt-detailed-introduction-178f00fe9364)

Part II|OmniBOLT Detailed Introduction

(https://medium.com/omnibolt/part-ii-omnibolt-detailed-introduction-3a98c0cd714a)




2020年08月27日 16:42图文分享