Interledger协议V4

备注:下文只做简单的翻译,没有做校验
Interledger协议V4

Interledger是一种协议,用于通过不同的支付网络或分类帐发送数据包。ILPv4是以前版本的协议的简化版本,它针对大量低价值数据包(也称为“便士交换”)进行了优化。ILPv4可以与任何类型的分类账集成,包括那些没有为互操作性而建的分类账,它被设计成与各种更高级的协议一起使用,这些协议实现从报价到发送大量价值和分块支付等功能。

概观

设计目标

  • 中立性 - Interledger不受任何公司,货币或网络的约束。
  • 互操作性 - ILP应该可以在任何类型的分类账中使用,即使是那些没有建立互操作性的分类账。
  • 安全性 - 发送者,连接器和接收者应该彼此保护,尤其要隔离他们间接连接的各方构成的风险。连接器不应该能够从发件人窃取资金,并且发件人不应该能够捆绑太多连接器的资金或以其他方式干扰他们的操作。
  • 简单 - 核心ILP应尽可能简单。Interledger堆栈的较低层和较高层存在显着变化的空间,但Interledger层是互操作性需要广泛协议的部分。简化核心可以最大限度地减少人们需要达成的共识并实现更广泛的采用。
  • 端到端原则 - 受互联网的启发,任何不需要核心Interledger协议和连接器网络实现的功能都应构建到网络边缘(发送方和接收方)。

术语

  • 账户 - 两位同行相互建立账户,以跟踪彼此持有的当前义务。
    • 余额 - 账户余额表示发送和接收的ILP数据包的价值与通过基础分类账或支付渠道转账的价值数量之间的差额(例如,如果对等方A签署了100个单位的支付渠道更新B,对等体A通过B发送价值150个单元的ILP包,A从B接收到价值30个单元的ILP包,然后对等体A向对等体B欠20个单元。每个同行在自己的系统上维护帐户余额的记录,或者在某些情况下,一个同行可能相信另一个维护该帐户。如果帐户余额过低,连接器可能会拒绝处理更多的ILP数据包。
    • 资产,规模和精确度 - 每个账户都以单一资产计价,并且同行在它们表达彼此之间的信息量时将同意它们将用于该资产金额的精确度和规模(例如,9个平均值在这些对等体之间发送的ILP数据包中的1000000000的数量表示该资产的1个单位)。当连接器收到一个ILP准备数据包时,它们使用通过其接收数据包的连接的资产类型和规模来确定数据包中金额的含义。
    • 资金和再平衡 - 账户可能是预先资助的(在这种情况下,客户或同行信任连接器获取账户余额的价值)或后期资助(在这种情况下,连接器信任客户或同行的账户金额允许消极)。
    • 与“帐户帐户”的区别 - 请注意,本文档中提及的“帐户”是指Interledger参与者彼此持有的帐户,而不是他们可能持有的“帐户”。总帐帐户或付款渠道仅用于拨款和重新平衡Interledger帐户和分类账不直接属于ILPv4数据包流。
  • 带宽 - 连接器可能会限制某个帐户在给定时间内可以发送的ILP数据包的总值。该限制可以基于连接器信任账户持有者的多少(以账户的最小余额限制为代表),也可以用于防止一个账户将所有连接器的带宽与对等方绑定。
  • 条件和实现 - ILP数据包的保护条件不会因中间连接器而丢失或被盗。ILP准备数据包包含SHA-256哈希形式的条件。当接收者接收到分组时,他们以条件散列的有效原像的形式呈现履行,以执行转移。与早期版本的ILP不同,条件和履行不被认为是由基础分类帐执行,但它们可以帮助同行协调其帐户余额。如果履行是条件的有效原像并且在Prepare过期之前收到履行,则两个同行只应考虑执行ILP数据包(并因此影响其账户余额)。请参阅预共享密钥V2(PSKv2) 协议,举例说明高层协议如何生成条件和履行。
  • ILP数据包 - ILPv4有三种数据包类型:Prepare,Fulfill和Reject,它们大致对应于请求,响应和错误消息。连接器向前准备从发件人到接收者的数据包,连接器将Fulfill或Reject数据包从接收者中继回传给发件人。
  • 分类账 - 任何跟踪账户之间价值转移和账户余额的系统的通称。在Interledger的早期版本中,ILP数据包通过分类账中的转账进行传输。在ILPv4中,分类账主要用于调整参与者之间的余额,以便在参与者之间交换一个或多个ILP分组之后重新平衡其账户。
  • 参与者 - Interledger付款的参与者拥有一个或多个其他参与者的账户,并且承担以下一个或多个角色:
    • 发件人 - 发起付款的一方
    • 接收器 -支付的最终接收者
    • 连接器 - 转发ILP包的发送者和接收者之间的媒介。他们可能通过货币兑换的差价,订阅费用或其他方式获得收入。
  • 付款 - 在本规范中,付款被理解为是指从发件人(付款人)到收款人(收款人)的价值转移。更高级别的协议可以通过发送一系列ILP分组来执行“支付”,其总和等于期望的支付值。
  • 付款频道 - 一种使用签署的债权抵押账户中的资金的方法,而不是分类账转账,可能太慢或昂贵,以重新平衡账户。有关更多详细信息,请参阅ILPv4中的付款渠道
  • 同伴 - 与其他参与者持有帐户的参与者。
  • 传输和应用层协议 - 发送方和接收方通常使用更高层协议来协商每个ILP数据包的条件和其他细节。这些协议还可以处理用ILP包发送的数据的加密和认证。有关更多详细信息,请参阅Interledger体系结构概述预共享密钥V2(PSKv2)协议。

与其他协议的关系

ILPv4分组可以通过对等体之间的任何通信信道发送。账户余额在接受和转发ILP数据包时进行调整,并且可以使用任何可用的手段进行调整,范围从由API触发的分类账转账,到付款渠道的签名更新或实际交付现金或其他货物。

在大多数情况下,ILPv4将与传输层协议(如预共享密钥V2(PSKv2)协议)一起使用,该协议处理ILP条件和履行的生成。ILPv4也可以用于实现更高价值支付的分块和重组的更高级协议。

与以前版本的ILP的区别

  • 专为更小,更均匀的数据包量而设计 - ILPv4仅通过支持低价值数据包来应用多种简化方式。可以通过实施分块支付的更高级别的协议发送更大的金额,但核心网络针对发送大量小型数据包进行了优化。这使得像流动性曲线这样的以前版本的一些更复杂的功能变得不必要,以便表达汇率如何根据数据包数量而变化。低价值的数据包也有助于减少连接器的风险
  • 支付渠道,而非总账托管 - 由于ILPv4针对较小的数据包进行了优化,因此速度和成本比以前的版本更为重要。ILPv4使用分类账或支付渠道来解决双边支付义务,但ILPv4数据包仅在连接器之间发送,而不是通过底层账本本身发送。这使得数据包超时时间很短,因为它们不需要包含较慢分类帐的处理时间,这进一步降低了连接器风险有关更多详情,请参阅为什么无条件付款渠道
  • 转发,未交付 - ILPv4连接器基于其本地交换速率转发数据包,与ILP的第一个版本(连接器尝试提供固定的目标数量)形成对比。现在,发送者可以使用更高级别的协议来指示接收者应该接受的给定分组的最小数量,而接收者可以拒绝少于这个分组的数据包,而不是将内容固定到目标数量。这大大简化了连接器的行为,因为不需要维护整个网络的最新价格信息,并且可以简单地应用其本地速率。如果接收者想要收到的数量不超过一定数量,他们可以拒绝数量过多的数据包,并且发送者可以用较低的金额重试数据包。
  • 引用是应用程序关注 - 连接器只负责转发ILP数据包,不需要为报价实现单独的协议应用程序可以使用测试数据包来确定特定路径的交换率。

为什么无条件支付渠道

分类账与ILPv4整合的唯一要求是,他们必须能够进行简单转账,以便Interledger参与者可以重新平衡账户。如果分类账转账速度快且价格低廉,参与者可以更频繁地结算账户余额,并相互设定较低的信任限额(最小或最大账户余额)。

付款渠道是一种使用签署的债权抵押账户中的资金的方式,而不是通过分类账转账重新平衡账户。两个同行可以签署无限数量的更新到他们的共享付款渠道,无需支付或等待潜在的昂贵或缓慢的分账转账。例如,他们可能会在每个ILP数据包满足后交换签名声明,以将信任限制保持为低于单个数据包的值。当同行完成互动时,或者在某个预定时间,他们向分类账提交最新索赔,以便在两位参与者之间适当地分配持有的资金。

ILPv4可以使用单向或双向付款渠道,但很可能不会使用条件渠道实施散列时间片合同(HTLC)。有条件的支付渠道要求参与者在ILP数据包的超时时间内考虑分类账的较长处理时间。对于发件人来说,短时间的超时是很重要的,可以保证他们的数据包得到快速和明确的解析。短暂的超时还有助于连接器限制恶意发件人可能会限制其带宽或利用“免费期权问题”的风险(确保数据包一直保持到它们到期之前,然后只有当汇率以发送方的利益为准时才能满足)。相比之下,无条件支付渠道不需要更长的超时时间,同时使同行经常重新平衡并最大限度地减少他们的双边信任。

先决条件

  1. 发件人拥有至少一个连接器的帐户
  2. 发送者和连接者在一些共享分类账或结算系统上有资金重新平衡他们的账户。如果分类账支持支付渠道,参与者可能会使单向或双向支付渠道相互打开以重新平衡账户。
  3. 发送者和连接器具有认证的通信信道,通过它们将发送ILP分组,如安全WebSocket(WSS)。请注意,连接器使用其身份验证通信通道与对等方和客户确定每个数据包的来源(数据包不包含源地址)
  4. 发送方和接收方使用更高级别的协议和/或带外认证通信信道来就目的地帐户和分组条件达成一致。他们可能会使用预共享密钥V2协议等协议,该协议建立共享密钥并可用于为许多数据包生成条件。

ILP数据包生命周期

  1. 发件人利用收件人的目的地帐户,商定的条件以及他们选择的金额和到期日期构建ILP准备包。发送者可能包含额外的数据,其格式由上一级协议决定。
  2. 发件人通过其认证的通信通道将ILP准备数据包发送到连接器。
  3. 连接器获取数据包并根据接收的通信信道确定要借记哪个帐户(每个帐户持有者将具有开放连接,例如WebSocket,或者每封消息都将与验证信息一起发送,例如以HTTPS请求)。
  4. 连接器检查发件人是否有足够的余额或积分来发送数据包中指定的金额。如果是这样,则连接器通过数据包的值减少发送者的可用余额。否则,连接器将返回一个ILP拒绝数据包。
  5. 连接器使用其本地路由表和来自数据包的目的地ILP地址来确定将数据包转发到哪个下一跳。连接器可以使用交换订单或其选择的任何其他方法来设置传入和传出资产之间的汇率。
  6. 连接器修改数据包数量和到期时间以应用其汇率并提前移动到期时间戳(例如,每个连接器可以从到期时间减去一秒钟以使自己至少有一秒钟的时间来在步骤10中通过“完成”)。
  7. 连接器将数据包转发到下一跳,该下一跳可能是另一个连接器。随后的所有连接器都会经过步骤3-7(将之前的连接器视为发送方),直到数据包到达接收方。
  8. 接收方根据上级协议规定的内容(例如检查收到的金额是否高于发送方指定的最小值)来检查ILP准备数据包。Receiver还会检查Prepare是否不会将连接器的未解决的余额超过接收器容忍的最大值(这与接收器连接器的最小余额限制相同)。
  9. 为了接受数据包,接收方返回一个ILP Fulfill数据包,其中包含ILP准备数据包中的条件的原像。接收方通过收到Prepare数据包的相同通信通道发送回Fulfill。接收者可以在Fulfill包中包含额外的数据,其格式由高级协议决定。如果接收方不需要ILP准备数据包或者它没有通过其中一项检查,则接收方会返回一个ILP拒绝数据包。
  10. 如果接收方返回了ILP实现,连接器会检查实现哈希是否符合原始条件,并且接收方在ILP准备数据包到期之前将其返回。如果履行有效,连接器将返回与先前连接器相同的ILP Fulfill数据包(使用它们最初接收ILP准备的相同通信通道),并且连接器将接收方的帐户与原始ILP准备数据包中的数量相比较。如果接收方在返回Fulfill之前返回了ILP Reject数据包或Prepare过期,则连接器将ILP Reject数据包返回到先前的连接器(请注意,当Prepare过期时,连接器应返回ILP Reject数据包,即使它们尚未收到来自下一个参与者的响应)。
  11. 发送方检查ILP Fulfill数据包中的preimage是否与Prepare数据包中的条件匹配,并可能读取接收方返回的任何数据。发送方可以保存满足数据包总值的本地记录,以确定他们的连接器欠多少。
  12. 发送者重复从步骤1开始的过程,尽可能多次地传送所需的总量值。

重新平衡帐户

参与者可能有相互之间的预先资助或后资金账户。

在预先资助账户的情况下,发送者向其连接器发送一定数量的数据以覆盖他们将发送的数据包。发件人可以使用基础分类账中的转账,付款渠道更新或任何其他方式向连接器发送价值。发件人可以根据他们信任的连接器为他们转发ILP数据包的程度以及发件人希望发送的数据包的数量,尽可能多或少地预先为他们的账户提供资金。

在后资金账户的情况下,发件人在接收到一个或多个传出ILP数据包的履行后将价值转移给其连接器。如果参与者使用支付渠道,他们可以选择签署支付渠道的更新以覆盖每个发送的数据包的值,从而最大限度地减少连接器必须信任发件人的数量。如果参与者使用其他一些重新平衡手段,例如在较慢的分类帐上转账或交付实物资产,他们可能希望较少地重新平衡帐户,并以较大数额结算。

规范

数据包格式

ILPv4数据包应该使用ASN.1八位字节编码规则进行编码。

类型长度包装

所有ILP数据包都封装在以下信封中:

领域 类型 描述
type UINT8 ILP数据包类型的ID
data 可变长度八位字符串 数据包内容,以其长度为前缀

请参阅此处的ASN.1定义

ILP准备

ILP准备数据包是type12。

amountexpiresAt是固定长度的字段,使得它们可以就地被修改(而不复制数据包的其余部分)通过每个连接器。这些是数据包转发时由连接器修改的唯一字段。

领域 类型 描述
amount 答:64 本地金额,以双边关系资产的最小可分割单位为单位。该字段由每个连接器修改,该连接器应用其汇率并将金额调整为传出帐户的适当比例和精度
expiresAt 固定长度的Interledger时间戳 数据包到期的日期和时间。在转发数据包之前,每个连接器都会更改此字段的值以将到期时间设置为较早的时间。
executionCondition UInt256 它的SHA-256哈希摘要fulfillment将执行由此数据包表示的值的传输
destination ILP地址 接收器的ILP地址
data 可变长度八位字符串 端到端数据。连接器不得修改这些数据。大多数更高级别的协议都会对这些数据进行加密和验证,因此接收方会拒绝数据被修改的数据包

注意: ILP准备数据包中没有fromsource地址。每一跳都必须根据数据包接收到的经过验证的通信信道来确定它们的直接对等或客户来自哪个数据包(借记正确的帐户)此外,如果用例要求接收方向发送方发送ILP Prepare数据包(他们可以使用dataILP Fulfill和Reject数据包中字段向发送方传递响应),则更高级别的协议可以将发送方地址传送给接收方

请参阅此处的ASN.1定义

ILP实现

ILP满足数据包是type13。

领域 类型 描述
fulfillment UInt256 executionCondition来自相应的ILP准备数据包的32字节的原像
data 可变长度八位字符串 端到端数据。连接器不得修改这些数据

请参阅此处的ASN.1定义

ILP拒绝

ILP拒绝数据包是type14。

领域 类型 描述
code 3字符IA5String ILP错误代码
triggeredBy ILP地址 ILP创建此错误的一方的地址
message UTF8字符串 用户可读的错误消息,主要用于调试目的
data 可变长度八位字符串 端到端数据。连接器不得修改这些数据

请参阅此处的ASN.1定义

错误代码

F__ - 最终错误

最终错误表明付款无效,除非详细信息发生变化,否则不应重试。

名称 描述 数据字段
F00 错误的请求 通用发件人错误。 (空)
F01 无效的数据包 ILP数据包在语法上无效。 (空)
F02 无法访问 无法转发付款,因为目的地ILP地址错误或连接器没有到目的地的路线。 (空)
F03 无效金额 该金额无效,例如其包含的精度数字比目的地账本上可用的精度数字更多,或金额大于现有资产的总金额。 (空)
F04 目的地金额不足 接收方认为金额不足,例如您试图用10美元支付100美元的发票。 (空)
F05 错误的情况 收款人产生了不同的条件,无法完成付款。 (空)
F06 意外付款 接收者并不期待这样的付款(数据和目的地地址在这种组合中没有意义,例如,如果接收者不理解所使用的传输协议) (空)
F07 无法接收 受益人(受益人)由于受到限制而无法接受该付款。例如,付款会使收款人超过其最大账户余额。 (空)
F08 金额太大 数据包数量高于连接器愿意转发的最大数量。发送者可能会发送一个较低的金额另一个pakcet。产生这个错误的连接器应该编码他们收到的数量和它们的最大值,data以帮助发送者确定应该有多少数据包量。 ASN.1
F99 应用程序错误 保留用于应用层协议。应用程序可以使用除Application Error以外的名称 由应用确定

T__ - 临时错误

临时错误表明接收方或中间系统出现意外或可能很快解决的故障。发送者应该再次重试相同的付款,可能会在短暂的延迟之后。

名称 描述 数据字段
T00 内部错误 一般的意外异常。这通常表示错误或未处理的错误情况。 (空)
T01 无法访问Peer 连接器具有到目的地的路由或部分路由,但无法到达下一个连接器。稍后再试。 (空)
T02 对等忙碌 下一个连接器由于过载而拒绝请求。如果连接器出现此错误,他们应该通过其他路线重试付款,或者对发件人进行T03: Connector Busy错误回复 (空)
T03 连接器忙 连接器拒绝因过载而发出的请求。稍后再试。 (空)
T04 流动性不足 连接器想要满足您的请求,但发送者或连接器当前没有足够的余额或带宽。稍后再试。 (空)
T05 价格有限 发件人发送的付款太多,并且正在通过分类帐或连接器进行费率限制。如果连接器因速率限制而出现此错误,则应该通过其他路线重试付款或对发件人进行T03: Connector Busy错误响应 (空)
T99 应用程序错误 保留用于应用层协议。应用程序可以使用除Application Error以外的名称 由应用确定

R__ - 相对误差

相对误差表明付款没有足够的金钱或时间保证金。但是,无法确定发件人是否提供了足够的误差范围,或者路径突然变得太慢或流动性不足。发件人可以以较大的安全余量重新尝试付款。

名称 描述 数据字段
R00 传输超时 转移超时,意味着链中的下一方没有回应。这可能是因为你将你的超时设置得太低或者因为看起来比它应该看起来更长。发件人可以再次以较高的到期时间再次尝试,但他们不应该无限期地这样做,或者恶意连接器可能导致他们在不合理的长时间内捆绑他们的钱。 (空)
R01 源数量不足 连接器收到的路径数量太少,无法转发(零或更少)。发件人没有发送足够的钱或汇率发生变化。发件人可以再次尝试更高的金额,但他们不应该无限期地这样做,或者恶意连接器可以从他们那里窃取金钱。 (空)
R02 超时时间不足 连接器无法转发付款,因为超时太短而无法减少其安全余量。发件人可以再次以较高的到期时间再次尝试,但他们不应该无限期地这样做,或者恶意连接器可能导致他们在不合理的长时间内捆绑他们的钱。 (空)
R99 应用程序错误 保留用于应用层协议。应用程序可以使用除Application Error以外的名称 由应用确定

你可能感兴趣的:(Ripple,ILP,跨链)