Mixin Network 代码库技术解读
基于
MixinNetworkGitHub 组织下全部 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):
- Ed25519 密钥转换为 Curve25519 格式
- X25519 ECDH 得出 32 字节共享密钥(直接作为 AES-256 密钥)
- Payload =
bytes.fromhex(pin)[40B] + LE64(timestamp) + LE64(iterator) + PKCS7 padding - AES-256-CBC 加密,随机 16 字节 IV 前置
- 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.go、storage/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.app、mvm.dev、help.mvm.app、bridge.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 签名:
- GG20 协调器:管理密钥分片和签名会话
- 2/2 中间层:日常操作的快速通道
- m-of-n 会话层:支持自定义阈值的高安全操作
7.4 支持的链
- Solana:通过
solana-go(fork) 与 SVM 交互 - Ethereum:通过
web3.swift、web3dart、trust-web3-provider等 fork 与 EVM 交互 - MobileCoin:通过
mobilecoin、mobilecoin-go、mobilecoin-accountfork 支持 - 其他:代码库中包含
bchutil(Bitcoin Cash)、zecutil(Zcash)、lndclient(Lightning Network)、near-sdk-go、nem-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 日。