AmosChain 公链平台


产品概述

AmosChain 是网渡科技自主研发的 PoW(工作量证明)公链实现,采用 CPU 挖矿机制,具备完整的区块链核心功能与去中心化网络能力。AmosChain 专注于为企业与开发者提供轻量级、可接入、易扩展的区块链基础设施,支持私有链、联盟链与公有链多种部署模式。


网渡科技 AmosChain 在公链底层技术领域持续深耕,拥有多项共识算法、P2P网络与智能合约相关的技术专利,致力于构建开放、安全、高效的去中心化基础设施网络。

核心特性

  • 区块链存储:基于 bbolt 的持久化存储引擎,支持高效键值读写与事务操作

  • CPU 挖矿:多线程挖矿引擎,支持动态难度调整,降低参与门槛

  • UTXO 模型:未花费交易输出管理,支持并行交易验证与隐私保护

  • P2P 网络:去中心化节点通信与区块同步,支持种子节点发现与白名单机制

  • 交易系统:ECDSA 签名验证,双重支付防护,支持自定义手续费率

  • 密钥管理:AES-256-GCM 加密存储,支持导入导出与备份恢复

  • Web UI:可视化节点管理与区块浏览器,提供 RESTful API

系统架构

整体架构


┌─────────────────────────────────────────────────────────────┐
│                        AmosChain Node                       │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │   Web UI    │  │    Miner    │  │    Peer Manager     │  │
│  │  (HTTP/8080)│  │  (CPU PoW)  │  │   (P2P/TCP/10000)   │  │
│  └──────┬──────┘  └──────┬──────┘  └──────────┬──────────┘  │
│         │                │                     │             │
│         └────────────────┼─────────────────────┘             │
│                          │                                   │
│  ┌───────────────────────┴───────────────────────────────┐  │
│  │                    Core Layer                         │  │
│  │  ┌───────────┐  ┌───────────┐  ┌─────────────────┐   │  │
│  │  │   Chain   │  │   UTXO    │  │    Mempool      │   │  │
│  │  │  Store    │  │    Set    │  │  (Transaction)  │   │  │
│  │  └─────┬─────┘  └─────┬─────┘  └────────┬────────┘   │  │
│  │        │              │                 │             │  │
│  │        └──────────────┴─────────────────┘             │  │
│  │                         │                              │  │
│  │              ┌──────────┴──────────┐                   │  │
│  │              │   bbolt Database    │                   │  │
│  │              │  (blocks/utxo/stats)│                   │  │
│  │              └─────────────────────┘                   │  │
│  └─────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

核心模块说明

模块

源文件

职责

主程序

main.go

CLI入口、命令分发、配置加载

数据结构

types.go

Block、Transaction、UTXOSet 等核心类型定义

区块链

chain.go

区块存储、链状态管理、导入导出

共识引擎

consensus.go

区块验证、难度计算、共识规则

挖矿引擎

miner.go

PoW挖矿、工作线程池、任务调度

P2P网络

p2p.go

节点发现、消息广播、连接管理

UTXO管理

utxo.go

未花费输出索引、余额查询、状态更新

交易系统

tx.go

交易创建、签名、验证、脚本执行

密钥库

keystore.go

密钥生成、加密存储、导入导出

交易池

mempool.go

待确认交易缓存、优先级排序

Web服务

webui.go

HTTP服务、RESTful API、前端资源

日志系统

logger.go

结构化日志、多级别输出、JSON格式支持

技术架构

存储层

AmosChain 基于 bbolt(Go 语言原生嵌入式键值数据库)实现持久化存储,具备以下特性:

  • 桶(Bucket)结构

    • blocks 桶:存储完整区块数据,键为区块哈希,值为序列化区块

    • utxo 桶:存储未花费输出索引,键为交易ID+输出索引,值为UTXO条目

    • stats 桶:存储链状态(最新区块高度、总工作量、网络哈希率等)

    • metadata 桶:存储链元数据(创世块哈希、协议版本等)

  • 事务支持:读写事务与只读事务分离,支持原子性批量更新

  • 性能优化:支持内存映射文件,数据访问延迟低于微秒级

网络层

P2P 网络层基于 TCP 协议实现,采用 Kademlia 路由表gossip 广播 相结合的混合通信模型:


节点发现机制

  • 启动时连接配置的种子节点(硬编码种子 + 配置种子)

  • 通过 getpeers 消息获取邻居节点列表

  • 定期向已知节点发送 ping/pong 探活

  • 支持 DNS 种子(通过 SRV 记录解析)

消息协议

消息类型

用途

version

版本协商与握手

verack

握手确认

addr

地址广播

getaddr

请求邻居地址

inv

库存公告(新区块/交易通知)

getdata

请求完整数据

block

区块数据传输

tx

交易数据传输

getblocks

批量请求区块

mempool

请求交易池数据

节点发现流程

  1. 启动时连接种子节点(硬编码种子 + DNS 种子 + 配置种子)

  2. 通过 getpeers 获取其他节点列表

  3. 自动建立 P2P 连接(最多 125 个出站连接)

  4. 区块和交易通过 gossip 广播同步

安全机制

  • 白名单模式:仅允许指定 IP/CIDR 范围连接

  • 黑名单模式:屏蔽恶意 IP 地址

  • 连接限速:防止带宽滥用

  • 消息大小限制:防止 DoS 攻击

共识机制

PoW 共识算法采用 SHA-256d 双重哈希,目标难度动态调整:


难度调整算法

  • 调整周期:每 2016 个区块(约 2 周)

  • 调整公式:新难度 = 旧难度 × (实际时间 / 目标时间)

  • 目标出块时间:10 分钟

  • 难度调整幅度限制:4 倍上限与 1/4 下限

  • 实际调整周期以区块高度为触发条件,若前 2016 个区块实际耗时不足目标时间的 1/4 或超过 4 倍,则按 4 倍/1/4 裁剪

区块验证流程

  1. 验证区块头哈希是否满足目标难度

  2. 验证区块时间戳(前后 2 小时窗口)

  3. 验证 Merkle 根与交易列表匹配

  4. 验证每笔交易签名与 UTXO 引用

  5. 验证 coinbase 交易合规性

  6. 验证交易费用总和不超过区块奖励

UTXO 模型

AmosChain 采用 UTXO(未花费交易输出) 模型,与账户模型相比具备以下优势:


数据结构

  • 每笔交易包含一个或多个输入(引用 prior UTXO)和一个或多个输出(新 UTXO)

  • UTXO 由交易 ID + 输出索引唯一标识

  • 每笔交易总输入金额必须 ≥ 总输出金额(差额为矿工费)

UTXO 管理

  • 链上 UTXO Set:存储当前所有未花费输出,支持 O(1) 查询

  • 账本历史分离:完整交易历史保留于 blocks 桶,UTXO 状态独立索引

  • 并发安全:使用读写锁保护 UTXO Set 的并发访问

  • 回滚支持:基于内存状态快照实现临时回滚验证,共识通过后批量持久化写入

  • 切换效率:链切换时直接覆盖 UTXO Set,无需逐笔回滚,O(1) 时间复杂度完成状态切换

双重支付防护

  • 每笔交易输入引用的 UTXO 必须存在于当前 UTXO 集合

  • UTXO 被消费后立即从集合中移除

  • 交易池中的交易会临时锁定相关 UTXO

密码学与安全

算法

用途

说明

ECDSA(secp256k1)

数字签名

交易签名与验证,私钥生成公钥

SHA-256

哈希计算

区块哈希、交易哈希、工作量证明

AES-256-GCM

密钥加密

私钥存储加密,认证加密模式

RIPEMD-160

地址生成

公钥哈希后生成地址

密钥派生:BIP32 分层确定性钱包支持(规划中),从种子生成密钥树。

交易池(Mempool)

  • 待确认交易缓存,最大容量 10000 笔

  • 按手续费率(satoshi/byte)排序,矿工优先打包高费率交易

  • 孤儿交易缓存:引用未知 UTXO 的交易暂存,等待父交易到达

  • 双重支付检测:同一 UTXO 只能被一笔未确认交易引用

  • 交易替换策略:支持 opt-in RBF(Replace-By-Fee),允许用户用更高费率交易替换已提交的低费率交易

Web UI 与 API

  • 可视化仪表盘:节点状态、区块列表、交易详情、网络拓扑

  • RESTful API

    • GET /api/block/{hash} — 查询区块

    • GET /api/tx/{id} — 查询交易

    • GET /api/address/{addr} — 查询地址余额与交易历史

    • POST /api/send — 发送交易

    • GET /api/status — 节点状态

  • API 认证:支持 API Key 认证,防止未授权访问

  • HTTPS 支持:配置 TLS 证书启用加密传输

快速开始

环境要求

  • Go 1.24.0 或更高版本

  • Windows / Linux / macOS

安装与编译


# 克隆仓库

cd C:\amoschain
go mod download


# 编译

go build -o amoschain.exe

运行节点


# 默认启动(4 个挖矿线程)

amoschain.exe


# 指定挖矿线程数

amoschain.exe -workers 8


# 指定 P2P 种子节点

amoschain.exe -seeds "192.168.1.100:10000,192.168.1.101:10000"

环境变量配置

变量名

默认值

说明

AMOSCHAIN_DB_FILE

data/amoschain.db

数据库文件路径

AMOSCHAIN_LISTEN_ADDR

:10000

P2P 监听地址

AMOSCHAIN_WORKERS

4

挖矿线程数

AMOSCHAIN_SEEDS

种子节点列表(逗号分隔)

API_KEYS

Web API 认证密钥(逗号分隔)

TLS_CERT_FILE

TLS 证书文件路径(启用 HTTPS)

TLS_KEY_FILE

TLS 私钥文件路径

AMOSCHAIN_DNS_SEED

DNS 种子域名(用于 SRV 记录解析)

AMOSCHAIN_WHITELIST_MODE

off

开启白名单模式

AMOSCHAIN_WHITELIST

允许连接的 IP/CIDR 列表

AMOSCHAIN_BLACKLIST

禁止连接的 IP/CIDR 列表

AMOSCHAIN_JSON_LOG

false

开启 JSON 格式日志

MIN_FEE_PER_BYTE

1

最小手续费率(satoshi/byte)

DEFAULT_FEE_PER_BYTE

10

默认手续费率

MIN_TX_FEE

100

最小交易手续费(防粉尘攻击)

配置示例


# Windows

set AMOSCHAIN_WORKERS=8
set AMOSCHAIN_LISTEN_ADDR=:10001
set API_KEYS=mysecretkey123
amoschain.exe


# Linux/macOS

export AMOSCHAIN_WORKERS=8
export AMOSCHAIN_LISTEN_ADDR=:10001
export API_KEYS=mysecretkey123
amoschain.exe

网络拓扑

节点发现流程


        ┌──────────────┐
        │  Seed Node   │
        │  :10000      │
        └──────┬───────┘
               │
       ┌───────┼───────┐
       │       │       │
  ┌────▼────┐ ┌▼──────┐ ┌────────┐
  │ Node A  │ │ Node B│ │ Node C │
  │:10000   │ │:10000 │ │:10000  │
  └─────────┘ └───────┘ └────────┘

节点发现流程

  1. 启动时连接硬编码种子节点或配置的种子节点

  2. 通过 getpeers 请求获取其他节点列表

  3. 自动建立 P2P 连接(最多 125 个出站连接)

  4. 通过 inv 消息广播区块与交易通知

  5. 邻居节点通过 getdata 拉取完整数据

网渡科技品牌优势

1. 自主可控的核心技术

AmosChain 底层代码完全由网渡科技自主研发,从共识算法、P2P 网络到 UTXO 模型均拥有完整的知识产权,不依赖任何第三方区块链框架,确保技术路线的自主可控与长期演进能力。

2. CPU 挖矿友好

与依赖 ASIC 或 GPU 的公链不同,AmosChain 采用 CPU 挖矿算法,降低了参与门槛,使更多普通用户与中小企业能够公平参与网络共建,体现了去中心化的核心精神。

3. 轻量级与可扩展架构

AmosChain 核心节点资源占用极低(内存 < 512MB,存储空间仅需数 GB),可在普通服务器甚至树莓派上稳定运行,适合教育、科研、企业内部培训及轻量级应用场景。

4. 国密算法支持(规划中)

网渡科技正在将国密算法(SM2/SM3/SM4)集成至 AmosChain,未来版本将支持国密签名验证、国密哈希计算与国密 TLS 加密通信,满足国内合规与信创要求。

5. 完整的开发生态

  • 多语言 SDK 支持(Go / Python / JavaScript)

  • 详细的 API 文档与开发者指南

  • 开源社区与技术支持

6. 生产级稳定性验证

AmosChain 已在网渡科技内部多个项目中完成长期稳定运行验证,并对外开放测试网络,累计运行超 10,000 小时,区块高度超过 50,000。

总结

AmosChain 是网渡科技在公链领域的重要技术实践。它以轻量级、可接入、易扩展为核心设计理念,采用 PoW 共识机制与 UTXO 模型,为企业和开发者提供了一套完整的去中心化基础设施解决方案。


网渡科技将持续投入 AmosChain 的技术研发与生态建设,推动公链技术在供应链金融、数字存证、物联网与 Web3 等领域的广泛应用,助力构建开放、透明、可信的下一代互联网基础设施。