# 区块链技术简介

## 区块链技术定义

工信部指导发布的《中国区块链技术和应用发展白皮书2016》这样解释：广义来讲，区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。 这个定义术语很多，大众难以理解。我们从区块链字面意义上理解它。 区块链（blockchain)是一种数据结构，由区块（block）和链（chain）组成。区块是记录一段时间内发生的所有交易和状态结果，是对当前账本状态的一次共识；链是由区块按照发生顺序串联而成，是整个账本状态变化的日志记录。 在实现上，首先假设存在一个分布式的数据记录账本，这个账本只允许添加、不允许删除。 ![image](http://yigou.oss-cn-beijing.aliyuncs.com/article/fabric/1.png) 账本底层的基本结构是一个线性的链表，链表由一个个“区块”串联连接，后继区块记录前导区块的哈希值。新的数据要加入，必须放在一个新的区块中。而这个区块是否合法，可以通过计算哈希值的方式快速检验。任意维护节点都可以提议一个新的合法区块，然而必须经过一定的共治机制来对最终选择的区块达成一致。

## 技术名词

* 交易 —— 一次状态转移操作
* 区块 —— 交易的集合
* 链 ——区块的顺序排列

> 我们学习区块链要避免名词陷阱，目前区块链技术都是现有技术组合，还没有新技术的产生。写于2019年4月24日

## 区块链特点

* 面向新增开放，面向修改关闭。任何对账本数据的修改都会在链条后续追加新的区块，而不是修改之前的区块，意味着都是新增。
* 去中心化。或者说多中心化，无需集中控制而能达成共识，实现上尽量采用分布式。
* 保护隐私。通过密码学的机制来确保交易无法被抵赖和破坏，并尽量保证隐私。

## 区块链分类

区块链技术应用场景众多，这些场景的共性是多人互信。根据参与者的组成不同，分为公有链、私有链、联盟链。公有链表示所有人都可以参与和维护；私有链是面向少部分人参与，集中管理者维护；联盟链介于两者之间，由多个组织来合作维护。

* 公有链
* 联盟链
* 私有链

## 区块链平台

* 比特币(公有链)
* 以太坊(公有链,引入智能合约)
* EOS&#x20;
* linux基金会hyperledger

## 应用场景

* 去中介
* 价值转移
* 数据共享

## 区块链技术

* P2P网络协议
  * 中心化
  * 分布式
  * 去中心化
* P2P网络实现
  * Hyperledger Fabric，利用gRPC技术
  * Ethereum，利用Kad DHT技术
* 密码学-哈希（hash）
  * 将不定长度的数据转换成固定长度的哈希值
  * MD5/SHA1/SHA2(SHA2-256)
* 密码学-加解密算法
  * 对称加密：秘钥相同，易泄露（AES/DES）
  * 非对称加密：公钥、私钥、效率低（RSA、椭圆曲线等）
* 共识算法（分布式一致性算法）
  * 强一致性
  * 最终一致性
  * CAP原理
  * ACID原理
* 共识算法
  * Paxos
  * 拜占庭容错

    ![image](http://yigou.oss-cn-beijing.aliyuncs.com/article/fabric/2.png)

> 拓展阅读
>
> * [【原创翻译】区块链的创世论文](https://mp.weixin.qq.com/s?__biz=MzI3MjAzMDM4Mw==\&mid=2658342006\&idx=1\&sn=fc1194d8662337f7810b467b43a7bfc3\&chksm=f0bf7bb6c7c8f2a0311500c777ac0e2419894547d29f02bf20bbb74e4af4a4a2c25337ff6962\&mpshare=1\&scene=1\&srcid=\&key=bcb2a02128f6508d1fd59cacfa399152b5c645080212942c62cfd754cb621192641eb56f849f1a15aabc9566d1955bd68f14320ae862c9aa59c966e90fe6e35f4d152e60a8457a6c454ad89178a4208b\&ascene=1\&uin=NjQ2MzExMzAw\&devicetype=Windows+10\&version=62060739\&lang=zh_CN\&pass_ticket=sVW%2BRZVvNl%2BGkxVWqOOMKjw5hx3JUENArhUmGAStE4eL98lLzGxdXuK0upCuencY)
> * [区块链原理、设计与应用 作者：杨宝华](https://item.jd.com/12159265.html#crumb-wrap)
> * [hyperledger fabric官方文档](https://hyperledger-fabric.readthedocs.io/en/latest/)
