在内网服务器 (192.168.1.222) 首次部署时发现并修复的所有问题,
涉及 backend (12微服务)、blockchain (Cosmos SDK节点)、前端 (admin-web)。
## Backend 修复
### docker-compose.yml
- DB_PASSWORD: 从硬编码 `genex_dev_password` 改为 `${DB_PASSWORD}` 环境变量插值,
所有13个服务统一从 .env 读取,避免密码不一致导致连接失败
- Kong 镜像: `kong:3.5-alpine` → `kong:3.5`,alpine 版本在 amd64 上缺少依赖
- chain-indexer: 环境变量名 `CHAIN_RPC_URL` → `RPC_URL` (与 Go 代码 getEnv 一致)
- chain-indexer: RPC 地址改为 `http://172.17.0.1:8545` (Docker bridge gateway,
跨 docker-compose network 访问 blockchain 节点的 EVM JSON-RPC)
- chain-indexer: 补全缺失的 DB_HOST/DB_PORT/DB_USERNAME/DB_PASSWORD/DB_NAME
### ai-service
- ai.module.ts: 移除重复的 TypeOrmModule.forRootAsync — 该模块错误地使用了
DB_USER/DB_PASS (默认 'genex'/'genex') 和独立数据库 genex_ai,与 app.module.ts
中已有的 TypeOrmModule.forRoot 冲突,导致密码认证失败
- app.module.ts: 添加 ConfigModule.forRoot({ isGlobal: true }),因为
JwtModule.registerAsync 依赖 ConfigService 注入
### 依赖补全
- user-service/package.json: 添加 kafkajs ^2.2.4 (Kafka 事件消费)
- admin-service/package.json: 添加 kafkajs ^2.2.4 (Kafka 事件消费)
## Blockchain 修复
### genex-chain/app.go — 修复 chainConfig panic
- 问题: NewGenexApp 被调用两次 (tempApp 注册编码 + 实际启动),cosmos/evm 的
SetChainConfig 在第二次调用时 panic: "chainConfig already set"
- 原因: 原代码 `if evmChainID == 0 { evmChainID = GenexEVMChainID }` 导致
tempApp 也使用 8888,SetChainConfig 设置后,实际 app 再次设置时触发 panic
- 修复: 移除默认值回退,让 tempApp 使用 evmChainID=0 → DefaultEVMChainID(262144),
实际 app 从 app.toml 读取 8888 后可正常覆盖
### genex-chain/cmd/genexd/cmd/root.go
- 移除未使用的 banktypes import (编译错误)
### docker-compose.yml
- 添加 `command: ["start", "--chain-id", "genex-testnet-1"]` 到 x-genex-node 默认配置,
否则 InitChain 时 chain-id 为空导致校验失败
### init-genesis.sh (新增)
- 创世初始化脚本: init → 补丁 genesis.json → 创建验证者 → gentx → collect-gentxs
- 将所有默认 denom (aatom) 替换为 agnx (GNX, 18 decimals EVM 兼容)
- 配置: evm_denom, bond_denom, mint_denom, gov min_deposit, bank denom_metadata
- 启用 JSON-RPC (0.0.0.0:8545/8546)、REST API、CORS
- 设置 evm-chain-id=8888
## 部署结果
- 20 个 Docker 容器全部运行 (4 基础设施 + 12 后端 + 1 区块链节点 + 1 前端 + 2 辅助)
- 区块链稳定出块 (height 80+),EVM JSON-RPC 正常
- chain-indexer 实时索引区块 (lag=0)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| .github/workflows | ||
| bridge-monitor | ||
| chain-monitor | ||
| enterprise-api | ||
| explorer | ||
| faucet-service | ||
| gas-relayer | ||
| genex-chain | ||
| genex-contracts | ||
| genex-sdk-dart | ||
| genex-sdk-go | ||
| genex-sdk-js | ||
| README.md | ||
| deploy.sh | ||
| docker-compose.explorer.yml | ||
| docker-compose.yml | ||
| init-genesis.sh | ||
README.md
Genex Chain — 区块链模块
自建 EVM 兼容应用链 + 智能合约体系
架构
blockchain/
├── genex-chain/ # Cosmos SDK 应用链(Go)
│ ├── cmd/genexd/ # 链节点二进制
│ ├── app/ # Application 配置
│ ├── x/evm/ # 自定义 EVM 模块
│ │ ├── keeper/ # Gas 费覆盖(平台补贴)
│ │ └── ante/ # 链级合规拦截
│ ├── config/ # 节点/创世配置
│ └── scripts/ # 初始化脚本
│
└── genex-contracts/ # Solidity 智能合约(Foundry)
├── src/ # 9 个核心合约
├── test/ # 10 个测试文件
└── script/ # 部署脚本
技术栈
| 组件 | 技术 | 说明 |
|---|---|---|
| 链框架 | Cosmos SDK v0.50 | 模块化,200+ 生产链验证 |
| 共识引擎 | CometBFT | 即时终结性,≤1s 出块 |
| EVM 模块 | cosmos/evm | 完全 EVM 兼容,Apache 2.0 |
| 合约框架 | Foundry (Solidity 0.8.20) | 测试 + 部署 + 验证 |
| 跨链 | IBC + Axelar | Cosmos 生态 + Ethereum 桥接 |
智能合约系统(9 合约)
| 合约 | 功能 |
|---|---|
| CouponFactory | 券发行工厂(Utility/Security 双轨) |
| Coupon | ERC-721 券 NFT(不可转让限制 + 转售计数) |
| Settlement | 原子交换结算(多稳定币 + 价格验证) |
| Redemption | 兑付合约(销毁 + 门店验证) |
| Compliance | 合规(OFAC + Travel Rule + KYC 差异化) |
| Treasury | 资金托管(保障资金 + Escrow) |
| Governance | 治理(3/5 多签 + 48h 时间锁 + 回滚) |
| ExchangeRateOracle | 汇率预言机(Chainlink 集成) |
| CouponBackedSecurity | CBS 资产证券化 |
链设计参数
| 参数 | 值 |
|---|---|
| Chain ID | 8888 |
| 出块时间 | ≤ 1 秒 |
| TPS | ≥ 5,000 |
| Gas 策略 | 平台全额补贴(min_gas_price = 0) |
| 原生代币 | GNX (1B 总供应量) |
| 共识 | CometBFT PoS |
| EVM 兼容 | 完全兼容(Solidity, Hardhat, MetaMask) |
快速开始
合约开发
cd blockchain/genex-contracts
# 安装依赖
forge install OpenZeppelin/openzeppelin-contracts
forge install OpenZeppelin/openzeppelin-contracts-upgradeable
# 编译
forge build
# 测试
forge test -vvv
# 部署到本地
forge script script/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast
链开发
cd blockchain/genex-chain
# 编译
make build
# 初始化本地测试链
make init-local
# 启动
make start
MetaMask 配置
| 设置 | 值 |
|---|---|
| Network Name | Genex Chain |
| RPC URL | http://localhost:8545 |
| Chain ID | 8888 |
| Currency Symbol | GNX |
GNX 代币分配
总供应量: 1,000,000,000 GNX
├── 40% 平台运营/Gas 补贴
├── 20% 团队与顾问(4年释放,1年锁定)
├── 15% 生态基金
├── 15% 融资预留
└── 10% 社区 DAO 治理
验证节点架构
生产网络(最少 5 个验证节点):
Genex 创世节点 x3 — US(2) + SG(1)
机构验证节点 x4+ — 持牌金融机构
监管观察节点 x3 — FinCEN / MAS / FCA(只读)
安全规范
- 所有合约上线前通过第三方安全审计
- Transparent Proxy 部署(可升级)
- 升级需 3/5 多签 + 48 小时时间锁
- 紧急通道: 4/5 多签 + 4 小时时间锁
- 不可升级的安全红线: 券类型标记、所有权记录、转售计数器