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 等领域的广泛应用,助力构建开放、透明、可信的下一代互联网基础设施。

FAQ

常见问题

关于公有链-基于Go语言研发的常见问题解答

公有链是什么意思?
公有链是指完全公开、无需许可的区块链网络,任何人均可自由加入、参与共识、读取数据和发送交易。典型的公有链如比特币、以太坊,其节点分布在全球,数据透明且不可篡改。
公有链的特点
公有链的主要特点包括:去中心化(无单一控制方)、开放性(任何人都可参与)、匿名性(节点无需实名)、不可篡改(数据一经记录难以修改)以及透明性(所有交易公开可查)。
公有链、联盟链、私有链的区别
公有链开放无许可,任何人均可读写和参与共识;联盟链由多个机构共同管理,需授权加入;私有链由单一组织控制,权限严格。三者核心区别在于参与权限与去中心化程度。 结构化对比: |维度|公有链|联盟链|私有链| |参与权限|无许可,任何人可加入|需授权,多机构共同管理|单一组织控制,权限严格| |去中心化程度|完全去中心化|部分去中心化|中心化| |共识机制|PoW/PoS等开放共识|PBFT/RAFT等高效共识|单一节点或简单共识| |交易性能|较低(TPS通常<100)|较高(TPS可达数千)|高(TPS可达数万)| |数据可见性|全公开|参与方可见|仅组织内部可见| |适用场景|加密货币、公链应用|跨机构协作、供应链金融|企业内部审计、数据管理|
公有链的代表有哪些
截至2026年,典型公有链代表包括:比特币(首个数字货币)、以太坊(智能合约平台)、Solana(高吞吐量)、Cardano(学术研究驱动)、Polkadot(跨链互操作)以及Avalanche(低延迟子网架构)。
公有链是否受管控
公有链本身技术中立,但现实应用中受各国法律监管。例如中国禁止加密货币交易但鼓励区块链技术研发;欧美对DeFi、稳定币实施合规要求。公有链上的行为需遵守所在司法辖区的反洗钱、数据隐私和金融监管法规。
公有链常用的共识机制有哪些?不同机制的特点是什么?
主流共识机制包括工作量证明(PoW,如比特币,去中心化程度高但能耗大)、权益证明(PoS,如以太坊2.0,能耗低但可能存在中心化倾向)、委托权益证明(DPoS,如EOS,效率高但节点少)和实用拜占庭容错(PBFT,联盟链常用,快速确认但扩展性有限)。当前趋势是混合共识与无领导者共识,结合不同机制的优势。选择共识机制需平衡去中心化、安全性和性能。
什么是跨链互操作,公有链如何实现?
跨链互操作指不同公有链间资产与数据的交换。实现方式包括跨链桥(如Wormhole、LayerZero)、原子交换、中继链(Polkadot、Cosmos IBC)。2025年后头部公链已支持同质化资产与NFT的无缝跨链转移。
公有链上的智能合约是什么?
智能合约是部署在公有链上自动执行的程序代码,按预设规则运行,无需第三方信任。以太坊首创Solidity编写,2024年后Move语言(Aptos、Sui)、Rust(Solana)等新语言也被广泛采用。
未来公有链的技术趋势是什么?
趋势包括:模块化架构分离执行、共识、数据可用性;ZK技术用于隐私与扩展;账户抽象提升用户体验;链抽象简化用户交互;以及AI与链上智能合约的融合(如自主代理)。预计2027年将出现超高性能公链。
区块链开发常用哪些编程语言?不同语言的适用场景是什么?
主流区块链开发语言包括:Solidity(以太坊智能合约首选,语法类似JavaScript,适合快速开发)、Rust(Solana、Polkadot等高性能链核心语言,安全性高,适合系统级开发)、Go(Hyperledger Fabric等联盟链常用,性能优异,适合后端服务)、JavaScript/TypeScript(前端DApp开发及Chainlink等中间件)。此外,Python常用于原型验证和数据分析,Move语言(Aptos、Sui)用于资源安全编程。选择语言需根据目标链平台和项目需求确定。