Development reference. Not independently verified for production.
MSG Chain 主网生产配置大全
版本: v1.0.0
状态: 预发布 — 主网就绪评分 52/100 (No-Go)
本文档涵盖所有生产网络(主网、测试网、本地沙箱)的完整配置参数、端点信息及操作指南。
目录
- 概述
- 网络拓扑
- RPC节点配置
- REST/API节点配置
- gRPC配置
- 链配置参数
- 代币与Gas配置
- 种子节点与持久节点
- 创世文件
- 水龙头配置
- 浏览器与索引器
- Keplr/Leap钱包配置
- Docker镜像与标签
- 状态同步与快照
- 生产就绪状态
- 配置速查表
1. 概述
1.1 文档目的
本文档是 MSG Chain 所有开发参考级网络配置的单一权威参考源。涵盖主网 (Mainnet)、测试网 (Testnet) 和本地沙箱 (Local Sandbox) 的全部配置参数、端点地址、节点运维指南以及生态工具集成方式。
1.2 快速参考表
| 配置项 |
主网 (Mainnet) |
测试网 (Testnet) |
本地沙箱 (Local Sandbox) |
| 网络名称 |
MSG Chain |
MSG Chain Testnet |
MSG Chain Local |
| Chain ID |
msg-chain-1 |
msg-chain-testnet-1 |
msg-chain-local-1 |
| 链ID (数值) |
1 |
2 |
0 |
| 原生代币 |
MSG |
tMSG |
MSG |
| 精度 |
18 |
18 |
18 |
| Bech32 前缀 |
msg |
msg |
msg |
| Coin Type |
118 |
118 |
118 |
| 共识算法 |
Round-Robin + DAR |
Round-Robin + DAR |
Round-Robin + DAR |
| 签名方案 |
Dilithium-5 + Secp256k1 |
Dilithium-5 + Secp256k1 |
Dilithium-5 + Secp256k1 |
| 出块时间 |
5 秒 (目标) |
5 秒 (目标) |
2 秒 (目标) |
| 数据存储 |
BadgerDB |
BadgerDB |
BadgerDB |
| Gas 计价单位 |
umsg |
umsg |
umsg |
| 状态 |
规划中 (评分 52/100) |
规划中 |
已可用 |
| 公共访问 |
尚未开放 |
尚未开放 |
仅本地 |
| 水龙头 |
不适用 |
规划中 |
开发模式内置 |
1.3 状态说明
重要: 截至 2026 年 7 月,MSG Chain 主网和测试网均尚未启动。所有公共端点 (如 rpc.msgchain.org) 为规划中的域名,当前仅本地沙箱环境可供开发测试。主网就绪评分为 52/100 (No-Go),存在 10 个阻塞项。本文档中标记为"规划中"或"占位符"的配置应视为前瞻性参考,不可用于生产部署。
1.4 命名约定
| 符号 |
含义 |
| ✅ |
已确认 / 已实现 |
| 🚧 |
开发中 |
| 📋 |
规划中 |
| 🔌 |
需配置方可生效 |
| ❌ |
不可用 / 未实现 |
2. 网络拓扑
2.1 网络类型总览
MSG Chain 生态系统包含三个独立的网络环境:
2.1.1 本地沙箱 (Local Sandbox)
2.1.2 测试网 (Testnet) 🚧 规划中
- 用途: 主网上线前的集成测试、验证者测试、生态应用测试
- 受众: 验证者、DApp 开发者、生态合作伙伴
- 稳定性: 🚧 待定(通常为中等)
- 访问: 公共网络
- 水龙头: ✅ 提供免费 tMSG
- 预期验证者数量: 10–30
2.1.3 主网 (Mainnet) 📋 规划中
- 用途: 开发参考级去中心化网络,承载真实资产和业务
- 受众: 全网用户、验证者、应用开发者、终端用户
- 稳定性: 📋 待定(目标:高可用 99.9%)
- 访问: 公共网络
- 预期验证者数量: 50–150
- 经济激励: ✅ 交易费 + 区块奖励
2.2 网络对比表
| 维度 |
本地沙箱 |
测试网 |
主网 |
| Chain ID |
msg-chain-local-1 |
msg-chain-testnet-1 |
msg-chain-1 |
| RPC 公网 |
无 |
https://rpc-testnet.msgchain.org |
https://rpc.msgchain.org |
| RPC 本地 |
http://localhost:26657 |
http://localhost:26657 |
http://localhost:26657 |
| REST 公网 |
无 |
https://api-testnet.msgchain.org |
https://api.msgchain.org |
| REST 本地 |
http://localhost:1317 |
http://localhost:1317 |
http://localhost:1317 |
| gRPC 公网 |
无 |
msgchain-grpc-testnet.msgchain.org:9090 |
msgchain-grpc.msgchain.org:9090 |
| gRPC 本地 |
localhost:9090 |
localhost:9090 |
localhost:9090 |
| Agent API 公网 |
无 |
https://api-testnet.msgchain.org/agent/v1 |
https://api.msgchain.org/agent/v1 |
| Agent API 本地 |
http://localhost:8080/agent/v1 |
http://localhost:8080/agent/v1 |
http://localhost:8080/agent/v1 |
| WebSocket |
ws://localhost:26657/websocket |
wss://rpc-testnet.msgchain.org/websocket |
wss://rpc.msgchain.org/websocket |
| P2P 种子 |
无(单节点) |
msgchain-p2p-testnet.msgchain.org:26656 |
msgchain-p2p.msgchain.org:26656 |
| 水龙头 |
内置 (CLI) |
https://faucet.msgchain.org |
❌ 不适用 |
| Explorer 📋 |
无 |
https://explorer-testnet.msgchain.org |
https://explorer.msgchain.org |
| 主网就绪评分 |
N/A |
N/A |
52/100 — No-Go |
| 预期上线时间 |
已可用 |
TBD |
TBD |
| 数据持久性 |
重置后丢失 |
可能重置 |
永久 |
| MSG 价值 |
无(测试用途) |
无(测试用途) |
真实价值 |
| 验证者最低要求 |
无 |
1 MSG 质押 |
10,000 MSG 质押 |
2.3 网络架构图 (文本描述)
用户 / DApp
│
├──► RPC (26657) ──► Tendermint RPC ──► 共识引擎 (DAR)
│ │
├──► REST/LCD (1317) ──► Cosmos SDK LCD ──► 状态机
│ │
├──► gRPC (9090) ──────► Cosmos SDK gRPC ──► 状态机
│ │
├──► Agent API (8080) ──► Agent 模块 ──► AI Agent 运行时
│ │
└──► WebSocket (26657) ──► 事件订阅 ──► 实时推送
│
┌───────┴───────┐
│ │
P2P (26656) gRPC (9090)
网络通信 跨链/IBC
3. RPC节点配置
3.1 RPC 端点总览
| 网络 |
类型 |
URL |
端口 |
TLS |
状态 |
| 主网 |
公共 |
https://rpc.msgchain.org |
443 |
✅ |
📋 规划中 |
| 主网 |
本地 |
http://localhost:26657 |
26657 |
❌ |
✅ 可用 |
| 测试网 |
公共 |
https://rpc-testnet.msgchain.org |
443 |
✅ |
📋 规划中 |
| 测试网 |
本地 |
http://localhost:26657 |
26657 |
❌ |
✅ 可用 |
| 沙箱 |
本地 |
http://localhost:26657 |
26657 |
❌ |
✅ 可用 |
3.2 RPC 配置参数 (config.toml)
# ~/.msgchain/config/config.toml — RPC 相关配置
[rpc]
# RPC 监听地址
laddr = "tcp://0.0.0.0:26657"
# 跨域资源共享 (CORS)
cors_allowed_origins = ["*"]
cors_allowed_methods = ["HEAD", "GET", "POST"]
cors_allowed_headers = ["Origin", "Accept", "Content-Type", "X-Requested-With", "X-Server-Time"]
# gRPC 相关
grpc_laddr = "tcp://0.0.0.0:9090"
# RPC 最大连接数
max_open_connections = 900
# WebSocket 最大订阅客户端
max_subscription_clients = 200
max_subscriptions_per_client = 50
# 超时设置
timeout_broadcast_tx_commit = "30s"
timeout_broadcast_tx_commit = "10s"
# 是否启用公共 RPC 端点
unsafe = false
3.3 核心 RPC 方法
| 方法 |
描述 |
参数 |
/health |
节点健康检查 |
无 |
/status |
节点状态(同步、对等节点、最新区块) |
无 |
/net_info |
网络对等节点信息 |
无 |
/block |
按高度查询区块 |
height (int, 可选) |
/block_by_hash |
按哈希查询区块 |
hash (string) |
/block_results |
区块交易执行结果 |
height (int, 可选) |
/broadcast_tx_sync |
同步广播交易(等待 CheckTx) |
tx (base64) |
/broadcast_tx_async |
异步广播交易(不等待结果) |
tx (base64) |
/broadcast_tx_commit |
提交模式广播(等待完整执行) |
tx (base64) |
/tx |
按哈希查询交易 |
hash (string) |
/tx_search |
按条件搜索交易 |
query, page, per_page |
/validators |
查询验证者集 |
height (int, 可选) |
/consensus_params |
查询共识参数 |
height (int, 可选) |
/genesis |
查询创世文件 |
无 |
/num_unconfirmed_txs |
未确认交易数量 |
无 |
/unconfirmed_txs |
未确认交易列表 |
limit (int, 可选) |
/check_tx |
检查交易有效性 |
tx (base64) |
/abci_query |
ABCI 状态查询 |
path, data, height, prove |
3.4 WebSocket 端点
| 网络 |
WebSocket URL |
状态 |
| 主网 |
wss://rpc.msgchain.org/websocket |
📋 规划中 |
| 测试网 |
wss://rpc-testnet.msgchain.org/websocket |
📋 规划中 |
| 本地沙箱 |
ws://localhost:26657/websocket |
✅ 可用 |
WebSocket 订阅示例:
// JavaScript — 订阅新区块事件
const ws = new WebSocket("ws://localhost:26657/websocket");
ws.onopen = () => {
const req = {
jsonrpc: "2.0",
method: "subscribe",
id: 1,
params: { query: "tm.event='NewBlock'" }
};
ws.send(JSON.stringify(req));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log("新区块:", data.result.data.value.block.header.height);
};
# wscat — 命令行 WebSocket 订阅
wscat -c ws://localhost:26657/websocket \
-x '{"jsonrpc":"2.0","method":"subscribe","id":1,"params":{"query":"tm.event='Tx'"}}'
3.5 速率限制
| 限制项 |
默认值 |
生产推荐值 |
| 最大连接数 |
900 |
5000 |
| 每 IP 最大连接数 |
无限制 |
50 |
| 每 IP 每秒请求数 |
无限制 |
100 |
| 最大订阅客户端数 |
200 |
500 |
| 每客户端最大订阅数 |
50 |
50 |
| 最大请求体 (RPC) |
1 MB |
1 MB |
| 最大批量请求数 |
无限制 |
20 |
3.6 curl 操作示例
# ─── 健康检查 ───
curl https://rpc.msgchain.org/health
# 响应示例:
# {
# "jsonrpc": "2.0",
# "id": -1,
# "result": {}
# }
# ─── 节点状态 ───
curl https://rpc.msgchain.org/status
# ─── 查询指定高度区块 ───
curl https://rpc.msgchain.org/block?height=1
# ─── 查询最新区块 ───
curl https://rpc.msgchain.org/block
# ─── 查询创世文件 ───
curl https://rpc.msgchain.org/genesis
# ─── 查询验证者集 ───
curl https://rpc.msgchain.org/validators?height=1
# ─── 广播交易 (同步模式) ───
curl -X POST https://rpc.msgchain.org/tx \
-H "Content-Type: application/json" \
-d '{
"tx_bytes": "CqABCp0BChwvY29zbXdhc20ud2FzbS52MS5Nc2dFeGVjdXRlEn0KK21zZzFzazlzNTBzcnhscGRoOHI2dXM0dnQ4OWZ4ajZzN3l4bXUzMGo2YxITbXNnMWdtMzlzaHBnMDR5OXM0c3cSHgoLY29uc3RhbnRzL3NvBQtvcGVyYXRpb24SFAoS...",
"mode": "BROADCAST_MODE_SYNC"
}'
# ─── 广播交易 (异步模式) ───
curl -X POST https://rpc.msgchain.org/tx \
-H "Content-Type: application/json" \
-d '{
"tx_bytes": "...",
"mode": "BROADCAST_MODE_ASYNC"
}'
# ─── 按哈希查询交易 ───
curl https://rpc.msgchain.org/tx?hash=0xABC123...
# ─── 交易搜索 ───
curl 'https://rpc.msgchain.org/tx_search?query="message.module='agent'"&page=1&per_page=10'
# ─── 未确认交易 ───
curl https://rpc.msgchain.org/num_unconfirmed_txs
# ─── 检查交易 ───
curl -X POST https://rpc.msgchain.org/check_tx \
-H "Content-Type: application/json" \
-d '{"tx": "..."}'
# ─── ABCI 状态查询 ───
curl 'https://rpc.msgchain.org/abci_query?path="/store/agent/key"&data=0x...'
3.7 本地节点启动 RPC 验证
# 启动节点后,验证 RPC 是否正常运行
curl http://localhost:26657/health
# 检查同步状态
curl http://localhost:26657/status | jq '.result.sync_info'
# 预期输出:
# {
# "latest_block_height": "...",
# "latest_block_time": "...",
# "earliest_block_height": "...",
# "earliest_block_time": "...",
# "catching_up": false
# }
4. REST/API节点配置
4.1 REST / LCD (Light Client Daemon) 端点
| 网络 |
类型 |
URL |
端口 |
TLS |
状态 |
| 主网 |
公共 |
https://api.msgchain.org |
443 |
✅ |
📋 规划中 |
| 主网 |
本地 |
http://localhost:1317 |
1317 |
❌ |
✅ 可用 |
| 测试网 |
公共 |
https://api-testnet.msgchain.org |
443 |
✅ |
📋 规划中 |
| 测试网 |
本地 |
http://localhost:1317 |
1317 |
❌ |
✅ 可用 |
| 沙箱 |
本地 |
http://localhost:1317 |
1317 |
❌ |
✅ 可用 |
注意: REST/LCD 端点与 RPC 端点运行在同一节点上,但通过不同的端口暴露。生产环境中建议使用反向代理(如 Nginx)进行 TLS 终止和负载均衡。
4.2 REST 配置参数 (app.toml)
# ~/.msgchain/config/app.toml — API / REST 相关配置
[api]
# 是否启用 REST API
enable = true
# 监听地址
address = "tcp://0.0.0.0:1317"
# 最大请求体大小 (MB)
max-body-bytes = 1048576
# 请求头大小限制 (bytes)
header-size-limit = 4096
# 跨域资源共享 (CORS)
enabled-unsafe-cors = false
# RPC 读取超时
read-timeout = "10s"
write-timeout = "10s"
# Swagger / OpenAPI
swagger = true
4.3 核心 REST 端点分组
| 分组 |
基础路径 |
描述 |
| Cosmos 基础 |
/cosmos/ |
账户、银行、质押、治理、分配等标准 Cosmos 模块 |
| Tendermint RPC 代理 |
/cosmos/base/tendermint/v1beta1/ |
区块、验证者、节点状态 |
| Wasm / CosmWasm |
/cosmwasm/wasm/v1/ |
智能合约部署、执行、查询 |
| Auth (认证) |
/cosmos/auth/v1beta1/ |
账户信息、公钥 |
| Bank (银行) |
/cosmos/bank/v1beta1/ |
余额、转账、代币元数据 |
| Staking (质押) |
/cosmos/staking/v1beta1/ |
委托、解委托、验证者 |
| Distribution (分配) |
/cosmos/distribution/v1beta1/ |
奖励、佣金、提现 |
| Governance (治理) |
/cosmos/gov/v1beta1/ |
提案、投票、参数变更 |
| Slashing (惩罚) |
/cosmos/slashing/v1beta1/ |
签名信息、惩罚参数 |
| IBC (跨链) |
/ibc/ |
IBC 连接、通道、数据包 |
| Agent (AI Agent) |
/msgchain/agent/v1/ |
Agent 注册、支付、会话 |
| DID |
/msgchain/did/v1/ |
去中心化身份管理 |
| DAO |
/msgchain/dao/v1/ |
DAO 治理相关 |
4.4 Agent API 端点
Agent API 是 MSG Chain 特有的 AI Agent 交互接口,提供高级功能抽象。
| 网络 |
URL |
状态 |
| 主网 |
https://api.msgchain.org/agent/v1 |
📋 规划中 |
| 测试网 |
https://api-testnet.msgchain.org/agent/v1 |
📋 规划中 |
| 本地沙箱 |
http://localhost:8080/agent/v1 |
✅ 可用 (开发模式) |
Agent API 端点列表:
| 方法 |
路径 |
描述 |
| GET |
/agent/v1/registry |
查询 Agent 注册列表 |
| POST |
/agent/v1/registry |
注册新 Agent |
| GET |
/agent/v1/registry/{id} |
查询单个 Agent |
| PUT |
/agent/v1/registry/{id} |
更新 Agent 配置 |
| DELETE |
/agent/v1/registry/{id} |
注销 Agent |
| POST |
/agent/v1/{id}/execute |
执行 Agent 任务 |
| GET |
/agent/v1/{id}/status |
查询 Agent 执行状态 |
| POST |
/agent/v1/{id}/payment |
Agent 支付操作 |
| GET |
/agent/v1/session/{session_id} |
查询微支付会话 |
| POST |
/agent/v1/a2a |
Agent 间通信 (A2A) |
| POST |
/agent/v1/mpc/sign |
MPC 多方签名 |
| GET |
/agent/v1/constitution/{id} |
查询 Agent 宪章 |
4.5 Swagger / OpenAPI 规范
| 资源 |
URL |
状态 |
| Swagger UI |
https://api.msgchain.org/swagger/ |
📋 规划中 |
| OpenAPI JSON |
https://api.msgchain.org/openapi.json |
📋 规划中 |
| Redoc |
https://api.msgchain.org/redoc/ |
📋 规划中 |
| 本地 Swagger |
http://localhost:1317/swagger/ |
✅ 可用 |
4.6 curl REST 操作示例
# ─── 账户余额查询 ───
curl https://api.msgchain.org/cosmos/bank/v1beta1/balances/msg1sk9s50srx...
# ─── 账户信息 ───
curl https://api.msgchain.org/cosmos/auth/v1beta1/accounts/msg1sk9s50srx...
# ─── 最新区块查询 ───
curl https://api.msgchain.org/cosmos/base/tendermint/v1beta1/blocks/latest
# ─── 指定高度区块 ───
curl https://api.msgchain.org/cosmos/base/tendermint/v1beta1/blocks/1000
# ─── 节点状态 ───
curl https://api.msgchain.org/cosmos/base/tendermint/v1beta1/node_info
# ─── 验证者列表 ───
curl https://api.msgchain.org/cosmos/staking/v1beta1/validators
# ─── 委托查询 ───
curl https://api.msgchain.org/cosmos/staking/v1beta1/delegations/msg1sk9s50srx...
# ─── 待定治理提案 ───
curl https://api.msgchain.org/cosmos/gov/v1beta1/proposals?status=PROPOSAL_STATUS_VOTING_PERIOD
# ─── 智能合约列表 (CosmWasm) ───
curl https://api.msgchain.org/cosmwasm/wasm/v1/codes
# ─── 合约实例查询 ───
curl https://api.msgchain.org/cosmwasm/wasm/v1/contract/msg14hj2tavq8f...
# ─── 智能合约状态查询 ───
curl 'https://api.msgchain.org/cosmwasm/wasm/v1/contract/msg14hj2tavq8f.../smart/eyJnZXRf...'
# ─── 发送代币交易 (通过 REST) ───
# 注意: REST 不支持直接提交交易,需通过 RPC `/tx` 端点提交已签名的 TxBytes
# ─── Agent API: 查询所有 Agent ───
curl https://api.msgchain.org/agent/v1/registry
# ─── Agent API: 注册新 Agent ───
curl -X POST https://api.msgchain.org/agent/v1/registry \
-H "Content-Type: application/json" \
-d '{
"owner": "msg1sk9s50srx...",
"name": "MyAIAgent",
"constitution_id": "constitution_v1_default",
"endpoint": "https://my-agent-endpoint.io/api",
"capabilities": ["text-generation", "code-analysis"]
}'
# ─── 供应量查询 ───
curl https://api.msgchain.org/cosmos/bank/v1beta1/supply/umsg
# ─── 参数查询 ───
curl https://api.msgchain.org/cosmos/staking/v1beta1/params
curl https://api.msgchain.org/cosmos/gov/v1beta1/params/voting
curl https://api.msgchain.org/cosmos/slashing/v1beta1/params
5. gRPC配置
5.1 gRPC 端点总览
| 网络 |
类型 |
URL |
端口 |
TLS |
状态 |
| 主网 |
公共 |
msgchain-grpc.msgchain.org:9090 |
9090 |
✅ (TLS) |
📋 规划中 |
| 主网 |
本地 |
localhost:9090 |
9090 |
❌ (plaintext) |
✅ 可用 |
| 测试网 |
公共 |
msgchain-grpc-testnet.msgchain.org:9090 |
9090 |
✅ (TLS) |
📋 规划中 |
| 测试网 |
本地 |
localhost:9090 |
9090 |
❌ (plaintext) |
✅ 可用 |
| 沙箱 |
本地 |
localhost:9090 |
9090 |
❌ (plaintext) |
✅ 可用 |
5.2 gRPC 配置参数 (app.toml)
# ~/.msgchain/config/app.toml — gRPC 相关配置
[grpc]
# 是否启用 gRPC 服务
enable = true
# 监听地址
address = "0.0.0.0:9090"
# 最大消息接收大小 (bytes)
max-recv-msg-size = 10485760 # 10 MB
# 最大消息发送大小 (bytes)
max-send-msg-size = 10485760 # 10 MB
# gRPC Web 支持
[grpc-web]
enable = true
address = "0.0.0.0:9091"
5.3 可用的 gRPC 服务
| 服务 |
完整名称 |
主要方法 |
| 账户 |
cosmos.auth.v1beta1.Query |
Account, Accounts, Params |
| 银行 |
cosmos.bank.v1beta1.Query |
Balance, AllBalances, Supply, DenomsMetadata |
| 质押 |
cosmos.staking.v1beta1.Query |
Validators, Delegation, UnbondingDelegation, Redelegations |
| 治理 |
cosmos.gov.v1beta1.Query |
Proposal, Proposals, Vote, Votes, Params |
| 分配 |
cosmos.distribution.v1beta1.Query |
DelegationRewards, ValidatorCommission, Params |
| 惩罚 |
cosmos.slashing.v1beta1.Query |
SigningInfo, SigningInfos, Params |
| IBC |
ibc.core.channel.v1.Query |
Channel, Channels, ConnectionChannels |
| IBC |
ibc.core.connection.v1.Query |
Connection, Connections, ClientConnections |
| 转移 |
ibc.applications.transfer.v1.Query |
DenomTrace, DenomTraces, Params |
| CosmWasm |
cosmwasm.wasm.v1.Query |
Code, Codes, ContractInfo, ContractHistory, SmartContractState, AllContractState |
| Agent |
msgchain.agent.v1.Query |
AgentRegistry, AgentPayment, Session |
| DID |
msgchain.did.v1.Query |
DIDDocument, DIDRegistry |
| DAO |
msgchain.dao.v1.Query |
Proposal, Proposals, Members, Config |
| Tendermint |
cosmos.base.tendermint.v1beta1.Service |
GetNodeInfo, GetSyncing, GetLatestBlock, GetBlockByHeight |
| 交易 |
cosmos.tx.v1beta1.Service |
Simulate, GetTx, BroadcastTx, GetTxsEvent |
5.4 gRPC 反射支持
gRPC 反射 (reflection) 默认启用,允许客户端动态查询可用的服务和方法。
# 使用 grpcurl 查询可用服务
grpcurl -plaintext localhost:9090 list
# 查询服务方法详情
grpcurl -plaintext localhost:9090 describe cosmos.bank.v1beta1.Query
# 调用具体方法
grpcurl -plaintext \
-d '{"address": "msg1sk9s50srx..."}' \
localhost:9090 cosmos.bank.v1beta1.Query/AllBalances
5.5 gRPC 客户端连接代码
Go 客户端
package main
import (
"context"
"fmt"
"log"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
)
func main() {
// 连接到本地节点 (plaintext)
conn, err := grpc.Dial(
"localhost:9090",
grpc.WithTransportCredentials(insecure.NewCredentials()),
)
if err != nil {
log.Fatalf("连接失败: %v", err)
}
defer conn.Close()
// 创建银行查询客户端
bankClient := banktypes.NewQueryClient(conn)
// 查询余额
resp, err := bankClient.AllBalances(
context.Background(),
&banktypes.QueryAllBalancesRequest{
Address: "msg1sk9s50srx...",
},
)
if err != nil {
log.Fatalf("查询失败: %v", err)
}
fmt.Println("余额:", resp.Balances)
// ─── 生产环境 (TLS) ───
// conn, err := grpc.Dial(
// "msgchain-grpc.msgchain.org:9090",
// grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
// )
}
TypeScript / Node.js 客户端
import { grpc } from "@improbable-eng/grpc-web";
import { QueryClientImpl as BankQuery } from "@cosmos/bank-v1beta1-ts";
import { NodeHttpTransport } from "@improbable-eng/grpc-web-node-http-transport";
// 如果使用 Node.js 运行时,需设置 Transport
grpc.setDefaultTransport(NodeHttpTransport());
async function main() {
// 通过 gRPC Web 代理连接 (端口 9091)
const client = new BankQuery("http://localhost:9091");
try {
const resp = await client.AllBalances({
address: "msg1sk9s50srx...",
});
console.log("余额:", resp.balances);
} catch (err) {
console.error("gRPC 调用失败:", err);
}
}
main();
Python 客户端
import grpc
from cosmos.bank.v1beta1 import query_pb2, query_pb2_grpc
def main():
# 连接到本地节点 (plaintext)
channel = grpc.insecure_channel("localhost:9090")
stub = query_pb2_grpc.QueryStub(channel)
# 查询余额
request = query_pb2.QueryAllBalancesRequest(
address="msg1sk9s50srx..."
)
response = stub.AllBalances(request)
print("余额:", response.balances)
# ─── 生产环境 (TLS) ───
# credentials = grpc.ssl_channel_credentials()
# channel = grpc.secure_channel(
# "msgchain-grpc.msgchain.org:9090",
# credentials
# )
if __name__ == "__main__":
main()
5.6 gRPC 交易模拟
// Go — 模拟交易 (估算 Gas)
simulateResp, err := txClient.Simulate(
context.Background(),
&txv1beta1.SimulateRequest{
TxBytes: txBytes,
},
)
fmt.Printf("预估 Gas: %d\n", simulateResp.GasInfo.GasUsed)
6. 链配置参数
6.1 共识参数
| 参数 |
值 |
说明 |
修改方式 |
max_validators |
150 (规划) |
最大活跃验证者数量 |
治理提案 |
max_evidence_age |
48h |
证据最大存留时间 |
治理提案 |
max_bytes_per_tx |
1,048,576 (1 MB) |
单笔交易最大字节 |
治理提案 |
max_gas_per_block |
50,000,000 (50M) |
每区块最大 Gas 消耗 |
治理提案 |
max_bytes_per_block |
4,194,304 (4 MB) |
每区块最大字节 |
治理提案 |
block_time_iota |
5s |
目标出块间隔 |
链升级 |
time_iota_ms |
1000ms |
时间戳最小增量 |
链升级 |
6.2 DAR (Dilithium-based Autonomous Randomness) 共识参数
| 参数 |
值 |
说明 |
consensus_algorithm |
round_robin_dar |
基于轮次+DAR 的共识 |
block_time |
5s |
目标出块时间 |
dar_rounds |
3 |
DAR 每轮随机数轮数 |
dar_threshold |
2/3 |
DAR 签名阈值 |
hysteresis_numerator |
104 |
滞后调节分子 |
hysteresis_denominator |
96 |
滞后调节分母 |
signature_scheme |
dilithium-5 |
主签名方案 |
fallback_signature_scheme |
secp256k1 |
备用签名方案 (兼容性) |
quantum_safety |
true |
后量子安全标志 |
什么是 DAR?
DAR (Dilithium-based Autonomous Randomness) 是 MSG Chain 基于 Dilithium-5 后量子签名算法的自主随机性生成机制。与传统的 VRF 或 RANDAO 不同,DAR 利用 Dilithium-5 的代数结构在不暴露私钥信息的前提下生成可验证的链上随机数,抵抗量子攻击。
滞后调节 (Hysteresis): 104/96 参数表示当验证者的实际出块时间偏离目标 4% 以上时,共识引擎会自动调整该验证者的调度权重,以防止网络波动导致的出块不稳定。
6.3 治理参数
| 参数 |
值 |
说明 |
min_deposit |
1000 MSG |
提案最低抵押金额 |
max_deposit_period |
14 天 |
抵押募集最长期限 |
voting_period |
14 天 |
投票周期 |
quorum |
33.4% (0.334) |
投票最低参投票率 |
threshold |
50% (0.500) |
提案通过所需赞成比例 |
veto_threshold |
33.4% (0.334) |
否决票比例上限 |
min_initial_deposit_ratio |
0.25 |
提案初始抵押金占比 |
治理流程:
提交提案 (抵押 ≥ 1000 MSG)
│
▼
抵押募集阶段 (最长 14 天)
│ ├── 抵押达到 min_deposit → 进入投票
│ └── 超时未达标 → 提案失败 (抵押不退)
▼
投票阶段 (14 天)
│ ├── 赞成 ≥ 50% AND 投票率 ≥ 33.4% → 通过
│ ├── 否决 ≥ 33.4% → 否决 (抵押没收)
│ └── 投票率 < 33.4% → 未达法定人数
▼
执行 (通过后自动执行)
6.4 质押参数
| 参数 |
值 |
说明 |
bond_denom |
umsg |
质押代币单位 |
max_entries |
7 |
最大同时解委托/重新委托条目数 |
max_validators |
150 (规划) |
最大活跃验证者数 |
historical_entries |
10000 |
历史质押记录保留数 |
unbonding_time |
21 天 (1814400 秒) |
解委托锁定期 |
min_self_delegation |
1 MSG |
验证者最低自委托量 |
质押收益计算:
年化收益率 ≈ (年通胀率 × 通胀调节) / (验证者佣金率调节)
其中:
- 年通胀率: 动态调整 (初始 7%)
- 通胀调节: 取决于全网质押率目标 (目标 67%)
- 验证者佣金: 由各验证者自行设定 (通常 5%–20%)
6.5 惩罚 (Slashing) 参数
| 行为 |
惩罚比例 |
条件 |
| 双签 (Double Sign) |
5.00% 质押 |
一劳永逸,永久监禁 |
| 下线 (Downtime) |
0.01% 质押 |
在 48 小时内签名缺失 > 95% |
| 下线窗口 |
10000 区块 |
滑动窗口内监控签名 |
| 监禁时间 |
10 分钟 |
被监禁后最短冷却期 |
6.6 分配参数
| 参数 |
值 |
说明 |
community_tax |
2.00% |
社区池税 (交易费分配) |
base_proposer_reward |
1.00% |
出块者基础奖励 |
bonus_proposer_reward |
4.00% |
出块者额外奖励 (取决于投票参与率) |
withdraw_addr_enabled |
true |
是否允许修改提现地址 |
6.7 区块 Gas 限制动态调整
# app.toml — 最小 Gas 价格
minimum-gas-prices = "1000000000umsg"
# 共识引擎 Gas 限制调整
# 目标 Gas 使用率: 50% 的 max_gas_per_block
# 调整幅度: 每区块最多 ±10%
6.8 IBC (跨链通信) 参数
| 参数 |
值 |
说明 |
max_expected_time_per_block |
30s |
IBC 超时计算用每块最大时间 |
trusting_period |
336h (14 天) |
IBC 客户端信任期 |
unbonding_period |
504h (21 天) |
IBC 解绑定周期 |
max_clock_drift |
10s |
最大时钟漂移 |
ccv_timeout_period |
336h |
跨链验证超时 |
6.9 完整 Genesis 参数预览
{
"genesis_time": "2026-01-01T00:00:00Z",
"chain_id": "msg-chain-1",
"consensus_params": {
"block": {
"max_bytes": "4194304",
"max_gas": "50000000"
},
"evidence": {
"max_age_num_blocks": "200000",
"max_age_duration": "172800000000000",
"max_bytes": "1048576"
},
"validator": {
"pub_key_types": ["dilithium-5", "secp256k1"]
}
},
"app_state": {
"staking": {
"params": {
"bond_denom": "umsg",
"unbonding_time": "1814400s",
"max_validators": 150,
"max_entries": 7,
"historical_entries": 10000
}
},
"gov": {
"voting_params": {
"voting_period": "1209600s"
},
"deposit_params": {
"max_deposit_period": "1209600s",
"min_deposit": [
{"denom": "umsg", "amount": "1000000000000000000000"}
]
},
"tally_params": {
"quorum": "0.334000000000000000",
"threshold": "0.500000000000000000",
"veto_threshold": "0.334000000000000000"
}
}
}
}
7. 代币与Gas配置
7.1 代币单位
| 单位 |
值 |
说明 |
umsg |
1 umsg |
最小单位 (微 MSG) |
msg |
1 MSG = 10^18 umsg |
基本单位 |
kmsg |
1,000 MSG |
千 MSG |
mmsg |
1,000,000 MSG |
百万 MSG |
// Go — 代币单位转换
// 1 MSG = 10^18 umsg
const MSGDecimals = 18
const OneMSG = 1_000_000_000_000_000_000 // 10^18 umsg
7.2 Gas 价格表
| 优先级 |
价格 (umsg/gas) |
交易确认速度 |
适用场景 |
| 🟢 Low |
0.010000 |
慢 (5–30 区块) |
批量交易、非紧急操作、合约查询 |
| 🟡 Average |
0.025000 |
中 (1–5 区块) |
标准交易、代币转账、委托 |
| 🔴 High |
0.040000 |
快 (1–2 区块) |
紧急交易、合约执行、治理投票 |
| ⚡ Custom |
> 0.040000 |
最快 (下一个区块) |
时间敏感型操作 |
注意: Gas 价格以 umsg 计。例如,Low 价格 0.010000 umsg/gas = 10^-2 umsg/gas。
7.3 Gas 估算参考
| 交易类型 |
预估 Gas 限制 |
预估费用 (Low) |
预估费用 (Avg) |
预估费用 (High) |
| 代币转账 (MsgSend) |
100,000 |
1,000 umsg |
2,500 umsg |
4,000 umsg |
| 委托 (MsgDelegate) |
200,000 |
2,000 umsg |
5,000 umsg |
8,000 umsg |
| 解委托 (MsgUndelegate) |
250,000 |
2,500 umsg |
6,250 umsg |
10,000 umsg |
| 重新委托 (MsgBeginRedelegate) |
300,000 |
3,000 umsg |
7,500 umsg |
12,000 umsg |
| 提现奖励 (MsgWithdrawDelegatorReward) |
200,000 |
2,000 umsg |
5,000 umsg |
8,000 umsg |
| 投票 (MsgVote) |
100,000 |
1,000 umsg |
2,500 umsg |
4,000 umsg |
| 创建提案 (MsgSubmitProposal) |
500,000 |
5,000 umsg |
12,500 umsg |
20,000 umsg |
| 部署合约 (MsgStoreCode) |
3,000,000 |
30,000 umsg |
75,000 umsg |
120,000 umsg |
| 实例化合约 (MsgInstantiateContract) |
500,000 |
5,000 umsg |
12,500 umsg |
20,000 umsg |
| 执行合约 (MsgExecuteContract) |
300,000–1,000,000 |
3,000–10,000 umsg |
7,500–25,000 umsg |
12,000–40,000 umsg |
| 发送 IBC 资产 |
300,000 |
3,000 umsg |
7,500 umsg |
12,000 umsg |
| Agent 注册 |
500,000 |
5,000 umsg |
12,500 umsg |
20,000 umsg |
| Agent 微支付 |
200,000 |
2,000 umsg |
5,000 umsg |
8,000 umsg |
7.4 Gas 计算方式
交易总费用 = Gas 限制 × Gas 价格
示例 (Average 优先级):
Gas 限制: 200,000
Gas 价格: 0.025 umsg/gas
总费用: 200,000 × 0.025 = 5,000 umsg = 0.000000000000005 MSG
7.5 app.toml 最低 Gas 价格配置
# ~/.msgchain/config/app.toml
# 节点接受交易的最低 Gas 价格
# 低于此价格的交易将被拒绝
minimum-gas-prices = "0.010000umsg"
7.6 费用扣除示例 (基于 Cosmos SDK)
模拟交易:
MsgSend
GasWanted: 200000
GasUsed: 98765
费用计算:
支付费用 = GasWanted × GasPrice = 200000 × 0.025 = 5000 umsg
退款 = (GasWanted - GasUsed) × GasPrice = (200000 − 98765) × 0.025
= 101235 × 0.025 = 2530.875 umsg (退回发送者)
实际花费 = GasUsed × GasPrice = 98765 × 0.025 = 2469.125 umsg
7.7 代币供应分布 (规划)
| 类别 |
比例 |
数量 |
说明 |
| 社区池 |
30% |
300,000,000 MSG |
生态基金、社区激励 |
| 团队与贡献者 |
20% |
200,000,000 MSG |
4 年线性解锁,1 年悬崖 |
| 私募/种子轮 |
15% |
150,000,000 MSG |
3 年线性解锁,6 月悬崖 |
| 公募 |
10% |
100,000,000 MSG |
TGE 时解锁 25%,剩余 6 月线性 |
| 验证者奖励 |
15% |
150,000,000 MSG |
区块奖励与质押通胀 (4 年分发) |
| 生态储备 |
10% |
100,000,000 MSG |
战略合作、赠款计划 |
| 总计 |
100% |
1,000,000,000 MSG |
初始供应上限 |
8. 种子节点与持久节点
8.1 种子节点
种子节点 (Seed Nodes) 用于新节点加入网络时的初始对等发现。种子节点仅响应 P2P 地址本请求,不存储全链数据。
| 网络 |
节点 ID |
地址 |
运营商 |
状态 |
| 主网 |
seed1 |
msgchain-p2p.msgchain.org:26656 |
MSG Chain 基金会 |
📋 规划中 |
| 主网 |
seed2 |
seed2.msgchain.org:26656 |
待定 |
📋 规划中 |
| 测试网 |
seed1 |
msgchain-p2p-testnet.msgchain.org:26656 |
MSG Chain 基金会 |
📋 规划中 |
| 沙箱 |
— |
无 (单节点) |
— |
N/A |
种子节点配置格式:
# config.toml
# 主网种子节点
seeds = "seed1@msgchain-p2p.msgchain.org:26656,seed2@seed2.msgchain.org:26656"
# 测试网种子节点
# seeds = "seed1@msgchain-p2p-testnet.msgchain.org:26656"
注意: 种子节点 ID (节点公钥哈希) 将在主网启动前公布。上述仅为规划中的域名地址。种子节点地址可通过 P2P 交换获取完整的节点 ID。
8.2 持久节点
持久节点 (Persistent Peers) 是节点始终保持连接的 P2P 对等节点,即使当前未被选入活跃对等列表也不会断开。
# config.toml — 持久节点配置
persistent_peers = "node_id@ip_or_domain:26656"
# 示例 (本地多节点):
# persistent_peers = "abc123@192.168.1.10:26656,def456@192.168.1.11:26656"
8.3 私有对等 ID
私有对等 ID 用于阻止其他节点将你的节点作为 P2P 种子地址广播出去。
# config.toml
# 不会被广播给其他节点的对等节点
private_peer_ids = "node_id_of_sentry"
8.4 完整 P2P 配置示例
# ~/.msgchain/config/config.toml — P2P 配置
# P2P 监听地址
laddr = "tcp://0.0.0.0:26656"
# 外网地址 (如果节点在 NAT 后)
external_address = ""
# 种子节点 (逗号分隔)
seeds = "seed1@msgchain-p2p.msgchain.org:26656"
# 持久节点 (逗号分隔)
persistent_peers = ""
# 私有对等 ID (逗号分隔)
private_peer_ids = ""
# 是否允许单向对等连接
unconditional_peer_ids = ""
# P2P 连接限速
recv_rate = 5120000 # 5 MB/s
send_rate = 5120000 # 5 MB/s
# 最大对等节点数
max_num_inbound_peers = 40
max_num_outbound_peers = 10
# 连接过滤
allow_duplicate_ip = false
# PEX (对等交换)
pex = true
# 种子模式
seed_mode = false
8.5 手动添加节点
# 通过 CLI 添加持久节点
msgchaind start --p2p.persistent_peers "node_id@host:26656"
# 通过 CLI 添加种子节点
msgchaind start --p2p.seeds "node_id@host:26656"
# 运行时动态添加 (通过 RPC)
curl -X POST http://localhost:26657/net_info
curl -X POST http://localhost:26657/dial_peers \
-H "Content-Type: application/json" \
-d '{"peers": ["node_id@host:26656"], "persistent": true}'
8.6 哨兵节点架构 (生产推荐)
互联网
│
┌─────┴─────┐
│ 哨兵节点 │ (暴露于公网, 运行完整节点)
└─────┬─────┘
│ 私有连接 (P2P)
┌─────┴─────┐
│ 验证者节点 │ (不暴露于公网, 仅连接哨兵)
└───────────┘
哨兵节点配置:
# 哨兵节点 config.toml
pex = true
persistent_peers = "validator_node_id@10.0.0.1:26656"
private_peer_ids = "validator_node_id"
unconditional_peer_ids = "validator_node_id"
# 验证者节点 config.toml
pex = false # 不进行 P2P 发现
persistent_peers = "sentry1_node_id@sentry1.example.com:26656,sentry2_node_id@sentry2.example.com:26656"
private_peer_ids = ""
9. 创世文件
9.1 创世文件格式
创世文件 (genesis.json) 是区块链的初始状态定义,包含验证者集、初始余额、链参数等所有起始配置。
文件位置: ~/.msgchain/config/genesis.json
9.2 创世文件结构概览
{
"genesis_time": "2026-01-01T00:00:00Z",
"chain_id": "msg-chain-1",
"initial_height": "1",
"consensus_params": {
"block": {
"max_bytes": "4194304",
"max_gas": "50000000",
"time_iota_ms": "1000"
},
"evidence": {
"max_age_num_blocks": "200000",
"max_age_duration": "172800000000000",
"max_bytes": "1048576"
},
"validator": {
"pub_key_types": ["dilithium-5", "secp256k1"]
},
"version": {}
},
"app_hash": "",
"app_state": {
"auth": {
"params": {
"max_memo_characters": "256",
"tx_sig_limit": "7",
"tx_size_cost_per_byte": "10",
"sig_verify_cost_ed25519": "590",
"sig_verify_cost_secp256k1": "1000"
},
"accounts": []
},
"bank": {
"params": {
"send_enabled": true,
"default_send_enabled": true
},
"balances": [],
"supply": [],
"denom_metadata": [
{
"description": "MSG Chain 原生代币",
"denom_units": [
{"denom": "umsg", "exponent": 0, "aliases": ["micro-msg"]},
{"denom": "mmsg", "exponent": 3, "aliases": ["milli-msg"]},
{"denom": "msg", "exponent": 6, "aliases": []}
],
"base": "umsg",
"display": "msg",
"name": "MSG Chain",
"symbol": "MSG"
}
]
},
"staking": {
"params": {
"unbonding_time": "1814400s",
"max_validators": 150,
"max_entries": 7,
"historical_entries": 10000,
"bond_denom": "umsg",
"min_commission_rate": "0.050000000000000000"
},
"validators": [],
"delegations": [],
"unbonding_delegations": [],
"redelegations": [],
"exported": false
},
"gov": {
"starting_proposal_id": "1",
"deposits": [],
"votes": [],
"proposals": [],
"deposit_params": {
"min_deposit": [
{"denom": "umsg", "amount": "1000000000000000000000"}
],
"max_deposit_period": "1209600s"
},
"voting_params": {
"voting_period": "1209600s"
},
"tally_params": {
"quorum": "0.334000000000000000",
"threshold": "0.500000000000000000",
"veto_threshold": "0.334000000000000000"
}
},
"distribution": {
"params": {
"community_tax": "0.020000000000000000",
"base_proposer_reward": "0.010000000000000000",
"bonus_proposer_reward": "0.040000000000000000",
"withdraw_addr_enabled": true
},
"fee_pool": {"community_pool": []},
"outstanding_rewards": [],
"validator_accumulated_commissions": []
},
"slashing": {
"params": {
"signed_blocks_window": "10000",
"min_signed_per_window": "0.050000000000000000",
"downtime_jail_duration": "600000000000",
"slash_fraction_double_sign": "0.050000000000000000",
"slash_fraction_downtime": "0.000100000000000000"
},
"signing_infos": [],
"missed_blocks": []
},
"wasm": {
"params": {
"max_wasm_code_size": "3145728",
"instantiate_default_permission": "Everybody",
"gov_instantiate_permission": "Everybody"
},
"codes": [],
"contracts": [],
"sequences": []
},
"agent": {
"params": {},
"agents": []
},
"did": {
"params": {},
"did_documents": []
},
"ibc": {
"client_genesis": {
"clients": [],
"clients_consensus": [],
"clients_metadata": []
},
"connection_genesis": {
"connections": [],
"client_connection_paths": []
},
"channel_genesis": {
"channels": [],
"acknowledgements": [],
"commitments": [],
"receipts": [],
"send_sequences": [],
"recv_sequences": [],
"ack_sequences": []
}
},
"transfer": {
"params": {
"send_enabled": true,
"receive_enabled": true
}
}
}
}
9.3 创世文件哈希 (占位符)
| 网络 |
创世哈希 |
状态 |
| 主网 |
0x0000000000000000000000000000000000000000000000000000000000000000 |
📋 主网启动时确定 |
| 测试网 |
0x0000000000000000000000000000000000000000000000000000000000000000 |
📋 测试网启动时确定 |
9.4 创世文件下载 (占位符)
| 网络 |
下载 URL |
校验和 URL |
| 主网 |
https://msgchain.org/genesis/mainnet/genesis.json |
https://msgchain.org/genesis/mainnet/genesis.json.sha256 |
| 测试网 |
https://msgchain.org/genesis/testnet/genesis.json |
https://msgchain.org/genesis/testnet/genesis.json.sha256 |
9.5 创世文件验证
# 下载创世文件
wget https://msgchain.org/genesis/mainnet/genesis.json
# 验证 SHA256 校验和
echo "$(cat genesis.json.sha256) genesis.json" | sha256sum --check
# 使用 msgchaind 验证创世文件
msgchaind validate-genesis
# 验证成功输出:
# genesis.json is a valid genesis file
# 手动验证 Chain ID
jq '.chain_id' genesis.json
# 预期: "msg-chain-1"
# 手动验证初始验证者
jq '.app_state.staking.validators | length' genesis.json
jq '.validators[0].pub_key' genesis.json
9.6 自定义创世文件 (本地沙箱)
# 初始化本地创世文件
msgchaind init my-sandbox --chain-id=msg-chain-local-1
# 添加初始账户 (含 MSG 余额)
msgchaind add-genesis-account msg1sk9s50srx... 1000000000000000000000umsg
# 创建验证者交易 (如果是多节点设置)
msgchaind gentx validator-key \
--chain-id=msg-chain-local-1 \
--amount 1000000000000000000000umsg
# 收集 gentx
msgchaind collect-gentxs
# 验证创世文件
msgchaind validate-genesis
10. 水龙头配置
10.1 水龙头端点
| 网络 |
URL |
状态 |
每次领取量 |
| 测试网 |
https://faucet.msgchain.org |
📋 规划中 |
1 MSG (10^18 umsg) |
| 本地沙箱 |
内置 CLI |
✅ 可用 |
自定义 |
| 主网 |
❌ 不适用 |
N/A |
N/A |
10.2 水龙头请求格式
# ─── 测试网水龙头 ───
curl -X POST https://faucet.msgchain.org/claim \
-H "Content-Type: application/json" \
-d '{
"address": "msg1sk9s50srx...",
"amount": "1000000000000000000"
}'
# 成功响应:
# {
# "status": "ok",
# "tx_hash": "0xABC123...",
# "amount": "1000000000000000000",
# "denom": "umsg"
# }
# ─── 批量领取 (用于测试场景) ───
curl -X POST https://faucet.msgchain.org/claim/batch \
-H "Content-Type: application/json" \
-d '{
"requests": [
{"address": "msg1...", "amount": "1000000000000000000"},
{"address": "msg2...", "amount": "500000000000000000000"}
]
}'
10.3 水龙头速率限制
| 限制项 |
值 |
说明 |
| 每地址领取间隔 |
24 小时 |
每个地址每 24 小时可领取 1 次 |
| 每次最大领取量 |
1 MSG (10^18 umsg) |
标准领取量 |
| 每 IP 每日限制 |
3 次 |
同一 IP 地址每日限制 |
| CAPTCHA 要求 |
hCaptcha |
反机器人验证 |
| 白名单地址 |
无限制 |
生态项目可通过申请获得更多额度 |
10.4 本地沙箱水龙头 (CLI)
# 本地开发环境 — 使用 msgchaind CLI 直接分配代币
# 无需水龙头服务
# 1. 添加 genesis 账户 (初始化时)
msgchaind add-genesis-account msg1sk9s50srx... 1000000000000000000000umsg
# 2. 或使用 msgchaind 手动转账 (节点运行后)
msgchaind tx bank send \
validator-wallet \
msg1sk9s50srx... \
1000000000000000000umsg \
--chain-id=msg-chain-local-1 \
--fees=2500umsg
10.5 水龙头开源代码
水龙头服务为开源项目,代码仓库位于:
https://github.com/msgchain/faucet
搭建本地水龙头:
# 克隆水龙头代码
git clone https://github.com/msgchain/faucet.git
cd faucet
# 配置环境变量
cat > .env <<EOF
FAUCET_MNEMONIC="your faucet wallet mnemonic here"
FAUCET_CHAIN_ID="msg-chain-testnet-1"
FAUCET_RPC="http://localhost:26657"
FAUCET_DENOM="umsg"
FAUCET_AMOUNT="1000000000000000000"
FAUCET_COOLDOWN="24h"
FAUCET_RATE_LIMIT_PER_IP=3
FAUCET_PORT=8080
EOF
# 启动水龙头
docker-compose up -d
# 或直接运行
npm install && npm run start
10.6 水龙头 CLI 工具
# 使用 msgchaind CLI 直接向地址发送代币 (快速测试)
msgchaind tx bank send \
$(msgchaind keys show faucet -a) \
msg1sk9s50srx... \
1000000000000000000umsg \
--chain-id=msg-chain-testnet-1 \
--fees=2500umsg \
--node=http://localhost:26657 \
--yes
11. 浏览器与索引器
11.1 区块浏览器
| 网络 |
URL |
状态 |
后端引擎 |
| 主网 |
https://explorer.msgchain.org |
📋 规划中 |
MSG Chain Explorer (自定义) |
| 测试网 |
https://explorer-testnet.msgchain.org |
📋 规划中 |
MSG Chain Explorer (自定义) |
| 本地 |
http://localhost:3000 |
🚧 可自建 |
参见 区块浏览器搭建指南.md |
11.2 浏览器功能 (规划)
- ✅ 实时区块与交易流
- ✅ 地址详情与余额历史
- ✅ 智能合约验证与读取
- ✅ 验证者详情与质押数据
- ✅ 治理提案与投票
- ✅ IBC 交易追踪
- ✅ Agent 注册与 DID 查询
- ✅ 代币持有者排行榜
- ✅ 多语言支持 (中/英)
- ✅ GraphQL API
- ✅ CSV 导出
11.3 浏览器 API 端点
# 浏览器后端 API (规划中)
GET https://explorer.msgchain.org/api/v1/blocks # 最新区块列表
GET https://explorer.msgchain.org/api/v1/blocks/{height} # 区块详情
GET https://explorer.msgchain.org/api/v1/txs # 最新交易列表
GET https://explorer.msgchain.org/api/v1/txs/{hash} # 交易详情
GET https://explorer.msgchain.org/api/v1/address/{addr} # 地址详情
GET https://explorer.msgchain.org/api/v1/validators # 验证者列表
GET https://explorer.msgchain.org/api/v1/proposals # 治理提案
GET https://explorer.msgchain.org/api/v1/agents # Agent 列表
GET https://explorer.msgchain.org/api/v1/stats # 网络统计
11.4 事件索引器
| 组件 |
URL (本地) |
URL (公共) |
状态 |
| Indexer HTTP |
http://localhost:8081 |
https://indexer.msgchain.org |
🚧 开发中 |
| Indexer GraphQL |
http://localhost:8081/graphql |
https://indexer.msgchain.org/graphql |
🚧 开发中 |
Docker 镜像: msgchain/indexer:latest
# 启动本地索引器
docker run -d \
--name msgchain-indexer \
-p 8081:8081 \
-e CHAIN_ID=msg-chain-local-1 \
-e RPC_ENDPOINT=http://host.docker.internal:26657 \
-e DATABASE_URL=postgres://user:pass@host.docker.internal:5432/msgchain \
msgchain/indexer:latest
11.5 GraphQL 查询示例
# 查询最新区块
query {
blocks(first: 10, orderBy: height_desc) {
edges {
node {
height
hash
timestamp
transactionCount
proposer {
moniker
operatorAddress
}
}
}
}
}
# 查询地址交易历史
query {
transactions(
first: 20,
filter: {
address: "msg1sk9s50srx..."
},
orderBy: timestamp_desc
) {
edges {
node {
hash
height
timestamp
success
gasUsed
gasWanted
messages {
type
from
to
amount
}
}
}
}
}
# 查询 Agent 注册信息
query {
agents {
id
name
owner
constitutionId
status
createdAt
}
}
11.6 The Graph 子图
| 网络 |
子图名称 |
状态 |
| 主网 |
msgchain-mainnet |
📋 规划中 |
| 测试网 |
msgchain-testnet |
📋 规划中 |
子图部署在托管服务或本地 Graph 节点上。详情参见 The Graph子图索引器指南.md。
12. Keplr/Leap钱包配置
12.1 Keplr 钱包配置
以下 JSON 配置用于将 MSG Chain 添加到 Keplr 钱包扩展。
{
"chainId": "msg-chain-1",
"chainName": "MSG Chain",
"chainSymbolImageUrl": "https://msgchain.org/assets/msg-chain-logo.png",
"rpc": "https://rpc.msgchain.org",
"rest": "https://api.msgchain.org",
"nodeProvider": {
"name": "MSG Chain Foundation",
"email": "validator@msgchain.org",
"website": "https://msgchain.org"
},
"bip44": {
"coinType": 118
},
"bech32Config": {
"bech32PrefixAccAddr": "msg",
"bech32PrefixAccPub": "msgpub",
"bech32PrefixValAddr": "msgvaloper",
"bech32PrefixValPub": "msgvaloperpub",
"bech32PrefixConsAddr": "msgvalcons",
"bech32PrefixConsPub": "msgvalconspub"
},
"currencies": [
{
"coinDenom": "MSG",
"coinMinimalDenom": "umsg",
"coinDecimals": 18,
"coinImageUrl": "https://msgchain.org/assets/msg-coin.png"
}
],
"feeCurrencies": [
{
"coinDenom": "MSG",
"coinMinimalDenom": "umsg",
"coinDecimals": 18,
"coinImageUrl": "https://msgchain.org/assets/msg-coin.png",
"gasPriceStep": {
"low": 0.01,
"average": 0.025,
"high": 0.04
}
}
],
"stakeCurrency": {
"coinDenom": "MSG",
"coinMinimalDenom": "umsg",
"coinDecimals": 18,
"coinImageUrl": "https://msgchain.org/assets/msg-coin.png"
},
"features": [
"cosmwasm",
"ibc-transfer",
"ibc-go",
"ibc-hooks",
"wasmd_0.31+",
"axelar-evm-bridge"
],
"walletUrlForStaking": "https://msgchain.org/stake",
"theme": {
"primaryColor": "#7C3AED",
"secondaryColor": "#A78BFA"
}
}
12.2 Leap 钱包配置
Leap 钱包与 Keplr 使用相同的 Chain Registry 格式,以上 JSON 配置同样适用于 Leap。
12.3 测试网配置 (Keplr/Leap)
{
"chainId": "msg-chain-testnet-1",
"chainName": "MSG Chain Testnet",
"rpc": "https://rpc-testnet.msgchain.org",
"rest": "https://api-testnet.msgchain.org",
"bip44": { "coinType": 118 },
"bech32Config": {
"bech32PrefixAccAddr": "msg",
"bech32PrefixAccPub": "msgpub",
"bech32PrefixValAddr": "msgvaloper",
"bech32PrefixValPub": "msgvaloperpub",
"bech32PrefixConsAddr": "msgvalcons",
"bech32PrefixConsPub": "msgvalconspub"
},
"currencies": [{
"coinDenom": "tMSG",
"coinMinimalDenom": "umsg",
"coinDecimals": 18
}],
"feeCurrencies": [{
"coinDenom": "tMSG",
"coinMinimalDenom": "umsg",
"coinDecimals": 18,
"gasPriceStep": {
"low": 0.01,
"average": 0.025,
"high": 0.04
}
}],
"stakeCurrency": {
"coinDenom": "tMSG",
"coinMinimalDenom": "umsg",
"coinDecimals": 18
},
"features": ["cosmwasm", "ibc-transfer", "ibc-go"]
}
12.4 JavaScript/TypeScript — 使用 Keplr API 添加网络
// 浏览器扩展 — 使用 Keplr API 添加 MSG Chain
async function addMSGChainToKeplr() {
if (!window.keplr) {
alert("请安装 Keplr 钱包扩展");
return;
}
const chainConfig = {
chainId: "msg-chain-1",
chainName: "MSG Chain",
rpc: "https://rpc.msgchain.org",
rest: "https://api.msgchain.org",
bip44: { coinType: 118 },
bech32Config: {
bech32PrefixAccAddr: "msg",
bech32PrefixAccPub: "msgpub",
bech32PrefixValAddr: "msgvaloper",
bech32PrefixValPub: "msgvaloperpub",
bech32PrefixConsAddr: "msgvalcons",
bech32PrefixConsPub: "msgvalconspub"
},
currencies: [{
coinDenom: "MSG",
coinMinimalDenom: "umsg",
coinDecimals: 18
}],
feeCurrencies: [{
coinDenom: "MSG",
coinMinimalDenom: "umsg",
coinDecimals: 18,
gasPriceStep: { low: 0.01, average: 0.025, high: 0.04 }
}],
stakeCurrency: {
coinDenom: "MSG",
coinMinimalDenom: "umsg",
coinDecimals: 18
},
features: ["cosmwasm", "ibc-transfer", "ibc-go"]
};
try {
await window.keplr.experimentalSuggestChain(chainConfig);
console.log("MSG Chain 已成功添加到 Keplr");
// 连接钱包
await window.keplr.enable("msg-chain-1");
const offlineSigner = window.keplr.getOfflineSigner("msg-chain-1");
const accounts = await offlineSigner.getAccounts();
console.log("连接地址:", accounts[0].address);
} catch (error) {
console.error("添加 MSG Chain 失败:", error);
}
}
12.5 WalletConnect 配置
| 参数 |
值 |
| Project ID |
msgchain-walletconnect (规划中) |
| 中继 URL |
wss://relay.walletconnect.com |
| Chain ID |
eip155:1 & cosmos:msg-chain-1 |
| RPC URL |
https://rpc.msgchain.org |
12.6 Cosmos Directory 注册
MSG Chain 将注册到 Cosmos Directory:
# cosmos-directory/msgchain/chain.json
name: MSG Chain
path: msgchain
chain_name: msgchain
status: live
network_type: mainnet
website: https://msgchain.org
pretty_name: MSG Chain
chain_id: msg-chain-1
daemon_name: msgchaind
node_home: ~/.msgchain
bech32_prefix: msg
slip44: 118
genesis:
genesis_url: https://msgchain.org/genesis/mainnet/genesis.json
codebase:
git_repo: https://github.com/msgchain/msgchain
recommended_version: v1.0.0
compatible_versions: [v1.0.0]
peers:
seeds:
- id: seed1
address: msgchain-p2p.msgchain.org:26656
provider: "MSG Chain Foundation"
apis:
rpc:
- address: https://rpc.msgchain.org
provider: "MSG Chain Foundation"
rest:
- address: https://api.msgchain.org
provider: "MSG Chain Foundation"
grpc:
- address: msgchain-grpc.msgchain.org:9090
provider: "MSG Chain Foundation"
explorers:
- kind: MSG Chain Explorer
url: https://explorer.msgchain.org
tx_page: https://explorer.msgchain.org/tx/{txHash}
13. Docker镜像与标签
13.1 Docker 镜像列表
| 镜像名称 |
描述 |
基础镜像 |
大小 (预估) |
msgchain/node:latest |
标准全节点 |
Alpine Linux |
~200 MB |
msgchain/node:quantum |
量子安全全节点 (Dilithium-5) |
Alpine Linux |
~250 MB |
msgchain/explorer:latest |
区块浏览器 |
Node.js Alpine |
~500 MB |
msgchain/indexer:latest |
事件索引器 |
Node.js Alpine |
~300 MB |
msgchain/faucet:latest |
水龙头服务 |
Node.js Alpine |
~150 MB |
msgchain/tools:latest |
CLI 工具集 |
Alpine Linux |
~180 MB |
13.2 标签命名约定
| 标签模式 |
示例 |
说明 |
latest |
msgchain/node:latest |
最新稳定版 |
quantum |
msgchain/node:quantum |
量子安全节点 |
v{major}.{minor} |
msgchain/node:v1.0 |
主版本号标签 |
v{major}.{minor}.{patch} |
msgchain/node:v1.0.0 |
完整版本号标签 |
sha-{commit} |
msgchain/node:sha-abc1234 |
特定 Commit 构建 |
dev |
msgchain/node:dev |
开发中构建 (不稳定) |
testnet |
msgchain/node:testnet |
测试网专用构建 |
13.3 Docker 运行示例
# ─── 标准全节点 (主网) ───
docker run -d \
--name msgchain-node \
-p 26657:26657 \
-p 26656:26656 \
-p 1317:1317 \
-p 9090:9090 \
-v msgchain-data:/root/.msgchain \
-e MONIKER="MyNode" \
-e CHAIN_ID="msg-chain-1" \
-e NETWORK="mainnet" \
msgchain/node:latest
# ─── 量子安全节点 ───
docker run -d \
--name msgchain-quantum-node \
-p 26657:26657 \
-p 26656:26656 \
-p 1317:1317 \
-p 9090:9090 \
-v msgchain-quantum-data:/root/.msgchain \
-e MONIKER="MyQuantumNode" \
-e CHAIN_ID="msg-chain-1" \
-e SIGNATURE_SCHEME="dilithium-5" \
msgchain/node:quantum
# ─── 测试网节点 ───
docker run -d \
--name msgchain-testnet-node \
-p 26657:26657 \
-p 26656:26656 \
-v msgchain-testnet-data:/root/.msgchain \
-e MONIKER="MyTestnetNode" \
-e CHAIN_ID="msg-chain-testnet-1" \
-e NETWORK="testnet" \
-e FAUCET_URL="https://faucet.msgchain.org" \
msgchain/node:latest
# ─── 本地开发节点 ───
docker run -d \
--name msgchain-dev \
-p 26657:26657 \
-p 26656:26656 \
-p 1317:1317 \
-p 9090:9090 \
-v msgchain-dev-data:/root/.msgchain \
-e MONIKER="DevNode" \
-e CHAIN_ID="msg-chain-local-1" \
-e DEV_MODE="true" \
msgchain/node:latest
# ─── 运行 CLI 命令 ───
docker exec msgchain-node msgchaind status
docker exec msgchain-node msgchaind query bank balances msg1sk9s50srx...
13.4 Docker Compose 集成
# docker-compose.yml — MSG Chain 全栈开发环境
version: "3.8"
services:
node:
image: msgchain/node:latest
container_name: msgchain-node
ports:
- "26657:26657" # RPC
- "26656:26656" # P2P
- "1317:1317" # REST/LCD
- "9090:9090" # gRPC
volumes:
- msgchain-data:/root/.msgchain
environment:
- MONIKER=DockerNode
- CHAIN_ID=msg-chain-local-1
- DEV_MODE=true
networks:
- msgchain-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:26657/health"]
interval: 30s
timeout: 10s
retries: 3
explorer:
image: msgchain/explorer:latest
container_name: msgchain-explorer
ports:
- "3000:3000"
environment:
- RPC_ENDPOINT=http://node:26657
- REST_ENDPOINT=http://node:1317
- CHAIN_NAME=MSG Chain Local
depends_on:
node:
condition: service_healthy
networks:
- msgchain-net
indexer:
image: msgchain/indexer:latest
container_name: msgchain-indexer
ports:
- "8081:8081"
environment:
- RPC_ENDPOINT=http://node:26657
- DATABASE_URL=postgres://user:pass@postgres:5432/msgchain
depends_on:
- node
- postgres
networks:
- msgchain-net
postgres:
image: postgres:15-alpine
container_name: msgchain-pg
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=msgchain
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- msgchain-net
faucet:
image: msgchain/faucet:latest
container_name: msgchain-faucet
ports:
- "8080:8080"
environment:
- CHAIN_ID=msg-chain-local-1
- RPC=http://node:26657
- MNEMONIC=<faucet-wallet-mnemonic>
- AMOUNT=1000000000000000000
- COOLDOWN=1m
depends_on:
node:
condition: service_healthy
networks:
- msgchain-net
volumes:
msgchain-data:
pgdata:
networks:
msgchain-net:
driver: bridge
13.5 Docker 镜像构建 (本地)
# 构建标准节点镜像
docker build -t msgchain/node:latest -f docker/Dockerfile.node .
# 构建量子安全节点镜像
docker build -t msgchain/node:quantum -f docker/Dockerfile.quantum .
# 构建浏览器镜像
docker build -t msgchain/explorer:latest -f docker/Dockerfile.explorer .
# 多架构构建 (AMD64 + ARM64)
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t msgchain/node:latest \
-f docker/Dockerfile.node \
--push .
13.6 Docker 环境变量参考
| 环境变量 |
默认值 |
说明 |
MONIKER |
docker-node |
节点名称 |
CHAIN_ID |
msg-chain-local-1 |
链 ID |
NETWORK |
local |
网络类型 (mainnet, testnet, local) |
DEV_MODE |
false |
开发模式 (允许快速重置) |
SIGNATURE_SCHEME |
secp256k1 |
签名方案 (dilithium-5 |
P2P_SEEDS |
(空) |
种子节点地址列表 |
P2P_PERSISTENT_PEERS |
(空) |
持久节点地址列表 |
MINIMUM_GAS_PRICES |
1000000000umsg |
最低 Gas 价格 |
PRUNING |
default |
数据修剪策略 |
STATESYNC_ENABLE |
false |
是否启用状态同步 |
STATESYNC_RPC_SERVERS |
(空) |
状态同步 RPC 服务器 |
14. 状态同步与快照
14.1 状态同步 (State Sync)
状态同步允许新节点快速追赶到最新区块高度,无需从创世块开始逐个同步。
# ~/.msgchain/config/config.toml — 状态同步配置
[statesync]
# 是否启用状态同步
enable = true
# 信任的 RPC 服务器 (至少 2 个)
rpc_servers = "https://rpc.msgchain.org:443,https://rpc2.msgchain.org:443"
# 信任高度 (应相对较新,建议在 TrustPeriod 内)
trust_height = 0
trust_hash = ""
# 信任周期 (默认为 2 小时)
trust_period = "2h0m0s"
# 恢复选项
# 如果设置为 true,节点将从快照恢复状态
use_allowance = true
状态同步启动流程:
# 1. 查询信任高度和哈希
curl -s https://rpc.msgchain.org/status | jq '.result.sync_info.latest_block_height'
curl -s https://rpc.msgchain.org/block?height=100000 | jq '.result.block_id.hash'
# 2. 在 config.toml 中配置
# trust_height = 100000
# trust_hash = "0xABC..."
# 3. 清空数据目录 (重要: 必须为空以启用状态同步)
rm -rf ~/.msgchain/data/*
# 4. 启动节点 (自动进入状态同步)
msgchaind start --x-crisis-skip-assert-invariants
14.2 快照下载 (占位符)
| 网络 |
快照 URL |
频率 |
格式 |
| 主网 |
https://snapshots.msgchain.org/mainnet/latest.tar.gz |
每 24 小时 |
tar.gz (LZ4) |
| 测试网 |
https://snapshots.msgchain.org/testnet/latest.tar.gz |
每 24 小时 |
tar.gz (LZ4) |
快照使用:
# 下载快照
wget https://snapshots.msgchain.org/mainnet/latest.tar.gz
# 停止节点 (如果正在运行)
pkill msgchaind
# 备份当前数据 (可选)
mv ~/.msgchain/data ~/.msgchain/data.bak
# 解压缩快照
tar -I lz4 -xvf latest.tar.gz -C ~/.msgchain/
# 启动节点
msgchaind start
14.3 数据修剪 (Pruning) 配置
# ~/.msgchain/config/app.toml — 修剪配置
[pruning]
# 修剪策略:
# - "default": 保留最近 100 个历史状态, 每 100 块修剪一次
# - "everything": 仅保留当前状态 (最少存储)
# - "nothing": 保留所有历史状态 (最多存储)
# - "custom": 自定义参数
strategy = "default"
# 自定义修剪参数 (当 strategy = "custom" 时生效)
# 保留最近多少个状态
keep-every = 100
# 间隔多少区块执行修剪
interval = 10
# 保留的重新部署历史 (CosmWasm)
keep-recent = 100
存储空间参考:
| 修剪策略 |
年存储量 (预估) |
说明 |
nothing |
~5 TB |
保留所有历史状态和区块 |
default |
~500 GB |
保留近 100 个状态,适合验证者 |
everything |
~50 GB |
仅保留当前状态,适合 RPC 节点 |
custom (keep=10, interval=5) |
~200 GB |
用户自定义 |
14.4 数据目录结构
~/.msgchain/
├── config/
│ ├── config.toml # Tendermint 配置
│ ├── genesis.json # 创世文件
│ ├── app.toml # 应用配置
│ ├── client.toml # CLI 客户端配置
│ ├── node_key.json # 节点 P2P 密钥
│ └── priv_validator_key.json # 验证者私钥
├── data/
│ ├── blockstore.db/ # 区块存储 (BadgerDB)
│ ├── cs.wal/ # 共识 WAL
│ ├── evidence.db/ # 证据存储 (BadgerDB)
│ ├── state.db/ # 状态存储 (BadgerDB)
│ ├── tx_index.db/ # 交易索引 (BadgerDB)
│ └── wasm/ # CosmWasm 合约数据
├── keyring-test/ # 测试密钥环
├── keyring-file/ # 文件密钥环 (生产推荐)
└── wasm/ # WASM 字节码缓存
14.5 存储估算详解
| 数据类型 |
日增量 |
年增量 (default 修剪) |
年增量 (everything 修剪) |
| 区块数据 |
~200 MB |
~73 GB |
~20 GB |
| 状态数据 |
~150 MB |
~55 GB |
~15 GB |
| 交易索引 |
~50 MB |
~18 GB |
~18 GB |
| 证据存储 |
~1 MB |
~365 MB |
~365 MB |
| Wasm 缓存 |
静态 |
~5 GB |
~5 GB |
| 共识 WAL |
~10 MB |
循环覆盖 |
循环覆盖 |
| 总计 |
~411 MB |
~151 GB |
~58 GB |
建议硬件配置:
| 节点类型 |
CPU |
RAM |
存储 |
带宽 |
| 验证者 |
8+ 核 |
32 GB |
1 TB NVMe SSD |
100 Mbps |
| RPC 公共节点 |
16+ 核 |
64 GB |
2 TB NVMe SSD |
500 Mbps |
| 哨兵节点 |
8+ 核 |
32 GB |
1 TB NVMe SSD |
1 Gbps |
| 归档节点 |
32+ 核 |
128 GB |
10 TB+ NVMe SSD |
1 Gbps |
| 轻节点 |
2 核 |
4 GB |
100 GB SSD |
10 Mbps |
15. 生产就绪状态
15.1 主网就绪评分: 52/100 (No-Go)
| 评估维度 |
分数 |
状态 |
| 共识引擎 |
50% |
🚧 DAR 实现中,基础 Round-Robin 已完成 |
| P2P 网络 |
40% |
🚧 种子节点基础设施待部署 |
| RPC/API |
70% |
✅ 本地接口已完成,开发参考级 TLS 待配置 |
| 智能合约 (CosmWasm) |
80% |
✅ 46 个合约已实现,需主网审计 |
| 钱包集成 |
30% |
📋 Keplr/Leap 配置已完成,Chain Registry 待提交 |
| 区块浏览器 |
20% |
📋 前端待部署 |
| 代币经济 |
40% |
📋 供应分配已规划,锁仓合约待审计 |
| 治理系统 |
60% |
🚧 基础治理已实现,DAO 模块开发中 |
| IBC 跨链 |
30% |
🚧 IBC 核心实现完成,连接待配置 |
| AI Agent 模块 |
70% |
✅ Agent 注册/支付/宪章已完成,MPC 开发中 |
| 文档 |
85% |
✅ 中文文档较为完善 |
| 测试覆盖率 |
55% |
🚧 基础测试通过,量子安全测试待增强 |
| 安全审计 |
10% |
❌ 尚未进行外部审计 |
| DevOps 工具链 |
60% |
🚧 Docker 镜像已完成,CI/CD 待完善 |
| 整体 |
52/100 |
❌ No-Go — 不可上线 |
15.2 10 大阻塞项 (Top Blockers)
| 优先级 |
项目 |
描述 |
负责团队 |
预估工时 |
| 🔴 P1 |
外部安全审计 |
对共识、合约、P2P 进行第三方审计 |
安全团队 |
8–12 周 |
| 🔴 P1 |
DAR 共识完成 |
Dilithium 随机数生成器在共识层完整集成 |
核心协议团队 |
6–8 周 |
| 🔴 P1 |
主网种子节点部署 |
全球分布的种子节点服务器部署 |
DevOps |
2–3 周 |
| 🔴 P2 |
开发参考级 TLS 配置 |
RPC/REST/gRPC 的 TLS 证书与反向代理配置 |
DevOps |
1–2 周 |
| 🔴 P2 |
Chain Registry 提交 |
向 Cosmos Directory 和 Keplr 注册链 |
生态团队 |
1 周 |
| 🟡 P2 |
区块浏览器部署 |
Explorer 前端 + 索引器 + 后端上线 |
前端团队 |
4–6 周 |
| 🟡 P3 |
代币锁仓合约审计 |
团队/投资者锁仓合约的安全验证 |
安全团队 |
2–3 周 |
| 🟡 P3 |
IBC 连接配置 |
与其他 Cosmos 链的 IBC 通道建立 |
核心协议团队 |
2–4 周 |
| 🟢 P3 |
压力测试 |
500+ 验证者场景的 7 天持续测试 |
QA 团队 |
2 周 |
| 🟢 P3 |
水龙头部署 (测试网) |
测试网水龙头服务的部署与验证 |
DevOps |
1 周 |
15.3 预计上线时间线
| 里程碑 |
预计日期 |
状态 |
| 完成 DAR 共识实现 |
Q4 2026 |
📋 规划中 |
| 完成外部安全审计 |
Q1 2027 |
📋 未开始 |
| 测试网上线 |
Q2 2027 |
📋 取决于审计结果 |
| 主网上线候选 (RC) |
Q3 2027 |
📋 乐观估计 |
| 主网正式上线 |
TBD |
❌ 待定 |
注意: 以上时间线为当前规划下的最佳估计,实际上线时间取决于审计结果、社区反馈及阻塞项完成进度。
15.4 当前限制与注意事项
⚠️ 已知限制 (截至 2026-07-06):
1. 共识层
- DAR 尚未完全在开发参考级环境下验证
- 仅支持 1 个验证者的单节点测试
- 紧急回滚/升级机制待实现
2. 存储
- BadgerDB 在开发参考级高负载下的大规模验证尚不充分
- 数据迁移/备份恢复工具待完善
3. 互操作性
- IBC 连接尚未与任何外部链建立
- IBC 中继器需要额外配置
4. AI Agent 模块
- Agent A2A (Agent-to-Agent) 通信协议需进一步规范
- MPC (多方计算) 签名处于开发阶段
- Agent 宪章执行引擎待优化
5. 生态工具
- SDK (Go/Python/Rust) 尚未发布正式版本
- 前端 dApp 集成组件库 (React/Vue) 待封装
- MetaMask Snap 支持待开发
6. 安全
- 尚未完成任何第三方安全审计
- 智能合约 Formal Verification 未执行
- 错误赏金计划未启动
7. 运维
- 监控/告警系统 (Prometheus/Grafana) 配置待标准化
- 节点自动部署脚本 (Ansible/Terraform) 待发布
- 灾难恢复手册 (DR Playbook) 待编写
15.5 生产监控建议
# Prometheus 抓取配置
scrape_configs:
- job_name: 'msgchain-node'
static_configs:
- targets:
- 'localhost:26660' # Tendermint P2P 指标
- 'localhost:26661' # Tendermint 状态同步指标
metrics_path: '/metrics'
# 关键告警规则
groups:
- name: msgchain-node-alerts
rules:
- alert: NodeIsDown
expr: up == 0
for: 5m
- alert: NodeIsStuck
expr: tendermint_consensus_height == 0
for: 1m
- alert: NodeIsSyncing
expr: tendermint_consensus_syncing == 1
for: 30m
- alert: HighBlockLatency
expr: time() - tendermint_consensus_latest_block_time > 30
- alert: HighPeakMemory
expr: process_resident_memory_bytes > 32e9
16. 配置速查表
16.1 一级速查表
| 操作 |
命令 / 配置 |
| 查看节点状态 |
curl http://localhost:26657/status |
| 查看账户余额 |
msgchaind query bank balances msg1... |
| 查看代币详情 |
msgchaind query bank denom-metadata |
| 创建密钥 |
msgchaind keys add my-key |
| 发送代币 |
msgchaind tx bank send my-key msg1... 100umsg --fees=2500umsg |
| 委托 |
msgchaind tx staking delegate msgvaloper1... 1000000umsg --from my-key |
| 解委托 |
msgchaind tx staking unbond msgvaloper1... 1000000umsg --from my-key |
| 查询验证者 |
msgchaind query staking validators |
| 查询提案 |
msgchaind query gov proposals |
| 投票 |
msgchaind tx gov vote 1 yes --from my-key |
| 查询合约 |
msgchaind query wasm contract msg14hj2tavq8f... |
| 部署合约 |
msgchaind tx wasm store artifact.wasm --from my-key |
| 执行合约 |
msgchaind tx wasm execute msg14hj2tavq8f... '{"action":{"...":...}}' --from my-key |
| 查看链参数 |
curl http://localhost:1317/cosmos/staking/v1beta1/params |
| 查看治理参数 |
curl http://localhost:1317/cosmos/gov/v1beta1/params/voting |
| 查看 Gas 价格 |
jq '.app_state.gov.deposit_params.min_deposit' genesis.json |
| 验证创世文件 |
msgchaind validate-genesis |
| 导出创世 |
msgchaind export |
| 重置节点 |
rm -rf ~/.msgchain/data/* |
| 查询种子节点 |
curl http://localhost:26657/net_info | jq '.result.peers[].node_info.listen_addr' |
| 获取 Dilithium 密钥 |
msgchaind tendermint show-validator |
| 查看 Docker 日志 |
docker logs -f msgchain-node |
| 进入 Docker 容器 |
docker exec -it msgchain-node /bin/sh |
16.2 端口速查表
| 端口 |
协议 |
服务 |
用途 |
26656 |
TCP |
P2P |
节点间通信、对等交换 |
26657 |
TCP |
RPC |
交易广播、链查询、WebSocket |
26660 |
TCP |
Prometheus |
节点指标暴露 |
1317 |
TCP |
REST/LCD |
Cosmos REST API |
9090 |
TCP |
gRPC |
gRPC 查询与交易 |
9091 |
TCP |
gRPC-Web |
gRPC Web 代理 |
8080 |
TCP |
Agent API |
AI Agent 接口 |
8081 |
TCP |
Indexer |
事件索引器 HTTP |
3000 |
TCP |
Explorer |
区块浏览器 Web UI |
5432 |
TCP |
PostgreSQL |
索引器数据库 |
443 |
TCP |
HTTPS |
TLS 加密通信 (生产) |
80 |
TCP |
HTTP |
HTTP 重定向 (生产) |
16.3 文件路径速查表
| 文件 |
路径 |
用途 |
| 主配置 |
~/.msgchain/config/config.toml |
Tendermint 节点配置 |
| 应用配置 |
~/.msgchain/config/app.toml |
应用模块配置 |
| CLI 配置 |
~/.msgchain/config/client.toml |
CLI 客户端配置 |
| 创世文件 |
~/.msgchain/config/genesis.json |
区块链初始状态 |
| 验证者密钥 |
~/.msgchain/config/priv_validator_key.json |
验证者签名私钥 |
| 节点密钥 |
~/.msgchain/config/node_key.json |
P2P 身份私钥 |
| 数据目录 |
~/.msgchain/data/ |
区块链数据存储 |
| ADR 目录 |
~/.msgchain/data/ |
BadgerDB 数据 |
| Wasm 缓存 |
~/.msgchain/wasm/ |
合约字节码缓存 |
| 密钥环 (文件) |
~/.msgchain/keyring-file/ |
文件类型密钥环 |
| 密钥环 (OS) |
~/.msgchain/keyring-test/ |
测试密钥环 |
16.4 环境变量速查表
# 最常用环境变量
export CHAIN_ID="msg-chain-1" # 链 ID
export MONIKER="my-msgchain-node" # 节点名称
export KEYRING_BACKEND="file" # 密钥环后端 (file | os | test)
export NODE="tcp://localhost:26657" # RPC 节点地址
export OUTPUT="json" # 输出格式 (json | text)
# 全节点配置
export MINIMUM_GAS_PRICES="1000000000umsg" # 最低 Gas 价格
export PRUNING="default" # 数据修剪策略
export P2P_SEEDS="" # 种子节点列表
export P2P_PERSISTENT_PEERS="" # 持久节点列表
export STATESYNC_ENABLE="false" # 状态同步开关
export STATESYNC_RPC_SERVERS="" # 状态同步 RPC 服务器
16.5 常用 Make 命令速查
make deps # 安装依赖
make lint # 运行代码检查
make test # 运行测试
make test-quantum # 量子安全专项测试
make build-linux # 编译 Linux 二进制
make ci-contracts # CI 合约编译
make package # 创建发布包
msgchaind version # 查看编译版本
16.6 生产部署快速启动 (Linux)
# 1. 系统准备
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential curl wget jq lz4
# 2. 下载二进制
wget https://github.com/msgchain/msgchain/releases/download/v1.0.0/genesis_node_linux
chmod +x genesis_node_linux
sudo mv genesis_node_linux /usr/local/bin/msgchaind
# 3. 初始化节点
msgchaind init MyProductionNode --chain-id=msg-chain-1
# 4. 下载创世文件
wget -O ~/.msgchain/config/genesis.json \
https://msgchain.org/genesis/mainnet/genesis.json
msgchaind validate-genesis
# 5. 配置种子节点
sed -i 's/seeds = ""/seeds = "seed1@msgchain-p2p.msgchain.org:26656"/' \
~/.msgchain/config/config.toml
# 6. 设置最低 Gas 价格
sed -i 's/minimum-gas-prices = ".*"/minimum-gas-prices = "1000000000umsg"/' \
~/.msgchain/config/app.toml
# 7. 创建用于运行节点的系统用户
sudo useradd --no-create-home --shell /sbin/nologin msgchain
# 8. 创建 Systemd 服务
sudo cat > /etc/systemd/system/msgchaind.service <<'EOF'
[Unit]
Description=MSG Chain Node
After=network.target
[Service]
Type=simple
User=msgchain
Group=msgchain
ExecStart=/usr/local/bin/msgchaind start
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
# 9. 启动节点
sudo systemctl daemon-reload
sudo systemctl enable msgchaind
sudo systemctl start msgchaind
# 10. 检查同步状态
journalctl -u msgchaind -f
msgchaind status | jq '.sync_info'
附录
A. 术语对照表
| 英文 |
中文 |
说明 |
| Mainnet |
主网 |
开发参考级去中心化网络 |
| Testnet |
测试网 |
用于测试的网络环境 |
| Sandbox |
沙箱 |
本地开发环境 |
| Valdiator |
验证者 |
参与共识的节点 |
| Delegator |
委托人 |
将 MSG 委托给验证者的用户 |
| DAR |
基于 Dilithium 的自主随机性 |
后量子安全的链上随机性生成机制 |
| Dilithium-5 |
Dilithium-5 |
NIST 标准化的后量子签名算法 |
| BadgerDB |
BadgerDB |
高性能嵌入式 KV 存储数据库 |
| Bech32 |
Bech32 |
Cosmos 生态地址编码格式 |
| Coin Type |
币类型 |
BIP44 路径中的币种编号 |
| CosmWasm |
通用 WebAssembly |
基于 WASM 的智能合约引擎 |
| IBC |
跨链通信协议 |
Cosmos 链间通信标准 |
| LCD |
轻客户端守护进程 |
REST API 网关 |
| gRPC |
gRPC |
高性能远程过程调用框架 |
| RPC |
远程过程调用 |
节点查询与交易接口 |
| P2P |
点对点 |
节点间对等通信网络 |
| PEX |
对等交换 |
P2P 地址发现协议 |
| Gas |
Gas |
交易执行的计量单位 |
| Pruning |
修剪 |
历史状态清理策略 |
| Genesis |
创世文件 |
区块链初始状态定义 |
| A2A |
Agent 到 Agent |
AI Agent 之间的通信协议 |
| MPC |
多方计算 |
多方参与的联合签名计算 |
B. 参考资料
| 文档 |
路径 |
描述 |
| 10 分钟快速启动 |
docs/MSG链10分钟快速启动.md |
快速入门指南 |
| 验证者与节点运维 |
docs/验证者与节点运维.md |
验证者运行指南 |
| Docker 开发环境 |
docs/Docker本地开发环境.md |
Docker 配置指引 |
| 主网上线检查清单 |
docs/主网上线检查清单.md |
主网上线准备清单 |
| Dilithium-5 开发者指南 |
docs/Dilithium-5后量子签名开发者指南.md |
后量子签名开发参考 |
| 代币经济模型 |
docs/代币经济模型.md |
代币经济学白皮书 |
| 安全审计清单 |
docs/安全审计清单与常见漏洞.md |
安全审计参考 |
| 区块浏览器搭建 |
docs/区块浏览器搭建指南.md |
浏览器部署指南 |
| API 接口大全 |
docs/API接口大全.md |
完整 API 文档 |
C. 版本历史
| 版本 |
日期 |
作者 |
变更说明 |
| v1.0.0 |
2026-07-06 |
MSG Chain Docs Team |
初始版本完成,涵盖所有网络配置 |
本文档为 MSG Chain 的官方生产网络配置参考。
所有标记为"规划中"或"占位符"的内容应视为前瞻性参考。
主网和测试网均尚未启动,请勿将本文档中的公共端点用于生产部署。
反馈: 如有问题或建议,请提交 Issue 至 https://github.com/msgchain/msgchain/issues
贡献: https://github.com/msgchain/docs