文档
托管购买
当方案里包含付费条目时,它们会合并成一个托管订单。你的款项由托管方保管,不会直接付给卖家,直到你验收,或验收期结束。如果卖家没有在期限内交付,你会收到全额退款。本页的一切都是测试模式:没有任何真实资金被保管、支付或退还。
测试模式。默认的支付通道是模拟的:余额只是内存里的数字,没有真实资金流动。USDC、USDT 和 BTC 通道目前只能生成支付链接和校验存款,托管合约未经审计,也没有部署。详见支付通道与测试模式。
在哪里可以运行。reuseforge.com 上的托管应用还没有结账功能,所以无法在那里下单:结账和订单即将推出。本页里你能运行的内容,都使用模拟器或你自己的节点,其中的命令和字段已对照节点代码核对过。
订单如何运作
- 报价。你用方案里的付费项创建订单。已签名的订单会记录各项内容和价格、支付通道、费率、仲裁方以及两个期限,之后不能再更改。
- 存款。你把总额付到该通道的托管地址。托管方核对存款金额与订单总额一致后,把订单标记为已注资。
- 交付。每位卖家各自把自己的那一项标记为已交付,并附上访问链接和所交付内容的内容哈希。全部交付后,验收期开始计时。
- 决定。你可以验收;可以什么都不做,等验收期结束;也可以提出争议。
- 结算。放款时,每位卖家收到价格扣除网络费用后的金额。退款时,你拿回全部总额。
免费条目和自建步骤不会进入订单。如果方案里没有要买的东西,就不存在托管。
订单状态
| 状态 | 含义 | 何时离开该状态 |
|---|---|---|
QUOTED 已报价 | 订单已创建,尚未保管款项。 | 托管方确认存款,或买家取消。 |
FUNDED 已注资 | 总额已存入,等待卖家交付。 | 所有项目都已交付、交付期限已过,或买家提出争议。 |
DELIVERED 已交付 | 所有卖家都已交付,验收期正在计时。 | 买家验收、验收期结束,或买家提出争议。 |
RELEASED 已放款 | 卖家已收款(扣除费用)。终态。 | 不再变化。 |
REFUNDED 已退款 | 买家已拿回全部总额。终态。 | 不再变化。 |
DISPUTED 争议中 | 买家提出异议,等待仲裁方。 | 仲裁方选择放款或退款。 |
CANCELLED 已取消 | 买家在付款前取消。终态。 | 不再变化。 |
谁能做什么
这些限制在读取日志时执行,所以每个节点的处理结果都一样。由错误一方签名的步骤会被直接忽略。
| 角色 | 可以做的事 |
|---|---|
| 买家 | 创建订单;在 QUOTED 时取消;在 DELIVERED 时验收;在 FUNDED 或 DELIVERED 时提出争议;放款后评价条目。 |
| 卖家 | 在订单处于 FUNDED 时,把自己的那一项标记为已交付。对订单没有其他操作权限。 |
| 托管方(仲裁方) | 确认存款;裁决争议;订单放款或退款后实际转出资金。在自托管节点上,这个角色由节点运营者担任。 |
| 任何人 | 记录某个期限已过。这只是把时钟已经隐含的状态固定下来。 |
验收期与期限
- 验收期。从最后一项交付时开始计时,默认 7 天。买家创建订单时可以选择其他时长(
accept_window_days),范围是 1 小时到 90 天。如果验收期结束时买家仍沉默,订单就会放款。这样可以保护卖家,避免买家一直不答复。 - 交付期限。从订单注资时开始计时,默认 7 天。到期时只要还有任何一项未交付,订单就会退款。
请留意验收期。验收期一结束,订单即放款,此时再提出争议就晚了。请在窗口关闭前检查收到的内容、运行测试,并把内容哈希与上架信息里的哈希对照。
一个卖家迟交,会让整个订单退款。交付对整个订单而言是“全有或全无”。如果三位卖家已交付而第四位没有,到期后会全部退款。想让各卖家互不影响,请分开下单。
争议与退款
| 情形 | 结果 |
|---|---|
| 某位卖家未在期限内交付 | 自动全额退款,无需仲裁方介入。 |
| 你验收 | 放款,卖家收款。 |
| 交付后你没有任何表示 | 验收期结束时放款。 |
你在 FUNDED 或 DELIVERED 时提出争议 | 订单冻结。仲裁方阅读你的理由(最多 2,000 个字符),并附说明裁定放款或退款。 |
| 仲裁方裁定放款 | 卖家全额收款,扣除费用。 |
| 仲裁方裁定退款 | 你拿回全部总额,不收取费用。 |
仲裁方的裁决是“全有或全无”,没有部分退款,也不按单项拆分。请准确说明你运行了什么、期望是什么、哪里出了问题。目前还没有固定的评判标准。
已知缺口。争议没有超时机制。如果仲裁方一直不回应,订单会一直停在 DISPUTED。架构文档把仲裁池和陪审式裁决列为待做事项,所以现阶段你信任的是单一仲裁方。合约设计里加了一道限制:如果仲裁方在争议窗口(默认 30 天)内一直沉默,任何人都可以按五五开结算该项。这只是设计,还不是运行中的代码。
费用
放款的订单要支付网络费用。自托管节点的默认值是每项价格的 1%,由运营者通过 REPOBLOCK_FEE_BPS 设置。费率在你创建订单时就写入订单。费用从卖家一侧扣除:买家存入的恰好是各项标价之和。每位卖家的净额向下取整到分,余下的就是费用。退款不收费。免费条目没有订单,也就没有费用。本节的金额都是测试模式下的示例。
| 项目 | 付给 | 金额 |
|---|---|---|
| 结账套件,标价 $15.00 | 卖家 | $14.85 |
| 起步 UI,标价 $12.00 | 卖家 | $11.88 |
| 网络费用 | 费用地址 | $0.27 |
| 买家存款 | $27.00 |
费率能到多高,取决于订单在哪里运行。自托管节点只接受 0 到 1000 个基点(10%)的费率才能启动,并会拒绝携带更高费率的订单。在这个范围内,谁运行节点,谁通过 REPOBLOCK_FEE_BPS 决定费率,你存款前订单里就会显示该费率。docs/PAYMENTS.md 里规定的托管合约把费率上限设为 500 个基点(5%),在订单注资时记录当时的费率,之后的调整只适用于新订单。该合约尚未部署,仓库里目前只有它的接口定义(contracts/src/interfaces/IRepoEscrow.sol)。托管应用的费用请见定价。
支付通道与测试模式
托管规则与支付通道无关。通道只决定存款如何描述、如何校验、如何放款。启动节点时用 --rail 选择通道。
| 通道 | 状态 | 功能 |
|---|---|---|
mock | 可用 | 默认通道。内存中的美元余额,能走完整个流程,不涉及任何真实资金。 |
usdc-base | 部分可用 | Base 链上的 USDC。生成供买家钱包使用的支付链接;设置了 REPOBLOCK_RPC_URL 后可以校验存款交易。节点不会发出放款。 |
usdt-ethereum | 部分可用 | 以太坊上的 USDT,同上。 |
btc | 仅链接 | 按美元报价换算,生成比特币支付链接。不校验存款,也不放款。比特币本身无法实现有条件的托管。 |
在非 mock 通道上,除非每位卖家都提供了该通道的收款地址,否则无法创建订单。放款本应由一份面向 USDC 和 USDT 的托管合约完成,其规格写在 docs/PAYMENTS.md 里。它逐项结算,并以记账方式让卖家自行提取,所以某一个收款方被拦截不会拖住其他人。它的源码目前还不在仓库里,也未经审计,没有任何部署。在此之前,稳定币存款会停留在运行托管方的人手里,你等于把款项托付给了对方。
用命令行完成一笔订单
对本地节点操作(搭建方法),使用默认的模拟通道,不会有真实资金流动,并需要已安装 jq:
NODE=http://127.0.0.1:8420
curl -s -X POST $NODE/api/plan -d '{"goal":"RAG chatbot over my PDF invoices with a dashboard and crypto checkout","budget_usd":50}' > plan.json
# 1. 报价:提交方案里的付费项,验收期设为 3 天
OID=$(jq '{paid_items: .recommended.paid_items, accept_window_days: 3}' plan.json \
| curl -s -X POST $NODE/api/orders -d @- | jq -r .order.order_id)
curl -s -X POST $NODE/api/orders/$OID/pay -d '{}' | jq .order.state # "FUNDED"(模拟存款)
curl -s -X POST $NODE/api/orders/$OID/deliver -d '{}' | jq .order.state # "DELIVERED"(以演示卖家身份)
curl -s -X POST $NODE/api/orders/$OID/accept -d '{}' | jq .order.payouts # 卖家收款,外加费用一行如果要提出争议而不是验收,请向 /api/orders/$OID/dispute 提交 {"reason": "..."}。节点运营者则向 /api/orders/$OID/resolve 提交 {"outcome": "release"} 或 {"outcome": "refund"} 来裁决。以上是自托管节点的端点,托管应用的 API 见 API 参考。
托管做不到的事
- 它不会查看交付物的内部。它只记录访问链接和卖家声明的哈希,把内容与哈希对照是你的责任。
- 它无法阻止买家复制已交付的代码。托管保护的是付款,不是保密。
- 它不保证代码能用。它只给你一个检验的窗口,和提出异议的途径。
- 它不会让一份未经审计的合约变得安全。见哪些事情没有保证。
最近更新: