第一章:区块链基础概念与核心组件
理解链的基础特性是学习对接的第一步
1. 区块链类型:公链 vs 联盟链
| 特性 | 公链(Public Chain) | 联盟链(Consortium Chain) |
|---|---|---|
| 代表 | 以太坊、BSC、Solana | Fabric、FISCO BCOS、蚂蚁链 |
| 参与方 | 任何人 | 许可节点/组织 |
| 共识算法 | PoS、PoW | Raft、PBFT |
| 交易费用 | Gas 费(ETH/BNB) | 无或极低 |
| 性能 | 15-1000 TPS | 1000-10000 TPS |
| 数据可见性 | 全公开 | 按通道/组织隔离 |
| 适用场景 | DeFi、NFT、DEX | 供应链金融、政务、跨境结算 |
券商系统视角
| 维度 | 类比 |
|---|---|
| 公链 | 国际汇款系统(SWIFT),全球可达但有手续费 |
| 联盟链 | 银行间清算系统(CIPS),参与方需准入,效率高 |
2. 核心概念详解
2.1 账户模型
以太坊(公链)- 账户模型
┌─────────────────────────────────────────┐
│ 以太坊账户结构 │
├─────────────────────────────────────────┤
│ 外部账户(EOA) │ 合约账户 │
│ - 由私钥控制 │ - 由代码控制 │
│ - 有余额 │ - 有余额+存储 │
│ - 可发起交易 │ - 可被调用 │
│ - 地址:0x... │ - 地址:创建时生成 │
└─────────────────────────────────────────┘
关键字段:
address:20字节地址(0x开头)balance:ETH 余额(Wei 为单位,1 ETH = 10^18 Wei)nonce:交易计数器(防止重放攻击,每次交易+1)
Fabric(联盟链)- 成员服务
┌─────────────────────────────────────────┐
│ Fabric 组织与身份 │
├─────────────────────────────────────────┤
│ MSP(成员服务提供者) │
│ ├── 组织(Org1、Org2...) │
│ │ ├── 用户(User1@org1...) │
│ │ ├── 节点(peer0.org1...) │
│ │ └── 证书(X.509) │
│ └── 通道(Channel) │
│ └── 包含多个组织的私有账本 │
└─────────────────────────────────────────┘
关键概念:
- 通道(Channel):子网概念,通道内数据仅成员可见
- 组织(Organization):参与方实体,如银行、企业
- 背书策略:交易需哪些组织签名才有效
2.2 交易与区块
区块结构对比
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ 以太坊区块结构 │ │ Fabric 区块结构 │
├──────────────────────────────┤ ├──────────────────────────────┤
│ Header(区块头) │ │ Header(区块头) │
│ - ParentHash(父区块哈希) │ │ - Number(区块号) │
│ - StateRoot(状态树根) │ │ - DataHash(数据哈希) │
│ - TxRoot(交易树根) │ │ - PrevHash(前一个哈希) │
│ - Timestamp(时间戳) │ │ - Timestamp(时间戳) │
│ - Number(区块高度) │ │ │
├──────────────────────────────┤ ├──────────────────────────────┤
│ Transactions(交易列表) │ │ Data(数据) │
│ - Hash(交易哈希) │ │ - Transactions(交易数组) │
│ - From/To(发送/接收方) │ │ - Endorsements(背书数据) │
│ - Value(转账金额) │ │ - Metadata(元数据) │
│ - Gas/GasPrice(Gas信息) │ │ │
│ - Input(合约调用数据) │ │ │
│ - Signature(签名) │ │ │
└──────────────────────────────┘ └──────────────────────────────┘
交易生命周期
以太坊交易流程:
发起交易 → 签名 → 广播到网络 → 矿工打包 → 区块确认 → 状态更新
Fabric交易流程:
发起提案 → 背书节点模拟执行 → 收集背书 → 提交排序 → 区块分发 → 节点验证提交
2.3 共识算法
| 算法 | 类型 | 特点 | 应用 |
|---|---|---|---|
| PoW | 工作量证明 | 算力竞争,能耗高 | 比特币早期、以太坊早期 |
| PoS | 权益证明 | 质押代币,节能高效 | 以太坊 2.0、Cosmos |
| PBFT | 拜占庭容错 | 确定性共识,3f+1容错 | Fabric、蚂蚁链 |
| Raft | 非拜占庭容错 | 简单易实现,领导者选举 | Fabric 测试网 |
2.4 Gas 机制(公链特有)
Gas 费用 = Gas Used × Gas Price
示例:
- 普通转账:21000 Gas × 20 Gwei = 0.00042 ETH ≈ $1
- 合约调用:100000 Gas × 20 Gwei = 0.002 ETH ≈ $5
Gas Price 动态变化:
- 网络拥堵时上升
- 网络空闲时下降
关键概念:
Gas Limit:交易最大 Gas 消耗上限Gas Price:每单位 Gas 愿意支付的价格(Gwei)Nonce:发送方交易序列号,必须严格递增
3. 对接必知的核心组件
3.1 节点类型
┌─────────────────────────────────────────────┐
│ 区块链网络拓扑 │
├─────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐│
│ │ 全节点 │◄──►│ 全节点 │◄──►│ 全节点 ││
│ │Full Node│ │Full Node│ │Full Node││
│ └────┬────┘ └────┬────┘ └────┬────┘│
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐│
│ │ 轻节点 │ │ 轻节点 │ │ 轻节点 ││
│ │LightNode│ │LightNode│ │LightNode││
│ └─────────┘ └─────────┘ └─────────┘│
│ │
│ 全节点:存储完整区块数据,可验证所有交易 │
│ 轻节点:仅存储区块头,通过 SPV 验证 │
└─────────────────────────────────────────────┘
交易所对接建议:
- 自建全节点:数据自主可控,推荐生产环境
- 第三方节点服务:Infura、Alchemy(快速上手,但有依赖)
3.2 RPC 接口
JSON-RPC 请求示例:
请求:
{
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": ["0x...", "latest"],
"id": 1
}
响应:
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x1a055690d9db80000" // 十六进制余额
}
常用 RPC 方法:
| 方法 | 说明 | 用途 |
|---|---|---|
eth_blockNumber | 获取最新区块号 | 同步区块数据 |
eth_getBlockByNumber | 按高度获取区块 | 扫块获取交易 |
eth_getTransactionByHash | 按哈希查交易 | 交易状态查询 |
eth_getBalance | 查询地址余额 | 余额更新 |
eth_sendRawTransaction | 发送签名交易 | 提现/转账 |
eth_gasPrice | 获取当前 Gas 价格 | 动态设置 Gas |
3.3 加密基础
非对称加密(ECDSA)
密钥生成:
私钥(32字节随机数) ──► ECDSA ──► 公钥(64字节)
──► Keccak256哈希 ──► 地址(20字节)
交易签名:
交易数据 + 私钥 ──► ECDSA签名 ──► 签名值 (r, s, v)
签名验证:
交易数据 + 签名 + 公钥 ──► 验证通过/失败
国密算法(SM2/SM3/SM4)- 联盟链常用
| 算法 | 用途 | 说明 |
|---|---|---|
| SM2 | 非对称加密/签名 | 替代 ECDSA/RSA |
| SM3 | 哈希 | 替代 SHA256 |
| SM4 | 对称加密 | 替代 AES |
4. 交易所核心业务流程
4.1 充值流程
用户充值流程:
1. 用户获取充值地址(平台派生地址)
│
▼
2. 用户向该地址转账代币
│
▼
3. 平台扫块服务监听新区块
- 轮询或订阅新区块
- 解析交易目标地址
│
▼
4. 匹配平台地址库
- 命中 → 记录充值记录
- 未命中 → 忽略
│
▼
5. 等待区块确认
- 以太坊:通常 12 个区块(约 3 分钟)
- BSC:通常 15 个区块(约 45 秒)
│
▼
6. 更新用户余额,通知到账
4.2 提现流程
用户提现流程:
1. 用户发起提现请求
- 填写目标地址、金额
│
▼
2. 风控校验
- 余额充足性
- 地址白名单
- 单日限额
│
▼
3. 构建交易
- from:平台热钱包地址
- to:用户目标地址
- value:提现金额
- nonce:热钱包 nonce 管理
- gasPrice/gasLimit:动态计算
│
▼
4. 交易签名(签名机/冷钱包)
│
▼
5. 广播交易到网络
│
▼
6. 轮询交易状态
- pending → 等待
- success → 更新余额
- failed → 退款处理
5. 关键术语速查
| 术语 | 解释 | 券商类比 |
|---|---|---|
| 私钥 | 资产控制权的凭证,必须保密 | 银行 U 盾 PIN 码 |
| 公钥 | 由私钥派生,可公开 | 银行账号 |
| 地址 | 公钥哈希,用于接收资产 | 银行账号 |
| 交易哈希(TxHash) | 交易的唯一标识 | 交易流水号 |
| 区块高度 | 区块在链上的序号 | 日期+序号 |
| 确认数 | 交易所在区块后的新区块数 | 清算完成标记 |
| Gas | 执行操作的计算费用 | 交易手续费 |
| Nonce | 交易序列号,防重放 | 交易序号 |
| 智能合约 | 链上自动执行的程序 | 自动化的业务规则 |
| Token | 链上代币 | 电子现金 |
| ERC20 | 同质化代币标准 | 标准账户格式 |
| ERC721 | 非同质化代币标准(NFT) | 非标准资产 |
6. 学习检查清单
- 理解公链与联盟链的核心差异
- 掌握以太坊账户模型(EOA、Nonce、Gas)
- 掌握 Fabric 组织、通道、背书策略
- 理解区块和交易的数据结构
- 了解主流共识算法及其特点
- 熟悉常用 RPC 接口及其用途
- 理解充值提现的完整业务流程
- 掌握私钥、公钥、地址的生成关系