区块链核心技术与应用/核心技术篇

第1章:互联网下半场的主角--区块链

1。比特币

说明:由于每笔交易相对分散,为了更好的统计交易,比特币系统创造了“区块”这一概念。

每个区块均包含以下3种要素:

(1)本区块的ID(哈希值)(2)若干交易单 (3)前一个区块的ID(哈希值)

比特币系统大约每10分钟创建一个区块,每个块容量定为1MB。因此理论上每秒只能确认7笔交易。

2。区块链

区块链是分布式数据存储,点对点传输,共识机制,加密算法,智能合约等计算机技术的新型应用模式。是多种技术有机结合的技术体系。

区块链发展的3个阶段:

(1)区块链1.0:以数字货币为起点的相关应用(以比特币为代表的虚拟货币)

(2)区块链2.0:由数字资产开启,可被理解为区块链技术在其他金融领域的运用(如银行间结算,跨境支付,股权登记转让等)

(3)区块链3.0:区块链应用领域扩展到金融行业外(备案管理,知识产权存证,物联网,教育应用和政府管理等)

3。区块链的社会价值和意义

(1)分布式计算技术进步

A。传统分布式计算的范式:

中心节点将一个任务切分,分配到集群中各个节点并行执行,各节点的执行结果再回到一个中心节点统一协调、组装成最终结果。

如:谷歌提出的Map-Reduce框架是一个典型分布式计算范式

B。区块链带来一个全新的分布式计算范式:没有一个强中心来统一协调,管控分布式网络

网络中节点通过点对点(p2p)通信,消息通过广播而不是经过某个中枢或网关。

每个任务每个节点同时运行,运行结果通过一个共识算法来确认网络各节点的最终状态。

(2)解决价值转移问题

张三向李四转账100元。张三扣减100,李四增加100即完成支付过程。这一支付过程即是一种价值转移。

目前:价值转移由一个中心化的第三方来做背书(如政府,银行。由中心服务器处理)

区块链:无第三方信用背书情况下在一个开放式平台上进行线上的安全支付。(点对点价值转移体系)

(3)解决中心化的信用风险和信用成本问题(相信人不如相信技术)

(4)社会经济模式升级(全新的世界账本 & 崭新的共享经济)

第2章:区块链基本概念

1。简述

(1)区块链是一种分布式数据存储机制,是一串使用密码学方法链接的数据块,每个数据块中记录了一批当时网络交易的信息。

       包含用于验证其信息有效性(签名防伪)和生成区块的协同信息(如工作量证明的难度目录)

(2)比特币区块链信息在网络上是公开的,可在比特币浏览器中查询过往交易数据

(3)比特币钱包提供用户的当前余额信息(功能依赖于网络节点对比特币交易的共识确认)

       比特币上的区块链每增加一个区块可看作是一次共识确认。

2。区块链用例描述--比特币

A、B、C三人正在使用比特币,希望通过比特币进行交易。则需要解决如下3个问题:

(1)怎么获取比特币(来源问题)

       A。做矿工,挖矿  B。通过交易或捐赠获取比特币

(2)怎么交易比特币

      在账本中进行登记和计算方式完成交易(比特币所有交易均体现在账本中)

(3)怎么确保交易安全可靠

      A。如何确保比特币是真实的?(验证来源是否真实:挖矿/交易或捐赠)

      B。如何防止重复支付(双花)?(共识机制解决,确保交易先后顺序)

       如:张三购买手机和ipad,均1000元

       双花:在比特币交易系统中,由于没有中心化信任机构,可能张三购买手机交易还未确认完,张三购买ipad交易即产生。

                于是可能出现两笔交易同时有效的现象(即双花)

3。区块链需要研究哪些关键技术

(1)区块链共识机制

      解决强一致性问题共识机制

      解决最终一致性问题的共识机制(pow/PoS/DPoS)

(2)区块链的安全与隐私保存技术

      数字加密技术,数字签名,身份认证,授权鉴权,隐私保护,审计追溯,防止网络安全攻击等。

(3)区块链的存储技术

     区块链数据如何在云计算环境下高效存取,如何确保存储与计算效率,存储在文件系统还是DB。

     如何存储在分布式DB或分布式文件系统,如何提升区块链查询效率,

     什么data存放在链上,什么data存放在链下的DB。

     如何压缩区块链的data以节省空间等问题。

(4)区块链的通信技术研究

     如何高效同步数据?提升通信可靠性?防止DDoS攻击?提升广播效率?对通信有效验证?

(5)区块链的智能合约

     主要研究提供智能合约的计算引擎,通常为虚拟机技术。

(6)区块链的应用体系

(7)区块链的技术标准

4。区块链模型

区块链技术模型9大部分:

5。数据区块

比特币里的数据区块指比特币交易账本。其他区块链应用的数据区块指各自应用所处理的各种交易的详细记录信息。

比特币区块基本结构:

6。链式结构

每一笔交易均可向前溯源,追溯历史记录。有效防篡改。(即始将篡改的区块前后区块均修改,但创世区块不可改。也可追溯)

7。Merkle树

Merkle树是一个典型二叉树或多叉树。包含:

A。根节点:存储在区块头中,验证交易数据是否被修改,只需要验证Merkle根节点即可。

B。中间节点

C。叶子节点:存储该区块内的所有交易初始哈希值(1个交易对应1个叶子节点)

基于区块链保险智能合约的Merkle树的数据结构:(模拟区块有4笔交易)

8。网络通信层关键技术--p2p组网技术

(1)。p2p(peer-to-peer)对等网络

p2p的组网方式决定了区块链具有与传统网络不同的网络协议、消息传播方式及数据验证机制。

一个区块链应用的p2p网络示意图:

在p2p网络中,节点分:

A。全节点(具有足够资源,如公司X的私有云,可存储区块链的所有区块)

B。轻量级节点(如张三,只存储一些关键区块,依赖其他节点区块帮自己完成数据验证工作)

(2)。分叉

在区块链系统中,各节点以分布式并行计算争取记账权。即可能出现两个计算节点同时生成有效区块现象。

区块链系统选择将两个有效区块均链接到当前主链末尾,则形成分叉。

上述:区块链协议规定,当主链分叉时,计算节点总是选择链接到当前工作量证明最大的分支上,形成更长的主链。

(3)。传播机制

比特币传播机制简要描述:

A。发起比特币交易节点将自己新的交易数据向所有全网其他节点广播

B。所有节点收集新的交易数据,并各自打包放到自己的预创建区块中

C。为争夺账本创建,每个节点都要找到一个工作量的难度证明pow

D。一旦找到pow,则立即对全网广播

E。其他节点若认可该交易,则认可该节点创建的区块为有效区块

F。新创建的区块得到认可,则其他节点接受该区块。并将该区块加入到自己区块链条的最后一个区块后

一个简单的区块链传播机制:

(4)。共识机制(pow,区块计算中加入算力竞争)

(5)。验证机制(根据事先所定验证协议进行验证,如:交易格式,交易数据结构,格式语法结构,输入输出,数字签名的正确性等)

9。数据安全与隐私保护关键技术

(1)时间戳

(2)哈希函数

       哈希函数把输入数据按一定算法计算出来,生成固定长度的摘要,叫作哈希值的“指纹”。

       哈希值能和输入数据一一对应,给定输入数据,能够计算哈希值。给定哈希值很验推导输入值。

       碰撞:两个输入数据通过哈希计算得到的哈希值是同一个。

       安全哈希算法:SHA(Secure Hash Algorithm)

                SHA-1(找到“碰撞”),SHA-2(SHA-256:目前区块链平台采用哈希函数,未“碰撞”),SHA-3哈希标准

       区块链常采用“双哈希函数(SHA-256)”,即原始数据经过2次SHA-256哈希运算。

(3)数据加密

数据加密算法主要分为两大类:

A。对称加密算法

  对称加密算法主要用于对区块链的交易和区块链进行加密。

  加密钥匙和解密钥匙为同一把。(数字指纹:哈希计算的值)

说明:

为保证交易信息或区块信息内容完整性,需要:

将传递的交易信息或区块信息通过HASH计算得到一串哈希码h,

并将哈希码h和传递的交易信息或区块信息的密文一起发送给对方。

对方接收到信息并解密后,重新对解密后的明文进行哈希计算得到一个新的哈希码h`,

然后对h 和 h`进行比较.若h=h`,则说明信息在传递过程中没有被篡改。

B。非对称加密算法

a.公钥加密,私钥解密。--数字信封

  目的:安全传递密钥

说明:

为了实现交易信息或者区块信息的密钥安全传输保障,需要将对称加密所用的对称加密密钥K通过使用

接收者的公钥进行加密,形成数字信封。该数字信封通过网络传递到接收方。

接收方使用自己的私钥对该数字信封进行解密,从而得到解密所需的对称解密密钥K。因为在解密过程中,

只有接收者自己的私钥能够解开该数字信封,任何其他人的钥匙都不能解开该信封,所以数字信封可以保证整个密钥的传递安全性。

b.私钥加密,公钥解密。--数字签名

 目的:用于作为签名使用,防止各种抵赖

  数字签名主要目标:用来确认信息发送者认可自己曾经的行为(自己所签署)。

 

说明:

为了实现交易信息或者区块信息的来源可靠性保障,需要将:

传递的交易信息或者区块信息通过哈希计算得到相应的数字摘要,

然后使用发送者的私钥进行加密,得到相应的数字签名,并将数字签名通过网络传递到接收方。

如果接收方使用发送方的公钥能够解开该数字签名,则证明该数字签名的确为该发送者所签署,来源可靠;

如果接收方使用发送者的公钥不能解开该数字签名,则证明该数字签名不是该发送者所签署,来源不可靠。

(4)。零知识证明

指证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

(证明过程不能向验证者泄漏任何关于被证明消息的信息)

(5)。区块链安全体系

A。物理网络环境安全

B。区块链数据安全

C。区块链应用系统安全(身份认证技术,访问审计技术等)

D。区块链密钥安全管理(区块链环境一般依靠钱包来管理密钥。特别是私钥。保护私钥及多重签名技术应用)

(6)。隐私保护机制

目前有一些新的技术来保护隐私安全,如同态加密技术,替知识证明及环签名等。

区块链隐私保护算法依数据生命周期中的不同阶段所采用的不同算法:

A。交易信息或区块创建隐私保护算法

     需要保存隐私的是对创建者进行匿名(不知该交易信息或区块是谁创建的)。

     采用匿名算法,如典型k-匿名

B。交易信息或区块链存储隐私保护算法

     确保所保存的交易信息或区块的内容不被发现(加密算法,如同态加密)

大数据环境下的交易信息或区块信息隐私保护模型:

C。交易信息或区块链数据挖掘过程中隐私保护算法

隐私信息包括:直接隐私(大数据中直接包含的隐私信息)和间接隐私(通过一定算法或方法,对大数据进行各种数据挖掘得出的隐私信息)

D。交易信息或区块链在用户使用过程中的隐私保护算法

用户的角色和权限进行控制,确保用户的访问范围。

10。共识层关键技术

(1)。工作量证明PoW(Proof of Work):公有链上常见的一种共识机制

PoW基本思想:通过竞争完成一个有难度的任务来决定区块记账权。

缺点:pow产生的工作量无用,带来巨大资源浪费

nonce:随机数

矿池:许多计算能力小的矿工抱团取暖,将他们的矿机汇集到一起,组成一个矿池去和其他矿机竞争。(比特币奖励按矿机算力分配)

(2)。权益证明(PoS):点点币(PPC)最早所采取的一种共识机制

主要思想:Pos机制主要是根据参与者手中持有代币的多少和时间长短(币龄)来决定获得出块记账权的概率。

优点:提升共识效率,降低共识成本,减少算力浪费

缺点:安全性较差,节点可低成本地分叉作恶

(3)。股份授权证明(DPoS)

主要思想:由被社区选举的可信账户(受托人)来创建区块。

DPoS机制只需要更少的区块链应用参与者(代理人/受托人)来完成区块的创建及各种交易信息的验证。

(4)。拜占庭容错共识机制

如PBFT共识机制。

(5)。其他

第3章:区块链架构

DApp(Decentralization Application)去中心化应用 

1。区块链架构和传统IT架构的异同

传统ATM系统:张三在ATM向李四转账100元,则张三减100与李四账户加100是串行执行。ATM各账户状态由中心化的(银行)核心系统确定。

区块链ATM系统:每个ATM均有一套银行核心系统,支持并行执行任务,可以很多人同时在不同的ATM上做交易。但每笔交易需要广播给网络中所有ATM。

2。区块链架构模型

(1)。区块链系统的共性

A。共识(consensus)机制

保证所有节点的分布式账本的规范性和一致性的机制与标准。

B。状态可验证性(validity)

a.系统中所有当前状态都是确定的,

任何比特币的未花费交易(UTXO),以太坊账户余额,合约账户状态,超级账本fabric合约状态,R3 Corda的状态资产。

都可以被各自既定的确定性交易或流程规则所验证。

b.确定性验证一般在沙盒中运行,以减少外界信息干扰。如

比特币(脚本栈),以太坊(EVM),fabric(dockervm/jvm),corda(JVM),EOS和Polkadot(webAssembly虚拟机)

注:对于全节点需要进行交易实际执行验证,对于轻节点可只基于区块头做简化验证。

简化支付验证(SPV:Simple Pay Validation)

C。唯一性(uniqueness)

任何状态资产的消费只能发生一次,即区块链的防“双花”安全性。

比特币:分叉block中,长链胜出。确认唯一

以太坊:按顺序执行合约代码

超级账本fabric:全局时序器保证交易唯一性

R3 Corda:notary服务公证人签名方式确保状态资产的唯一花费

EOS:为每一个账户的消息分配一个顺序号

Cosmos:在执行跨链通信时,为跨链载体packet指定唯一编号保证packet在各个zone链和hub链唯一性

Polkadot的任何一个平行链egress出口交易队列在同一个区块时间内被中继链转移到目的平等链的ingress入口队列。出与入均进行merkle树哈希计算。

D。不可篡改(immutability)

比特币,以太坊,fabric,EOS均采用Merkle树+区块哈希指针数据结构串接交易记录和状态记录,以达到交易和状态不可纂改目的。

比特币:BerkeleyDB文件数据库存放区块文件,leveldb进行区块索引和记录UTXO交易。

以太坊:leveldb记录Patricia树

fabric:leveldb持久化合约状态

R3 Corda使用关系型数据库H2存放交易数据

Cosmos和Polkadot都同时存在多个分链和总链的多层结构。

E。基于公/私钥的认证(authentication)

公有链中如比特币,以太坊,EOS只需要公/私钥,不需要CA证书。

许可链如fabric,Corda一般基于PKI体系完成个人/节点证书的CA中心证书签名。

F。区块链治理(governance)

区块链宪法,提供一定的链上和链下治理流程。

 (2)。区块链的差异性

3。区块链参考模型

(一)。一个参考架构

《区块链参考架构》从用户视图,功能视图给出了区块链参考架构。

(1)用户视图:包含角色,活动,角色间的关系

(2)功能视图:包含功能组件及功能组件间的关系

区块链参考架构的功能视图:

说明:

(1)区块链7个关注点:模块化,性能,互操作,数据一致性,安全和隐私,经济合理及安全可信

(2)区块链典型特征:分布式对等,数据块链式,不可伪造和防篡改,透明可信和高可靠性

(3)区块链部署模式:公有链,联盟链,私有链

(4)区块链服务能力类型:基础设施,数据和应用服务能力,基于这些服务能力的区块链服务类别

(二)。区块链高阶架构模型

面向链合约服务的高阶层次化架构包括三大部分:

(1)。业务合约和账本

(2)。区块链平台服务

说明:

A。安全控制

公有链是一种开放权限的设计思路,不会显示地设定不同参与人的操作权限,只会采用黑名单机制。

许可链是一种白名单机制,有非常严格的准入机制,只有允许的参与方才可参与被允许的业务合约。

许可链常采用PKI基础设施,通过自身的CA机构同企业现有的权限管理系统进行集成,如LDAP,AD服务器,进而控制不同的人具有不同的合约操作权限。

B。名词

合约流程账户(Contract Process Account,CPA)

合约服务账户(Contract Service Account,CSA)

私钥账户(User Account,UA

C。链上共识

共识算法:Pow,PoS,DPoS,BFT及各种变体(PBFT,Tendermint),宕机故障容错(RAFT,Paxos),全局时序器(Orderer),公证人(Notary)机制,

两阶段提交(2PC),三阶段提交(3PC),各种共识算法组合(如:Pos+BFT)

(3)。UI界面/API接口

A。业务合约浏览器

可看到权限范围内所有可参与的业务合约,包括:合约具体的规格化内容,如合约流程,合约服务各动作,合约具体规则,合约法律条款,合约宪法,治理规则等。

B。区块链浏览器

区块链浏览器可以浏览所有的区块以及权限许可的交易内容,可以对可浏览的交易进行回溯查看,可以从不同的维度进行交易、流程和价值资产的审查。

C。资产浏览器

资产浏览器允许用户以统一的视角看待用户关联的所有合约资产。资产浏览器可以同个性化DApp整合在一起,让用户可以看到当前各个参与合约流程的当前状态,各个合约服务的状态资产,以统一的视图帮助用户进行交易的优化决策。

(三)。区块链跨链本质与架构模型

跨链的本质是价值等价交换。

跨链区块链主要有两种类型的链组成。

(1)一种是主链,跨链的主链只有一个

(2)一种是适配子链,至少存在2个,由跨链主链连接各个适配子链,各子链间没有信任关系,通过主链进行信作的传递。

目前两个跨链平台(Cosmos和Polkadot)均采用PoS+BFT混合共识算法。

说明:

所有独立区块链如果需要支持跨链价值转移或交换,就需要存在外链合约服务。

外链合约服务同普通的合约服务没有本质的区别,也是一种合约服务规约,不同之处在于合约的制定者会提供一组公开声明的跨链交易公钥地址。

需要进行跨链交易的主体可以把自己拥有的一定数量的价值体转移到外链合约服务指定的公钥地址上,并指定跨链交易内容,

如希望交换另一个区块链上一定数量的价值体,并把交换后的价值体转到自己在另一个区块链上的公钥地址上。

 

区块链跨链架构和跨链过程

(四)。区块链部署模型

区块链部署架构模型

4。区块链的数据模型

数据模型设计关乎整个区块链的并发性能。

(一)。账户模型

账户模型将一个或多个账户实例的所有状态以key-value形式组织起来,形成一定的存储结构,以此基础构建全局状态哈希树。

以太坊各个账户状态采用账户模型。(两种账户:智能合约账户 & 外部用户账户)

区块链的账户模型

(二)。UTXO模型

UTXO模型以比特币的数据模型为代表,只不过未花费交易状态输出的只有一个值:代币金额。

(三)。混合模型

以太坊的扩容方案--分区(Sharding)就是在账户模型基础上使用UTXO模型进行跨分片的通信。

以太坊账户模型引入类UTXO收据进行分区扩容

5。区块链的能力模型

区块链蛛网能力模型

 

posted @ 2018-11-07 20:44  kaixinyufeng  阅读(1492)  评论(0)    收藏  举报