🗒️区块链进阶

type
status
date
slug
summary
tags
category
icon
password
✅一些区块链进阶知识。简单记录,方便回顾。

区块链

  1. 区块链起源: ①《比特币:一种点对点的电子现金系统》,一种无中介陌生人信任服务体系的分布式账本技术的数字加密货币系统方案 哈希现金技术:首次使用PoW解决垃圾邮件问题.
  1. 概念: ①从技术角度来看,是一种基于P2P网络架构的分布式账本技术系统,以“块-链”式数据结构验证与存储账本数据,由多方维护的分布式节点共识机制来生成无法篡改、抵赖的账本数据,使用密码学方法保证数据传输和访问的安全,可自动执行由高级语言或脚本语言编写的智能合约程序查询或生成账本数据. 从应用角度来看,面向由陌生主体构成的开放网络环境的价值创造、交换与记录过程,提供多方集体维护、不可篡改、可追溯、公开透明的分布式账本记账服务,大幅降低第三方信任服务成本和风险,提高服务效率,是一种新型的无中介陌生人信任服务应用支撑平台系统.
  1. 特点: ①去中心化 数据不可篡改 数字价值唯一性 智能合约 开放性 去信任.
  1. 类型: ①公有链(比特币,以太坊):任何人,自由加入,所有节点,完全公开,公众 联盟链(超级账本):联盟成员,联盟成员,联盟通道节点,联盟范围内,联盟范围内/公众 私有链:单一主体,受控加入,单一主体节点,不公开,单一主体内部.
  1. 分叉:某个区块开始,后续区块构成两条子链. 原因: ①软件升级 出块冲突(解决:只承认分叉最长的链)
  1. 三个阶段: ①比特币 以太坊 超级账本.
  1. 体系结构:P2P.
  1. 逻辑架构: ①存储:Key-Value数据库,文件 数据:区块,区块链,交易,账户,账本,地址 网络:发现、传播、验证机制,P2P网络模型 共识:PoW,PoS,DPoS,PBFT 激励:发行、分配机制 合约:智能合约,编程、运行、调用机制 接口:服务接口协议,SDK,命令行接口 应用:公有、联盟、私有链应用.
  1. 价值: ①金融到实体领域如征信、医疗 减少中间环节,降低传统成本 推进数据记录传播存储管理模式的转型升级 和云计算融合获得云资源开放性和已获得性 融合法律经济信息技术,优化社会治理模式.
  1. 思维方式: ①去/弱/多中心化 透明开放协同合作

比特币

  1. 节点类型: ①
  1. 逻辑架构:
    1. ①存储数据:账户、本→UTXO模型、默克尔树 网络:Gossip协议,节点发现与连接,数据分发与同步,非结构化P2P网络 共识:PoW 激励:出块激励(四年减半),比特币 合约:Script脚本语言,交易锁定、解锁脚本.
  1. 区块:区块头+区块体.
  1. 区块数据结构: 区块大小4字节, 区块头80, 交易计数1-9, 交易列表可变大小.
  1. 区块头数据内容: 当前区块哈希32, 区块高度4, 前一区块哈希32, Merkle树根哈希32, 区块难度目标4, 随机数4.
  1. 账户地址:用户公钥经过哈希计算和Base58编码运算后生成的160位(20字节)字符串.
  1. UTXO模型:交易=输入(对前一个交易输出的引用,解锁脚本代码)(前序某个交易输出/节点生成区块的激励)+输出(输出比特币金额,锁定)
  1. 交易数据结构:版本4,交易哈希32,交易输入、出可变大小,锁定时间4.
  1. 交易输入输出数据构成: ①输入:前置交易哈希32,前置交易输出序号4,解锁脚本(付款方的签名和公钥)可变 输出:输出金额8,锁定脚本(接收方的公钥哈希)可变.
  1. 默克尔树: ①比特币系统:交易表示价值转移操作,导致账本数据改变 比特币区块:由区块体中所有交易数据的哈希值构成.
  1. 全、轻节点功能: ①全节点一直在线,功能最完整,竞争出块权,存储区块链数据,监听交易信息,验证合法性,提供P2P路由. 轻节点只保存区块体和区块自己相关交易信息,提供交易和钱包功能.
  1. 交易池:每个节点都会维护一个未确认交易列表.
  1. PoW流程: 开始→竞争下一个区块出块权 创建coinbase交易,作为交易列表的第一条交易 从交易池中选出一定量交易加入交易列表 将所有交易信息构建默克尔树 获取前一区块相关信息,创建区块头5← 初始化区块头的随机数Nonce=1 计算哈希值R=sha256(sha256(区块头)) R<目标值? 否→区块头的随机数Nonce++→7 是→是否其他节点先求出解(是→1) ⑪否→向系统网络广播新区块→1.
  1. PoW特点: ①难题难以解答,但容易验证正确性,可通过调整难题参数控制链增长速度 结合最长链有效机制,避免恶意节点对控制区块链.
  1. 激励机制:每十分钟产生1个区块,每个区块的成功提交者可以得到一定数量的比特币奖励.最初奖励50个比特币,每隔21万个区块(约四年)自动减半,最终比特币稳定在2100万个.
  1. 交易脚本语言:非图灵完备,基于逆波兰表示法的堆栈语言.
  1. 交易脚本运行机制: 解锁:付款方的签名和公钥,A <Signature>,A<Public Key>,OP_DUP,O P_HASH160,A <Public Key Hash>,OP_EQUAL,OP_CHECKSIG

信息安全

  1. MD5和 SHA哈希算法区别: MD5输入不限长,输128位的摘要,SHA输入小于2的64位,sha-1输出160位,sha256是sha-2的一种,输入小于2的64位,输出256位.
  1. 以太坊keccak算法.
  1. 国密SM3:输入小于2的64,输出256位
  1. 公钥密码体制:非对称加密算法生成公私密钥对.
  1. 公钥加密体制模型: ①加密:发送方用接收方公钥作为加密密钥,用接收方私钥作解密密钥 认证:发送方用自己私钥对消息签名,接收者用发送者公钥对签名进行验证以确定签名是否有效.
  1. 非对称算法敏感信息加密保护交换: ①A用非对称加密算法生成公私密钥对并公开公钥 B用A公钥加密信息并发送 B收到A的密文,用B的私钥解密得到明文 B要回复A,用A的公钥加密信息,A用自己的私钥解密.
  1. 非对称加密算法:RSA,ECC,Elgamal.
  1. RSA:密钥长度可选,长度增长1倍,公钥操作时间增4倍,私钥操作时间增8倍.
  1. 数字签名:用私钥加密的密文.
  1. 数字签名类型: 基于数学问题分为基于素因子分解问题(RSA)的数字签名、基于离散对数问题(椭圆曲线)的、两者结合的 基于算法分类:基于rsa的, dsa的, ecdsa的.
  1. 数字签名的作用:类似手写签名、盖章鉴别当事人身份,电子合同、签章等领域.
  1. 数字签名和验证过程: A对B A对消息用哈希函数生成摘要,再用A的私钥加密得到签名 A把签名和消息一起发给B B用A的公钥对签名解密 B用A相同哈希函数对消息再生成摘要对比,一样,验证通过.
  1. PKI公钥基础设施构成: ①证书机构CA:负责发放证书、管理生命周期 注册机构RA:获取认证用户身份,向CA发出请求 证书发布系统 PKI安全策略:如何生成、废除证书、产生、存储密钥.
  1. 默克尔树:父节点是子节点哈希值字符串连接后再哈希.
  1. 默克尔帕特里夏树(MPT树):以太坊用MPT,融合默克尔树和压缩前缀树,基于密码学的,具备自校验防篡改的数据结构,常用来存储<key, value> 关系.
  1. 时间复杂度:O(log(n).
  1. 节点的基本类型: ①叶子节点 扩展 分支:至少包含一个扩展节点或叶子节点作为子节点,BranchList每个元素表示key值字符串的压缩前缀的最后一个字符,值表示一个子节点的哈希值索引 空.
  1. Raw编码:{‘’,‘’},ASCII编码为{,,}.
  1. Hex编码:先Raw再ASCII,把每个数字用二进制表示再4位一组拆成两个数字得到{,,}.
  1. Hp编码: ①若key长度为奇数且key是叶子节点,在key之间增加0011的前缀 若奇非叶子,则增加0001 若偶且叶子,增加00100000 若偶非叶子,增加00000000 将增加前缀后的key用Hex逆过程.

以太坊

  1. 系统逻辑架构:
    1. ①存储数据:区块,区块链,交易,交易树,状态树,收据树,账户,地址 网络:Kadelima分布式哈希表协议,节点发现与连接,数据分发与同步,结构化P2P网络 共识:PoW/PoS 激励:预售发行,出块、叔块、交易服务激励,以太币(总量无限) 合约:智能合约,solidit y语言开发,EVM运行,调用机制.
  1. 节点类型: ①全(挖矿) 轻(交易) 存档(存储全节点保存的内容).
  1. 区块结构:区块头+体(交易列表+叔区块头).
  1. 区块数据结构:区块头、交易列表、叔区块列表都可变.
  1. 区块头数据结构: 父区块哈希32, 叔区块哈希32, 树根哈希32, 区块难度可变, 随机数8.
  1. 账本数据:传统账户余额模型.
  1. 账户地址:采用SHA-3(Keccak-256)对公钥进行哈希计算的32字节结果的后20字节数据的40位十六进制字符表示.
  1. 账户分类: ①外部:以太币拥有者的账户,管理用户余额 合约:创建智能合约时生成,用于存储智能合约代码,只能被外部账户调用.
  1. 账户对象数据结构: 账户余额32, 序号8, 代码哈希可变, 存储树根哈希32.
  1. 交易数据结构: 本交易Gas单价32, 本交易Gas数量32, 接收方地址20, 金额32, 附加数据可变, 签名可变.
  1. 交易类型: ①转账支付 智能合约创建 合约方法调用.
  1. 全局状态树构成:每个叶子节点表示账户状态,所有账户状态构成以太坊系统状态.
  1. 网络层功能:(P2P网络组网各网络节点的节点发现、连接与通信新区块或交易数据广播各网络节点之间区块链数据同步)管理.
  1. PoW流程: 左: 生成伪随机数种子Seed 由Seed生成16MBCache数组 由Cache数组生成1GB DAG数据集 是否增加3万个区块(是→左1,否→右5), 右: 开始新一轮区块出块权竞争计算 组装新区块数据 读取区块头数据 (并列)找到随机数Nonce (合并)计算哈希值映射DAG中的初始位置 在DAG中迭代计算出128个候选数128个候选数与目标值比较 ≤目标值 否→Nonce右4 是→成功求解,获得新区块出口权.
  1. PoW出块时间:10-19秒.
  1. 激励机制:预售,在创世区块中共发行7200多万个以太币.
  1. 以太币单位ETH,最小单位wei,比特币最小单位聪,1ETH=10的9GWei=10的18Wei.
  1. 智能合约概念:以太坊首次提出智能合约模型,采用solidity语言,以交易的形式发布到区块链.
  1. 生命周期管理流程: 智能合约代码→创建→部署运行→调用执行→作废.

共识机制

  1. 引入共识原因:解决数据一致性问题.
  1. FLP定理模型: ①异步通信:没有时钟,不能时间同步、使用超时、探测失败,消息可任意延迟、可乱序 通信健壮:只要进程非失败,消息会被延迟但终将送达且无重复 Fail-Stop模型:进程失败如同宕机 失败进程数量:最多一个.
  1. FLP相关概念: ①一致性:所有进程必须做出相同决议. ②可终止性:非失败进程最终可做出选择. ③合法性:进程决议的值必须是其他进程提交的请求值. ④共识:所有非失败进程达成共识,需要同时满足一致性、可终止性和有效性. ⑤安全性:即使有节点发生故障也不会导致系统产生错误结果. ⑥活性:即使有节点故障也可以持续运行,不会系统瘫痪.
  1. CAP定理概念:分布式系统不可能同时满足一致性(各节点数据保证一致)、可用性(向非故障节点发送请求总能收到响应数据)、分区容错(系统可容忍不同节点间消息延迟或丢失而不影响系统正常运行),最多两个.
  1. 两军问题:A1、A2达成同时攻击约定,但是永远
需要对方发送一个确认回信.
  1. 三次握手机制: A→B:SYN=1,Seq=X, B→A:SYN=1,ACK=X+1,Seq=X, A→B:ACK=Y+1,Seq=Z.
  1. 拜占庭将军问题:如何在存在恶意行为(消息被篡改)的情况下实现分布式系统的一致性. 拜占庭错误:节点伪造或篡改信息进行恶意响应的情况,如消息、IP被篡改.
  1. 非拜占庭错误:由于系统故障如停电造成的错误.
    1. 3X+1:拜占庭系统总节点数为Z,不可靠节点数为X,只有当Z≥3X+1时,可由基于拜占庭容错类算法的协议保证系统一致性.
  1. 共识算法分类:拜占庭容错类算法(Paxos,Raft),非(PBFT).
  1. Paxos算法: ①提出提案者:提出提案 接收提案者:收到并审批提案 学习决议者:被告知提案结果并与之统一,执行批准的提案.
  1. Raft算法: ①领导者:处理所有用户的请求 跟随者:响应来自跟随者和候选人的请求 候选人:准备竞选领导者.
    1. Raft流程图: 开始→跟随者→心跳超时→ 候选者(环:选举超时,→1)→过半支持→ 领导者(→1).
  1. PBFT算法:①副本客户端节点的.
    1. PBFT前提:最大容错节点数量不超过 (n-1)/3.
  1. PoW的局限性:依靠算力竞争分配记账权造成算力、电力浪费,运算时间过长影响产生区块的效率.
  1. 币龄:节点持有的货币有对应的价值来度量持币者参与决策的权重.
    1. 币龄计算: ①哈希值>目标值×币龄,循环哈希计算 <,将交易信息打包到新区块并广播.

超级账本

  1. fabric系统仍然采用P2P,但不是单纯的P2P
  1. 体系结构: ①共识排序集群服务:Orderer排序节点 通道:组织A(Peer对等节点1(↔客户端)(背书,记账)2(↔排序)(主、记账)3(记账)4(锚↔锚、记账))、组织B(Peer节点5687) Client客户端节点 CA服务节点↔客户端.
  1. 逻辑架构:
    1. ①存储数据:区块,区块链,交易,账本,世界状态,区块索引,键历史索引 网络:多通道管理,基于Gossip协议的数据分发与同步,非结构化P2P网络 共识:Solo/Kafka 激励:无 合约:链码,多语言,Docker容器运行,调用机制.
  1. 区块数据结构:区块头(区块序号8,父区块哈希32,当前区块哈希32)、数据(交易数据)、元数据.
  1. 账本数据:区块链保存账本数据 状态数据库保存键值对的状态更新 键历史索引库对键修改历史查询和保存 区块索引库对区块数据进行查找.
  1. 交易数据构成: ①头:ID、类型、发出时间 签名 提案 响应 背书列表.
  1. 状态数据库:世界状态,对交易的键值对读、写操作,写操作会改变系统状态和账本数据.
    1. 节点类型: ①Client客户端 Peer对等(联盟链参与方)Orderer排序(发起方或监管方)CA证书服务.
  1. Peer节点功能: ①记账 背书:对客户端发起的请求进行确认验证 主:和order节点进行通信 锚:在同一个通道不同组织之间进行路由,可以知道其他组织peer节点的情况.
  1. 多通道机制:联盟一般由多组织构成,Orderer节点、CA节点通常由联盟链的发起与权威可信管理机构提供,Peer节点、Client客户端节点由联盟中的不同组织提供.
  1. 交易发起到被打包写入区块链过程: ①调用CA 服务器节点注册登录 客户端应用程序向Fabric和不同组织背书Peer发起交易提案,Peer将验证结果返回客户端Orderer接收交易请求并打包成区块,广播给Peer主 Peer主收到后验证并修改世界状态同通道的Peer通过P2P同步数据.
  1. 链码:智能合约,分为系统链码(Fabric开源社区维护),用户(实际应用场景,Go,Java,Js).
  1. 智能合约生命周期:开发,安装,实例化,运行,升级(以太坊无).
  1. 远程调用协议grpc:定义一个服务,指定能够被远程调用的方法.

智能合约

  1. 智能合约概念:合约参与方可执行一系列以数字形式定义的承诺的协议.能自动执行合约条款的计算机程序代码.
  1. 作用: ①对现实中约定的条款进行数字化表示 可灵活触发 运行后不可单方面修改.
  1. 特点: ①代码化无歧义 安全可信 自动化强制执行 可靠执行 经济高效.
  1. 设计模型: ①智能合约:状态变量↔函数 区块链系统:全局变量(→函数),API接口(↔函数),系统函数(↔函数) 外部调用→函数,函数→返回结果

P2P网络

  1. P2P特点: ①高健壮性 易扩展性 高性价比 强私密性 低维护成本.
  1. 模型分类: ①集中式 纯分布式(比特币非,以太坊结构化) 混合式(超级账本).
  1. 哈希表时间复杂度:O(1).
  1. 泛洪:将网络交换机某个接口收到的数据流向除该接口之外的所有接口发送出去.
  1. 泛洪局限性:可能环路问题. 解决办法: ①在查询消息增加TTL值 重复的消息不再转发.
上一篇
区块链基础
下一篇
IPFS分布式存储
Loading...