一、区块链介绍
(一)使用场景(少数举例)
1.金融领域
(1)跨境支付:区块链实现快速、低成本的跨境支付,减少中间环节,提高效率。
(2)资产管理:区块链可以用于资产的数字化和交易,简化流程,降低交易成本。
2.供应链管理
(1)产品溯源:通过区块链记录产品的生产、运输、销售等全过程,确保产品信息的真实性与可追溯性。
(2)防伪验证:利用区块链的不可篡改性为商品提供方位验证,打击假冒伪劣产品。
3.能源领域
(1)分布式能源交易:区块链可以用于管理分布式能源交易,如:太阳能、风能等。实现能源的高效利用和交易。
(二)定义
区块链实质是一个由多方参与、共同维护、持续增长的分布式数据库,也被称为分布式共享总账。
区块链技术是利用块链式数据结构来验证与存储数据;利用分布式节点共识算法来生成和更新数据;利用密码学的方式保证数据传输和访问的安全;利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式,最终由信息互联实现价值互联。
(三)区块链家族
1.边缘计算
①P2P下载用来共享硬盘②CDN共享网络带宽③分布式计算共享计算机CPU资源。
(四)区块链六层(从下到上)
层名 | 介绍 |
数据层 | 封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法。 |
网络层 | 包括分布式组网机制、数据传播机制、数据验证机制。 |
共识层 | 主要封装网络节点的各类共识算法 |
激励层 | 将经济因素集成到区块链技术中来,主要包括经济激励的发行和分配制度。 |
合约层 | 主要封装各类脚本、算法和智能合约,是区块链可编程性的基础 |
应用层 | 封装了区块链的各种应用场景和案例 |
二、哈希算法
1.定义:能将任意长度的二进制明文(汉字、视频、音频等)映射为较短且固定长度的二进制值(HASH值),并且不用的明文很难映射为相同的二进制值(HASH值)。
注:HASH值应用中又称数字指纹、数字摘要、消息摘要。
2.冲突(碰撞):输入两对不同的明文,产生的HASH值相同。
3.特点:
(1)正向快速:给定明文和HASH算法,有限时间和资源内得出值;
(2)逆向困难:给定HASH值,基本不可能逆推明文;
(3)输入敏感:只要稍微修改。产生的HASH值变化巨大;
(4)抗冲突(碰撞性):基本不可能不同的输入产生不同的值。(产生代价太大)
4.目前流行的HSAH算法:
MD4(128位)、MD5(128位)和RIPEMD-160(160位)、SHA-1(160位)、SHA-2系列(SHA-224、SHA-256、SHA-512)。
注:目前一般认为MD5和SHA-1已经不够安全,推荐至少使用SHA-2-------512算法。SHA-512最安全。
三、对称加密和非对称加密
注:HASH和加解密不同:HASH不可逆,加解密可逆。
算法类型 | 代表 | 特点 | 优势 | 劣势 |
对称加密算法 | DES、IDEA、3DES、AES | 加解密密钥相同 | 空间占用小、计算效率高 | 共享密钥、易泄露 |
非对称加密算法 | RSA、Elgamal、椭圆曲线系列算法(ECC) | 加解密密钥相同 | 安全度高、无需共享密钥 | 计算效率低、存在中间人攻击 |
1.加密算法的典型组件:加解密算法、私钥和公钥。
2.混合加密:一般客户端向服务端发送加密密钥,密钥用非对称加密算法加密后再传输。
四、字符编码、解码
(一)Base64
1.定义:一种基于64个可打印字符来表示的二进制数据的方法。
2.组成:26个小写字母、26个大写字母、10个数字及2字符(+和/)。
3.字符焦:
0——25(A——Z)、26——51(a——z)、52——61(0——9)、62——63(+和/)
4.步骤
(1)将每个字符转成ASCII编码的10进制;
(2)将10进制的编码转成2进制编码;
(3)将2进制编码按照6位一组划分(不足用0补齐);
(4)将2进制编码转成10进制数;
(5)将10进制数作为索引。从Base64编码中查找字符;
(6)编码后的长度需要4的倍数,不是则结尾用=补齐。
(二)Base58
1.舍去了Base64易混淆的字符:0(数字0)、O(大写字母o)、I(小写字母i)、l(小写字母L)、+、/。
2.转换步骤同Base64一样(只是查表不一样)
(三)Base58check
1.在Base58的基础上增加了错误检验码来检验数据在转录中出现的错误。
2.检验码(从数据的哈希值中得到)的长4个字符,添加到需要编码的数据之后。
五、私钥
1)WIF格式:51位长度,以5开头。
2)WIF—compressed格式:52位长度,以K或L开头。
(一)步骤
1.随机选取一个32字节的数作为私钥。(私钥为64位16进制数字);
2.取上一步结果,前面加入版本号(OX80),末尾加入压缩标识符(OX01),再经Base58编码生成;
注:根据是否添加压缩标识符分为WIF和WIF—compressed(添加为它)。
3.取上一步结果,计算两次SHA-256后的哈希值;
4.取上一步结果前4个字节(8位16进制)作为校验码;
5.把校验码加到第二步结果后面,形成增加校验码之后的16进制格式;
6.用Base58表示法变换称为私钥(这是最常见的私钥形态)。
六、地址
注:公钥和地址是不相同的,公钥可以生成地址。有时候将比特币地址称为公钥哈希。
1)一般以1和3开头的字符串(Testnet网络中,地址以2开头)。
(一)步骤
1.随机选取一个32字节的数作为私钥(私钥为64位16进制数字);
2.使用椭圆曲线加密算法(ECDSA)计算私钥所对应的非压缩公钥(经常说的公钥);
非压缩公钥:共65字节,第一个字节是OX04.32字节为X坐标,32字节为Y坐标,130位16进制数字。
压缩公钥:共33字节,第一个字节是OX02或OX03,32字节的X坐标,66位16进制数字。
3.计算公钥的SHA-256哈希值;
4.取上一步结果,计算RIPEMD-160哈希值;
5.取上一步结果,前面加入网络ID号;
比特币主网ID号:OX00;
Testnet测试网络ID号:OX6f;
6.取上一步结果,计算SHA-256哈希值;
7.取上一步结果,再计算SHA-256哈希值;
8.取上一步结果的前4个字节(8位16进制)作为校验码;
9.将校验码加在第5步结果后面,这样就形成了比特币地址的16进制格式;
10用Base58编码转化为最终结果(最常用的比特币地址格式,34字节长度)。
注:由公钥生成的地址以数字1开头。
(二)私钥、公钥、地址关系简图
(三)为什么需要地址
1.公钥太长了,不适合灵活交易;
2.没有发送过交易的地址,并不想暴露自己的公钥。
七、Merkle Tree(默克尔树)
(一)构建过程
1.将区块内的每一笔交易数据分别进行哈希运算,得到每个交易的哈希值。
2.将这些哈希值两两配对(如果交易数量是奇数,则最后一个哈希值自我配对),并对每一对哈希值再次进行哈希运算,得到上一层的哈希值。
3.重复上述过程,直到只剩下一个哈希值,这个哈希值就是默克尔树的根哈希值。
(二)特点
1.常见结构二叉树,但也可以是多叉树。具有树结构的全部特性;
2.基础数据不固定,存什么都可以,因为它只存数据HASH后的值;
3.从下往上逐层计算。
(三)应用(广泛)
1.节省数据存储空间;
2.快速比较大量数据;
3.快速定位修改;
4.零知识证明(根据哈希值证明)即不需要透漏消息。
(四)区块链中的应用
1.识别数据是否被篡改;
2.解决数据量过大的问题;
3.验证交易真实性。
八、数字签名
(一)组成部分
(数字摘要和非对称加密技术组成)
1.使用私钥(签名密钥)从消息(交易)创建签名算法;
2.允许任何人验证签名的算法。
(二)签名流程
(三)要求(特点)
1.签名不可伪造性;
2.签名不可抵赖的;
3.签名可信性(识别与应用相对容易,任何人都可以验证有效性);
4.签名不可复制(签名与原文不可分割的整体);
5.签名消息不可篡改(只要数据被改、签名被改,那么任何人可以验证而拒收)。
九、分布式与共识性
(一)共识算法的核心问题
维护多个副本的一致性,即在部分副本中由于各种原因发送错误的情况下,整体集群仍能正常对外提供服务。
(二)分布式系统
每个节点都有自主管理权,且成员之间可以点对点地完成信息的交换或资产的交易
(三)共识机制
是分布式系统中为了保证数据一致性和可信度而采用的一种机制。
(四)共识算法
存在可以有效保证各个节点之间按照既定的原则共同维护账本。其本质上是区块链系统中实现不同节点之间建立信任获取权益的数学算法。
(五)造块的流程(下面两者等价)
(六)主要共识算法
1.POW
是工作量证明算法,被应用于比特币、以太坊以太币等共有链场景下,是一种简单粗暴的共识算法。
(1)原理
解方程,谁先解出来以谁的记账为主。
小于目标难度,解题完成,工作量证明完成。
(2)弊端
1)算力不公平:矿场的竞争力比单节点大;
2)随着硬件发展,特别是量子计算机的出现可能几秒就破解了HASH;
3)POW算法太浪费,比特币网络每秒可以完成数百亿次SHA256算法,但这些计算除了使恶意攻击者不能轻易地伪装成几百万个节点和打垮比特币网络,并没有更多实际或科学价值。
2.POS
权益证明算法,没有控制挖矿过程,在创世区块内写明了股权分配比例,之后通过转让、交易的方式,逐渐分散到用户手里,并通过利息的方式新增货币,实现对节点的奖励。
(1)权益证明
指区块链网络中参与区块出块的节点必须首先证明自己具有某种形式的权益。权益的典型表现是节点对特定货币的所有权,称为币龄。
币龄=持币数量*持币天数
注:
1)以太坊是POW和POS的结合;
2)获得出块权的节点会消耗掉用于竞争出块权的权益,防止权益数量多的富豪节点垄断出块权;
3)为了激励节点参与出块竞争,完成出块的节点将获得一定的奖励。
(2)优点
能耗更低、更加去中心化、更快的确认速度;
(3)缺点
积极性不高,对于坏节点的处理存在诸多的困难。
3.DPOW
POW+POS。通过POW挖矿发行加密货币,使用POS维护网络的稳定。
4.PBFT(了解)
使用拜占庭容错算法,该算法解决了拜占庭将军的问题。
(1)目的
好节点不知道哪些是好节点,坏节点不知道哪些是坏节点,PBFT要让好节点达成一致。
(2)基本流程
1)客户端发送请求给主节点;
2)节点广播请求给其它节点,节点执行PBFT算法的三个阶段共识流程;
3)节点处理完三个阶段流程后,返回消息给客户端。
4)客户端收到来自f+1个节点的相同消息后,代表共识已经正确完成。
(3)POW、POS、BFT比较
关键 | 实现途径 | 优势 | 适用场景 | |
POW | 算力 | 投资矿机 | 验证交易、核验交易、求验方(持币人)公平竞争 | 稀缺资源竞争,如拍卖。 |
POS | 所持资源 | 囤积货币 | 快速、高效、分散灵活 | 大多数交易、分布式 |
BFT | 信誉于安全性 | 在自己专业领域持续做对的事 | 激励制度完善 | 选举投票 |
4.常用共识算法分布
十、区块链结构
(一)链式结构(区块间通过父哈希值连接)
注:这里不仅作为指针,还包含了该值的摘要。
(二)存储方式
1.中心化数据:将数据集中存储;
2.区块链存储:将数据按照区块方式分块进行存储。(区块链采用这种)
(三)区块标识符
1.当前区块头哈希值:唯一且明确的标识一个区块;
2.区块高度(编号):不是唯一标识符,不存储在区块中(反例分叉)。
(三)具体结构
1.区块包括:区块头和区块体;
2.区块链体:记载了交易详情,交易计数器,区块大小;
3.区块链头:每个区块前80个字节,包含以下6部分信息:
1)version版本号,占6个字节(明确交易参照规则,不同版本的数据结构,用不同代码解析);
2)前一个区块的HASH:占32字节;
3)本区块所有交易的默克尔根:占32字节;
4)时间戳:占4字节(产生时间);
5)难度目标Bits:占4字节(工作量证明算法难度目标);
6)随机数None:占4个字节(全网矿工计算当前区块HASH值的核心参数)
注:区块链中第一个区块被称为创世区块,产生于2009年。
十一、区块链节点
(一)分类
(二)节点功能
交易验证:节点负责验证新的交易是否有效,并确保交易遵守区块链的规则和协议。只有经过验证的交易才能纳入新的区块中。
网络通信:节点通常通过共享状态信息、对其协议的治理进行投票以及验证传入交易的新块来在网络内进行通信。
维护区块链:来自不同地理位置的多样化和分散的节点有助于建立一个更强大的共识机制,确保区块链的连续性和不可篡改性。
(三)如何发现其它节点
1.地址数据库(peer.dat)
网络中的节点地址都会存储在这。节点启动时由address messager载入。
注:节点第一次启动时,无法使用这种方式。
2.通过命令行指定
用户可以通过命令行将指定节点地址传递给新节点,传递格式:-addnode<ip>或-connect<ip>。
3.DNS地址
当peer.dat为空,且用户没有使用命令行指定地点时,新节点可以启动DNS地址。
4.硬编码地址
如果DNS地址方式失败,还可以用这种方式
注:需要避免DNS地址和硬件编码种子节点的过载。因此通过它们获得节点地址后,应该断开与这些节点的连接。
5.通过其它节点获得
节点间进行交换IP地址信息(通过getaddr消息和addr消息)
(四)区块链数据传播协议
1.应用核心场景
1)节点入网建立初始连接;
2)节点地址传播发现;
3)矿工、全节点同步区块;
4)客户端创建一笔交易;
5)矿工、全节点接受交易;
6)矿工、全节点挖出新区块,并广播到网络中;
7)矿工、全节点接受广播的区块;
8)version和verack消息建立连接;
9)addr和getaddr消息用于地址传播;
10)getblocks、inv和getdata消息用于同步区块链数据。
2.Gossip传播协议
1)在一个有界网络中,每个节点随机地与邻居节点通信,经过一番交错杂乱的通信后,最终所有节点状态达成一致。
2)过程
- 建立连接(双方确认,version和verack);
- 连接后,新节点向邻近节点发送包含自身IP地址的addr消息;
- 同步区块数据;
3)什么时候需要数据验证
新区块在区块链网络传播时——>节点收到邻近节点发送过来的数据时。
十二、区块链网络
(一)中心化网络
1.定义:一台服务器连接多个客户端。
2.弊端:单点故障、安全性问题、数据控制和隐私问题、可扩展性问题、透明度和信息问题、法律和监管问题。
(二)非中心化网络
1.定义:一种分布式应用体系结构,用于在对等节点之间划分任务或负载。
2.特定:非中心化、可扩展性、健壮性、高性能/价格比、隐私保护、负载均衡。
(三)区块链应用P2P网络的优势
1.去中心化:没有中心控制,更加公平、安全;
2.抗攻击性:攻击者很难同时控制网络中的多数节点;
3.数据一致性:所有节点同步更新,保证数据真实可靠;
4.透明度高:交易记录公开,便于监督和信任建立;
5.可扩展:网络可以容纳更多节点,处理能力更强;
6.成本低:减少对中心机构的依赖,降低运营成本;
7.隐私保护:使用加密技术保护用户隐私;
8.容错性:即时部分节点出现问题,网络仍能正常工作。
十三、比特币简介
1.记账的动力:首个记账被认可获得一笔奖励:若干个比特币。
2.谁记的为准:共识算法,计算难题。