《精通区块链开发技术》笔记
第一章:区块链(内容简介:分布式系统的理论基础——比特币的前身:电子现金、哈希现金——区块链技术)
1.1分布式系统
1、区块链的核心是一个【去中心化的分布式系统】
2、分布式系统中的节点可以相互交换信息
3、节点分为可信节点、缺陷节点、恶意节点。一个有任意行为的节点被称为拜占庭节点,网路上某个出现任何意外行为的节点都可归类于拜占庭节点
4、分布式系统的主要挑战:节点与【容错】的协调,即一个节点的失效不影响整个系统的运行。
1.1.1 CAP定理:任意分布式系统不能同时拥有一致性,可用性,分区容错性(但区块链可以实现三种属性)
(一致性:任意节点拥有最新数据副本;可用性:系统在使用期间可以被访问,必要时做出回应;分区容错性:一组节点的失效不影响系统的运行)
1.1.2 一致性问题前身——拜占庭将军问题
我方将军通过信使希望就进攻或撤退达成一致,问题是存在若干会传递错误信息叛徒将军(拜占庭节点),现在我们希望找到一种可信机制,让将军们成功达成一致决定。——解决方案【Proof of Work:PoW】
1.1.3 分布式一致性问题
1、一致性机制:达成一致性的步骤
2、一致性机制需求:
协议:所有可信节点指定同一值
有效性:所有可信节点的商定值必须至少与一个节点提供的初始值相同
容错性
完整性:任意节点只可决策一次
3、一致性机制类型:
基于拜占庭式的容错:无计算密集型操作(如部分哈希反射),依赖于简单的发布签名的节点方案,当签名到达一定数量时达成协议
基于领导的一致性机制:节点实现领导的选举机制,当选的节点提供结果值
1.2 区块链历史
Hashcash控制垃圾邮件原理:生成hash是一个计算密集型过程,非法用户发送大量垃圾邮件要消耗大量计算资源
1.3 区块链简介
区块链的核心是一个点对点的分布式账本,该账本具有加密安全性,只能在对等身份成员间达成协议时追加,且不能更改
区块链网络视图:互联网——P2P网络——交易——区块——共识——状态机——区块链应用(智能合约)——用户(节点)
1.3.1 区块链技术的各种定义
区块链是一种去中心化的协商一致机制。在区块链中,所有对等点最终会达成关于交易状态的协议。
区块链是一个分布式共享账本,可以看作共享的唯一的交易总账。
作为一个数据结构,区块链是hash链表,成员基本包括指向前一个区块的hash指针、nonce、交易。
1.3.2区块链的一般元素
1、地址:表示事务中收件人和发件人的唯一标识符。建议在每个事务中用新生成的地址,防止用所有者的地址,避免身份识别。
2、事务:基本单元,表示地址间的值传输。
3、区块:hash指针+nonce+时间戳+若干事务。
4、状态机:状态转换机制,一个区块链可以看作一个状态转换机制。
5、智能合约:智能合约运行于区块链之上,在满足某些条件时封装业务。区块链并不支持智能合约。
1.3.3 区块链特性
1、分布式一致性:在确实中心信任机制授权的情况下,各方就结果达成一致。
2、事务验证:节点上发布的任何事务经过验证后,其有效事务将包含在区块中。
3、智能合约平台:区块链定义为一个平台,程序运行其上。
4、对等点间传输值:区块链允许对等点通过令牌传递值,令牌是值的载体。
5、生产加密货币:可选项,为的是激励矿商。
6、智能属性:使区块链内的资产,任何人都无权占有、完全由个人控制、不可重复使用。(该特性对于数字版权管理(DRM)和电子现金系统有着深远的影响)
7、不变性:已经添加的记录是不可变的。如果想要改变,则需要重新计算已经添加的所有区块,而这几乎是不可能的。
8、唯一性:每个事务都是唯一的。在加密货币中,想要发现并避免双重支出,唯一性是关键因素。
9、智能合约:区块链提供了一个有智能合约特性的平台,可视为区块链上的自主程序,可以封装业务逻辑和代码,以便下一步所需。智能合约同时实现了灵活性、可编程性、对于特定业务执行的特定操作,区块链用户可对此加以控制。
1.3.4 创建区块的一般方案、区块的生成方式、区块与事务的关系
节点通过私钥签名启动事务——多个对等点通过Gossip协议验证传播事务,该协议通过里预置标准验证事务——验证成功,创建新区块,确认旧事务(一次确认)——传播至网络、加入账本(链入区块链(二次确认))
第二章 去中心化
2.1基于区块链的去中心化
1、用户通过【共识机制】,在不需要信任的第三方的情况下达成一致。最常用的就是【工作量证明PoW】。
2、中央式、分布式系统都存在控制整个系统的单一权威控制机构,所以其都是中心化的。去中心化系统不存在单一权威控制机构,它把权力层层下放,就像公司管理系统一样,这也是它的创新之处。
并行系统和分布式系统的差别:并行系统中,计算由所以节点同步执行;而在分布式系统中,数据仅可在单一聚合系统上复制,计算不是并行计算。
2.2去中心化方法
1、非中介化:绕过中介,地址对地址。
2、中介竞争:智能合约在服务提供者间选择。
2.3去中心化流程
评估去中心化需求的框架:
1、去中心化的含义:什么是去中心化系统,去中心化系统可以是任意系统,如认证系统或交易系统。
2、去中心化所需的级别:完全去中心化、部分去中心化。
3、选择哪一种区块链:比特币区块链、以太坊区块链。
4、选择哪一种安全性机制:机制可以是原子性的,即事务全部执行或全部不执行,这可以确保完整性。声誉机制,支持系统中不同的受信程度。
2.4区块链和完整的生态圈去中心化操作
为了实现完整的去中心化系统,需要对区块链周围环境也执行去中心化操作。
储存、通信、计算(计算的去中心化是通过区块链技术实现的,如以太坊。其中,包含业务逻辑的智能合约可以允许于该网上。)
去中心化的生态系统概览:
通信(因特网、网格网络)——储存(IPFS、BigChainDB 文件系统、数据库)——区块链(以太坊、超级账本)——身份、财富