区块链原理设计与应用——理论篇

问题1:什么是区块链?
  比特币定义:区块链是用于记录比特币交易账目历史的数据结构。中本聪
  维基百科:区块链类比为一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的,不可篡改的数据记录。

区块链的基本原理:
  1、交易(transaction) 如添加一条交易记录
  2、区块(block) 一段时间内交易和状态结果
  3、链(chain) 整个账本状态变化的日志记录

  账本只允许添加,不允许删除
  账本底层的基本结构是一个线性的链表。

新数据加入账本的过程?
  新的数据要加入,必须放到一个新的区块中,这个快(以及快力的交易)是否合法,可以通过计算哈希值得方式快速检验出来。
  任意维护节点都可以提议一个新的合法区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。

区块链的工作过程?
  以比特币为例:
    1、比特币客户端发起一笔交易,广播到比特币网络中并等待确认。网路中的节点会将一些收到的等待确认的交易记录打包,和
      前一个区块头部的hash值等信息,组成一个候选区块,试图找到一个nonce串(随机串)放到区块,使候选区块的hash结果满足
        一定条件。这个nonce串的查找需要耗时一定时间进行计算尝试。
    2、节点算出满足条件nonce串,然后被认为"合法",然后在网络广播,其他节点收到该候选区块验证,符合条件之后,承认合法新区块然后添加自己的区块上。
    3、大部分节点将区块添加到自己的区块链结构上时,该区块被网络接受,区块中的交易也得到确认。


比特币网络是任何人都可以加入,恶意操作篡改怎么办?
  由于比特币网络大部分节点都是正常工作的,并且默认只承认所看到最长的链结构,只要网络中不存在超半数节点勾结起来恶意行为,
  则最长的链很大概率上成为最终合法的链,随时间增加,该概率会越来越大,当然如果真有大多数节点联合起来作恶,收益大于代价,得不偿失。

区块链演化?
  智能合约
  比特币,以太坊,超级账本

基于区块链的分布式账本特点:
  1、维护一条增长的链
  2、去中心化(多中心化)
  3、隐私性 应用密码学

分类:
  参与者:共有链,私有链,联盟链
  目的和场景:货币链,产权链,众筹链,通用链

大部分区块链实现:
  网络层,共识层,智能合约,应用层等结构
  联盟链会引用权限管理机制。


区块链关键问题和挑战?
  1、抗抵赖与隐私保护 ,密码学
  2、分布式共识 , 共识机制 算法PoW , PBFT
  3、交易性能 ,Fabric(几百次每秒)
  4、扩展性 ,放松对每个节点都参与完整处理的限制
  5、安全防护
  6、数据库和存储系统
  7、集成和运营

 

比特币和区块链的区别?
  从应用角度来讲,比特币也只是基于区块链技术的一种金融应用。而区块链还能带来更通用的计算能力和商业价值。

区块链有哪些优势?
  区块链擅长的正是在多方之间达成合约,并确保合约的顺利执行。
  打造一个实现彼此信任的基础网络设施。

  技术特点:
    1、分布式容错性
    2、不可篡改
    3、隐私保护性
    4、可信任性
    5、降低成本
    6、增强安全

问题:区块链解决了什么问题?
  网络之间的信任。

问题2:区块链有哪些应用场景?
  区块链在不引入第三方中介机构的前提下,可以提供去中心化,不可篡改,安全可靠等特性保证。
  因此,所有直接或间接依赖于第三方担保机构的活动,均可能从区块链技术中获益。
  区块链为确权类应用提供包含所属权和时间戳的数字证据
  可编程智能合约使在区块链上登记的资产可以获得在现实世界中难以提供的流动性。并能保证合约规则的透明和不可篡改。

场景:
  金融服务,征信和权属管理,资源共享,物联网
  云存储,医疗,通信和社交,投票,预测,电子游戏

分布式系统核心问题

一致性问题

  一致性定义:对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,视图使得它们对处理结果达成
    "某种程度"的认同。


问题与挑战
  1、节点间通讯不可靠,延迟,乱序内容错误等
  2、处理时间不一致
  3、同步调用简化设计,降低扩展性

  解决思想:将可能引发不一致的并行操作进行串行化。

一致性和共识的区别?
  一致性往往指分布式系统中多个副本对外呈现的数据的状态。
  共识描述了分布式系统中多个节点之间,彼此对某个状态达成一致结果的过程。

共识算法
  共识算法解决的是对某个提案(Proposal)达成一致意见的过程。
  系统中多个节点最关键的是对多个事件的顺序进行共识,即排序。

  常见算法:PBFT,PoW
  解决拜占庭错误的算法:Paxos,Raft

  共识遇到的问题与挑战?
    故障错误,拜占庭错误。

CAP原理
  定义:分布式计算系统不可能同时确保以下三个特性:一致性(Consistency),可用性(Availability),分区容错性(Partition Tolerance)
  设计中往往需要弱化对某个特性的保证。
  一致性(C):任何操作应该都是原子的,发生在后面的时间能看到前面事件发生导致的结果,注意这里指的是钱一致性;
  可用性(A):在有限时间内,任何非失败节点都能应答请求;
  分区容忍性(P):网络可能发生分区,即节点之间的通信不可保障。
  通常保证P

ACID原则
  Atomicity(原子性),Consistency(一致性),Isolation(隔离性)、Durationg(持久性)

BASE原则
  与ACID相对
  Basic Availability,Soft-state,Eventual Consistency

Paxos算法和Raft算法

 

密码学和安全技术
  密码学和区块链相关的基础知识:
    Hash算法,数字摘要,加密算法,数字签名,数字证书,PKI体系,Merkle树,布隆过滤器,同态加密等
  用来解决区块链中信息的机密性,完整性,认证性和不可抵赖性

  Hash定义
    Hash(哈希或散列)算法是非常基础也非常重要的计算机算法,它能将任何长度的二进制明文串映射为较短的
    (通常是固定长度的)二进制串(Hash值),并且不同的明文很难映射为相同的Hash值

  优秀的Hash算法实现功能:
    1、正向快速
    2、逆向困难
    3、输入敏感
    4、冲突避免

  常见hash算法:
    MD5和SHA系列算法
    目前MD5和SHA1已经被破解,一般推荐至少使用SHA2-256或更安全算法。

  数字摘要是Hash算法最重要的用途。
    Hash防护
    Hash算法并不是一种加密算法,不能用于对信息的保护。
    加盐(salt)算法


  加解密算法
    对称加密算法
    算法:DES,3DES,AES,IDEA
    优缺点:加解密效率和加密强度都很高,缺点是参与方都需要提前持有密钥。
    应用场景:对称加密算法适用于大量数据的加解密过程;不能用于签名场景;并且往往需要提前分发好密钥。

  非对称加密算法
    公钥,私钥
    优缺点:非对称加密算法的优点是公私钥分开,不安全通道也可以使用,缺点是处理速度(特别是生成密钥和解密过程)比较慢,
    加密强度也不如对称加密算法
    算法:RSA,ElGamal

  混合加密机制

  消息认证码和数字签名
    消息认证码和数字签名技术通过对消息的摘要进行加密,可用于消息防篡改和身份证明问题。


  数字证书
    作用:解决公钥伪造问题。实现公钥的安全分发。
    用途:
    加密数字证书:保护用于加密信息的公钥
    签名验证数字证书:保护用于进行解密签名进行身份验证的公钥。
    两种类型的公钥可以同时放在同一个证书中。
  证书一般由证书认证机构(Cerfification Authority,CA)签发和背书。

  证书信任链
  PKI体系
  在非对称加密中,公钥可以通过证书机制进行保护。
  PKI体系核心解决的是证书生命周期相关的认证和管理问题。

  基本组件:
    CA(最核心组件,主要完成对证书信息的维护),RA,证书数据库

  证书的签发
  证书的撤销

  Merkle树
    Merkle(默克尔)树,也叫Hash树,典型二叉树。
    默克尔树逐层记录哈希值的特点,让它具有了一些独特的性质。例如,底层数据的任何变动
    ,都会传递到其父子节点,一层层沿着路径一直到树根,这意味着树根的值实际上代表了对底层所有数据的"数字摘要"。

  应用场景:
    1、快速比较大量数据
    2、快速定位修改
    3、零知识证明

  布隆过滤器
    布隆过滤器是一种基于Hash高效查找结构,能快速回到"某个元素是否在一个集合中"的问题。
    应用场景:信息检索(Hbase),缓存击穿,垃圾邮件规则,注册管理等
    存在误报,但绝对不会漏报。

  同态加密

 

专业词汇
  POW 工作量证明 (Proof of Work) :比特币这种基于算力寻找nonce串的共识机制
  挖矿:计算新的区块的过程


比特币案例

以太坊案例

超级账本——面向企业的分布式账本
  由面向不同目的和场景的子项目:
  Fabric, Sawtooth, Iroha, Blockchain Explorer, Cello, Indy, Composer, Burrow

Fabric:包括Fabric,Fabric CA, Fabric SDK(包括Node.js,Python 和Java语言)和fabric-api等
  目标是区块链的基础核心平台,支持PBFT等新的共识机制,支持权限管理。

posted @ 2018-09-19 18:59  一心行走  阅读(3930)  评论(0编辑  收藏  举报