Skip to content

资金流 ​

这一页讲钱怎么走:用户付的钱落在哪里、怎么集中、怎么到你的账上、手续费在哪一步扣。

与之相对的信息流讲的是订单状态怎么流转。两页可以对照看: 资金流由你主动驱动,信息流由 HashNut 驱动。

本页出现的名词都在名词解释里有定义。

一句话概括 ​

资金全程只在三类地方停留 —— 收款地址(几十到几百个)→ 分账合约(每条链 1 个)→ 提现地址(1 个),而且从不经过 HashNut 的账户。

注意这是一个多对一再对一的结构:收款地址是一批(数量由你自己决定,建议 50 起), 它们全部归集到同一个分账合约,再从分账合约提现到同一个提现地址。

三步中,第 1 步由用户触发,第 2、3 步都由商户自己发起。HashNut 在整条资金链路上没有任何 一步能单方面转走商户的钱。

三个"钱袋子" ​

收款地址分账合约提现地址
是什么普通链上地址(EOA)智能合约商户自己的钱包地址
谁能动这笔钱商户 + HashNut 各持一半私钥分片,需双方共同签名只能按合约代码执行,无人能任意转出商户完全控制
资金停留时长从用户付款到你发起归集从归集到你发起提现最终归属,不再流动
数量几十到几百个每条链一个每条链一个
谁来管理HashNut 自动分配给订单商户部署商户在开户时指定

第 1 段:用户 → 收款地址 ​

创建订单时,HashNut 从收款地址池里取一个空闲地址绑定到该订单,并把地址返回给你。 用户把 token 转到这个地址,这一段就完成了。

几个要点:

  • 一个订单一个地址,多个订单并行占用多个地址。 这是为什么你需要一批收款地址而不是一个 —— 地址池里有多少空闲地址,就能同时挂多少笔待付款订单。池子空了就创建不出新订单, 所以建议低频大额场景准备 50 个,高频场景 200 个。
  • 资金到账即属于商户。 收款地址的私钥是 2-of-2 MPC 分片,一半在你本机的 keys.db 里, 一半在 HashNut。任何一方单独都签不出转账交易 —— HashNut 拿不走,你也不能绕过合约直接转走。
  • 地址是复用的。 订单结束(成功 / 过期 / 取消)后,地址释放回池给后续订单用。 但释放地址不等于转移资金 —— 钱还留在链上那个地址里,直到你归集。
  • 每个地址上会同时躺着多笔钱。 一个收款地址服务过很多订单,归集前它的余额是这些订单的累计。 这是正常状态,不需要按订单逐笔归集。
  • 所以归集时你面对的是一批地址。 资金分散在几十到几百个地址上是常态,归集正是为了把它们 收拢到一处 —— 这也是下一段要分批处理的原因。

TIP

用户付款后你不需要立刻归集。资金在收款地址上是安全的,可以按天或按周批量归集以节省 gas。

第 2 段:收款地址 → 分账合约(归集) ​

在 MPC Client 的分账合约页点击「归集」,把散落在各收款地址上的资金集中到分账合约。

关键机制:靠 approve,不靠私钥 ​

归集不是由收款地址发起转账,而是分账合约凭事先获得的授权额度(approve)把钱拉过来。

这带来两个结果:

  • 归集交易的签名者是商户钱包,不需要 MPC 协作、不需要 HashNut 在线配合。 即使你的 keys.db 丢了,只要还有商户钱包私钥,已授权的资金依然能正常归集和提现。
  • 反过来,没有授权的 token 归集不了。授权是按 (收款地址, token) 计的, 收一种新 token 前要先用 MPC Client 的「批量补授权」给存量地址补上。

操作特征 ​

项说明
发起方商户,在 MPC Client 手动触发
签名商户钱包私钥直签
覆盖范围一次调用可覆盖多个收款地址 × 多种 token
分批按收款地址分批,默认每批 50 个
空批跳过归集前会先模拟,余额为 0 的批次自动跳过,不白花 gas
是否分账不分账,只是把钱集中起来

具体操作步骤见归集资金。

第 3 段:分账合约 → 提现地址(提现) ​

在 MPC Client 点击「提现」,把属于自己的那部分转到提现地址。分账在这一步才真正发生。

分账怎么算 ​

分账合约按分账比例(share,总和固定为 10000)记账。某个分账人当前可提取的金额是:

可提金额 = 累计总入账 × 该分账人 share ÷ 10000 − 该分账人已提取金额

注意是累计口径,不是按单笔订单结算。你随时提现都不会算错账,多次提现也不会重复领取。

按默认 0.8% 费率:

分账人share累计入账 10000 USDT 时可提
商户99209920 USDT
平台(HashNut)8080 USDT

商户调用提现只能提走自己那一份,平台的部分由平台自己提取 —— 合约层面就是这样约束的, 不依赖任何人的自觉。

钱到哪个地址 ​

到部署分账合约时登记的提现地址,也就是一键开户界面里填的那个。

WARNING

到账地址由合约里登记的提现地址决定,不是发起提现交易的钱包地址。 换一个钱包发起提现,钱还是进原来那个提现地址。

具体操作步骤见提现资金。

手续费(gas)的流向 ​

上面三段讲的是 token 的流向。链上交易还要花原生币(ETH / BNB / MATIC / TRX)作为 gas, 这部分是另一条独立的资金流,全部由商户的钱包承担,HashNut 不代付。

花在哪为什么需要
转给收款地址收款地址要自己发起授权交易,得有 gas
转给 ManagerManager 要发起「把收款地址注册进合约」的交易
商户钱包直接支付部署合约、激活、归集、提现这些由商户签名的交易

转给收款地址和 Manager 的原生币用不完,可以随时通过 MPC Client 的「回收手续费」(sweep) 转回商户钱包。批量创建地址的流程末尾会自动做一次回收。

TIP

接入前请确认商户钱包里有足够的原生币。要接 ETH 和 TRON 两条链,就得同时准备 ETH 和 TRX。 每一步操作前 MPC Client 都会先做费用评估并弹出确认框,不会静默花钱。

特殊情况下资金去哪了 ​

情况资金流向
短款(用户少付)已付的部分照样躺在收款地址上,可以正常归集。订单停在 PAID,生成补款单等用户补齐
长款(用户多付)多付的部分一起归集进分账合约,并按 share 参与分账。HashNut 不会自动退差额,需自行与用户结算
订单过期后用户才付款钱仍然到了那个收款地址,不会丢,仍然可以归集。但地址已被释放,这笔转账不一定能匹配回那笔已过期的订单,需要人工核对
用户转了没授权的 token钱在收款地址上,但分账合约拉不动它。用「批量补授权」给该地址补上这个 token 的授权后即可归集
用户转错链HashNut 无法处理。收款地址在不同 EVM 链上虽然是同一个字符串,但订单和授权都是按链隔离的
keys.db 丢失已授权资金的归集和提现不受影响(只需商户钱包私钥)。受影响的是新增收款地址、补授权、回收手续费 —— 这些需要 MPC 分片

与信息流的关系 ​

两条流是解耦的,只在两个点上相交:

交点说明
收款地址激活地址完成授权并注册进合约后才进入地址池,订单才能用它收款 —— 资金流的准备工作是信息流的前提
订单状态决定地址释放订单进入终态后地址释放回池,但资金不动 —— 信息流控制地址的分配,不控制资金

换句话说:信息流决定"这笔钱算哪个订单的",资金流决定"这笔钱现在在哪、下一步去哪"。 订单状态到了 SUCCESS 不代表钱已经进你的提现地址 —— 那还需要你主动归集和提现。

接下来 ​

  • 信息流 —— 订单状态如何流转、通知如何送达
  • 准备工作 —— 实际把分账合约和收款地址建起来