如何捕獲閃電網絡+智能資產的最大價值?
引
引
引
引
閃電網絡是基於比特幣的Layer2解決方案,旨在通過鏈下通道實現瞬時、小額支付,釋放主鏈的資源壓力,提升區塊鍊網絡的整體效能,由分佈於全球多個國家與地區的數個團隊同時開發,它是目前全球區塊鏈行業最為成功的擴容方案之一,同時也是最為關鍵的DeFi基礎設施之一。
眾所周知,目前的閃電網絡只支持BTC,不支持自定義智能資產的流通。而且即使是BTC,也只是一個支付功能,完全不能滿足DeFi應用的需求。
為此,根據閃電網絡的基礎原理,Omni規範委員會制定了OmniBOLT標準,它是全球首個閃電網絡內的智能資產流通標準,也是繼OmniLayer後由Omni規範委員會推出的第二個重磅協議。 Omni規範委員會以推出OmniLayer協議而著名,該協議是全球最大數字資產的發行平台,目前正在支持全球兩萬多家區塊鏈企業的運營。
OmniBOLT首次為所有公鏈以及相關資產接入依照閃電網絡原理設計的通道,允許他們在Onion Network內進行交互,這將極大增強各個公鏈的交互性。 OmniBOLT構建在OmniLayer之上,因為在基礎層面支持智能資產,所以不僅僅BTC的快速支付能夠支持,而且具備以下顯著優勢:
基於OmniLayer的智能資產快速支付.
不同資產的跨通道原子交換.
建立在閃電通道之上的去中心化交易所.
基於原子交換的抵押貸款合約.
更多適用性強的DeFi(Decentralized Finance)智能合約. 感興趣的讀者可以訪問OmniBOLT規範的第6章:
抵押貸款,在線商店和DEX
1 閃電網絡&OmniLayer
基於閃電網絡的基礎理論,OmniBOLT描述瞭如何在閃電通道間轉移OmniLayer上的資產,以及OmniLayer上的資產如何受益於新型快速支付理論。由於已經不限於BTC的流通支持,OmniBOLT是對閃電網絡基礎理論的極大的擴展,以支持更為廣泛的資產流通,以及通過多通證原子交換,實現了了更加具有適用性的複雜合約,也更能夠切實支持現實中的應用。
OmniBOLT自身並不發行任何通證。所有的通證都是在OmniLayer上發行,並通過P2(W)SH支持的通道進入OmniBOLT網絡,相關資產被鎖定在主鏈上,並可以在任何時候在OmniLayer主鏈上贖回。
2 關鍵概念闡釋
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.
HBR: HTLC Breach Remedy,可撤銷支付交易RD: 當Alice廣播最新的合法交易承諾時,RD從2-2 P2SH交易輸出中支付。它會立即向Bob匯款,並且會在相對於當前區塊高度的相對值(例如100區塊)之後向Alice匯款.
HTRD: HTLC Timeout Revocable Delivery,HED: HTLC Execution Delivery,HTLC執行支付交易。
HTBR: HTLC Timeout Breach Remedy,HT: HTLC 超時交易交易
作惡懲罰交易
HTLSC: Hashed TimeLock Swap Contract,HTLC超時可撤銷支付交易
HTLC 超時作惡懲罰交易,被用於懲罰在時間鎖定期間廣播舊有哈希時間鎖定交易信息的參與方.
原子交換Atomic Swap: 原子交換技術使得通證間的交易無需借助中心化媒介,比如交易所。
哈希時間鎖定交換合約,由兩組分別的哈希時間鎖定合約以及具體的代幣交換利率與時間鎖組成。
3 序列到期可撤銷合約
為了避免惡意者拒絕簽名任何的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"
-- Poon & Dryja, The Bitcoin Lightning Network: Scalable Off-chain Instant Payments
上圖展示了通道內發生的承諾交易,演示了通道內的狀態是如何轉換的。
Alice ---(10 USDT)---> Bob ---(10 USDT)---> Carol ---(10 USDT)---> David.
4 哈希時間鎖定合約
[Alice --(10 USDT)--> Bob] ==(Bob has two channels)== [Bob --(10 USDT)--> Carol] ==(Carol has two channels)== [Carol --(10 USDT)--> David]
[A, USDT,雙向支付通道僅允許在一個通道內安全地轉移資金。為了構建一個多通道網絡,用多跳的方式來安全地轉賬到目的地,需要構造一個額外的合約:哈希時間鎖定合約。
在使用HTLC進行轉賬時,一個常見的錯誤理解是,如果Alice想要給David支付10 USDT,她可以用兩跳就到達David:
這令人困惑,因為閃電網絡中沒有個人賬戶的概念。閃電網絡中唯一可用的基本組成部分是通道。所以正確的跳轉是這樣的:
>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綁定在一起的未廣播交易。
- 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 跨通道多資產原子交換
一般來說,原子交換發生在不同區塊鏈之間,在無信任情況下交換通證,並且保證交易雙方都沒有機會作弊。 OmniBOLT中的通道可充值任何OmniLayer發行的資產。如果某人需要交易其通證,比如USDT/BTC,雙方需要在特定時間內使用加密哈希公式來知曉USDT與BTC的接收方。如果參與中的某一方沒能在特定時間內確認交易,那麼整個交易取消,相關資金被退回原本的賬戶。這免除了交易的對手風險。
.通道間標準的交換程序如下圖所示
哈希時間鎖定交換合約,由兩組分別的哈希時間鎖定合約以及具體的代幣交換利率與時間鎖組成。
如圖所示,一個交換合約中有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天。
原子交換是許多區塊鏈應用的基礎。下一章將呈現更多例子,相關例子將更加直觀,幫助開發者構建面向真實商業世界裡更為複雜的用例。
(Collateral Lending Contract)
6 應用:抵押貸款、寵物商店以及更多可能性
以下例子採用面向特定場景的多階原子交換。相關進程將通過圖靈完備語言(如Javascript或者Solidity)寫就的一段程序執行,調用OBD API以完成基本任務。所有參與者將運行程序以檢查所有交易是否有效以及參與方是否誠實。
抵押借貸合約
抵押借貸為以下特定目的服務:
“你在託管賬戶中存入某有價值物作為抵押品,我根據合適的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。"PET"在線寵物商店
寵物商店的應用只用到了一階段原子交換:
Alice使用Omnilayer發行了叫做
的資產, 每一枚PET代表一隻加密貓。
Bob 和Alice建立USDT通道和PET通道,並在USDT通道中充值。
Bob 創建HTLSC來支付Alice 100 USDT ,換得一隻加密貓。
很簡單:-)
https://github.com/omnilaboratory/OmniBOLT-spec
實際應用中,Alice和Bob甚至不需要建立直接的通道。利用HTLC就可以藉用別人的通道進行交換了。
https://github.com/omnilaboratory/obd/
7 錢包實現&官方API
Javascript API:
https://github.com/omnilaboratory/DebuggingTool/blob/master/js/obdapi.js.
OmniBOLT規範官方地址:
https://github.com/omnilaboratory/DebuggingTool
OmniBOLT規範的實現可以訪問官方倉庫:
[1]. Bitcoin Lightning network White Paper:lightning.network/lightning-network-paper.pdf
API在線文檔:https://github.com/lightningnetwork/lightning-rfc
GUI debugging 工具:https://github.com/lightningnetwork/lnd
參考內容https://github.com/OmniLayer/spec
[2]. BOLT規範:https://github.com/omnilaboratory/OmniBOLT-spec
[3]. 閃電網絡項目:https://github.com/omnilaboratory/obd
[4]. OmniLayer 規範:https://github.com/OmniLayer/omniwallet
[5]. OmniBOLT 規範:https://github.com/OmniLayer/OmniJ
[6]. OmniBOLT 項目:
[7]. OmniLayer 錢包:


