区块链技术栈组成
4.1 基础技术栈
4.2 分布式账本
- 账本存储就是一个数据库
- 每个节点都有自己独立的账本数据
- 节点的账本数据通过
共识机制
保持一致 - 账本数据可以转出到传统数据库
4.3 密码技术的应用(区块链技术的灵魂所在)
- 计算区块的哈希
- 计算交易事物的哈希
- 构建共识算法,比如“挖矿”协议
- 生成账户地址
- 构建交易所有权的匹配机制
- 零知识证明
4.4 账户模型
- 通常使用公开密钥算法生成密钥对表示
- 账户地址通常就是通过公钥转换生成
- 账户的所有权数据一般是UTXO模型的
- 传统的账户对象往往要配合收据模型构建出广义的UTXO结构,确保事务数据确认的一致性
4.5 网络共识
- 网络共识的技术意义是保持节点账本数据的一致性
- 网络共识是不可篡改、价值传递的基础
- 节点在共识过程的数据验证是独立的
网络共识-种类
PoW:Proof of Work 工作量证明(消耗算力)
PoS:Proof of Stake 权益证明
DPoS:Delegate Proof of Stake 授权权益证明
Raft:日志复制的一致性算法,对应Paxos算法
PBFT:Practical Byzantine Fault Tolerance 拜占庭容错算法
PoA: Proof of Authority 权威证明
PoET:Proof of Elapsed Time 时间消逝证明
4.6 脚本系统
- 是区块链可编程合约的执行基础
- 是区块链网络运行的引擎,驱动数据所有权转换
- 可以使简单的指令集也可以是图灵完备的系统
4.7 扩展技术
一组围绕着核心技术而产生的一种技术生态,让区块链系统运行的更好
---
基本工作原理
5.1 系统架构
5.2 一般客户端组成
5.3 不可篡改性原理
- 节点网络广泛,区块打包权分散
- 区块通过区块hash连接
-
区块中的事务数据按序关联衔接
5.4 区块中可以包含的数据
- 区块头与区块体
- 区块头保存区块的摘要字段
- 区块体保存一个发生的交易数据(广义的概念,不一定是转账的交易)
- 交易数据可以是设计为任何形式,但是必须
可验证
5.5 共识与验证
共识
- 通过一个既定的共识规则,选定一个打包节点
- 打包的数据必须广播出去,交给其他节点验证
- 验证通过后,数据会继续广播给其他节点处理
关键点
- 共识规则要选举出打包者
- 共识的过程是逐步传递的
- 共识的规则是每个节点可以独立验证的