一笔交易怎样发生:从个人挂单到原子交换
我们设想的个人市场,最明显的变化可能是:你不必先去一家交易所挂单。你自己的空间保留交易意愿,自己的软件持续找机会,自己的 agent 谈条件。链只在双方同意后,验证并完成能够由它执行的资产交换。
下面跟着 Alice 看一笔交易如何发生。这是一份拟议体验,不是现有产品的操作说明。ArcBlock 的 Exchange 协议是已有基础;把个人状态、发现、报价、代理、钱包和结算接成这样的完整工作流,还需要开发者构建和验证。
Alice 关掉手机,意愿仍然可以被找到
Alice 想用自己持有的同质化 token A 换 token B。同质化意味着同一类 token 按数量计量,不需要为每一枚单独找买家。她在自己的市场 Blocklet 中写下愿意给出的数量、接受的资产、费用上限、等待时间,以及哪些情形必须再次确认。她也可以选择只向某个社区展示意愿。
这些规则和记录保存在自己的 ArcSpace。ARC 上运行的应用维持在线端点,发布必要的意图摘要并接收消息。Alice 的手机可以关掉,公开摘要仍能告诉别人“这里有人愿意谈这类交换”。这类似自己有一个持续有人接待的摊位,却不要求把收款箱和私钥都交给接待员。
持续在线的是服务,不是无限有效的卖出授权。 底价、完整余额和私人偏好不必一起公开。摘要有版本和到期时间;撤回后,应用要停止报价,并让索引更新。ArcSpace 也不能凭一个名字保证永远在线:实际部署仍需要可靠运行、备份与恢复。过期索引只能提供线索,不能证明一笔交易现在仍可成交。
Bob 的 agent 从一个可替换的索引服务发现 Alice,Carol 通过社区目录找到她,做市商也可以主动回应。发现只是第一次接触,双方还要验证消息身份、资产所在链、是否支持相同的交易规则,以及对手要求的凭证。DID 在这里帮助绑定端点和签名身份;它本身不保证对方有钱或值得信任。
Agent 可以跨市场比较,但参考价不等于可成交报价
Alice 的 agent 不必只盯着一个去中心化订单网络。它可以读取 AMM 状态、询问 OTC desk 和做市商,也可以通过允许使用的 API 观察中心化交易所的信息。它运行在链外,能够主动联网,不需要为了“帮 Alice 看一眼价格”而先把价格送进链上 oracle。
这里有三个不同的动作:获取信息、代表用户判断、让链执行已同意的交易。前两件事可以留在 Alice 的软件里。只有当结算规则本身必须依赖一个外部事实,例如“交割时某指数达到多少”,才需要为那个事实设计 oracle 或其他可信证明。把研究价格留在链外,减少的是链上规则对外部数据的依赖,并没有消除价格来源造假、延迟或被操纵的风险。
所以 agent 不会把 CEX 屏幕上看到的一个数字直接当成 Bob 愿意履行的承诺。账户资格、可用余额、交易深度、提现限制和费用都可能改变实际结果。读取 CEX 数据不等于获准替 Alice 下单;如果她明确授权在 CEX 执行,那是另外一条交易路径,其托管和交割风险也要另算,不能并入普通同链 Exchange 的原子保证。
Bob 报出一种方案,Carol 提出另一种数量,做市商愿意提供更短的等待时间。Alice 的 agent 按她自己的规则比较到账量、费用、时间、对手凭证和隐私要求,再与候选对手协商。它可以建议拆单,但多笔独立交换不自动成为一个整体原子交易。它也可以判断目前不值得成交,继续等待。
谈妥以后,不再争论谁先转账
假设 Alice 与 Bob 最终达成同一条 ArcBlock 链上的交换。应用把谈判结果变成具体交易:谁给出哪些资产、数量是多少、谁接收,费用和授权条件是什么。公开的意图摘要不是这份交易,聊天记录也不能代替它。
在现有 ExchangeV2 协议中,双方各有一个资产包。Alice 的钱包核对交易后授权,Bob 的钱包对同一笔交易的内容授权;应用提交完整签名。链按协议验证签名、资产与交易条件,符合条件才一起改变双方的资产状态。用户应等待相应的确认与最终性要求,而不是看到 agent 说“谈成了”就认定交割完成。
如果 Bob 在此之前动用了资产,或者交易不再满足链的校验,交换就不能按原方案成立。Alice 不必先把资产无条件转给 Bob,再指望他补上另一半。失败仍可能带来等待或费用成本,但不应被应用偷偷改成两笔先后独立付款。有效期、撤销和并发占用也必须由实际结算机制承担,不能只在界面写一个倒计时。具体限制见协议技术篇。
这里的原子性属于同一笔、同一结算系统能执行的状态变化。如果 Alice 的 A 在一条链上,Bob 的 B 在另一条链上,就需要额外的跨链协议与风险分析。若 B 是银行转账、房屋或未来服务,链也不能凭双方签名证明线下履约。
换成 NFT、凭证或业务权益,会怎样?
FT 只是容易解释的起点。下面这些都是可以研究的交换对象,但每一项都要明确:链究竟改变什么,谁负责兑现其余部分。
| 拟议场景 | 可以如何组织交换 | 还要解决什么 |
|---|---|---|
| 链上原生 ABT 或其他 FT 换另一种 token | 双方谈好数量,钱包授权协议支持的同链资产包 | 所在链、精度、余额、费用和 token 自身限制;不能把不同链的同名资产混为一谈 |
| NFT 换 token,或 NFT 换 NFT | 报价指向具体资产标识,链验证可转让的所有权 | 真伪、发行者、许可条件;转移 NFT 不自动转移版权 |
| 软件许可、算力额度或其他数字业务权益 | 先验证发行者与转让条件;若系统支持,可让链上权益与付款一起变化 | 服务系统必须承认新的持有人,避免旧凭证继续兑换;没有这种集成就不能声称服务交割原子完成 |
| 用 VC 证明交易资格 | 对手按政策验证认可发行者的资格证明,并尽量少披露个人信息 | 持有人绑定、有效期、撤销状态和法律要求;身份或 KYC 凭证通常不是可出售的商品 |
| 凭证描述的实物或线下权利 | agent 可以发现、核验条件并协商 | 真实权属、登记、托管与争议处理仍需链外机制 |
可验证凭证的价值,是让对手能够检查“谁签发了什么声明、声明属于谁、是否仍有效”。它不是把任何东西变成无条件可交易的资产。W3C 的 VC 数据模型提供表达与验证框架,具体权利是否允许转让、转让后由谁重新签发或承认,仍由业务协议决定。
那么,为什么不直接把这一切写成 Ethereum 合约?因为合约本身不能持续替某个人私下看行情、主动访问网页、保存私人偏好并与别人的 agent 聊天。Ethereum 对确定性执行的要求,使链外信息进入合约需要专门机制;官方 oracle 文档解释了这个边界。ArcBlock 的链也不应该替用户做这些事。
这不是 Ethereum 生态做不到,而是单独一份链上合约不提供完整的个人市场。 Ethereum 应用也能接上链外 agent、个人存储和通信,再用合约结算;0x 与现代 intent 架构已经走出了“所有事都上链”的思路。Uniswap 的池则解决另一件非常实际的事:用共同库存和规则,让交易者不必每次都找到愿意反向交易的人。它不需要为了普通 swap 先完成我们这里的双边谈判。
ArcBlock 的特点,是可以沿着原生 Exchange、DID、ArcSpace、ARC 和 Blocklet 的组合来构建这套体验。它把个人身份、持续状态和应用运行环境一起纳入设计,而不是要求交换合约包办。这个选择可能降低开发者拼接个人市场基础设施的负担,是否真能做到、成本是否更低,还要由实现证明。也完全可以保留这套个人市场层,而选择 Ethereum 或 Solana 作为结算层。
从 Alice 的角度看,最后应该是一件容易理解的事:我的意愿在自己的空间里,我的软件找来方案,我的规则筛选,我的钱包授权。能由链保证的交换交给链;不能由链保证的履约和责任,留在明面上。这才是这份场景希望开发者做出来的体验。