# 技术架构

### 架构分层

JuChain 的技术架构分为以下关键层级，每层负责特定功能：

#### 数据层（Data Layer）

* **功能**：存储区块链的所有数据。
* **核心组件**：
  * **区块**：包含头部（时间戳、前区块哈希、Merkle 根）和交易数据。
  * **状态数据库**：使用 Merkle Patricia Trie（MPT）存储账户余额和合约状态。
  * **交易池**：缓存待打包的交易。
* **特点**：支持快速查询和数据完整性验证。

#### 网络层（Network Layer）

* **功能**：处理节点间通信和数据同步。
* **核心组件**：
  * **P2P 网络**：基于点对点协议实现节点发现和数据传播。
  * **节点类型**：全节点（完整数据）、轻节点（仅头部）和验证者节点。
* **特点**：高效广播交易和区块。

#### 共识层（Consensus Layer）

* **功能**：确保网络状态一致性。
* **核心机制**：JPoSA（详见下文）。
* **特点**：1 秒出块时间，提供快速确认。

#### 执行层（Execution Layer）

* **功能**：执行交易和智能合约。
* **核心组件**：
  * **EVM**：支持 Solidity 智能合约。
  * **Gas 机制**：低成本交易费用。
* **特点**：兼容以太坊工具和合约。

#### 应用层（Application Layer）

* **功能**：提供开发者接口。
* **核心组件**：
  * **JSON-RPC API**：支持 Web3.js 交互。
  * **工具**：开发者平台、流量分析仪表板。
* **特点**：便于 dApp 开发和集成。

***

### JPoSA 共识机制

JPoSA 是 JuChain 的核心共识机制，结合权益证明（PoS）和权威证明（PoA）的特点，提供高效和安全的区块生成。

#### 核心设计

* **验证者架构**：
  * **核心验证者**：最多 21 个，负责出块。
  * **备用验证者**：随时替换故障核心验证者。
  * **候选验证者**：通过质押 JU 代币参与竞争。
* **质押机制**：
  * 用户质押 JU 代币以成为验证者或委托给现有验证者。
* **出块流程**：
  * 核心验证者轮流生成区块，每 1 秒产生一个新区块。

#### 性能参数

* **出块时间**：1 秒。
* **交易确认时间**：2-3 秒（2-3 个区块）。
* **吞吐量**：支持每秒数千笔交易（具体数值取决于网络负载和优化）。
* **容错性**：可容忍不超过 1/3 的核心验证者故障（即最多 7 个）。

#### 安全性

* **投票权重**：根据验证者质押量和历史表现调整。
* **惩罚机制**：恶意行为或离线将扣除部分质押 JU。

***

### 网络结构

JuChain 使用去中心化的 P2P 网络，支持多种节点角色。

#### 节点类型

1. **全节点**：
   * 存储完整区块链数据，验证所有交易。
   * 适合开发者或高可靠性需求。
2. **轻节点**：
   * 仅同步区块头部，依赖全节点获取数据。
   * 适合资源受限的设备。
3. **验证者节点**：
   * 参与 JPoSA 共识，需质押 JU 并保持在线。

#### 数据同步

* **区块传播**：通过 P2P 网络快速广播新区块。
* **状态同步**：新节点从最新状态开始增量更新。

***

### 核心组件

#### 1. JU 代币

* **用途**：
  * 支付交易 Gas 费用。
  * 质押以参与共识和治理。
* **特点**：驱动网络安全和生态激励。

#### 2. 区块结构

* **头部**：
  * 时间戳、前区块哈希、Merkle 根、验证者签名。
* **主体**：
  * 交易列表（包括普通转账和合约调用）。
* **大小**：默认 2 MB，可根据需求调整。

#### 3. 状态数据库

* **实现**：基于 MPT，存储账户和合约数据。
* **特点**：高效读写，支持快速状态查询。

***

### 性能特点

JuChain 的设计优化了以下性能指标：

* **快速出块**：1 秒出块时间，适合高频交易和实时应用。
* **低成本**：Gas 费用远低于以太坊，平均低于 0.001 JU。
* **高吞吐量**：通过并行交易处理支持高并发。
* **EVM 兼容性**：支持以太坊智能合约和工具，无需额外学习成本。

***

### 开发者集成

#### 1. RPC 接口

* **端点**：`https://rpc.juchain.org`
* **示例**（查询区块高度）：

```bash
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' https://rpc.juchain.org
```

* **id: 1 并不是链 ID（chainId），而是 JSON-RPC 协议中的请求编号，用于客户端识别请求与响应是否对应。**
* **响应**：

  ```json
  {"jsonrpc":"2.0","id":1,"result":"0x1a2b3c"}
  ```

#### 2. 网络配置

* **主网**：
  * RPC：`https://rpc.juchain.org`
  * 链 ID：210000
  * 货币符号：JU
* **Gas 参数**：
  * 最低 Gas 价格：1 gwei。
  * 交易 Gas 限制：5,500,000。

#### 3. 工具支持

* **开发框架**：Truffle、Hardhat。
* **区块浏览器**：[`https://juscan.io`](https://juscan.io)

***

### 与其他区块链对比

| **特性**      | **JuChain** | **Ethereum** | **BNB Chain** |
| ----------- | ----------- | ------------ | ------------- |
| **共识机制**    | JPoSA       | PoS          | PoSA          |
| **出块时间**    | 1 秒         | 12-15 秒      | 3 秒           |
| **交易成本**    | < 0.001 JU  | 较高           | 中等            |
| **EVM 兼容性** | 是           | 是            | 是             |

JuChain 在出块速度和成本上具有明显优势。

***

### 总结

JuChain 的技术架构通过 JPoSA 共识、EVM 兼容性和高效网络设计，提供了一个快速、低成本的区块链平台。其 1 秒出块时间和高吞吐量使其特别适合流量密集型和实时性要求高的 dApp。开发者可利用本文档中的信息，快速集成 JuChain 并构建应用。
