Payment Channel
Payment Channel
A Division of Blockchain Layers
- Hardware Layer: (Trusted) Hardware:最底层的硬件层,包括计算机、服务器等物理设备。
- Layer 0:Networks (Public/Private):这一层包括公共和私有网络,负责将不同设备连接起来,形成区块链网络的基础通信层。
- Layer 1:
- Blockchains, side-chains:这一层是区块链的主链和侧链,负责处理和记录交易。它们通过共识机制(Consensus Mechanism)来确保网络的安全和一致性。
- Consensus Mechanism(s)
- Layer 2:
- Channels:状态通道,允许用户在链下进行多次交易,仅在通道打开和关闭时将交易结果提交到区块链上。
- Commit-Chains:依赖一个中央中介,在可用性方面是受信任的,但在资金方面是不受信任的。
- Refereed-delegation:仲裁委托机制,通过第三方仲裁来确保交易的正确性和公平性。
- Payment, State, Network:Layer 2技术可以应用于支付、状态管理和网络层面,以提升区块链的扩展性和效率。
提交链:依赖于中央中介,在可用性方面受信任,但在资金方面不受信任
P.S.侧链有自己的共识算法,即不是第 2 层
Off-chain tx and On-chain deposit
- 通过签名在链下处理多笔交易。
- 这意味着交易双方可以在不将每笔交易记录到区块链上的情况下,通过签名确认交易的有效性。
- 每次签名后,不会在链上转移资金。
Unidirectional case「单向交易情况」
- 付款方仍然在交易上进行签名。
- 收款方可以将签名放到链上作为借据。
Bidirectional case
- 双方在链下的双人账本上签署余额。
- 即双方都需要在交易的余额上进行签名,以确认交易的有效性和余额的变动。
但签名本身并不代表资金。即签名仅表示交易的确认,并不直接涉及资金的转移。
每个参与者在链上放置一次性“锁定”存款。
- 区块链仅作为争议的追索手段。即如果交易过程中发生争议,可以通过区块链上的担保金额进行解决。
- 如果交易/争议能在链下解决,存款将保持不变。
::: Details Example
假设Alice和Bob之间需要进行多次小额交易,他们不希望每次交易都记录在区块链上,因为这样会产生高额的交易费用和延迟。
Alice和Bob可以通过链下交易机制进行交易,只有在最终结算时才将交易结果记录在区块链上。
链下交易可以减少交易费用和延迟,提高交易效率。
- 创建支付通道
- Alice和Bob各自存入一定金额到区块链上作为担保。
- 进行链下交易
- Alice向Bob支付10元,通过签名确认交易。
- Bob确认收到10元,通过签名确认交易。
- 记录最终结果
- 双方进行多次链下交易后,将最终的交易结果记录在区块链上。
假设Alice和Bob进行5次交易,最终Alice支付给Bob 50元。最终,他们在区块链上记录的交易结果是Alice支付给Bob 50元,减少了多次交易的费用和延迟。
:::
Using a Payment Channel
Bidirectional transfers between 2 participants
- 只要他们的传输净额不超过链上存入的代币总额,他们就可以无限次地进行交易。
- 只有净额的一笔交易会被记录在区块链上,这样可以大大减少交易次数和费用。
- 通过减少链上交易次数,可以最小化交易费用,只需支付一次费用。
如果付款人“过度承诺「overcommit」”并支付给太多人会怎样?
- 例如,链上有5美元,但支付2美元给B和4美元给C,这样总支付额超过了链上的存款。
- 如果一个人的抵押品是为了多个收款人,则无法检测到过度承诺的情况。
- 因此,付款人需要为每个潜在的收款人锁定资金。
- 也就是说,需要为每个收款人设置一个支付通道。
- 他们可以选择最终关闭通道。例如,当没有未完成的链下交易时。
Example
假设Alice和Bob是两个朋友,他们经常相互借钱,但每次都要在区块链上记录交易,这样会产生高额的交易费用。
支付通道可以让Alice和Bob在不需要每次都记录交易的情况下进行多次交易,只有最终的净额会记录在区块链上,从而减少交易费用。
- Alice和Bob在区块链上创建一个支付通道,每人存入10美元。
- 在接下来的一个月里,Alice和Bob进行多次交易。例如,Alice支付3美元给Bob,Bob支付5美元给Alice。
- 最终,Alice和Bob决定关闭支付通道,计算净额。Alice支付给Bob的净额是3美元,Bob支付给Alice的净额是5美元,最终的净额是Alice支付2美元给Bob。
- 关闭通道时,只有这2美元的净额会记录在区块链上。
最终,Alice和Bob只需支付一次交易费用来记录2美元的净额交易,而不是每次交易都支付费用。
Payment Channel Network (Bitcoin)
中本聪「Nakamoto」提出的“高频交易”「high-frequency transactions/trading」概念,旨在通过支付通道网络实现比特币的快速交易。
- 两个或更多的参与方可以反复更新一笔未确认的交易。这意味着在交易被最终确认之前,参与方可以多次修改交易的内容。
- 多重签名:需要收集多个参与方的足够签名才能完成交易。
- 一笔未记录的交易可以在锁定时间之前不断被替换。这利用了NLockTime字段,确保交易在特定时间之前可以被修改。
- NLockTime字段在未花费交易输出(UTXO)中的应用
- 这种设计并不安全:一个参与方可能会与矿工勾结,提交一个非最终版本的交易,从而窃取其他参与方的资金。
CLTV是一种比特币脚本操作码,用于设置交易的锁定时间,确保交易在特定时间之前无法被确认。
CSV是另一种比特币脚本操作码,用于设置交易的序列号,确保交易在特定的区块高度或时间之前无法被确认。
(Major) Payment Channel Networks
闪电网络「Lightning Network」(Poon-Dryja通道)是一种在比特币网络上实现的支付通道网络。
- 它允许用户通过链下的微支付通道进行多次交易,仅在关闭通道时将最终交易结果提交到区块链上。
- 这种方式大大提高了交易速度和降低了交易成本。
- 闪电网络是一种基于支付通道的扩展解决方案,旨在提高比特币网络的交易速度和可扩展性。
- 它通过创建多个支付通道,使得用户可以进行快速、低费用的链下交易。
Use multi-signature
假设Alice和Bob经常进行小额交易,但不希望每次交易都在区块链上进行,因为这样会产生高额的交易费用和较长的确认时间。
支付通道利用多重签名地址和链下交易机制,允许Alice和Bob在不频繁更新区块链的情况下进行多次交易。这不仅节省了费用,还提高了交易速度。
- Alice和Bob创建一个多重签名地址,并将各自的资金存入该地址(Alice存入0.01 BTC,Bob存入0.04 BTC)。
- 他们在支付通道账本上记录各自的初始余额。
- Alice支付0.005 BTC给Bob,支付通道账本更新为Alice 0.005 BTC,Bob 0.045 BTC。
- 他们继续进行多次交易,直到决定关闭通道。
- 关闭通道时,最终余额记录在区块链上,并释放相应的资金。
假设经过多次交易,最终Alice的余额为0.002 BTC,Bob的余额为0.048 BTC。在关闭通道时,这些余额将更新到区块链上,并释放到各自的地址。
What happened off-chain?
- 支付通道账本是在链下更新的。
- Alice 和 Bob 签署更新后的 balance 表
- Each keeps a copy of it
- 爱丽丝可以继续购买,直到余额耗尽。
- 每秒钟的交易数量没有限制。
- 实际限制仅在于通信带宽和延迟
What happened on-chain?
支付通道可以在任何时间关闭。
- 支付通道是一种链下交易机制,允许双方在不记录每笔交易的情况下进行多次交易。
- 关闭通道时,双方需要将最终的交易状态广播到区块链上,以确保资金的正确分配。
任何一方都可以广播最新的链下账本(由双方签名)。
- 无论哪一方都可以将最终的交易状态提交到区块链上,
- 前提是该状态已经得到双方的签名确认。
矿工会验证签名并根据链下账本的汇总结果释放资金。
如果一方未能提供证明(例如,简单地消失了)怎么办?
- 这会导致交易无法完成
- 资金将被永久锁定!如果一方消失或不合作,资金将无法被释放,导致资金永久锁定在支付通道中。
- 我们设置了一个超时机制。超时机制可以防止资金永久锁定的情况发生。如果在设定的时间内未完成交易,系统将自动执行预定的处理方式。
最终的决定权在于提交的证明,假设没有更多的待处理交易(例如,一方消失且不会反驳)。这意味着在没有其他交易的情况下,提交的交易状态将被视为最终状态。
Example
假设Alice和Bob通过支付通道进行多次交易,最终Alice需要将5 BTC支付给Bob,但在交易过程中Bob突然失踪。
- Alice尝试联系Bob,但未能得到回应。
- Alice等待设定的超时期限。
- 超时期限到达后,Alice可以单方面提交交易状态,并附上她的签名。
- 矿工验证Alice的签名和交易状态。
- 矿工根据链上规则释放资金,确保Alice的5 BTC支付给Bob。
假设Alice在超时期限内提交了交易状态,矿工验证后,5 BTC将从Alice的账户转移到Bob的账户,支付通道关闭。
The 3 Phases of A Channel’s Lifetime
一个通道的生命周期通常分为三个阶段。
Establishment (the general n-party case)
- 所有参与方通过在区块链上锁定抵押品,共同打开一个通道。
- 资金只能通过一致同意或预定义的退款条件释放
Transition (the general state-transition case)
- 一方通过签名(Sign)命令(cmd)提出一个新的状态 sᵢ ← T(sᵢ₋₁, cmd)。
- T表示(抽象的)转换函数,例如,转账。
- 所有其他参与方重新计算状态转换,签名并发送给所有其他人。
Dispute/Closure
- 如果一个诚实的参与方在本地超时之前没有收到n个签名
- 它假设对提议的状态存在分歧。
- 诚实的参与方可能会触发第1层争议!
- 在没有其他参与方合作的情况下强制执行新的状态转换。
Example
假设有三个参与者A、B和C,他们希望通过一个通道进行多次小额交易,而不每次都在区块链上记录。
他们决定在区块链上创建一个通道,并锁定一定的抵押品,以便在通道内进行交易。每次交易后,他们需要更新通道的状态,并在交易结束时进行结算。
建立阶段:
- A、B和C在区块链上锁定一定的抵押品,共同打开一个通道。
- 他们约定只有在一致同意或预定义
转换阶段:
- A向B转账10个单位的资金,提出新的状态s₁ ← T(s₀, cmd)。
- B和C重新计算状态转换,签名并发送给所有人。
争议/关闭阶段:
- 如果A在本地超时之前没有收到B和C的签名,则假设存在争议。
- A可以触发第1层争议,强制执行新的状态转换。
Payment Channel vs State Channel
- 支付通道是通道的一种具体应用,用于在参与者之间进行多次小额支付,提高支付效率。
- 状态通道允许参与者在不直接在区块链上记录每次状态变化的情况下进行复杂的状态转换。
False/Allayed Concerns
- 我不想预先为未来的支付预付资金。
- 我不想锁定资金,以至于无法在其他地方使用它们。
- 用户担心每次需要补充资金时都要关闭和重新打开支付通道,这会很麻烦。
- 用户担心他们无法提前预知在特定商店的消费金额。
- 用户可以使用一个支付通道进行多次交易,而不需要为每个商店单独开通通道。
online vs. cold wallet
你常用的支付通道就像你的热钱包/消费钱包。
- 这里将支付通道比作热钱包,表示它是在线的,可以随时进行交易。
- 对比你的“储蓄账户”和你的钱包。储蓄账户类似于冷钱包,更加安全但不便于频繁使用;
- 钱包则类似于热钱包,便于日常交易。
支付通道和热钱包都是在线的,可以随时进行交易,而冷钱包是离线的,更加安全但不便于频繁使用。
Payment Channel Network (PCN)
在支付通道网络中,路由问题「Routing problem」是指如何找到一条最优路径,使得资金可以从一个节点传递到另一个节点。这条路径需要满足资金充足、费用最低和时间最短等要求。
支付通道网络的目标是找到从节点A到节点B的最快且最便宜的路径。这意味着我们需要考虑每条路径的资金充足性、交易费用以及传输时间。
中介节点会收取一定的手续费以转发交易。