Interledger是一种协议,用于通过不同的支付网络或分类帐发送数据包。ILPv4是以前版本的协议的简化版本,它针对大量低价值数据包(也称为“便士交换”)进行了优化。ILPv4可以与任何类型的分类账集成,包括那些没有为互操作性而建的分类账,它被设计成与各种更高级的协议一起使用,这些协议实现从报价到发送大量价值和分块支付等功能。
ILPv4分组可以通过对等体之间的任何通信信道发送。账户余额在接受和转发ILP数据包时进行调整,并且可以使用任何可用的手段进行调整,范围从由API触发的分类账转账,到付款渠道的签名更新或实际交付现金或其他货物。
在大多数情况下,ILPv4将与传输层协议(如预共享密钥V2(PSKv2)协议)一起使用,该协议处理ILP条件和履行的生成。ILPv4也可以用于实现更高价值支付的分块和重组的更高级协议。
分类账与ILPv4整合的唯一要求是,他们必须能够进行简单转账,以便Interledger参与者可以重新平衡账户。如果分类账转账速度快且价格低廉,参与者可以更频繁地结算账户余额,并相互设定较低的信任限额(最小或最大账户余额)。
付款渠道是一种使用签署的债权抵押账户中的资金的方式,而不是通过分类账转账重新平衡账户。两个同行可以签署无限数量的更新到他们的共享付款渠道,无需支付或等待潜在的昂贵或缓慢的分账转账。例如,他们可能会在每个ILP数据包满足后交换签名声明,以将信任限制保持为低于单个数据包的值。当同行完成互动时,或者在某个预定时间,他们向分类账提交最新索赔,以便在两位参与者之间适当地分配持有的资金。
ILPv4可以使用单向或双向付款渠道,但很可能不会使用条件渠道实施散列时间片合同(HTLC)。有条件的支付渠道要求参与者在ILP数据包的超时时间内考虑分类账的较长处理时间。对于发件人来说,短时间的超时是很重要的,可以保证他们的数据包得到快速和明确的解析。短暂的超时还有助于连接器限制恶意发件人可能会限制其带宽或利用“免费期权问题”的风险(确保数据包一直保持到它们到期之前,然后只有当汇率以发送方的利益为准时才能满足)。相比之下,无条件支付渠道不需要更长的超时时间,同时使同行经常重新平衡并最大限度地减少他们的双边信任。
参与者可能有相互之间的预先资助或后资金账户。
在预先资助账户的情况下,发送者向其连接器发送一定数量的数据以覆盖他们将发送的数据包。发件人可以使用基础分类账中的转账,付款渠道更新或任何其他方式向连接器发送价值。发件人可以根据他们信任的连接器为他们转发ILP数据包的程度以及发件人希望发送的数据包的数量,尽可能多或少地预先为他们的账户提供资金。
在后资金账户的情况下,发件人在接收到一个或多个传出ILP数据包的履行后将价值转移给其连接器。如果参与者使用支付渠道,他们可以选择签署支付渠道的更新以覆盖每个发送的数据包的值,从而最大限度地减少连接器必须信任发件人的数量。如果参与者使用其他一些重新平衡手段,例如在较慢的分类帐上转账或交付实物资产,他们可能希望较少地重新平衡帐户,并以较大数额结算。
ILPv4数据包应该使用ASN.1八位字节编码规则进行编码。
所有ILP数据包都封装在以下信封中:
领域 | 类型 | 描述 |
---|---|---|
type |
UINT8 | ILP数据包类型的ID |
data |
可变长度八位字符串 | 数据包内容,以其长度为前缀 |
请参阅此处的ASN.1定义。
ILP准备数据包是type
12。
的amount
和expiresAt
是固定长度的字段,使得它们可以就地被修改(而不复制数据包的其余部分)通过每个连接器。这些是数据包转发时由连接器修改的唯一字段。
领域 | 类型 | 描述 |
---|---|---|
amount |
答:64 | 本地金额,以双边关系资产的最小可分割单位为单位。该字段由每个连接器修改,该连接器应用其汇率并将金额调整为传出帐户的适当比例和精度 |
expiresAt |
固定长度的Interledger时间戳 | 数据包到期的日期和时间。在转发数据包之前,每个连接器都会更改此字段的值以将到期时间设置为较早的时间。 |
executionCondition |
UInt256 | 它的SHA-256哈希摘要fulfillment 将执行由此数据包表示的值的传输 |
destination |
ILP地址 | 接收器的ILP地址 |
data |
可变长度八位字符串 | 端到端数据。连接器不得修改这些数据。大多数更高级别的协议都会对这些数据进行加密和验证,因此接收方会拒绝数据被修改的数据包 |
注意: ILP准备数据包中没有from
或source
地址。每一跳都必须根据数据包接收到的经过验证的通信信道来确定它们的直接对等或客户来自哪个数据包(借记正确的帐户)。此外,如果用例要求接收方向发送方发送ILP Prepare数据包(他们可以使用data
ILP Fulfill和Reject数据包中的字段向发送方传递响应),则更高级别的协议可以将发送方地址传送给接收方。
请参阅此处的ASN.1定义。
ILP满足数据包是type
13。
领域 | 类型 | 描述 |
---|---|---|
fulfillment |
UInt256 | executionCondition 来自相应的ILP准备数据包的32字节的原像 |
data |
可变长度八位字符串 | 端到端数据。连接器不得修改这些数据 |
请参阅此处的ASN.1定义。
ILP拒绝数据包是type
14。
领域 | 类型 | 描述 |
---|---|---|
code |
3字符IA5String | ILP错误代码 |
triggeredBy |
ILP地址 | ILP创建此错误的一方的地址 |
message |
UTF8字符串 | 用户可读的错误消息,主要用于调试目的 |
data |
可变长度八位字符串 | 端到端数据。连接器不得修改这些数据 |
请参阅此处的ASN.1定义。
最终错误表明付款无效,除非详细信息发生变化,否则不应重试。
码 | 名称 | 描述 | 数据字段 |
---|---|---|---|
F00 | 错误的请求 | 通用发件人错误。 | (空) |
F01 | 无效的数据包 | ILP数据包在语法上无效。 | (空) |
F02 | 无法访问 | 无法转发付款,因为目的地ILP地址错误或连接器没有到目的地的路线。 | (空) |
F03 | 无效金额 | 该金额无效,例如其包含的精度数字比目的地账本上可用的精度数字更多,或金额大于现有资产的总金额。 | (空) |
F04 | 目的地金额不足 | 接收方认为金额不足,例如您试图用10美元支付100美元的发票。 | (空) |
F05 | 错误的情况 | 收款人产生了不同的条件,无法完成付款。 | (空) |
F06 | 意外付款 | 接收者并不期待这样的付款(数据和目的地地址在这种组合中没有意义,例如,如果接收者不理解所使用的传输协议) | (空) |
F07 | 无法接收 | 受益人(受益人)由于受到限制而无法接受该付款。例如,付款会使收款人超过其最大账户余额。 | (空) |
F08 | 金额太大 | 数据包数量高于连接器愿意转发的最大数量。发送者可能会发送一个较低的金额另一个pakcet。产生这个错误的连接器应该编码他们收到的数量和它们的最大值,data 以帮助发送者确定应该有多少数据包量。 |
见ASN.1 |
F99 | 应用程序错误 | 保留用于应用层协议。应用程序可以使用除Application Error 。以外的名称。 |
由应用确定 |
临时错误表明接收方或中间系统出现意外或可能很快解决的故障。发送者应该再次重试相同的付款,可能会在短暂的延迟之后。
码 | 名称 | 描述 | 数据字段 |
---|---|---|---|
T00 | 内部错误 | 一般的意外异常。这通常表示错误或未处理的错误情况。 | (空) |
T01 | 无法访问Peer | 连接器具有到目的地的路由或部分路由,但无法到达下一个连接器。稍后再试。 | (空) |
T02 | 对等忙碌 | 下一个连接器由于过载而拒绝请求。如果连接器出现此错误,他们应该通过其他路线重试付款,或者对发件人进行T03: Connector Busy 错误回复。 |
(空) |
T03 | 连接器忙 | 连接器拒绝因过载而发出的请求。稍后再试。 | (空) |
T04 | 流动性不足 | 连接器想要满足您的请求,但发送者或连接器当前没有足够的余额或带宽。稍后再试。 | (空) |
T05 | 价格有限 | 发件人发送的付款太多,并且正在通过分类帐或连接器进行费率限制。如果连接器因速率限制而出现此错误,则应该通过其他路线重试付款或对发件人进行T03: Connector Busy 错误响应。 |
(空) |
T99 | 应用程序错误 | 保留用于应用层协议。应用程序可以使用除Application Error 。以外的名称。 |
由应用确定 |
相对误差表明付款没有足够的金钱或时间保证金。但是,无法确定发件人是否提供了足够的误差范围,或者路径突然变得太慢或流动性不足。发件人可以以较大的安全余量重新尝试付款。
码 | 名称 | 描述 | 数据字段 |
---|---|---|---|
R00 | 传输超时 | 转移超时,意味着链中的下一方没有回应。这可能是因为你将你的超时设置得太低或者因为看起来比它应该看起来更长。发件人可以再次以较高的到期时间再次尝试,但他们不应该无限期地这样做,或者恶意连接器可能导致他们在不合理的长时间内捆绑他们的钱。 | (空) |
R01 | 源数量不足 | 连接器收到的路径数量太少,无法转发(零或更少)。发件人没有发送足够的钱或汇率发生变化。发件人可以再次尝试更高的金额,但他们不应该无限期地这样做,或者恶意连接器可以从他们那里窃取金钱。 | (空) |
R02 | 超时时间不足 | 连接器无法转发付款,因为超时太短而无法减少其安全余量。发件人可以再次以较高的到期时间再次尝试,但他们不应该无限期地这样做,或者恶意连接器可能导致他们在不合理的长时间内捆绑他们的钱。 | (空) |
R99 | 应用程序错误 | 保留用于应用层协议。应用程序可以使用除Application Error 。以外的名称。 |
由应用确定 |