理论部分
什么是区块链
- 区块链的分类
- 公有链(比如:比特币、以太坊、EOS等)
- 任何人都可读取的
- 任何人都能发起交易并且交易能得到有效确认的
- 任何人都能参与其共识过程的
- 私有链
- 企业内部自己搭建
- 开发节点
- 测试节点
- 联盟链(有竞争 又需要合作的场景)
- 共识过程受到预选节点控制的区块链
- 只有获得准入联盟的节点,才可以参与其中(比如:Fabric、R3联盟、EEA以太坊企业联盟、阳光链)
- 公有链(比如:比特币、以太坊、EOS等)
- 要解决的问题
- 价值传递
- 转让方(不会再拥有价值)
- 受让方(拥有价值)
- 价值传递
- 一种特殊的分布式数据库
- 没有中心、没有管理员
- 全民记账
- 只能增查、不能改删
- 区块链的特点
- 不可篡改
- 可追溯
- 去中心化
区块链架构模型
- 网络层级(自下往上。a b c是构建区块链的必要元素,缺一不可。d e f并不是构建区块链的必要因素)
- 数据层
- 封装了底层数据的链式结构,以及相关的公私钥非对称加密技术,和时间戳技术。这是区块链中最底层的数据结构。
- 网络层
- P2P主网机制、数据传播机制、数据验证机制
- 共识层
- 封装了网络层各类共识机制的算法,共识机制算法是区块链的核心技术。
- 比较流行的共识算法有
- 工作量证明机制 POW
- 权益证明机制 POS
- 股份授权证明机制 DPOS
- 拜占庭容错共识 PBFT
- 比较流行的共识算法有
- 封装了网络层各类共识机制的算法,共识机制算法是区块链的核心技术。
- 激励层
- 将经济因素集中到区块链体系中来,包括经济激励的发行机制和分配机制等,主要应用在公有链当中,在公有链当中必须激励遵守规则参与记账的节点,并且惩罚不遵守规则的节点,才能让整个系统朝着良性循环的方式发展。在私有或者联盟链中不一定要激励。
- 合约层
- 封装各类脚本、算法和智能合约,是区块链可编程特性的基础,可以理解为一份简单的电子合同,并且在达到约束条件自动触发条件,不需要人工干预,也可以在不满足条件的时候自动解约。理论上可以自动触发之前自行约定好的一切条款,这也是区块链能够解放信用体系最核心的技术之一。
- 应用层
- RPC远程调用
- 封装了区块链各种应用场景和案例
- 数据层
区块链的链式结构
- 链式结构
- 区块链中最主要的是数据层,而数据层最重要的就是链式结构
- 链式结构中最基本的构成单位就是区块
-
区块
- 区块体存储了相关的交易数据
- 区块头中最重要的是
父区块hash
- 每一个区块含有一个父区块的hash,相当于有了一个指向父区块的指针。把一个一个的区块联系起来就形成了区块链这种链式结构
- 对于链式结构或者树形结构,总会有第一个节点,在区块链中把第一个节点区块叫
创世区块
,在创世区块
中,没有父区块hash值,只有数据
-
hash函数介绍
- 什么是hash函数
- 一种算法
- 任意长度的二进制数据映射为固定长度的二进制数据
- hash函数的特点
- 确定性
- 对于同样的数据,不论通过多少次计算,最后都会得到相同的结果。
- 单项性
- 类非对称加密,无法进行反推解析
- 隐秘性
- 类非对称加密,无法进行反推解析
- 抗篡改
- 对于输入值一个 byte 的改动,都会对hash产生很大的变动
- 抗碰撞
- 对于两个不同的值产生的hash值相同的可能性极小
- 确定性
- hash 函数的实现
- MD系列
- SHA系列,推荐SHA256、SHA3
-
代码实现
-
总结
- 父区块hash(区块3) = hash(父区块hash(区块2) + 数据(区块2))
- 父区块hash(区块2) = hash(父区块hash(区块1) + 数据(区块1))