commish

在调用最终确认前,锁定路由方的分成。 

代理通过 HTTP 402 向工具支付 0.05 USDC。把它引来的路由方获得 10%,在链上预留,工具无法动用。10 分钟退款窗口结束后,任何人都可以释放,而且只能付给路由方。首批用户是代理。这个流程里没有人类。

非托管、开源。资金托管与支付规则由 Solana 主网上的程序执行;中继方在记录前验证每笔付款。

跟随一笔路由分成

commish · usdc
调用已记录锁定中已支付提前出售
流量
示例:1,000 次付费调用 · 50.00 USDC
路由分成 10%
5.00 USDC
收款方
路由方

10

退款窗口

未预留金库50.00 / 50.00

示例演示,并非真实流量:代理通过一个路由方为 1,000 次调用付款。记录它们以预留路由分成。

USDCSolana mainnetRefund windowReserved on-chainPermissionless releaseEarly payoutPinocchioOpen sourceNon-custodialUSDCSolana mainnetRefund windowReserved on-chainPermissionless releaseEarly payoutPinocchioOpen sourceNon-custodial

程序地址(部署中)

程序体积

9,272 bytes

指令数

6

攻击与流程测试

33

许可证

Apache-2.0

代理按次付费,路由方靠信任收款。

立即付给路由方,就要为失败买单

调用可能失败、超时或被退款。每次收款都付分成的工具,会为之后退回的调用支付佣金。

先扣着分成,路由方只能信任一张表格

如果工具在确认前扣留分成,路由方既没有应得金额的记录,也无法在工具停付时收款。

机器的速度,人工的流程

代理会发起成千上万笔 5 美分的支付。发票、最低提现额和月结都不适用,也没有人来点批准。

工作原理

付款、记录、锁定、释放

01

付款

代理请求付费接口,收到 402 Payment Required。它向活动金库支付 0.05 USDC,并在备注中写明引流的路由方。

02

记录

中继器在链上读取这笔付款并记录。程序按活动费率算出路由方的 10%,预留在独立账户中。

03

锁定

在 10 分钟窗口内,被退款的调用仍可凭链上退款证明取消。窗口结束后,分成即成为应付款。

04

释放

之后任何人都可以释放。资金只能到达路由方的 USDC 账户,账户租金退还给支付者。

保证

工具方无法违反的规则

程序逐条检查,测试逐条攻击。

应付款保持锁定

提取只能动用金库中未为路由方预留的部分。

一笔付款,一份分成

分成地址来自付款签名的哈希,因此分成未结清时程序会拒绝重复记录。结清关闭后,中继方会检查该地址的链上历史并再次拒绝该付款。

只有 attestor 能记录

每个活动指定一个 attestor 密钥,即中继器。金额由活动费率计算,而非调用者提供。

付款无法改道

释放只付到当前收款方的代币账户,且只用该活动的代币。

窗口后不能取消

退款窗口结束后,分成只能被支付。

不依赖本网站

释放无需许可。即使本站下线,路由方仍能收款。

提前兑现

现在把待付分成卖成 USDC

锁定中的分成是某个日期应付的钱。对于退款窗口较长的工具,路由方可以小幅折价卖给买方,买方现在付款、释放时收款,并承担退款风险。

一笔交易完成:买方付钱给路由方,并成为收款方。其他一切不变。

路由方今天收到

48.75

买方释放时收取

50.00

买方年化收益133.7%

面向工具方

  • 通过 HTTP 402 按次向代理收取 USDC
  • 为流量付费给路由方:分成由程序托管,而非任何一方
  • 每个活动只需设定一次分成和退款窗口
  • 付款本身为金库注资:无需预存 USDC
  • 随时提取未预留部分
创建活动

面向路由方

  • 在付款备注中写上自己:commish:<你的钱包>
  • 每笔分成都在链上可见
  • 窗口结束时付到你的钱包
  • 即使工具方不再回应也能收款
查看我的分成

集成

记录一次付费调用

中继器为每笔已验证的付款签署一条指令。订单哈希是活动与付款签名的 SHA-256,因此同一笔付款总是对应同一个分成地址。

// The relayer, after it has read a successful USDC transfer into the vault.
import { recordSaleIx, COMMISSION_LEN } from "./commish/program";
import { createHash } from "node:crypto";
// The order hash is bound to the payment signature; the relayer also refuses a payment whose closed commission was recorded before.
const hash = createHash("sha256").update("commish:x402:" + campaign + ":" + paymentSig).digest();
const { instruction } = await recordSaleIx({
attestor: relayer.address, // the key named by the campaign
payer: relayer.address, // rent for the commission account
campaign,
vault,
orderHash: hash,
orderAmount: 50_000n, // 0.05 USDC paid by the agent, 6 decimals
creator: router, // from the payment memo commish:<router>
lamports: await rpc.getMinimumBalanceForRentExemption(BigInt(COMMISSION_LEN)).send(),
});
await sendAndConfirm([instruction], [relayer]); // your usual send helper

常见问题

活动金库:由活动地址拥有的 USDC 代币账户。只有程序能转出资金,且只能按上述规则。

为代理流量付费给路由方,分成由链上程序托管。

调用在线的 402 接口,或用任意 Solana 钱包创建活动。