区块链技术
区块链技术
一、概述
1 基础知识
定义
区块链是一种分布式数据库:通过网络连接的节点,每个节点都保存着整个数据库所有数据,任何地点存入的数据都会完成同步。
一个节点由:数据,自身哈希值,上一节点哈希值组成。
特点
- 分布式网络。
- 可建立信任。
- 公开透明。
- 不可篡改。除非改 51% 的节点。
局限性
发展史
- 1.0:比特币得到广泛应用。
- 2.0:”数字货币“与智能合约结合。(智能合约:区块链中的一段自动监督的代码)
- 3.0:泛行业去中心化应用。
分类
公有链
向公众开放,用户可匿名参与,无需注册,可以在未经授权的情况下访问网络和区块链。
无法篡改、地吞吐量、交易缓慢。
联盟链
仅联盟成员参与,链权限由联盟成员制定。因为该链是一种需要注册许可的区块链,所以又叫许可链。
部分去中心化、可控性较强、数据不会默认公开、交易速度很快。
私有链
仅私有组织使用,权限组织定,也是许可链。
速度非常快、隐私保障更好、交易成本低、保证基本产品不易被破坏。
侧链
能与比特币区块链交互,并与比特币挂钩的区块链。
因为比特币不易创新和拓展。
互联链
针对特定领域的应用可以在各自的垂直领域形成区块链。
2 体系机构
- 数据层:存储数据。
- 网络层:节点和节点之间信息交换。
- 共识层:数据的有效性。
- 激励层:激励方法。
- 智能合约层:封装了各种脚本、程序和合约。
- 应用层:封装了区块链的各种应用和场景。
底下三层是区块链必须的。(1、2、3)
3 其他关系
大数据
提供如下更好的保障:
- 数据安全。
- 数据开发共享。
- 数据存储。
- 数据分析。
- 数据流通。
云计算
IaaS + PaaS + SaaS == BaaS(区块链即服务)
二、语言
1 基本模块
hashlib
datetime
Struct
Urllib / requests
2 图形化模块
Tkinter
PyQT5
3 Web模块
- flask:轻量(Werkzeng:WSGI 工具集,jinja2:渲染模块)(WSGI:Web服务器网关结构)
- Django:全能型 Web 框架。
- Web.py:小巧的 Web 框架。
- Bottle:和 Flask 类似的框架。
- Tomado:Facebook 的开源异步 Web 框架。
三、核心技术
1 加密技术
HASH-256,ECC,数字签名,数字证书,密钥分存,匿名技术,数据脱敏,差分隐私。
2 核心问题
一致性问题
拜占庭将军问题
问题:存在叛军让通信出错。
N >= 3F + 1(N:总节点,F:叛军)
ELP不可能
ELP不可能:在异步网络下,如果有一台机器可能出错,则没有任何确定性共识算法保证在有限时间内结束。
CAP:一致性,可用性,分区容忍性三个只能同时满足两个。
3 共识机制
- PoW机制
定义
优点
缺点 - PoW算法的实现
- 计算出一个”区块头”的hash值,即为当前区块的所有交易信息。
- 由于随机数是任意的,因此需要不断更改随机数重新计算hash值。
- 当找到一个满足条件的hash值后,将其作为”工作证明”发送给网络上其他结点,其他结点可以轻松验证这个工作量证明是否正确。
- 验证无误其他结点会接受这个新区块,这个结点也会被加到区块链上。
- 其他结点开始计算下一个区块的hash值。
import hashlib
import time
def mine_block(difficulty,block_data):
start_time = time.time()
nonce = 0
target = '0' + difficulty
# 挖矿过程
while True:
data_str = str(block_data) +str(nonce)
block_hash = hashlib.sha256(data.str.encode('utf-8').hexdigest())
if ...
nonce += 1
- PoS机制
定义
优点
缺点
长程攻击,双花。 PoS算法实现
- DPoS机制
定义
优点
缺点 - 分布式一致性算法
定义
- CFT算法
定义- Fast Paxos
- Multi-Paxo
- Kafks
- BFT算法
定义- Hot-stuff
- SBFT
- Honey Badger BFT
- CFT算法
- 共识机制比较
- 跨链共识机制
四、数据存储
1 哈希指针与区块链
- 定义
- 实现
2 梅克尔树
- 定义
- 实现
3 案例
- 100%准备金证明
- 分布式存储
五、网络架构
1 网络架构
节点特点
- 存储链或链的一部分。
- 连接网络。
参与区块链。
节点类型
轻节点
只储存最小量的状态来作为发送或传递交易讯息的节点。
全节点
验证矿工挖出的块,存储区块链的完整副本。
普通节点
维护区块链的网络运行。
矿工节点
产生块。
超级节点
同时具有全节点和矿工节点的特点。
系统类型
- 中心化系统
- 多中心化系统
去中心化系统
网络成员
钱包
比特币交易,信息查询。
矿工
挖矿领奖。
完整区块数据存储
整个区块链。
网络路由
网络维护。
2 比特币网络
六、以太坊
1 以太坊技术
2 智能合约
七、区块链技术改进
1 增强匿名性
区块链技术最有争议性的一个特性就是匿名性。
匿名性分析
混币交易
>
零知识证明
证明者能够在不向被证明者提供任何有用信息的情况下,使被证明者相信某个论断是正确的。
例:邮递员与邮箱。
邮递员可以通过将被证明者投入邮箱的信件拿出并给被证明者看,以此证明邮递员有邮箱的密钥。这样就可以向被证明者证明邮递员有密钥同时密钥也没有泄露给被证明者。
2 加强去中心化
八、安全性分析
1