Mixin Network 代码库技术解读

Viewed 28

Mixin Network 代码库技术解读

基于 MixinNetwork GitHub 组织下全部 93 个仓库的源码分析。其中 46 个为 Mixin 原创代码库,47 个为第三方依赖的 fork(如 badger 数据库、Solana SDK、Signal Protocol 等)。分析截止 2026 年 7 月 31 日。


一、仓库构成概览

1.1 原创代码分类

类别 数量 主要仓库
核心系统 10 mixin, safe, multi-party-sig, governance, trusted-group, ocean.one, computer, tip, nfo, mips
SDK(6 语言) 12 Go/JS/Kotlin/Node.js/Swift/Rust/Dart 客户端及 Web3 适配
终端应用 5 android-app, ios-app, flutter-app, desktop-app, mixin-wallet
应用与服务 12 bot-manager, supergroup, donate.cafe, mvm.app 系列, 文档站点
智能合约 2 mvm-contracts, safe-contracts
其他 5 asset-profile, audits, developer-competition 等

1.2 仓库活跃度

截至 2026 年 7 月 31 日,各核心仓库最近提交情况:

仓库 最近提交 提交内容
mixin 7/31 v0.19.3:移除 ghost key duplication fork hack、批量 snapshot 写入、大型事务分片
flutter-app 7/31 v5.5.1:Linux 中文输入修复
bot-api-go-client 7/30 依赖 uuid 升级至 v5.5.0
safe 7/23 v0.26.0:ETH 交易签名前验证、轮询间隔缩短
computer 7/27 v0.8.0:Solana token2022 支持
multi-party-sig 7/18 持续维护,密码学模块更新
tip 7/3 身份协议维护

二、系统架构

2.1 四层结构

Layer 3   ┌─────────────────────────────────┐
          │  ocean.one / Pando / 4swap / KTX│  ← 应用层
Layer 2   ├─────────────────────────────────┤
          │  trusted-group 框架 + Safe 多签  │  ← MTG 协议层
Layer 1.5 ├─────────────────────────────────┤
          │  governance (节点治理)           │  ← 经济纽带
Layer 1   ├─────────────────────────────────┤
          │  multi-party-sig (CMP+FROST)     │  ← 密码学基础
Layer 0   ├─────────────────────────────────┤
          │  mixin (DAG 共识 + UTXO 结算)    │  ← 共识引擎
          └─────────────────────────────────┘
  • Layer 0 (mixin):提供共识、UTXO 结算和链上存储。不执行智能合约。
  • Layer 1 (multi-party-sig):提供 CMP 和 FROST 两套门限签名协议,被 Safe 和 Computer 调用。
  • Layer 1.5 (governance):节点质押、惩罚和奖励分配。
  • Layer 2 (trusted-group + safe):MTG(Mixin Trusted Group)框架为 dApp 提供去信任化的多签执行环境。Safe 是基于 MTG 的 MPC 多签钱包。
  • Layer 3:面向用户的应用,包括 ocean.one DEX、Pando/4swap 等 AMM。

2.2 与 EVM 链的架构差异

Mixin Kernel 不包含智能合约引擎。对比:

Ethereum Mixin
共识层 Gasper (LMD-GHOST + Casper FFG) DAG + Batch + PreCommitments
执行层 EVM (合约执行) 无(仅转账结算)
合约平台 Layer 1 原生 最初 MVM(独立 EVM 链),后转向 Computer(Solana 侧)
账户模型 Account UTXO
地址格式 0x... (20 bytes hex) XIN... (base58, 双 SHA256 checksum)
多签 合约(Gnosis Safe) MPC 门限签名(CMP + FROST)

三、共识机制

3.1 三种共识模式

Mixin Kernel 经历了三种共识模式的演进:

模式 消息类型 活跃时期 工作机制
v1 Single 100-104 2019-2023 每笔交易一个 snapshot,逐笔共识
Batch 150-155 2024-2026 批量打包,每批铸币 89.88 XIN
PreCommitments 160 2026 年 7 月起 预提交 + 批量写入单一 snapshot

PreCommitments 模式于 2026 年 7 月 30 日上线,提交记录为 d4d9a76("handle badger txn too big on batch transactions persistence")和 7bf8dc3("batch all transactions write in a snapshot")。切换的直接原因是 Batch 模式下 Badger 数据库事务体积过大,需要在一次 snapshot 中批量写入所有交易。

3.2 节点网络

参数 数值
创世节点数量 27
节点质押 13,439 XIN(可通过 governance 调整)
共识周期 (Kernel) 700 秒
P2P 节点发现 UDP 端口 5850
Kernel RPC TCP 端口 6860
可用的 Kernel RPC 节点 rpc-mixin.exinpool.com, mixin-node-02.b1.run:8239

3.3 版本历史中的链重置

Kernel 的 CHANGELOG.md 记录了以下版本相关事件:

  • v0.1: "old snapshot data must be removed"
  • v0.14: "old snapshot data must be removed again"
  • v0.17 (2023 年 10 月): Genesis reset — 旧主网交易历史全部丢弃

当前链上数据从 v0.17(2023 年 10 月)开始累积。code 中有针对 v0.1 以前数据的特殊处理(if migration.Version.Compare(versionZero) < 0)。


四、密码学实现

4.1 门限签名协议

Mixin 在 multi-party-sig 仓库中实现了两套门限签名协议:

CMP (CGGMP21)

  • 基于 2021 年 CGGMP21 论文的 5 轮交互式 ECDSA 门限签名
  • 用于 Safe 多签钱包的资产保护(2/3 签名 + 1 年 timelock recovery)
  • 支持 KeyGen、ReSharing、Signing 完整流程

FROST

  • Schnorr/Taproot 门限签名
  • BLAKE3 确定性 nonce 生成
  • 支持 2-of-N 和 m-of-n 配置
  • 用于 Computer 的 Solana 桥(三层签名:GG20 协调器 → 2/2 → m-of-n session)

4.2 密钥派生

spend_seed (32 bytes)
    ↓ SHA512 + clamp
spend_scalar (32 bytes)
    ↓ curve25519.ScalarBaseMult
spend_public (32 bytes Ed25519)

view_private = DeterministicHashDerive(spend_public)
ghost_private = spend_scalar + HashScalar(view_private * mask, outputIndex)

Ed25519 到 Curve25519 的转换使用 PrivateKeyToCurve25519 / PublicKeyToCurve25519 标准方法(SHA512 派生 + clamp)。X25519 密钥交换使用标准 curve25519.X25519() 函数。

4.3 PIN 加密机制

Mixin 有两套独立的 PIN 验证路径:

Messenger API Safe API
加密方式 X25519(pin_token, session_key) X25519(session_private, server_public)
PIN 内容 6 位用户自设 PIN hex(spendPubKey + BigEndian(counter))
限流 独立 共享(5 次连续错误 = 24 小时冷却)

Safe API 的 PIN 加密算法(bot-api-go-client/pin.go:25-83):

  1. Ed25519 密钥转换为 Curve25519 格式
  2. X25519 ECDH 得出 32 字节共享密钥(直接作为 AES-256 密钥)
  3. Payload = bytes.fromhex(pin)[40B] + LE64(timestamp) + LE64(iterator) + PKCS7 padding
  4. AES-256-CBC 加密,随机 16 字节 IV 前置
  5. base64 RawURLEncode 编码

Bot 的 PIN 由 RegisterSafeWithSetupPin 确定(safe_user.go:19-35):hex(spendPublicKey[32B] + BigEndian(counter=1)[8B]) = 80 个 hex 字符。


五、UTXO 模型与 Ghost Key

5.1 UTXO 结构

Mixin 采用 UTXO 模型。每笔交易的输出包含:

  • ghost_key:一次性公钥,由接收方的 view_private 和掩码派生
  • mask:用于派生 ghost_key 的随机因子
  • amount:以资产 ID 索引的金额映射

Ghost key 机制使链上观察者无法从地址直接关联到交易接收方,与 Monero 的 stealth address 原理类似。

5.2 Ghost Key 唯一性校验

Kernel 在 common/validation.go 中执行输出校验:

ghostKeysFilter := make(map[crypto.Key]bool)
for _, o := range outputs {
    for _, k := range o.Keys {
        if ghostKeysFilter[*k] {
            return fmt.Errorf("invalid output key %s", k.String())
        }
        ghostKeysFilter[*k] = true
    }
}

同一交易中,不同 output 的 ghost_key 不能重复。

5.3 遗留代码

2026 年 7 月 31 日的提交 8f0fb5d("remove the legacy network ghost key duplication fork hack")从 storage/badger_utxo.go 中移除了一个允许重复 ghost key 的逻辑。此提交修改了 5 个文件(storage/badger_transaction.gostorage/badger_utxo.go 及 3 个测试文件),净删除了 10 行代码。


六、Safe 多签钱包

6.1 架构

Safe 是一个基于 MTG 框架的 MPC 多签钱包。三层角色:

角色 职责
Signer 持有 MPC 密钥分片,参与门限签名
Keeper 持有 MPC 密钥分片,协调签名过程
Observer 监听链上事件,触发签名请求

6.2 Safe 合约

Safe 支持多链资产,通过 safe-contracts 仓库中的 Solidity 合约部署在 Ethereum 上。合约使用 Gnosis Safe 的 singleton factory 模式部署。

6.3 Safe API 端点(部分)

端点 说明 需要 PIN
GET /safe/multisigs/{id} 查询多签交易详情 -
POST /safe/multisigs/{id}/sign 签名多签交易 -
POST /safe/multisigs/{id}/cancel 取消多签交易 -
POST /safe/multisigs/{id}/unlock 解锁多签交易
POST /pin/verify PIN 验证
POST /pin/update PIN 更新

七、Computer 执行层

7.1 从 MVM 到 Computer

Mixin 最初通过 MVM(Mixin Virtual Machine)提供智能合约支持。MVM 是一条基于 Quorum(JPMorgan 的以太坊企业版)的独立 EVM 链。合约仓库 mvm-contracts 包含 Registry.sol、Bridge 和 Uniswap V2 fork。MVM 相关仓库(mvm.appmvm.devhelp.mvm.appbridge.mvm.app)最后一次更新在 2022 年。

2026 年,Computer 上线,替代 MVM 作为 Mixin 的执行层。

7.2 Computer 架构

Computer 是一套 Go 后端 + Solana SVM 的组合系统:

  • 用户通过 Mixin Messenger 注册,得到 Solana 地址(PDA 派生)
  • 资产在 Mixin 与 Solana 之间通过 FROST 门限签名桥转移
  • 集成 Raydium(AMM swap)和 Metaplex(NFT)
  • 链上资产 1:1 锚定

7.3 FROST 签名层

Computer 的 Solana 桥使用了三层 FROST 签名:

  1. GG20 协调器:管理密钥分片和签名会话
  2. 2/2 中间层:日常操作的快速通道
  3. m-of-n 会话层:支持自定义阈值的高安全操作

7.4 支持的链

  • Solana:通过 solana-go (fork) 与 SVM 交互
  • Ethereum:通过 web3.swiftweb3darttrust-web3-provider 等 fork 与 EVM 交互
  • MobileCoin:通过 mobilecoinmobilecoin-gomobilecoin-account fork 支持
  • 其他:代码库中包含 bchutil(Bitcoin Cash)、zecutil(Zcash)、lndclient(Lightning Network)、near-sdk-gonem-sdk-go 等 fork

八、Ocean.one 撮合引擎

8.1 撮合机制

Ocean.one 使用内存红黑树订单簿:

asks → Page (红黑树) → events channel
bids → Page (红黑树) → events channel
       ↓
  createOrder / cancelOrder

事件流包括:

  • BOOK-T0(30 秒全量快照)
  • BOOK-T1(1 秒最优价快照)
  • OrderOpen / OrderCancel / OrderMatch

费率:Maker 0%,Taker 0.1%。

8.2 永续合约(Perps)

Perps 通过两条通道执行:

通道 底层平台 撮合机制
USDC Hyperliquid Hyperliquid 自己的订单簿
USDT KTX DEX KTX 自己的 AMM 池

Perps 开仓时返回 payment_url,用户通过 Mixin Messenger 支付,保证金进入 Mixin Futures Bot(7000105400)。

8.3 Route API 认证

Route API(Bot ID: 61cb8dd4-16b1-4744-ba0c-7b2d2e52fc59,Base: https://api.route.mixin.one)使用 HMAC-SHA256 认证:

MR-ACCESS-TIMESTAMP: Unix timestamp (seconds)
MR-ACCESS-SIGN: base64(accountId + HMAC-SHA256(shared_key, timestamp+method+path+body))

共享密钥通过 X25519 ECDH 派生:X25519(session_private → curve25519, bot_public_key)

与 Safe API 的 JWT (EdDSA) 认证不同,Route API 使用独立的 HMAC 认证体系。


九、经济模型

9.1 铸币机制

XIN 的铸币采用固定池递减模型:

参数 数值
总池 500,000 XIN
前 1825 批每批铸币量 89.88 XIN
后续批次每批铸币量 80.89 XIN
分配比例 Kernel 50% / Safe 40% / Light 10%

池递减至零,无永续通胀。

9.2 燃烧机制

每笔 Kernel 交易燃烧 0.0001 XIN/step。燃烧目标由 DeriveGhostPublicKeyForInternalVanish 派生,其私钥无人持有。

Safe 注册燃烧 100 XIN。节点注册燃烧 100 XIN(需要三重签名批准)。

9.3 节点质押

节点需质押 XIN 参与共识。初始质押量为 13,439 XIN/节点。质押量可通过 governance 合约提案调整。节点运营周期为 700 秒,每周期分配铸币奖励。


十、代码贡献统计

10.1 核心仓库贡献者

仓库 主要贡献者 提交数(主要)
mixin cedricfung 1,428 (85.6%)
mixin w-xy 65 (3.9%)
mixin crossle 33 (2.0%)
safe cedricfung, w-xy, crossle 多人
multi-party-sig cedricfung 主导
flutter-app cedricfung, Tougee, birdfly 多人

10.2 编程语言分布

MixinNetwork 组织下的仓库涵盖以下主要语言:

  • Go:核心系统主力语言(mixin, safe, multi-party-sig, trusted-group, ocean.one, computer)
  • Dart/Flutter:终端应用(flutter-app, mixin_bot_sdk_dart, mixswap_sdk_dart)
  • Kotlin/Java:Android 客户端
  • Swift:iOS 客户端
  • JavaScript/TypeScript:Web SDK
  • Rust:部分密码学实现(jubjub, librustzcash)
  • Solidity:合约(mvm-contracts, safe-contracts)
  • C/C++:底层的 libsignal-protocol、wcdb 数据库

十一、第三方依赖

Mixin 通过直接 fork 管理关键依赖,共计 47 个 fork 仓库。主要包括:

依赖 Fork 仓库 用途
Badger DB badger Kernel 链上存储(Go 实现的 LSM-tree KV 数据库)
Solana SDK solana-go Computer 与 SVM 交互
Signal Protocol libsignal-protocol-c/swift/dart Messenger 端到端加密
Monero monero-core 隐私交易相关密码学
MobileCoin mobilecoin-go, mobilecoin-account MobileCoin 链支持
TrustWallet Assets trust-wallet-assets 代币元数据
Web3 web3.swift, web3dart EVM 链交互
MsgPack msgpack Kernel RPC 序列化

本文档基于 MixinNetwork GitHub 组织下全部 93 个仓库的源码分析。不含预测、建议或价值判断。数据截止 2026 年 7 月 31 日。

1 Answers

文章完全ai分析个生成,不免有错误个不足,请发现错误及时告知,第一时间更正!