宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > NEAR > 正文

谢晗剑:简述 Nervos 通用支付通道原理与可组合性

作者:

时间:1900/1/1 0:00:00

通用支付通道适用于其它在Layer1上的资产和DApps,这种可组合性让我们可以创造出一些有趣的使用范例,例如将稳定币进行通道化。

原文标题:《一种通用的支付通道结构及其可组合性》撰文:谢晗剑,Nervos首席架构师,秘猿科技首席执行官,前以太坊核心研发团队成员翻译:史迪仔,Williams

通道网络可能是Layer2舞台上最耀眼的角色。一个广泛部署的通道网络可以最大化交易吞吐量,可以最小化交易处理延迟,可以增强交易的隐私性,甚至可以为区块链提供一定的互操作性。简而言之,如果运用得当,通道网络将会是解决问题的灵丹妙药。

不同于基于零知识证明的协议或者其他Layer2链,通道网络的基本思想非常简单:使用直接连接双方的网络进行链下的交易互换,并确保这些交易在区块链上都是可执行的,然后通过这种点对点的连接共同组合成一个网络,在这个网络中的任意两个点之间都有一条或者多条路径连接着它们。尽管通道网络自身也存在一些问题,比如流动性效率和路径问题,但这些问题都是可以解决的,或者说是有近似的最优解的。

相比于Layer1,Layer2协议在部署之后相对是比较容易升级的,因此实现通道网络的最佳方案就是先启动它然后再逐步发展改进它。闪电网络就是一个这样的典型案例。本文将介绍一种简单的、可组合性强的基于CKB网络的通用支付通道结构,希望能够引起更多的研究和关注,引发更多关于通道网络的讨论,促进CKB上通道网络的建设和发展。

介绍

支付通道网络是一个去中心化的支付网络,用来支持全球支付。通道网络的设计主要包含两个方面,第一:通道协议,它规定了两个用户在一个直接相连的通道内的链下信息传递、链上合约和链上链下交互;第二:网络协议,它规定了如何将多个直接相连的通道组合成一个较长的通道,如何在两个用户之间找到一条路径等等。本文主要讨论一种在CKB上的通用支付通道结构。它是通用的,因为它基本适用于CKB上的任意一种资产。

通道结构最主要的问题在于,如何确保只有最新的通道状态才会在链上被认为是有效的。闪电网络使用的Poon-Dryja结构是基于撤销惩罚实现的,这给双方带来了复杂的密钥管理和状态管理,进而增加了正确实现协议的难度和节点操作的风险。Decker-Wattenhofer结构提供了一种基于时间戳的状态更新机制,缺点是只允许有限数量的状态更新,这意味着Layer1和用户都需要付出更高的成本,因为通道必须定时关闭和开启。Decker-Russell-Osuntokun结构的eltoo是一个优雅的基于版本的解决方案,但是它需要在比特币中引入一个新的操作码SIGHASH_NOINPUT。以太坊提供一个有状态的图灵完备的智能合约模型,这使得构造基于版本的解决方案更加容易,如Sprites,ForceMove以及Perun。

EOS Network Foundation CEO:采取法律行动或硬分叉是让Block.one履行投资承诺的两个可能方案:5月21日消息,EOS Network Foundation 创始人兼 CEO Yves La Rose 发布公开信,旨在采取措施让 Block.one(B1)履行其对 EOS 网络的投资承诺(在 2018 年 Block.One 承诺将向 EOS 网络投资 10 亿美元)。两个可能的方案为,选项一为对未能履行投资承诺的 Block.one 采取法律行动,如果有足够多的代币持有者有兴趣提出法律索赔,EOS Network Foundation 准备协助将 EOS 代币持有者聚集在一起,以便对 Block.one 提出索赔;选项二为硬分叉,区块生产者可以考虑硬分叉,以排除 Block.one 拥有的代币,包括其旗下加密交易所 Bullish。[2023/5/21 15:16:37]

译者注,ReplacebyVersion缩写RbV,每个状态有一个表示状态版本的单调递增的计数器。在发生争议时,经过授权的具有最高版本的状态被认定为最新状态,如果另一个新的状态具有较大的版本号,那么它将替换先前的状态。

结构

这里描述的通用支付通道结构主要是指一个基于CKB的eltoo端口。然而,我们将看到这样一个几乎相同的想法在CKB上不仅更容易实现,而且还展现出比特币/以太坊的支付通道方案中不存在的可组合性等优点,只是在设计上稍微有一点点谨慎。通道的可组合性是指通道结构可以适用于其他在Layer1上的资产和dapps。通过通道的可组合性,我们可以为所有的Layer1的资产构建一个通用的支付通道网络。

通用支付通道结构由一个通用支付通道lock和三种不同类型的交易组成。

通用支付通道lock

GPClock是通用支付通道的关键组成部分,它是通道内的cells使用的lockscript。它有5个参数:

state:锁状态,一个OPEN和CLOSINGtimeout:关闭周期长度pubkey_a:Alice的公钥pubkey_b:Bob的公钥nonce:一个单调递增的无符号整数一个通用支付通道可以被建模为一个简单的有限状态机,包含了三种状态:OPEN,CLOSING和SETTLED。OPEN是初始状态,OPEN和CLOSING分别用GPClock的OPEN和CLOSING状态进行表示,而没有GPClock就表示为SETTLED。

OKX Jumpstart将于2023年4月23日开启SUI销售:据OKX官方消息,OKX Jumpstart将于2023年4月23日 (UTC+8) 开启SUI新币销售,活动将采用最新的“认购+抽签”的方式销售SUI币,销售价格为0.1美元,支付币种为OKB,这个流程包括持仓统计、新币认购、抽签与发放,通过OKX APP,并完成KYC2验证等条件即可参与活动。同时针对Sui生态的贡献者,额外开启白名单销售。白名单销售只面向Sui生态的贡献者开放,用户需要完成Sui Foundation的白名单验证。[2023/4/15 14:05:32]

当GPClock被解锁时,状态将会发生转变。当GPClock的状态为OPEN时,它可以在两种情况下被解锁:双向关闭和单向关闭。

交易类型

出资交易——一笔出资交易就是打开了一个新的通用支付通道。它有一个fundingoutput,该output的lock就是一个状态为OPEN的GPClock。

关闭交易——一笔关闭交易会消费fundingoutput或者另一笔关闭交易中的output。它会有一个closingoutput,该output的lock就是一个状态为CLOSING的GPClock。它总是会有一笔匹配的结算交易。

关闭交易的独特之处在于它们并不会固定于一个先前的outpoint。当一笔关闭交易被签名时,它的输入被排除在哈希过程之外,因此签名只会包括outputs。这个特殊的哈希过程被称为无输入哈希。例如,当用户想要签署一笔关闭交易时,他/她会序列化输出并对其进行哈希,然后在哈希结果上进行签名。这样在结束交易中的输入不会影响签名交换。正因为一笔关闭交易可以附加到一笔出资交易或者另一笔关闭交易,并且可以在关闭交易签名之后的一段时间后再确认连接。这样的操作可以在CKB上直接实现,无需添加新的操作码,因为一笔CKB交易的哈希和签名是完全可定制的。

GPClock情况1,它要求关闭交易的output0必须与其input0一致,除了它们lock中的nonce和state,这意味着它的input0只能连接到先前的使用类似GPClock的output作为它自己的output0。

“美联储传声筒”Nick Timiraos:难以预测美联储加息幅度:2月1日消息,有“美联储传声筒”之称的华尔街日报记者 Nick Timiraos 在社交媒体上表示,很难预测美联储的加息幅度,尤其是对其未来行动的预测。美联储在去年的七次会议上均提高了利率。一次上调 25 个基点,两次上调 50 个基点,四次上调 75 个基点。美国银行去年预测美联储在 2022 年的 7 次 FOMC 会议上均加息 25 个基点,当时被视为一种“不可能”的预测。这在当时将使美联储的基准利率达到 1.9%。而在去年年底,基准利率为 4.4%。

据悉,美联储将在北京时间 2 月 2 日凌晨 3:00 公布利率决定上限,美联储主席鲍威尔将在 3:30 分召开货币政策新闻发布会。[2023/2/1 11:40:20]

结算交易——结算交易消费了一个closingoutput并关闭了一个通用支付通道。它有两个输出,分别将资金给到Alice和Bob。它总是会有一笔匹配的关闭交易。

示例流程

这里我会给出一个交互流程的示例。它只是一个用于解释的草拟协议,而不是一个包含确切步骤的真正的协议。草拟和真正协议的关键区别在于在每次状态转换上是如何达成一致的。考虑到并发性和公平交换等问题,两方协议的问题要比听起来复杂的多。当然也是存在解决方案的,但是它已经超出了本文的范畴,并且和通用支付通道结构毫不相关。我只是假设在必要时会使用这样一种合适的安全协议,例如在交换签名的时候。

后续涉及具体流程,包括:开启通道、发送交易、关闭通道等操作,建议前往译文或者原文,以获得更佳的阅读体验。

基本原理

在出资交易被签名之前,任何一方如果不想再继续,都可以在没有任何损失的情况下停止。如果出资交易已经被签名,但是通道的最初开启人还没有广播它,则另一方依旧总是可以发送另一笔交易,消费和等待被广播的出资交易相同的输入,从而使之无效。

一旦出资交易上链并且通道已经打开,通道的任何一方都可以发起单向关闭,如「关闭通道:糟糕的」中所述,由他/她自己关闭所有通道,如果对手发起单向关闭,一方可以等待关闭超时或更新GPClock,前提是他/她需要有一个nonce值更大的余额状态。关闭期为任何一方提供了一个可以提交其最新状态的窗口,在结束时通道将以nonce值最大的状态进行结算。

ETC Grants DAO买入500万美元ETC 以资助ETC开发者:据ETC Grants DAO官方推特显示,ETC Grants DAO已买入500万美元等值ETC并转入ETC Grants DAO公开地址0x3db3D728B8783656b83c3cB8eDc1481eC3c62f82。ETC Grants DAO是一个为ETC开发者提供无偿资助的非盈利性去中心化自治组织。该组织活跃成员来自比特大陆、蚂蚁矿池、ETC项目方和ETC核心生态项目等。[2022/11/8 12:31:22]

可组合性

通用支付通道结构可以适用于任意一种CKB上发行的token,无论它是原生的CKByte还是UDT。此结构只涉及cell的lock,cell的data和type字段将留给智能合约开发者们去进行处理。这个小小的接口使得它可以兼容任何只使用了data和type字段的合约。sUDT就是这样的一种合约,未来的UDT标准也将是如此。一个UDT的开发者将不需要再去考量如何将UDTs通道化,因为它随时都可以在不需要做任何改动的情况下被通道化。这代表UDTs生来就是可通道化的,并且通道化和扩容UDTs的开发成本是「0」。所以UDTs不只是Layer1上的一等公民,也是Layer2上的一等公民,因为它可以在不做任何改动的情况下就在Layer1和Layer2之间自由的流入流出。这也给予了支付通道网络最大的流动性,因为所有Layer1上的资产都可以在无摩擦的情况下加入Layer2的池子中。

这和比特币和以太坊上面的支付通道完全不同。比特币上的支付通道只有比特币可以运作,因为比特币是唯一的资产,并且这个区块链的能力是有限的。至于以太坊上虽然有非常多种的资产,但是它的ERC20代币和通道的可组合性却是受限的。支付通道必须要和token通过预先已经定义好的接口进行交互,但这些接口对于不同的token而言可能是不同的。举例来说,Celer才刚以硬编码的方式支持ETH和ERC20代币并且需要依赖它的approve/transferFrom的机制。即使ERCtoken遵循同一个标准接口来实现通道化,可能仍然是不安全的,因为接口的语意可能是不一样的,近期的UniswapERC777事件已经说明了这一问题。相反的,CKB上的GPClock,根本不需要去管UDT具体是如何实现的。

MicroStrategy成为首家在富达注册比特币401(k)养老金账户的公司:7月25日消息,今年四月,富达投资宣布允许投资者通过专用“数字资产账户”在他们的401(k)养老金账户中存入比特币,据悉MicroStrategy是第一家在富达注册比特币401(k)养老金账户的公司,富达表示已经看到雇主的强烈兴趣,预计未来会有更多企业跟进。

另据知情人士透露,考虑将比特币添加到401(k)计划中的雇主需要进行尽职调查并获得必要的批准,富达只需要大约90天时间即可完成。(Barrons)[2022/7/25 2:36:37]

通用支付通道结构也能够在anyone-can-pay的lock中运行,也就是说当关闭交易的时候可以用任意的lock作为输出。通用支付通道和UDTs的可组合性,对于用户而言是更便于使用的。例如,他们在打开通道前不需要用「Approve」方法来进行授权。他们的资金可以像往常一样安全地放在自己的钱包里面,在任何需要的时候通过单笔签名交易将资金发送到通道中即可。

这个结构的可组合性让我们可以在CKB上创造出一些有趣的使用范例,例如将稳定币进行通道化。不论你是算法稳定币还是基于信任的稳定币,它从第一天起就是支付通道网络上的一等公民。稳定币的支付通道网络可以带给用户超越Visa,Paypal以及支付宝的顺滑体验,因为它是快速的,可扩展,无需许可的并且有未来的——我说的是基于APIs和IoT的流支付!

双方共同出资

以太坊上的支付/状态通道当通道被打开时也面临了原子性的问题,因为以太坊上的交易只有一个发送方,但通道的资金却可能是来自双方的。为了允许双方共同出资,以太坊的通道可以使用两个独立的出资交易,这也会给交易的对手方带来风险,因为一方可以在另一方已经承诺出资之后终止通道,或通过使用更多的链上交易来模拟原子双方共同出资,从而增加未来打开新通道的成本,同时这又会取决于ERC20特定的接口。CKB上的通用支付通道的出资交易可以拥有多个输入,自然地就可以支持双方共同出资。

有状态的锁定模式

通用支付通道的结构只依赖于lockscript。lockscript是有状态的,它模拟了一个简单的状态机,然后在lockscript中使用args来维持内部的状态。当需要一个适度复杂的状态lock时,也可以在其他地方应用这个模式。

对于具备更复杂的状态机的lock,有两种替代方案可以考虑。第一种是将data变成是一个在lockscript和typescript之间可以共享的字段,这需要预先定义好数据格式,以便每个脚本可以读/写自己的数据,而不与其他脚本发生干扰。第二种方式是使用一个单独的cell来维持lock的状态,并且将锁定的cell和锁定状态的cell一起转换。这两种方案是最明显的,但绝对还有其他可能的模式。

未来工作展望

通用支付通道是一个简单的结构,灵感源自eltoo,然而它不仅在CKB上更容易实现,而且还免费获得了额外的优异性质,如上所述。cells的「状态对象」的本质天然适合通道网络和Layer2,我希望关于通道网络的研究可以吸引到的来自社区的关注。这里还有一些有趣的问题:

状态通道——状态通道是支付通道的一种泛化,用于支持智能合约的链下执行。GPClock不包含支付的特定结构,这会是状态通道建设的一个良好的开端。

通道网络——如何连接通用支付通道,进而任何人都可以通过一些中间节点就可以直接或者间接地向通道网络中的任何一个人进行支付?我们是像闪电网络一样使用HTLC还是有什么更好的解决方案?

瞭望塔——如何通过一种无需信任的方式将纠纷委托给第三方?这样通道的参与者就可以离线去度假了

路径——如何找到通道网络中两个点之间的最佳路径?考虑到通道的开启/关闭和通道容量的变化,整个网络处于不断变化的状态中,而节点对于整个拓扑网络仅拥有部分信息。「最佳」的定义也因人而异。由于这些限制,开发几种不同的路径策略并将选择权留给用户可能会更加合理。这一领域有很多有趣的论文。

多部分支付——一次支付的金额越大,就越难找到一条有足够容量的路径来传递它。多部分支付的概念是将大额支付拆分成数笔小额支付,并通过不同的路径将它们发送到同一个目的地,并确保小额支付们被全部接受或者全部拒绝。

引用资料

https://lightning.network/lightning-network-paper.pdf

https://tik-old.ee.ethz.ch/file/716b955c130e6c703fac336ea17b1670/duplex-micropayment-channels.pdf

https://blockstream.com/eltoo.pdf

https://pdfs.semanticscholar.org/4d5b/9fb1c4205b61060117e3c71b04464c2a1c77.pdf

https://arxiv.org/pdf/1702.05812.pdf

https://magmo.com/force-move-games.pdf

https://eprint.iacr.org/2017/635.pdf

https://docs.nervos.org/technical-concepts/architecture.html#lock-script

https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki

https://pdfs.semanticscholar.org/208b/22c7a094ada20736593afcc8c759c7d1b79c.pdf

https://talk.nervos.org/t/rfc-simple-udt-draft-spec/4333

https://github.com/celer-network/cChannel-eth/blob/master/contracts/lib/ledgerlib/LedgerOperation.sol#L87-L114

https://defirate.com/imbtc-uniswap-hack/

https://talk.nervos.org/t/rfc-anyone-can-pay-lock/4438/6

https://github.com/celer-network/cChannel-eth/blob/master/contracts/lib/ledgerlib/LedgerOperation.sol#L87-L114

来源链接:talk.nervos.org

以太坊

以太坊

开放的分布式区块链应用平台,通过其专属加密货币Ether以太币提供去中心化的虚拟机,处理点对点合约。允许任何人建立和使用通过区块链技术运行的去中心化应用,没有任何欺诈、审查、第三方监管。以太坊的概念首次在2013至2014年由维塔利克·布特林VitalikButerin受比特币启发后提出,旨在共同构建一个更全球化、更自由、更可靠的互联网。以太坊EthereumETHERCERCERC20ERC721ERC以太坊查看更多Nervos

标签:LOCKLOCCLOTPSLBLOCK价格Bitblocks FireHICLONEXtps币行情

NEAR热门资讯
亚洲区块链速览:深圳示范区支持数字货币研究,币安推出区域版 Libra 计划

GlobalCoinResearch每周发布两次亚洲区块链市场新闻Newsletter,该公司是一家专注于亚洲区块链市场及技术的投研公司。下面就让链闻就带你看看西方媒体眼中的亚洲区块链市场,以及西方市场最关注的亚洲市场事件.

1900/1/1 0:00:00
金财币:12.19比特币/以太坊行情 牛市盛宴 现阶段散户如何进场?

2020年我们经历了百年未见的“大流行”,为了应对疫情带来的经济衰退,各国采取季度宽松的货币政策,利率一再下调,目前欧洲已经实行了负利率政策,美国基准利率也已经贴近零.

1900/1/1 0:00:00
DeFi 通证激励 真实商业:席卷而来的新模式

最近几周在全球——注意是全球,与中国基本无关——区块链圈子里有两件事情最火,一个是Filecoin主网即将上线,另一个是DeFi,更确切的说,是Compound通过引入通证经济打法,一跃而起的事迹.

1900/1/1 0:00:00
Gate.io 上线 AR(Arweave) 杠杆交易和币币理财服务

Gate.io一直秉承真实,透明的理念,不造假数据,不干预市场交易,为用户提供真实自由的市场工具和稳定健康的市场服务。杠杆交易提供做多和做空机制,可以有效稳定市场到合理价值.

1900/1/1 0:00:00
数字货币是前所未有的强大治理工具

本文是参加TokenClub2020年5月20日晚“激辩数字人民币DC/EP”线上研讨会的发言提纲,与实际发言并不完全一致。本人主要关注企业级通证应用,并非货币研究者,谈及数字货币问题,意在举一反三,或有谬误,不吝赐教.

1900/1/1 0:00:00
关于WBF上线ESP的公告

尊敬的用户: ESP将在WBF开放区上线ESP/USDT交易对,具体时间安排如下:充币时间:12月20日12:00交易时间:12月20日15:00提币时间:12月21日15:00 项目介绍: ESP(易捷通)是摩根集团下属G点实验室研.

1900/1/1 0:00:00