2026 年 7 月 28 日 14:15 UTC,在主网第 19,978 个区块里,一单位
COMPUTE.V26C2M——一份以 TensorCash 网络难度为标的、经过代币化的期权——从一个人手里转到了另一个人手里,
0.90000000 TSC 反向走了同样一趟。两笔转账发生在同一笔交易里。双方谁都没有在任何时刻拿着对方的钱。
没有交易所账户。没有充值,没有提现,没有订单簿的运营方,没有代管方,没有多签仲裁人,没有任何形式的「可信」第三方。两个人各自跑着 TensorCash 桌面钱包,通过一条加密的点对点通道找到彼此,谈好价格,按下按钮。剩下的事,链自己办完了。
1e923ee8c490081e2f63dea34b4c9e8d81189b30db806652960a9852fd8d05ca
这是一次技术演示,不是要约,也不是招揽。 这里的任何内容都不构成买入、卖出或认购任何工具的邀请,也不构成投资、法律、税务或财务建议。它记录的是一款软件如何运作,场景是两位自愿参与的操作者之间的一次技术演示。截图已做脱敏处理:钱包名称、公钥和挂单标识符都替换成了占位符。
易手的是什么
COMPUTE.V26C2M 是我们上周介绍过的两个期权系列之一——一份
COMPUTE 指数的看涨期权,而 COMPUTE 指数不过就是把网络难度换算成 AI 推理吞吐量来读。它是全额抵押的:100
个单位,每一个都由锁在链上金库里的 1 TSC 支撑;到了定价高度 28,416,链本身会按照公开的公式,把金库在持有方和卖方之间分开。没有预言机,没有需要去追讨的发行方,到期时也没有需要信任的交易对手。
所以,这是一份兑付真实存在、而且由链强制执行的资产。接下来的问题也就顺理成章:你真的能把它卖给别人吗?
在这周之前,诚实的回答是:「能,前提是你们俩都信任某家交易所,或者其中一方先转账,然后祈祷。」现在的答案是:能,直接卖,两样都不需要。
双方是怎么谈成的
1. 卖方开出一份挂单
在钱包的 Trading → Market 标签页里,卖方打开 Spot 构建器,用大白话写下条款:发出 1.00
COMPUTE.V26C2M,收到 0.90000000 TSC。钱包把它变成一份签过名的条款书,然后弹出分享对话框。

这四个按钮就是全部的分发模式,而它们很关键:
- Publish with Proof——公开发布这份挂单,并且附上密码学证据,证明你确实持有你承诺要交付的东西。
- Publish to Market——公开发布,但不附这份证据。
- Export Manually——什么都不发布。把挂单存成文件或复制到剪贴板,用你喜欢的任何方式发给某一个指定的对手方。一张真正私密的场外交易单。
- Decide Later——先留在本地。
卖方选的是 Publish with Proof。
2. 挂单走的是公告板,不是交易场所
所谓「发布」,就是给挂单签名,然后贴到一块由 Nostr 中继承载的公告板上——也就是下图状态栏里那个 Relays: 1/1
指示。
中继是块公告板,不是交易场所。它只负责存储和转发签过名的公告。它不跑撮合引擎,不保管余额,不承担托管,也没法叫停交易、给你的报价重新排序、抢先于你成交,或者把你的币弄丢——因为自始至终,除了你自己的钱包,没有任何东西握着你的密钥或你的资产。所有具有约束力的动作,都直接发生在两个钱包之间。
跑着同一款钱包的买方,会在自己的市场列表里看到这份挂单:

3. 「Funds Verified」——那个绿色对勾
看 Funds Verified 那一列。那个对勾,就是选 Publish with Proof 换来的东西。
挂单上附着 BIP-322 签名:卖方用控制着那几笔装有 COMPUTE.V26C2M
单位的币的私钥,对一段挑战消息签名。收到挂单的钱包,会拿这些签名去对照当前链上状态重新验一遍——这些输出存在、未被花费、确实带着这份资产,而且开出挂单的人有权花掉它们。
这就是*「货在我手里」和「喏,你自己查」*之间的差别。没人需要听卖方的一面之词,这里也不涉及任何信誉体系、评分或者保证金。
反过来也一样:买方的交易请求会带上 TSC 那一侧的证明。
4. 买方发起交易请求
买方点进去,一条请求就落到卖方的屏幕上,同样带着自己的资金已验证对勾。请求会在这里排队,等挂单方处理;挂单方可以对每一条选择 Finalize 或 Reject。

卖方按了 Finalize。之后的一切都是自动的,有意思的密码学也都在这一段里。
难就难在:谁先动手?
把界面剥掉,一笔交易无非是两笔方向相反的付款。如果它们是两笔各自独立的交易,就总得有一方先发出去——而这一方是暴露的。另一方完全可以干脆不付。
行业给出的答案,翻来覆去都是加一个第三方:一家同时托着两边的交易所、一个代管方、一个交了保证金的仲裁人、一座跨链桥。每多一个,你的钱就多一个可能被冻结、被偷走、被司法调取或者干脆丢掉的地方。
TensorCash 的答案不一样:把两笔付款做成同一笔付款——再给两个素不相识的人一套一起签名的办法,让谁都不必先动手。
共签适配器到底是什么
先说普通签名做的事。你给一笔交易签名,就是产出一个只有你的私钥才产得出的数,而且谁都能验。它是一把锁,要么开,要么不开。
适配器签名——有时也叫无脚本脚本(scriptless script)或者「签名加密」——则是一把故意少装了一个零件的锁。
取一个秘密数 t,由它在椭圆曲线上导出一个公开点 T = t·G。T 可以随便公开,t
却没法从它反推出来。接下来,你产出的不是一个完整的签名,而是一个绑定在 T 上的适配器签名。它有三条性质,活全是这三条干的:
- 它可验证。 对手方当场就能验出来:这个适配器签名出自你的密钥,针对的是眼前这一笔交易,锁定的是眼前这一个
T。他们知道它是真东西。 - 它单独拿着没用。 它花不动任何东西,链会拒收。它是一个签名,上面有个洞,洞的大小恰好是
t。 - 只要拿到
t,它立刻就能补全。 谁拿到t,谁就能靠简单的算术把适配器签名变成一个有效的、普通的 Schnorr 签名。反过来同样成立:谁把补全后的签名和适配器签名摆在一起,两者一减就能还原出t。
正是第三条性质,让适配器成了一块能搭东西的积木,而不只是个有趣的把戏:签名可以以一种现在能验、以后才能花的形式发布出去,而花掉它这个动作本身会泄露一个秘密,别的结构可以顺着这个秘密串接上去。在这里,两个钱包用的是适配器这一层今天就能给的东西——让两个素不相识的人分步签同一笔交易,每一步都验过,而且直到最后一步之前,谁手上都没有拿到任何能用的东西。
实际怎么跑起来
卖方按下 Finalize 之后,两个钱包实际做了下面这些事。钱包日志把它们编号为 phase 0 到 phase 4;整个过程跑了大约两秒。
Phase 0——一笔交易,两边一起搭。 两个钱包不是各建一笔付款,而是协作着建同一笔交易。卖方钱包先起草自己这一侧——把那一个单位的
COMPUTE.V26C2M 发到买方地址的那个输出——然后把草稿发过去。买方钱包在上面补进自己的币,以及把 0.9 TSC
付回给卖方的那个输出,再发回来。每一方只贡献自己这一侧,这一点很要紧:只有真正持有某项资产的那个钱包,才知道怎么构造出对它的有效花费。
拿回草稿后,卖方钱包不是选择相信,而是去查。它逐一确认自己的每个输入都还在、都没被改动,并确认合并后的交易哈希出来的值和双方预期一致,然后才采纳买方那一版。
到这一步,交易是完整的、正确的,而且一个签名都没有。双方都能读到它的每一个字节。谁都广播不了它。
Phase 1——证明你是谁。 每一方都用控制着自己即将收款的那个地址的密钥去签一段挑战——还是 BIP-322。这补上了「有个人在这条通道上跟我说话」和「拿钱的这一方就是跟我谈价的那一方」之间的缺口。
Phase 2——nonce。 Schnorr 签名要求每个输入都用一个全新的随机 nonce,而在多方会话里,这些 nonce 必须在任何签名露面之前就定下来并交换完毕——否则最后选 nonce 的那一方就能左右结果。两个钱包各自生成自己的 nonce,公布公开的那一半,再把对方的合并进来。
Phase 3——适配器部分签名。 现在每个钱包针对自己的输入产出适配器签名,绑定在本次会话的适配器点上,然后发给对方。双方各自检查对方的签名是否针对桌上这笔确切的交易、格式是否正确。到这里,双方都知道这笔交易的签名已经覆盖齐了——也都知道它仍然是死的。这里没有任何东西能广播出去,任何一方收到的东西也都不足以让他们拿走什么。
Phase 4——补全。 适配器秘密被代入,补全后的签名交换并合并,剩下那几个普通输入也签好,交易随即发往网络。十分钟后,它进了第 19,978 个区块。
安全到底从哪来
这里值得说准确一点,因为这个区分很重要。
原子性来自结构本身。 只有一笔交易。买方的 TSC 和卖方的期权在同一个对象里移动,被同一套规则校验,进入同一个区块。没有先后顺序,没有「谁先动手」,也不存在一条腿已经结算、另一条还没结算的时间窗——这不是因为双方表现良好,而是因为链根本没有办法接受半笔交易。
而让两个陌生人走到这一步的,是那套流程。 每一步都是验出来的,不是信出来的:合并后的草稿逐个输入检查,身份用 BIP-322 证明,nonce 在任何签名露面之前就先承诺好,每个适配器签名都对着它声称覆盖的那笔确切交易验过。自始至终,两个钱包谁都没有把对方单独就能用的东西交到对方手上。
有一层保护是现成的,这一次没有用上。 钱包还实现了一种锁步揭示:在放出最终签名之前,双方各自先对自己即将发布的那个签名的哈希做出承诺。它的作用,是防止一方看到对手方补全后的签名、却扣着自己的不放——那样这一方手上就握着一笔完全有效的交易,接下来几分钟市场往哪边走,他就可以决定是广播还是按住不动。这等于白得了一个免费的期权。这笔交易,两个钱包是以
reveal_lockstep: false 协商的,流程日志里明确记录了这次跳过。
这属于公平交换层面的改进,不是托管上的窟窿。任何一方都偷不走东西,任何一方也造不出只结算一条腿的结果;能出现的最坏结果,是流程卡住,双方各自原封不动地留着开始时的东西。在自动化路径里把它默认打开,是显而易见的下一步——我们宁愿把这话说出来,也不愿让一张漂亮的示意图暗示它已经做到了。
两个钱包是通过什么通道说话的
上面这些消息往来总得有个地方发生,而且这个地方绝不能让窃听者有机会把自己冒充成其中一方。
两个钱包会建立一个共签会话。先跑一次 SPAKE2 口令认证密钥交换,用它导出的秘密去给一条 Noise 通道(NNpsk0,X25519
/ ChaCha20-Poly1305 / BLAKE2b)配密钥。SPAKE2
要做的事,是在共享秘密又短、又能靠人手打出来的前提下,仍然让中间人(machine-in-the-middle)无从下手;握手结束时,会向两位用户展示同一串短认证字符串——五个单词,两边屏幕上必须一致,谁都不能在这之前往下走。
底下的传输是一个普通的 WebSocket 会合中继,它被刻意做得毫无看点:就是一个带房间号的信箱,只看得到密文。上面那套流程里的每一份 PSBT、每一个 nonce、每一个签名,都是端到端加密地从它身上过去的。
链上看到的是什么
一笔交易。三个输入,五个输出,487 vB,手续费 2,705 sats。
| 组成 | 是什么 |
|---|---|
1 × COMPUTE.V26C2M | 交付给买方 |
1 × COMPUTE.V26C2M | 资产找零——同一笔币里卖方剩下的那一个单位 |
| 0.90000000 TSC | 付给卖方 |
| 另外 2 个输出 | 原生 TSC 找零,两边各回一笔 |
在 14:15:40 UTC 确认于第 19,978 个区块,9f0e2f53…c56d873a。
注意这份清单里没有什么:没有代管输出,没有时间锁退款分支,没有哈希原像,没有多签,没有第二笔交易,链上完全没有留下谈判的痕迹。在网络看来,这就是一笔普通的 Taproot 花费,因为它本来就是。所有的巧劲都在签名是怎么做出来的这件事上,而这部分不占一点区块空间。这就是「无脚本」的含义,也是这套做法除了安全之外还便宜、还私密的原因。
为什么这不只是一笔小额交易
TensorCash 已经能把一些在别处很难代币化的东西代币化:以网络自身难度为标的的期权、由共识结算的差价合约、回购、远期。这些工具有多大用处,取决于你进得去、出得来的能力。
这笔交易把这个环闭上了。那个用来挖矿、保管你的密钥、开立合约的钱包,现在还能点对点地交易它们,结算是终局的,而且没有结算风险——而且这套机制是通用的。Spot 是第一个在主网上跑通全流程的;Market 标签页里除了它,还并排摆着 Repo、Forward、Option 和 Difficulty,它们底下共用同一套适配器流程。
卖不掉的资产,只是一张凭证。能安全地、不用向任何人请示就交到陌生人手里的资产,才是一个市场。
这个市场在 2026 年 7 月 28 日 14:15 UTC 开张,价格是 0.9。
仅为技术演示。不构成买入或卖出任何工具的要约、招揽或推荐,也不构成投资、法律、税务或财务建议。点对点交易有风险,包括全部损失;你自己的密钥、你自己的交易对手、你自己的合规处境,都由你自己负责。截图中的钱包名称、公钥和挂单标识符均已脱敏。
本文由 Imosuke Takakuni 以化名撰写。