写点什么

OmniLayer 资产在闪电网络通道间转移入门介绍

  • 2020 年 4 月 17 日
  • 本文字数:5300 字

    阅读完需:约 17 分钟

OmniLayer资产在闪电网络通道间转移入门介绍

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



Lightning Network 在全球的分布状况,来源:ACINQLN Explorer


然而金无足赤,目前的闪电网络并非尽善尽美的解决方案。目前的闪电网络只支持 BTC,不支持自定义智能资产的流通。而且即使是 BTC,也只是一个支付功能,完全不能满足 DeFi 应用的需求。资产支持范围的狭窄、支持能力限缩,均是闪电网络目前无法回避的短板。


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


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


  • 基于 OmniLayer 的智能资产快速支付

  • 不同资产的跨通道原子交换

  • 建立在闪电通道之上的去中心化交易所.

  • 基于原子交换的抵押贷款合约

  • 更多适用性强的 DeFi(Decentralized Finance)智能合,如抵押贷款、在线商店和DEX)


1. 闪电网络和 Omnilayer

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


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


理解 OmniBOLT 新型闪电网络,关键是要洞察以下几个部件:序列到期可撤销合约、哈希时间锁定合约、跨通道多资产原子交换。其中,序列到期可撤销合约、哈希时间锁定合约,这两项技术最早出现在闪电网络 2014 年的白皮书中,由 Poon 与 Dryja 联合提出,而跨通道多资产原子交换则是 Omni 团队着力改进并较闪电网络显著进步之处。


笔者将在本文第二部分细致解释文章中涉及到的一些主要概念,并在正文中他们二次出现的地方再次注释,方便读者理解。在对几个关键概念进行阐释后,笔者将向读者们展示 OmniBOLT 目前主要的用例,以及未来可能产生的更多应用场景。


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。


可撤销支付交易 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, 哈希时间锁定交换合约,由两组分别的哈希时间锁定合约以及具体的代币交换利率与时间锁组成。


3. 序列到期可撤销合约(Revocable Sequence Maturity Contract)

为了避免恶意者拒绝签名任何的 P2SH 交易,导致通道另一方的资金被永久锁定在通道中,OmniBOLT 构建了可以取消的承诺交易(注:指那些创建了但是没有广播的交易,有可能在下一个承诺交易出现时前一个就作废了),也就是序列到期可撤销合约(Revocable Sequence Maturity Contract) 。这里介绍的序列到期可撤销合约最早由 Poon 和 Dryja 发明,发表在闪电网络的第一篇白皮书中。


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


以下图表展示了 OmniBOLT 在广播充值/承诺交易之前必须做的事情。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



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


4. 哈希时间锁定合约(Hash Time-Locked Contract)

“双向支付通道仅允许在一个通道内安全地转移资金。为了构建一个多通道网络,用多跳的方式来安全地转账到目的地,需要构造一个额外的合约: 哈希时间锁定合约。”-- Poon & Dryja, 《比特币闪电网络白皮书:可扩展的链下支付》


在使用 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 绑定在一起的未广播交易。.



5. 跨通道多资产原子交换

一般来说,原子交换发生在不同区块链之间,在无信任情况下交换通证,并且保证交易双方都没有机会作弊。OmniBOLT 中的通道可充值任何 OmniLayer 发行的资产。


如果某人需要交易其通证,比如 USDT/BTC,双方需要在特定时间内使用加密哈希公式来知晓 USDT 与 BTC 的接收方。如果参与中的某一方没能在特定时间内确认交易,那么整个交易取消,相关资金被退回原本的账户。这免除了交易的对手风险。


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



  • where Tx 1 transfers 1000 USDT to Bob in channel [Alice, USDT, Bob], locked by Hash®, t1 and Bob’s signature.

  • Tx 2 transfers 1 BTC to Alice in channel [Alice, BTC, Bob], locked by Hash®, 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 天。



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


6. 应用:抵押贷款、在线宠物商店等

以下例子采用面向特定场景的多阶原子交换。相关进程将通过图灵完备语言(如 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 就可以借用别人的通道进行交换了。


参考资料:


1. Bitcoin Lightning network White Paper 闪电网络白皮书:


lightning.network/lightning-network-paper.pdf


2. BOLT 规范: https://github.com/lightningnetwork/lightning-rfc


3. 闪电网络项目: https://github.com/lightningnetwork/lnd


4. OmniLayer 规范: https://github.com/OmniLayer/spec


5. OmniBOLT 规范: https://github.com/omnilaboratory/OmniBOLT-spec


6. OmniBOLT 项目: https://github.com/omnilaboratory/obd


7. OmniLayer 钱包: https://github.com/OmniLayer/omniwallet


8. OmniJ 的 Java 实现项目: https://github.com/OmniLayer/OmniJ


2020 年 4 月 17 日 16:01625

评论

发布
暂无评论
发现更多内容

5分钟速读之Rust权威指南(十)

码生笔谈

rust

Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

Linux服务器开发

redis 后端 多线程 Linux服务器开发 网络io

helm-kubernetes的包管理器

片风

云原生 Helm 包管理工具

继续备考

IT蜗壳-Tango

5月日更

用Terraform申请Letsencrypt证书

大可不加冰

云计算 证书 IaC Terraform HashiCorp

要想成为牛人,推荐学习哪种编程语言?

实力程序员

Django 之视图篇

若尘

django 视图 Python编程 5月日更

5G加油站,需要中频段

脑极体

数字人民币与区块链的区别与联系

CECBC

网络攻防学习笔记 Day26

穿过生命散发芬芳

5月日更 网络攻防

Terraform中使用prevent_destroy搭配override文件防止误删资源

大可不加冰

云计算 基础设施即代码 IaC Terraform HashiCorp

【Flutter 专题】124 日常问题小结 (三) 自定义 Dialog 二三事

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

如何入门数据分析?

数据社

大数据 数据分析 5月日更

用 Java 实现坦克大战,这个有点强了!

Java架构师迁哥

悟透前端:加深Javascript变量函数声明提升理解

devpoint

变量声明

面向WEB开发的Docker(四):启动MySQL数据库

devpoint

Docker

吾日三省 - DAY 16

Qien Z.

5月日更 半年总结

AI医疗发展中的机遇与有效监管

CECBC

亚马逊云开发者 Meetup 又双叒叕来了,您报名了吗?

亚马逊云科技 (Amazon Web Services)

开源数据库

另一种总结的方式

Nydia

学习

前端开发:npm run serve和npm run dev的区别

三掌柜

5月日更

达利欧:我持有一些比特币,美元重回1971年,现金就是垃圾

CECBC

出于信仰,我去考了一个证

大可不加冰

云计算 IaC Terraform HashiCorp

如何通过别名扩展Git

kenny

bash git git扩展

人生算法:重新启动的精神装置

石云升

读书笔记 思维模型 5月日更

☕️【Java 技术之旅】从底层分析LockSupport原理机制

浩宇天尚

Java JVM lock锁 5月日更 LockSupport

教你用User Story设计BI驾驶舱

薄荷点点

数据产品经理 用户故事地图 产品需求

中台反思:云原生下API网关的选择

孤岛旭日

网关 api 网关 平台 技术中台

这可能是中文互联网第一本系统性讲解Terraform的入门教程

大可不加冰

云计算 IaC Terraform HashiCorp 不可变基础设施

安全专栏加餐

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

Dubbo 序列化

青年IT男

dubbo

OmniLayer资产在闪电网络通道间转移入门介绍_区块链_泽龙_InfoQ精选文章