8个版本 (1个稳定版)
新版本 1.0.0 | 2024年8月1日 |
---|---|
0.13.0 | 2024年6月26日 |
0.12.0 | 2024年6月3日 |
0.8.0 | 2024年3月18日 |
0.0.0 |
|
#1071 在 魔法豆
每月下载 127次
88KB
2K SLoC
支付组件
此组件允许用户创建安全的可逆支付,将资金锁定在商家的账户中,直到链下商品被确认收到。每个支付都会分配一个自己的 法官,可以帮助解决双方之间的任何争议。
术语
- 创建:支付已创建,金额已到达目的地但被锁定。
- 需要审查:支付已被争议,正在等待法官的结算。
- 激励百分比:支付金额的一小部分被保留在保证金中,直到支付完成/取消。激励百分比代表这个值。
- 解决账户:为每个创建的支付分配一个解决账户,此账户有权取消/释放被争议的支付。
- 备注:组件允许通过可选提供一些额外的(有限)字节数据来创建支付,这被称为备注。这可以由市场用来区分/标记支付。
- 取消缓冲区块长度:这是接收方可以争议支付创建者取消请求的时间窗口。
接口
事件
PaymentCreated{来自: T::AccountId,asset: AssetIdOf<T>,amount: BalanceOf<T> },
,PaymentReleased{来自: T::AccountId,到: T::AccountId}
,PaymentCancelled{来自: T::AccountId,到: T::AccountId}
,PaymentCreatorRequestedRefund{来自: T::AccountId,到: T::AccountId,到期时间: BlockNumberFor<T>}
PaymentRefundDisputed{来自: T::AccountId,到: T::AccountId}
PaymentRequestCreated{来自: T::AccountId,到: T::AccountId}
PaymentRequestCompleted{来自: T::AccountId,到: T::AccountId}
外联
pay
- 为指定的货币ID/金额创建支付pay_with_remark
- 创建带有备注的支付,可用于标记支付release
- 将支付金额释放给收款人cancel
- 允许收款人取消支付并将支付金额释放给创建者resolve_release_payment
- 允许指定的法官释放支付resolve_cancel_payment
- 允许指定的法官取消支付request_refund
- 允许支付创建者触发带有缓冲时间的取消操作。claim_refund
- 允许创建者在缓冲时间后索赔支付退款dispute_refund
- 允许收款人争议发件人的支付请求request_payment
- 创建一个由发件人使用accept_and_pay
外部函数完成的支付。accept_and_pay
- 允许发件人满足收款人创建的支付请求
实现
RatesProvider模块为以下特型提供了实现。
类型
PaymentDetail
结构体存储有关支付/保证金的信息。在virto网络中,“支付”类似于保证金,它用于保证资金证明,一旦支付创建者和收款人之间达成协议条件,就可以释放。支付生命周期使用状态字段进行跟踪。
pub struct PaymentDetail<T: pallet::Config> {
/// type of asset used for payment
pub asset: AssetIdOf<T>,
/// amount of asset used for payment
pub amount: BalanceOf<T>,
/// incentive amount that is credited to creator for resolving
pub incentive_amount: BalanceOf<T>,
/// enum to track payment lifecycle [Created, NeedsReview]
pub state: PaymentState<BlockNumberFor<T>>,
/// account that can settle any disputes created in the payment
pub resolver_account: T::AccountId,
/// fee charged and recipient account details
pub fee_detail: Option<(T::AccountId, BalanceOf<T>)>,
/// remarks to give context to payment
pub remark: Option<BoundedDataOf<T>>,
}
PaymentState
枚举跟踪支付可能处于的可能状态。当支付处于“完成”或“取消”状态时,它将从存储中删除,因此不会被状态跟踪。
pub enum PaymentState<BlockNumber> {
/// Amounts have been reserved and waiting for release/cancel
Created,
/// A judge needs to review and release manually
NeedsReview,
/// The user has requested refund and will be processed by `BlockNumber`
RefundRequested(BlockNumber),
}
创世配置
rates_provider模块不依赖于GenesisConfig
许可证:Apache-2.0
依赖关系
~20–35MB
~578K SLoC