开发者 · 私有 OTC
用代码将一笔 USDC 存款限定给一个买方钱包。
私有 OTC 把一笔公开存款变成单一买方路线。当你的产品已经知道交易对手时,它正是合适的工具:工资发放式的付款、协商好的交易,或已知买方的结算。
01
创建一笔受限存款
- 1调用 offramp(walletClient, { amount, platform, currency, identifier, otcTaker })。
- 2SDK 先创建存款,再为 otcTaker 钱包附加一个白名单钩子。
- 3从结果中读取 otcLink,并将其发送给已批准的买方。
- 4除 otcTaker 外的任何钱包,在能够发起成交之前都会在链上被拒绝。
02
管理现有存款的限制
| 辅助函数 | 作用 |
|---|---|
| enableOtc(walletClient, depositId, taker) | 将一笔现有存款限定给一个买方钱包 |
| disableOtc(walletClient, depositId) | 解除限制,让存款重新对公众开放 |
| getOtcLink(depositId) | 为一笔受限存款构建可分享的买方链接 |
03
为什么需要不止一笔交易
EscrowV2 的 createDeposit 不接受白名单参数,因此 SDK 会在存款创建之后,用一笔后续交易附加该钩子。该限制由 Base 合约强制执行,而非由 UI 或链接强制,这就是为什么即便某个未获批准的钱包拿到了链接,也会在链上被拒绝。
链上强制执行
把守存款的是白名单钩子,而非链接。
OTC 链接只是便利。真正的保护是附加在 Base 存款上的预意图(pre-intent)钩子。
createDeposit 不接受白名单参数,因此该钩子在一笔后续交易中附加。
EscrowV20x777777779d229cdF3110e9de47943791c26300Ef存款与钩子附加
白名单钩子0xda023Ea0d789A41BcF5866F7B6BBd2CaDF9b79B8拦截未获批准的钱包
买方链接otc.usdctofiat.xyz/d/<escrow>/<depositId>一个买方,一个 URL
Keep exploring
Common questions
我如何用代码把一笔存款设为私有?
创建存款时向 offramp() 传入 otcTaker,或对现有存款调用 enableOtc。SDK 会附加一个链上白名单钩子,使只有该买方钱包能成交,并返回一个可分享的 otcLink。
之后可以更换已批准的买方吗?
可以。用 disableOtc 解除限制,或用新的 taker 重新运行 enableOtc。每次更改都是一次链上更新,新买方必须使用由此生成的存款链接。
私有 OTC 能消除支付应用风险吗?
不能。它限制的是谁能成交该存款。法币环节仍通过所选支付应用进行,并受该应用的限额、审查与撤回机制约束。