shadowpaper文档交易 ↗
打开 App交易 ↗
底层机制

架构概览

BNB Chain 上的八个可升级合约负责结算全部交易;链下服务负责签名价格、打包意图与提供只读数据。

链上合约#

shadowpaper 部署在 BNB Chain(BSC)。仓位、余额、赔付队列、SPAPER 铸造与质押等全部交易状态,均保存在八个可升级合约中,另为每个用户部署一个充值代理。

合约作用
Exchange仓位、余额、结算、赔付队列与费用
PriceOracle为当前批次验证签名指数价
BatchExecutor在一笔交易内执行一个区块的签名交易
SessionKeyManager会话密钥的注册、撤销与 nonce
PaperTokenomics计算每笔亏损铸造的 SPAPER
PaperTokenSPAPER 代币(不可转让)
PaperStakingSPAPER 质押与 USDT 分红
DepositProxyFactory部署每个用户的 CREATE2 充值地址

平仓与清算的结算逻辑以外部库(SettleLib)链接。合约地址见「合约地址」。

治理#

所有合约经 TimelockController(时间锁,延迟 24 小时)管理,时间锁由 2-of-3 Safe 多签控制。每个代理各有一个 ProxyAdmin,其 owner 为时间锁。

guardian 角色由同一 Safe 持有,可即时暂停协议,但不能解除暂停、升级合约或修改参数;上述操作均须经时间锁执行。

链下服务#

服务作用
Relayer接收签名意图,执行准入规则,并逐块打包
价格签名者在不持有任何资金的独立机器上签署 Binance USDⓈ-M 指数价
Indexer提供公开只读 API
Keeper执行清算、队列支付、持仓上限调整、分红分发与充值归集

链下服务无法动用用户资金。其提交的每一项操作均由合约重新校验;清算、队列支付与充值归集均为公开函数,任何人都可以调用。

交易流程#

以下步骤以一笔交易(例如以 100 USDT 保证金开立的 100× BTC 多单)为例,说明从签名到结算的过程。

签名
交易者用会话密钥签署开仓意图,不支付 gas。
打包
Relayer 将意图加入下一个区块的批次,平仓排在开仓之前。
推价
批次交易首先为每个市场推入一条签名指数价,PriceOracle 验证签名与时间戳。
结算
Exchange 按该价格逐项独立结算,单项失败不会使整批回滚。
铸造与发布
亏损平仓与爆仓经 PaperTokenomics 铸造 SPAPER,Indexer 将结果发布到 API。

签名价与其结算的全部交易位于同一笔交易内,因此任何交易都不会按未经链上验证的价格结算。

在 GitHub 上编辑此页 ↗更新于 2026-10-29