#payment #user #amount #substrate #creator #account #pallet

no-std orml-payments

允许用户在链上发布保证金支付

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 2022年11月22日

#1071魔法豆

Download history 141/week @ 2024-04-15 7/week @ 2024-05-20 152/week @ 2024-06-03 8/week @ 2024-06-10 165/week @ 2024-06-24 127/week @ 2024-07-29

每月下载 127次

Apache-2.0GPL-3.0-only

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