RGB+Tondi 高性能交易系统技术方案

Yosei TsukifuneYosei Tsukifune
2 min read

Hyperliquid 作为专用高性能链上交易所,实现了完全链上订单簿与0.2秒出块,号称处理20万+ TPS。这体现了业界对高频交易性能去中心化透明的双重追求。本方案旨在利用 RGB 客户端验证模型和 Tondi 主链(已完美支持 Taproot)的优势,构建一个中心化撮合、链上结算的交易系统,从架构上全面超越 Hyperliquid。在保持用户资产非托管和可验证的前提下,通过链下撮合与链上批量结算相结合,系统将实现超过 20万 TPS 的撮合性能,并提供完善的防作弊与强制退出机制。

下文将首先对两种潜在的撮合架构路径进行比较,然后详细阐述核心模块设计,包括撮合引擎、链上承诺与清算接口、RGB 状态承诺数据结构、Atlas 图谱节点、双花防御、挑战/退出机制、交易生命周期,以及性能扩展方案等。整套方案模块完整、结构清晰、接口明确,可作为开发实现的直接指南。

设计路径比较:订单簿模式 vs 净额优先模式

在方案设计上,我们提供两种最优架构路径选择:

  • 订单簿撮合模式: 即传统限价订单簿 (Order Book) 模型。撮合引擎维护买卖订单簿,撮合发生时即时生成交易。每笔成交会触发对应资产状态的更新和链上承诺提交。该模式的优点是价格发现连续透明,撮合逻辑成熟;缺点是在高并发下,每笔成交若逐笔上链结算将带来链上吞吐压力,需要结合批处理优化。

  • 净额结算优先模式: 强调交易净额结算的架构。撮合引擎可以继续接受订单簿输入,但并非每笔撮合都立即单独结算,而是周期性地将一批交易按照参与者的净头寸变化汇总,在链上执行批量净额结算。例如,在一个时间窗口内聚合每个用户的净买卖变化,仅提交该周期各用户净变化的状态更新。这类似于分批次统一清算,将多笔交易操作折叠为一次原子结算。其优点是在链上只需提交批次结算,极大降低链上交易次数,提高吞吐上限;缺点是增加了系统复杂度和潜在的延迟,需要精细设计防止运营方滥用净额机制。

综上,两种模式各有侧重。订单簿模式更直接映射传统交易所逻辑,实现难度较低;净额优先模式在架构上更具创新性,通过批处理和净额汇总显著减少链上负担,潜在性能更高。鉴于我们以超越 Hyperliquid 为目标,后文将重点围绕**“链下撮合+链上批结算”**这一思想展开方案,即在撮合层保持高频、在结算层采用批处理/净额,以实现性能和安全的最佳平衡。

撮合引擎结构与撮合逻辑

撮合引擎是整个系统的核心链下组件,负责高频接收订单和撮合成交。无论采用上述哪种设计路径,撮合引擎需从零开始设计,以满足20万 TPS级别的吞吐要求。其主要设计要点如下:

  • 高并发架构: 引擎应使用内存中双端队列或平衡树等高效数据结构维护订单簿,每个交易对的买卖订单按照价格优先级排序。引擎采用多线程/协程并行处理,充分利用多核CPU,以处理海量订单撮合请求。同时通过精细的锁分离或无锁并发结构,避免线程竞争成为瓶颈。

  • 撮合算法优化: 实现价格优先、时间优先的撮合规则。对于限价单,撮合引擎在撮合时需要检索对手方订单簿的顶部订单,完成撮合撮合。为了提升效率,可采用跳表、红黑树等O(log N)检索结构,并利用增量更新减少订单簿操作开销。

  • 订单生命周期管理: 引擎需管理订单的全生命周期,包括订单簿挂单、部分成交、完全成交和撤单。针对订单双花问题,引擎必须确保同一资金不能重复挂单:用户每笔订单的资金锁定在订单簿中,若用户试图重复使用已挂单资金,引擎应拒绝或取消之前订单,以杜绝订单层面的双重花费(详见“双花防御机制”部分)。

  • 撮合输出打包:订单簿模式下,每次撮合成交即时输出成交记录,触发后续链上结算流程;在净额模式下,引擎需在每个批次周期结束时,计算每个参与者在该周期内的净买卖变化(净头寸增减),作为批次结算指令的输入。这要求引擎在后台持续汇总订单成交结果,可采用哈希表按用户累计成交差额。在批次结束时,形成所有用户资产净变化列表。

  • 撮合与结算解耦: 为保证链下撮合高可靠性和低延迟,撮合引擎与链上结算模块解耦。引擎只负责产生撮合结果(成交或净额变动),将其放入待结算队列,由另一个模块负责打包上链承诺。这种解耦架构防止链上操作延迟反作用于撮合,引擎始终以最快速度响应市场。

通过以上设计,撮合层能提供接近中心化交易所水平的吞吐和微秒级撮合延迟。同时,由于所有撮合结果最终都会经过链上承诺,系统保持了去信任化和可验证性。

Tondi 链上承诺与清算合约接口

链上结算层基于 Tondi 主链,实现撮合结果的承诺发布和最终清算。Tondi 主链采用UTXO模型并支持 Taproot/Schnorr,这为设计灵活高效的结算合约提供了基础。我们将在UTXO脚本和多重签名构造上设计链上接口,使之与撮合引擎输出对接。关键方案如下:

  • 加入交易所的锁定输出: 借鉴“Shadowchain”思路,用户加入交易所时,将资金锁定在 Tondi 链上的一个特殊输出中,例如一个用户与撮合服务中心化节点共管的多签名输出。这个输出可以是2-of-2多签,包含用户和撮合服务的公钥。资金进入多签输出后,即标志用户已将该资金托付给交易所合约控制,用于后续撮合结算。在RGB语境下,锁定输出上还会承载该用户持有资产的初始状态承诺。

  • 状态承诺的链上发布: 每当有新的交易批次或单笔交易需要结算,撮合服务将构造一笔Tondi链交易来承载状态更新承诺。根据RGB客户端验证范式,链上交易不直接包含资产转移数据,只保存其加密承诺。具体而言,撮合服务发布的交易将消费先前的锁定输出(或前一状态的输出),并创建新的锁定输出给相关各方,在这些输出中嵌入新的RGB资产状态的承诺值。例如,用户A和B之间成交一笔Asset X和Asset Y的交换,则这笔链上交易会消费A、B旧的状态输出,创建A的新资产X余额承诺输出、B的新资产Y余额承诺输出,等等。通过Taproot的灵活脚本和Schnorr签名聚合,可以将多个承诺输出聚合在一笔交易里,实现原子结算(交易要么全部有效要么不生效)。利用PTLC等技术,甚至可以不显露具体锁定条件就完成原子交换,提高隐私和效率。

  • 清算合约接口: 在链上部署控制合约/脚本,负责验证和执行结算交易的规则。由于Tondi类似比特币,无图灵完备合约,我们通过脚本逻辑确保:结算交易只有在符合特定条件时才能被链上接受。例如,可以规定:**(1)只有交易所撮合服务签名的交易才被视为有效的批次结算提案;(2)任何人都可在挑战期内提供欺诈证明使该交易失效(详见挑战机制);(3)**交易输出中的资产状态承诺必须对应有效的前序状态。实现上,这可能通过Taproot收敛多分支条件:默认分支要求交易所签名和未过挑战期,另一分支允许在挑战期后用户单方面退出。

  • 批量结算与净额实现: 若采用净额批处理模式,链上结算交易会在固定时间窗口执行。例如每隔N秒或每个区块,高度发起一次批量结算交易,整合该周期内所有成交的结果。一笔批次交易可包含大量输入输出,以更新众多用户状态。由于UTXO模型支持并行处理,一笔交易可消耗/生成多个彼此独立的UTXO,实现并行结算的效果。这一设计利用UTXO并行性,将许多用户的资产更新放入单笔原子事务,既保证一致性又减少链上事务数量。

  • 链上费用与性能:需要考虑链上交易的大小和频率。单笔批次交易若包含很多输出,虽然在一条高性能链上仍可接受,但应权衡区块容量。可以对高频交易用户分片为多笔并行结算交易,以避免单笔过大。此外,Tondi主链支持Taproot/Schnorr,可利用签名聚合减少多签开销,并通过Taproot将挑战逻辑藏于默克尔树中,只在需要时揭露执行,从而降低正常路径下的链上数据量。

通过上述链上接口设计,交易所可以在链上发布每次状态更新的加密承诺(Anchor),达到“只用区块链做时间戳和顺序共识,而不暴露具体交易数据”的目的。链上承诺提供确定的交易序列和防双花保障,而实际资产转移细节由RGB验证模型在链下完成。

状态承诺与数据结构设计(含 RGB 状态树)

本系统采用 RGB 协议提供的客户端验证模型来管理资产状态。RGB 的核心思想是:链上只存储状态承诺,具体资产余额和转移细节保存在链下,由客户端自行验证整条状态历史。为支持高频交易需求,我们需设计高效的状态数据结构,尤其是资产状态的组织(“RGB 状态树”)以及跨交易的状态承诺方案:

  • 资产合约与状态碎片: 在 RGB 中,每种资产由一个智能合约标识(通过独特的Genesis),其后续转移状态形成一个**有向无环图 (DAG)**。在我们的交易所场景中,每个可交易资产(如某USD稳定币、BTC映射资产等)都有各自的RGB合同,用户持有资产即意味着拥有该合同中一定数量的状态碎片(UTXO分配)。交易所内的交易会涉及至少两个资产的状态变化。

  • 状态树与Merkle证明: 为高效管理所有用户资产,我们引入状态树,可以采用Merkle树或Merkle DAG 来组织所有用户在某资产合约下的持仓状态。一种方案是构建“用户->资产余额”二维索引的 Merkle 树或Patricia树。每次交易发生时,相应资产树上的两个用户节点余额发生变化,进而更新资产树的 Merkle 根。多个资产的根再汇总成一个全局状态根。当撮合服务提交链上承诺时,提交的就是一个或多个资产合约状态的根哈希值。这类似以太坊账户树的状态根,但这里不在链上维护全局状态,而是由交易所和客户端共同维护。

  • 单用密封 (Single-Use Seals): RGB 中防止状态双花的机制是单用密封:每个状态承诺绑定到某个链上UTXO,一旦该UTXO在链上被花费,则对应的状态输出就不可再次使用。我们延续这一模型:用户资产余额对应一个链上锁定UTXO(如前述多签输出),该UTXO中嵌入了用户的资产状态承诺。每当用户资产状态更新(比如部分余额转给他人),旧的UTXO将被花费,新的UTXO承载新状态承诺。这保证状态层双花不可能发生——任何试图重复使用已消费状态的行为都可被证明为无效。在数据结构上,我们为每个用户维护其持有每资产的最近状态UTXO引用,撮合引擎在撮合时只操作那些未花费的状态项。

  • RGB Schema与验证规则: 定义专门的RGB合约 Schema 来约束交易所内资产的转移规则。Schema可以设定每笔状态转移的验证逻辑,例如:资产总和守恒、交易双方签名验证(可将用户签署的订单作为状态转移的授权凭证)、以及是否允许特定形式的批处理。借助RGB提供的严格类型系统和可验证脚本(AluVM),我们可以在链下验证每笔状态转移符合规则。例如,实现一个“双资产互换”操作类型,确保在一个状态变更中,两种资产的转出量和转入量对应相等价值,并要求包含双方订单签名。这样,客户端验证时就能检查每笔成交的合法性,形成欺诈证明的依据。

  • 跨资产原子交换 (Bifrost协议): 不同资产的RGB合同历史通常彼此独立,但RGB支持通过 Bifrost 多方协议实现跨合同的联合状态变更。这意味着我们可以将一笔交易所撮合的资产A<->资产B交换设计为在链下形成一个多资产的状态转移组合,确保两个资产的状态要么同时更新要么都不更新,从而实现原子交换。Bifrost通常运行于闪电网络通道,但我们也可在中心撮合场景中借鉴,用于实现跨链HTLC/PTLC的原子性。如果资产A在Bitcoin主链、资产B在Tondi链,通过PTLC adaptor签名,可让两边转账要么一起成功要么失败,从而实现跨链交换。本方案中已实现的 HTLC/PTLC 可用于用户从Bitcoin等链跨链充值到Tondi链上的等值资产,或执行与外链的原子交换。RGB 状态模型完全支持这种跨链互操作。

  • 数据压缩与批量承诺: 为在高频场景减少状态更新数据量,我们引入批量状态承诺和压缩技术。例如,多个交易可以共享同一个链上锚定输出,利用Merkle证明区分各笔交易状态的更新(类似Plasma Cash中的UTXO批处理理念)。或者在一个状态转移中聚合多位用户的变更(前提是他们都参与该笔交易的批量结算)。这些技术手段需要精细安排挑战证明方法,但可以进一步减少链上提交的数据,提高TPS上限。

通过上述数据结构设计,系统确保每个用户资产状态的演进都形成一条可验证DAG,节点为状态转移,边为单用封印(UTXO消费)。任一用户只需关心与自己相关的那部分状态DAG和必要的Merkle证明即可验证资产归属,而无需了解全局状态。这使验证开销随自身交易量线性扩展,保证良好的可扩展性和隐私。

Atlas 图谱节点设计(功能、存储、索引、可用性)

由于RGB采用客户自行保存数据的范式,数据可用性同步是系统必须解决的关键问题。本方案引入Atlas 图谱节点,作为中心化撮合之外的分布式数据网络,以确保所有状态更新数据对参与者可用,并防止运营方蓄意隐匿或篡改离线数据。Atlas节点的设计要点如下:

  • 功能定位: Atlas 图谱节点并非参与撮合或共识,而是作为数据中继和存储节点。它们订阅交易所广播的每笔交易的RGB状态更新数据(订单、成交、状态变更),维护一份完整的状态图谱 (state graph) 副本。其主要功能包括:存储所有状态转移DAG片段、建立索引便于按资产或按用户查询历史、在挑战阶段提供证据数据、以及在用户请求退出或同步时提供所需的Merkle证明。

  • 存储模型: 每个 Atlas 节点需要保存多资产、多用户的状态数据,全量数据量可能较大,但由于链上只存哈希,链下数据可以压缩存储。节点可采用图数据库键值存储来保存DAG结构。比如用LevelDB/RocksDB,以状态转移ID作为键、内容为转移详情和引用的前序状态ID,从而能快速重建某输出的历史链路。此外构建Merkle索引:如每个批次结算会生成一个批次Merkle根,Atlas节点存储该Merkle树的内部节点,方便日后出具任何叶子(交易)的存在性证明。考虑到RGB资产“各合同分片”特点,每资产合同的图谱可独立存储,方便并行扩展。

  • 数据广播与同步: 每当撮合引擎产生新的成交并形成状态更新时,撮合服务需将相关离线数据广播给 Atlas 节点和相关用户客户端。这类似于Plasma中要求运营者发布块数据,或Lightning中点对点发送更新。指出若数据私藏会导致用户恐慌和无法证明欺诈,因此本方案规定:撮合服务有义务在提交链上承诺的同时,将对应离线数据向Atlas网络广播。Atlas节点采用P2P网络(可基于libp2p或类似Lightning Gossip协议)互联,接收到数据后相互转发,确保即使有节点离线,其它节点仍持有全量数据。

  • 索引查询能力: Atlas节点需提供查询接口,支持按用户、按资产、按时间范围检索相关状态转移记录。例如,当用户客户端上线后,可以从Atlas查询自上次同步后的所有自己的状态更新记录和必要的证明,以验证自己的资产余额是否一致。为了效率,Atlas可维护用户订阅列表,在有相关更新时主动通知用户客户端。另外,Atlas节点也为挑战者服务:他们可检索可疑状态或验证全局一致性,比如检查某资产的所有转移总和是否守恒等。

  • 可用性与激励: Atlas网络理想上由独立于交易所运营方的节点组成,以增强去中心化和数据可靠性。可设计激励机制,如运行Atlas节点的第三方获得交易所手续费分润或代币奖励,以鼓励足够多节点加入。即使没有强激励,关键用户(大户、做市商)也会自愿运行Atlas节点保护自身利益。Atlas节点的软件需开源,方便外界审计其正确性。

  • 抗审查和防篡改: 数据通过Atlas广播,一旦多个节点收到并存储,即便撮合服务后来试图审查删除,也无法抹去历史记录。节点间可定期比对哈希确保一致。为了防止恶意节点传播虚假数据,每条状态更新都与链上承诺哈希绑定,Atlas节点在接收数据时应校验其哈希与链上公布的承诺值是否匹配,只有匹配的数据才写入存储。此外,可用数字签名让撮合服务对每份离线数据签名,Atlas节点可验签确保数据确为官方发布且未被篡改。

  • 扩展性考虑: 如果交易量极大,Atlas节点存储和带宽压力会上升。可采用分片Atlas网络:按资产或按用户ID将数据划分给不同子集的Atlas节点,或引入数据可用性取样 (DAS) 技术,让节点仅存储部分数据却可验证全局可用性。但这些是复杂的优化,初期Atlas全节点即可运行,后续随着规模增长再引入进阶方案。

通过Atlas图谱网络,系统确保离链数据的持久可用,这是保护用户资产安全和可验证性的基石。即使中心撮合服务停止运行,用户也能通过Atlas获取证明数据提取资产。而对于任何试图作弊的行为,Atlas保存的历史将作为提交欺诈证明的依据。

双花防御机制(资金层、订单层、状态层)

双花(Double-Spend)攻击在该系统中可能出现于不同层次:基础资金层、订单交易层、和状态承诺层。我们需在设计中逐层防御,确保无漏洞可被利用:

  • 资金层双花防御: 资金层指用户在底层链(Tondi或跨链)上的原生资金。这里双花防御主要依赖区块链自身的共识机制。Tondi主链作为PoW/PoS链(假设类比Bitcoin)本身防范UTXO双重支付,因此用户直接在链上资产(如Tondi币或Bitcoin跨链资金)不会被双花。但需注意充值流程:当用户通过HTLC/PTLC从Bitcoin等链跨入Tondi,如果没有完善确认机制,可能出现主链交易回滚导致充值无效。因此,我们要求足够区块确认数后再认为充值有效,或者使用SPV证明等方式验证跨链资金真实性。此外,用户锁定资金进入交易所多签输出后,该输出就受制于合约规则,不允许同时用于两个不同的交易所实例。利用UTXO模型的简单性,可很容易检测并拒绝已锁定UTXO的重复使用。

  • 订单层双花防御: 订单层指用户提交订单和撤销的过程。可能的双花情形:用户试图用同一笔资金下两张互相冲突的订单,或者在订单成交后迅速撤单并重复利用资金。对此,撮合引擎必须严格资金预锁定:一旦订单被接受进入订单簿,对应的用户资金(余额UTXO)即标记为“锁定不可用”,直到订单成交或取消为止。在订单撮合成交后,引擎更新状态前应立即将该订单标记为填充,防止重复成交。同样,撤单流程需原子:如用户请求撤单,必须确保要么在撮合引擎确认撤单成功、释放资金,要么订单已经部分成交则只能撤销剩余量。通过引擎内部的原子性和锁管理,避免订单重复执行或资金重复使用。此外,可采用订单序号和nonce:每个用户每次下单带一个递增序号,撮合引擎和状态验证均检查序号连续性,阻止用户伪造并行的双订单。

  • 状态层双花防御: 状态层指RGB资产状态的更新。防御重点在于确保没有两条并行的状态演进链花费同一前序状态。例如,运营方恶意地从一个用户余额状态派生出两笔转移(可能企图将同一资产分给两人)。RGB通过单用封印天然解决此问题:每个状态UTXO只能被消费一次。若撮合服务试图在链下构造冲突交易,只会产生两个竞争的承诺,它们不可能同时被链上接受——因为对应链上UTXO只能出现在一笔结算交易中。诚然,运营方可能先后发布两笔不同交易企图消耗同一UTXO(这就相当于Plasma链上发布双花块)。对此,欺诈证明机制可以发挥作用:任何观察者(Atlas节点或用户)发现后一承诺花费了已被前一承诺花费的UTXO,即可在链上提交证据。具体做法:提交早先区块中那枚UTXO已被消费的默克尔证明,证明当前结算交易是不合法双花。一旦验证,链上合约将判定运营方欺诈。我们可以设计惩罚措施,如罚没运营方质押等(如果有质押机制),或者至少取消违规交易。在正常情况下,UTXO模型和RGB验证规则已经避免了状态双花的可能,但引入挑战机制使防御更严密。

  • 其他双花场景: 还需考虑订单状态与链上状态不同步引发的问题。例如,用户资金在链上已被退出,但撮合引擎不知道还让订单成交,这会导致引擎以为有资金成交但链上无法结算。对此,需要强制撮合服务在撮合前验证相关UTXO未被提前退出,这可以通过在Atlas或本地维护“退出中UTXO列表”实现。一旦用户触发退出流程(见后文),撮合引擎应将对应订单取消,阻止使用即将退出的资金继续撮合。

多层防御相辅相成,形成闭环安全:区块链共识防资金双花,撮合引擎锁定防订单双花,RGB单用封印防状态双花。正如研究所述,UTXO模型使得防双花和欺诈证明相对简单直接,代价是状态模型相对简单但足以支持订单簿交易场景。配合及时的数据广播与监察,系统能够做到对双花意图的快速检测和反制。

挑战与强制退出机制(挑战窗口、欺诈证明结构)

在一个中心化撮合的链下系统中,必须设计挑战(Challenge)窗口退出(Exit)机制来保障用户在运营方作恶或宕机时的资金安全。我们的方案借鉴Plasma/Optimistic Rollup的思路,结合UTXO模型特点,制定以下机制:

  • 状态提交与挑战窗口: 每当交易所发布链上结算承诺(无论逐笔还是批次),均需遵循“先提交,后生效”的策略。也就是,引入一个挑战窗口期(例如若干区块时间),在此期间该承诺对应的状态更新被视为未最终确定,所有用户和监察人可以对其提出挑战。如果过了窗口无挑战,则承诺状态最终确认为正确,之后用户无法再对这批交易提出质疑。这个机制类似Plasma链中用户对退出提出挑战的反转,我们这里对状态更新本身进行挑战验证。

  • 欺诈证明结构: 若有恶意行为发生,挑战者必须提交足够的证据在链上证明该批次状态存在不合法之处。欺诈证明分为几类:

    • 状态双花证明: 如前述,证明某批次试图使用已用过的UTXO(状态)再次转账。证据为之前某区块中该UTXO已出现的默克尔证明。链上验证看到同一前序状态被两次消费,即可判定欺诈。

    • 余额不守恒/凭证不符证明: 如果运营方伪造交易导致资产平衡不守恒(比如无中生有资产)或未经用户授权转走资产,挑战者可以提交相关交易的原始链下数据包(运营方签名的数据),证明其不符合RGB合约验证规则。例如,找出批次中某一交易没有有效的用户订单签名授权,即可作为欺诈证据。链上合约需要能验证这一证据:这可能通过Taproot公布一个备用分支脚本来验证特定欺诈证明。比如若证明包含交易细节和相应承诺的哈希路径,脚本验证该交易哈希确在承诺Merkle根中且违反了某条规则,则判定欺诈成立。

    • 数据不可得证明: 最棘手的是运营方不提交必要数据(Data withholding)。如果在挑战期内有用户声称未获得自己的某笔交易详细数据,这表明可能存在隐瞒。处理上,可以允许用户在链上提交一个特殊“数据挑战”,此时运营方必须在限定时间内提交该笔交易的离线数据到链上(可能以压缩哈希形式),否则即视为欺诈。由于链上不适合存大量数据,此过程或需借助仲裁服务。但我们的Atlas网络应能避免真正数据丢失,因此此类挑战更多是防范措施。

  • 挑战结果处理: 一旦某挑战证明被链上合约判定有效,应采取措施保护受影响用户并惩罚恶意方。具体策略包括:(1)回滚状态: 将本次批次提交作废,恢复到前一有效状态根。所有用户资产回到之前值,恶意成交无效。这需要在合约中预留回滚或冻结逻辑。(2)惩罚机制: 如果运营方有质押保证金,则没收部分或全部,以赔偿受影响用户或奖励挑战者。(3)链上仲裁交易: 在严重欺诈下,可触发链上“强制退出”(见下文),即允许所有用户无条件提走自己上一次有效状态下的资产,以退出该交易所。

  • 用户强制退出机制: 用户强制退出是应对运营方失联或主动退出需求的关键环节。当用户不再信任交易所,或交易所长时间未提交新状态(可能宕机),用户应能单方面取回资产。我们设计如下退出流程:

    1. 启动退出: 用户在链上提交一笔退出请求交易,引用其当前持有资产的最新状态UTXO。该交易不立即生效,而是进入退出等待状态,并通知撮合服务(通过Atlas广播)。

    2. 等待期与挑战: 和Plasma类似,设定一个退出等待期(challenge period,如几小时)。在此期间,任何人(通常是交易所)如果认为用户提交的状态不是最新有效状态,可提交挑战证明。例如交易所证明用户其实有更新的状态(提交对应承诺和数据),则用户企图用旧状态退出属无效,应取消退出并可能惩罚该用户以防骗退。

    3. 完成退出: 如果等待期无挑战,用户即可在链上完成提现交易,将锁定的资产UTXO解锁到其自主地址上。对于RGB资产,这意味着链上解锁同时携带资产转移的证明,或者需要交易所配合签名。如果交易所失联,用户可以提供自己持有的完整状态历史和证明,链上合约脚本验证其确为最新所有者后允许转出。这需要合约支持验证RGB证明(可能复杂),或简化为提前约定好的退出路径(如交易所为每用户预签一笔最新状态的输出转给用户的交易,在退出时用户公布签名即可生效)。

    4. 批量退出情形: 如果交易所整体崩溃,可能所有用户同时退出。UTXO模型下,每用户有独立的锁定输出,可独立退出,不存在像账户模型那样提取顺序问题。但同时退出会造成大量链上交易压力。可优化为批量退出交易:由某公共合约一并处理所有无争议退出请求。然而为了简单,可以接受极端情况下一人一交易的退出开销。

  • 安全超时与关闭: 如果检测到运营方明显违规且无法信任其继续运行(例如挑战期内被证明欺诈),建议启动紧急关闭流程:暂停新的撮合,所有未完成状态冻结,然后引导所有用户退出。这类似于交易所的“熔断”机制,保护用户资产不再受到进一步风险。关闭后,待问题解决或系统升级后再重启。

挑战和退出机制提供了最后的安全网。即使中心撮合完全不可信,用户资产依然可以通过这些机制拿回。这实现了交易性能与安全性的权衡:平时高效运行,出现问题时有清晰的仲裁退场流程。正是通过挑战期和欺诈证明,Plasma等链下扩容方案才能在理论上保证资金安全;本方案继承并定制了这些精华,使用户对系统的信任从对中心的信任,转化为对密码学证明和链上合约的信任。

交易生命周期及状态迁移逻辑

结合以上模块,我们以用户一次交易为例,说明整个生命周期流程及状态如何迁移:

  1. 用户开户与存款: 用户在Tondi链上创建一笔多签输出,将资金(例如 100 USDT 的RGB资产)锁定到交易所合约地址上,并生成初始状态承诺。链上确认后,用户客户端收到该承诺,证明资金已在交易所控制下。Atlas节点记录了这笔Genesis状态。

  2. 下单: 用户通过客户端提交交易指令(如以某价格买入 BTC)。该订单包含用户签名、订单详情、以及引用其资金状态的ID(UTXO)。撮合引擎验证用户确有足额余额未锁定,接受订单进入订单簿,同时将相应资金UTXO标记为挂单锁定。

  3. 撮合成交: 当有匹配的卖单,撮合引擎撮合生成成交:假设用户买入1 BTC用掉 30000 USDT,对手卖家得到这30000 USDT。引擎将计算双方的新余额:买家BTC增加1,USDT减少30000;卖家BTC减少1,USDT增加30000。随后引擎生成状态转移:这会消费买家原USDT状态UTXO、卖家原BTC状态UTXO,并产生买家的新BTC状态UTXO、卖家的新USDT状态UTXO,以及可能还有买家未成交USDT部分的新UTXO、卖家剩余BTC的UTXO等。所有这些状态转移被打包成一份离线交易数据,计算出新的Merkle承诺(或多个承诺)。

  4. 链上承诺发布: 系统根据策略,选择何时将该成交更新提交链上。如果是逐笔提交模式,则此笔成交完成后立即由交易所签署一笔Tondi链交易,包含上述状态UTXO的消费和新UTXO生成(带承诺)。如果是批量模式,则暂不提交,等待当前批次结束再统一提交。无论哪种,在提交链上前,交易所将成交详细数据广播给Atlas网络和买卖双方用户。

  5. 客户端验证: 买卖双方用户客户端收到成交数据(包括对方签名的订单或其它证明),立即验证:检查金额、价格、订单签名正确,自己的资产余额变化与期望一致,状态转移满足RGB合约规则(资产守恒等)。验证通过后,用户更新自己本地的资产持仓记录为新状态。如果发现问题,可准备在链上挑战。

  6. 链上确认及挑战: 提交到Tondi链上的承诺交易进入区块后,进入挑战窗口期。Atlas节点持续监控链上承诺,与自己存储的数据核对。如发现不一致或未收到对应数据,会尝试出击挑战。正常情况下无挑战,经过窗口后,该批次交易状态finalize。

  7. 订单完成与释放: 一旦成交对应的链上状态确认无异议,撮合引擎标记该订单完全成交。买家原来锁定的USDT资金UTXO已被消费更新,卖家BTC亦然。若有部分未成交余额,引擎会为其创建新的可用UTXO,使之可用于后续下单或提现。订单生命周期结束。

  8. 用户提现: 用户在任意时刻可提出提现请求,将当前持有的新状态UTXO(如买家现在持有1 BTC的RGB状态UTXO)退出交易所。流程如前述:用户发起退出交易,等待挑战期后将BTC提到自有地址上。Tondi链上执行这一转出,则对应RGB状态从交易所合约转移到用户链上地址,这在RGB视角就是又一次状态转移,Genesis是交易所合约->用户。

  9. 异常情况处理: 如果在流程中撮合服务崩溃,例如链上提交迟迟不发,用户可选择发起强制退出。由于没有新的状态提交,用户的上一次状态仍旧有效,退出将安全完成。如果撮合服务恶意提交了错误状态,例如篡改价格导致用户丢失资产,用户会在步骤5验证中发现,立即在链上提交欺诈证明挑战。经裁定成功后,该承诺作废,用户资产回滚上一状态,用户可放心退出或等待服务纠错。

上述生命周期展示了链下速度链上安全的结合:交易撮合与验证主要在链下瞬时完成,而关键结算结果在链上锚定,经过挑战期确保无误后定稿。大部分情况下,用户只需关注链下反馈即可确信交易成功,而链上只是做最后公证。一旦发生纠纷,链上流程介入仲裁。有了RGB提供的细粒度验证能力和UTXO模型保障,这一生命周期闭环能够在性能与安全间取得良好折中。

TPS 极限与扩展路径

目标TPS 20万+ 的实现,既依赖上述架构设计,也需要充分考虑扩展手段。以下从不同角度讨论系统性能上限及未来扩展方案:

  • 批处理与聚合: 如前所述,批量撮合结算是提高TPS的关键。的Lightning Pool实践证明,通过频繁批拍卖汇总,多笔操作可用一笔链上交易执行。我们可以动态调整批次大小与频率:在交易活跃时,每秒钟发布一次批次承诺,每批涵盖成百上千笔交易;在清淡时则拉长批次周期以节约链上交易数。此外,利用多资产聚合能力,一笔链上交易可同时结算多个市场的交易。例如同一批次内,不同交易对的资产交换都写入一个交易,只要参与UTXO彼此不冲突。这样的极限情况可以把每秒真实交易次数远远推高于链上TPS。借助Merkle多根和压缩编码,我们理论上可以在一笔链上交易内证明处理上万笔交易。

  • 并行链上结算: Tondi链本身若支持并行处理(如多线程验证)或者有多个分片链,我们可考虑将不同市场、不同资产的结算分散到不同并行通道。例如资产组A的批次由链上合约A处理,资产组B由合约B处理,互不干扰。这有点类似于应用层分片,能够线性提升系统总吞吐。即使只有单链,UTXO模型天然并行:多个不相关UTXO交易可以同时打包进同一区块不冲突。这意味着我们的多个批次提交如果不复用相同UTXO,也可在一个区块内并行确认,提高确认速度和吞吐。

  • 数据可用性增强: 数据可用性(DA)往往是瓶颈,因为我们不可能将大量交易细节都上链。但Celestia等模块化链提供了一种思路:将大量离线数据存于专门的DA层(带有Erasure Coding),主链只需存状态根。未来,我们可集成类似Celestia的 DA 方案,把RGB离线数据(或其编码块)发布到一个高吞吐DA网络,从而使Atlas节点压力下降、用户也无需信任Atlas即可获得数据完整性保证。另一路径是利用zk证据:例如为每批交易生成零知识证明,在链上验证其正确性,从而省去挑战期。不过在UTXO+RGB模型下生成通用ZK证明较复杂,短期内以优化挑战+DA为主。

  • 性能优化与硬件扩展: 在软件实现上,可进一步优化撮合引擎算法,如使用更低延迟的C++实现、内联汇编、NUMA内存优化等。硬件方面,可以部署集群:将不同市场的撮合分配到不同物理机,采用消息总线同步,整体并行扩展。当然,这需要协调以保证不同机器的状态同步安全,但结合前述Atlas/并行链设计是可行的。另外,还可利用FPGA/硬件加速对签名验证、哈希计算等繁重操作进行卸载,加速链上验证过程。

  • 协议升级与持续改进: RGB和Tondi链本身也在发展。例如,将来RGB可能支持批量验证和更高效的证明格式,或者Tondi链引入新的OpCode(如OP_CTV等)简化批量支付。我们应持续跟进这些改进并升级方案。例如OP_CTV可以一次性锁定一组预定输出,利于实现批量撮合的确定性交易模板。Taproot的进一步应用也可减少批量交易的公开信息,提高隐私和效率。

  • 安全-性能权衡: 在追求TPS时也须警惕不能牺牲安全。例如可选缩短挑战期来提高资金周转速度,但太短可能来不及发现欺诈。我们需要基于实际观察调整,确保既不会因挑战窗口过长影响体验,也不会过短导致安全隐患。另一个例子:批次越大TPS越高,但同时单笔批次失败影响面越广。因此在架构上甚至可考虑小额交易走批次,大额交易即时链上结算的分流,以减少风险。这都是运营策略层面的扩展思路。

综合来看,本方案在理论上能够达到甚至超过20万笔/秒的撮合处理能力,其中大部分交易处理在链下完成,而链上每秒只需提交极少量承诺(远低于20万)。UTXO并行处理和批量原子结算让这种“不可能三角”有了实现基础:既保留去中心化安全,又实现接近中心化系统的性能。未来通过模块化区块链、数据可用性网络等工具的引入,还能进一步扩展性能上限,为大规模金融交易应用提供坚实支撑。


结语:
综上所述,本方案构建了一个基于RGB + Tondi的中心化撮合、链上结算高性能交易系统的完整蓝图。方案涵盖从撮合引擎到链上合约、从状态数据结构到安全机制的各个核心模块,并给出了双花防御、欺诈挑战、数据分发、性能扩展等关键问题的解决思路。通过采用链下高速撮合与链上可信结算相结合的架构,以及UTXO模型和客户端验证技术的巧妙运用,系统在性能安全两个维度均大幅超越当前业界标杆 Hyperliquid,有望提供集中式交易所的用户体验同时确保去信任的资产安全。

本技术方案具有开发可行性:各模块接口明确,逻辑自洽。开发团队可据此分工实现撮合模块、链上脚本、RGB合约、Atlas网络等组件,并进行集成测试。在实现过程中,应根据实际情况调整参数(如挑战期长度、批次频率)并严格审计安全性。但只要按本方案执行,将能够构建出一套高吞吐、低延迟、强安全性的交易系统架构,满足新一代去中心化高频交易的需求,为迈向更广阔的去中心化金融市场奠定基础。

参考文献:

  • 【12】Gate.io研报, 《Plasma的Data Withholding与欺诈证明》 - 关于UTXO模型简化欺诈证明及适用于订单簿交易的说明。

  • 【15】LNP/BP协会, RGB Blackpaper - RGB客户端验证架构与状态演进DAG的原理阐述。

  • 【21】CoinBureau, 《Hyperliquid教程》 - 提及Hyperliquid链上订单簿设计和性能指标。

  • 【23】Lightning Labs, 《Lightning Pool Whitepaper》 - 非托管拍卖市场的链下订单簿和链上批量执行模型。

  • 【18】Bitcoin Optech, “Point Time Locked Contracts (PTLCs)” - 阐述PTLC如何取代HTLC实现更私密高效的原子交换。

  • 【28】Blocmates, 《What is Fuel?》 - 说明UTXO并行交易处理的优势及在高性能订单簿中的应用。

0
Subscribe to my newsletter

Read articles from Yosei Tsukifune directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Yosei Tsukifune
Yosei Tsukifune

月舟 曜誠(つきふね ようせい)と申します。 人体工学エンジニア、クオンツ金融エンジンアーキテクト、暗号技術の専門家として、 現在は Tondiチェーンの主任研究員を務めております。 RGBプロトコル、DAG構造、クライアント検証型スマートコントラクトなど、 次世代の分散型金融インフラの設計と実装に取り組んでいます。 私は、技術とは単なる道具ではなく、文明秩序を記述するコードだと考えています。 本日、このような機会をいただき、大変光栄です。