第三章 区块链技术架构与发展趋势
整个区块链与密码学大体内容介绍安排如下:
https://blog.csdn.net/qq_43479839/article/details/114630163

参考资料和教材:
1>区块链技术及应用;清华大学出版社出版;华为区块链技术开发团队 著
2>区块链技术进阶与实战;人民邮电出版社;蔡亮,李启雷,梁秀波 著
3>可证明安全算法与协议;科学出版社;张华,温巧燕,金正平 著
4>密码学引论(第二版);武汉大学出版社;张焕国,王张宜 著
5>武汉大学国家网络安全学院:何德彪老师

第三章的目录如下:

目录@xyi

  • 第三章 区块链技术架构与发展趋势
    • 3.1 区块链基础技术发展过程
    • 3.2 区块链平台发展过程
      • 3.2.1 区块链1.0 密码货币
        • 密码货币的概念
        • 比特币系统架构
          • 一、比特币前端
            • 1、比特币前端-钱包
            • 2、比特币前端-HTTP/JSON RPC API
            • 3、比特币前端-命令行工具bitcoin-cli
            • 4、比特币前端-比特币浏览器bx
            • 5、比特币前端-图形开发工具Qt
          • 二、比特币节点后端
            • 1、比特币后端-区块链管理
            • 2、比特币节点后端-区块验证
            • 3、比特币节点后端-内存池管理
            • 4、比特币节点后端-领节点管理
            • 5、比特币节点后端-共识管理
            • 6、比特币节点后端-规则管理
            • 7、比特币节点后端-密码模块
            • 8、比特币节点后端-签名模块
            • 9、比特币节点后端-脚本引擎
            • 10、比特币节点后端-挖矿
            • 11、比特币节点后端-HTTP/JSON RPC 服务器
            • 12、比特币节点后端-Berkeley DB和Level DB数据库
            • 13、比特币节点后端-P2P网络管理
            • 14、比特币节点后端-队列管理
      • 3.2.2 区块链2.0 可编程区块链
        • 可编程区块链的概念
          • 以太坊系统架构
            • 1、账户设计
            • 2、区块链设计
            • 3、区块链设计
            • 4、区块链设计
      • 3.2.3 区块链3.0 价值互联网
    • 3.3 Hyperledger Fabric 简介

第三章 区块链技术架构与发展趋势

3.1 区块链基础技术发展过程

区块链的诞生最早可以追溯到密码学和分布式计算。

3.2 区块链平台发展过程

区块链的发展先后经历了密码货币、可编程区块链和价值互联网三个阶段,下面将分别对这几个阶段简要的介绍。

3.2.1 区块链1.0 密码货币

密码货币的概念

在区块链1.0阶段,区块链技术的应用主要聚集在加密数字货币领域,典型代表即比特币系统以及比特币系统代码衍生出来的多种加密数字货币

2009年1月,在比特币系统论文发表之后,比特币系统正式运行并开放了源码,标志着比特币网络的正式诞生。通过其构建的一个公开透明、去中心化、防篡改的账本系统,比特币开展了一场规模空前的加密数字货币实验。

但是比特币系统作为一个加密数字货币设计的专用系统,存在如下的问题:

  • 1> 比特币系统内置的脚本系统主要针对加密数字货币交易而专门设计的,不是图灵完备的脚本,表达能力有限,因此在开发其他比如存证、股权众筹等应用时,有些逻辑无法表达,而且比特币内部表达需要做大量开发,对于开发人员要求高、开发难度大,因此无法进行大规模的非加密数字货币类应用的开发
  • 2> 比特币系统在全球范围内只能支持每秒7比交易,并且交易记账后追加6个区块才能比较安全地确认交易,追加一个区块大概需要10分钟,也就意味着大约需要1个小时才能确认交易、不能满足实时性要求比较高的需求

而针对区块链中存在的“比特币系统内置的脚本系统针对加密数字货币交易专门设计”的问题,为了支持如众筹、溯源等应用,区块链2.0阶段支持自定义的业务逻辑,即引入了智能合约。典型代表是2013年启动的以太坊系统

比特币系统架构

既然比特币系统是数字加密货币中的比较有代表性的系统,所以现在以比特币系统为例开展这部分的内容。

区块链系统采用不同的共识方式以提升区块链的性能,比如以太坊通过改进工作量证明将出块时间缩短到15秒,从而能够满足绝大多数的应用,以太坊未来拟采用的PoS共识算法可进一步提升区块链的性能。

比特币详细架构如下图所示:

比特币节点按功能分有几种:全功能节点、基础全节点和SPV节点.

  • 全功能节点带有钱包、RPC服务端,具有挖矿功能和进行节点校验区块和交易,并把区块和交易中转给与之相连接的邻节点.
  • 基础全节点也做区块和交易的交易和中转,但不挖矿,不带钱包和RPC服务端.
  • SPV(Simplify Payment Verification)节点信任别的节点来对区块和交易作校验.
一、比特币前端
1、比特币前端-钱包

钱包保存用户的私钥数据库,并管理用户的余额,提供比特币交易(支付、转账)功能,一般分为冷钱包热钱包

  • 冷钱包是指互联网不能访问到私钥的钱包;冷钱包往往依靠“冷”设备确保比特币私钥的安全,但可能存在物理安全风险,比如电脑丢失损坏等。
  • 热钱包是指互联网能够访问私钥的钱包;热钱包往往是在线钱包的形式,使用热钱包时,最好在不同的平台设置不同密码,且开启二次认证,以确保自己的资产安全。
2、比特币前端-HTTP/JSON RPC API
  • JSON-RPC是一种无状态、轻量级的远程过程调度协议(Remote Procedure Call,RPC).该规范主要定义与处理过程相关的数据结构和规则。它与传输方式无关,可在Socket,HTTP或在各种消息传送环境内使用。它只是将JSON(RFC 4627)作为数据格式。
  • 比特币提供HTTP/JSON RPC API接口,供外部通过接口控制比特币节点.缺省情况下该服务 端只允许来自同一机器的客户端访问. 使用不同语言编写的程序可以方便地通过HTTP/JSON RPC API接口访问比特币节点.例如,Bitcoin-JSON-RPC-Client是一个轻量级的Java客户端程 序.
3、比特币前端-命令行工具bitcoin-cli

bitcoin-cli提供一个命令行工具来控制比特币节点. 该命令行工具通过JSON RPC API接口访问比特币后台bitcoind.用户可以通过发命令来完成比特币的各项功能,例如查询余额、支付、 转账等.

4、比特币前端-比特币浏览器bx
  • 比特币提供一个跨平台的C++libbitcoin 库
  • 该库支持比特币全节点服务端和浏览器(BitCoinExplorer)作为客户端命令行工具.
  • 比特币浏览器命令提供与bitcoin-cli一样的基本功能.同时bx提供bitcoin-cli没有的一些密钥管理功能和处理工具.
5、比特币前端-图形开发工具Qt
  • 比特币使用最广的客户端,是使用C++开源用户界面开发工具Qt所开发的桌面客户端.
  • Qt是一个跨平台的C++图形用户界面应用程序框架.它提供给开发者建立图形用户界面所需 的功能,广泛用开发GUI程序,也可用于开发非GUI程序.Qt是完全面向对象的,很容易扩展, 并且允许真正的组件编程
二、比特币节点后端

比特币节点后端主要负责参与比特币网络的通信互联维护区块链验证区块链验证区块交易广播转播传递区块交易信息

比特币的后台程序主要是由bitcoind,以及挖矿节点程序构成。比特币核心bitcoin-qt实际上是包括前后端(除挖矿功能以外的)一体化节点。

1、比特币后端-区块链管理

区块链管理的代码逻辑都在main.cpp程序中实现. 主要包括4个部分:

  • (1)下载区块链:在比特币全节点第一次加入网络运行时,先要下载并验证整条区块链. “区块 报头先行”(header first),一个初始区块链下载方式,新的节点先从邻节点下载所有的区块报头,再并行地从多个邻节点同时下载不同区间的区块大大提升了整条区块链的下载速度.
  • (2)接收区块链:现有节点在开启时**(非第一次)**会先将整个区块链的索引从LevelDB调进内存. 需要注意的是,该区块链的索引不是单条的链,而可能是一个树,也就是说每个区块只有一个父区块,但可能有多个子区块,因为子区块形成暂时分叉,需要逐渐发现哪个子区块 属于最长的链条.
  • (3)区块链验证:在区块链管理中,连接区块函数ConnectBlock()是一个检测“双花”交易的 关键.该函数对新接收的区块中的所有交易进行检测,验证是否每个交易的比特币来源都能 在当前的“尚未花比特币”(Unspend Transaction Output,UTXO)记录中找到匹配.
  • 4)重组区块链:当节点发现网络中有一条不基于它当前区块链的一条更长区块链时,它需要断开现有的区块并对区块链进行重组.
            1、部分重组只是一个区块的重组,多发生在不同矿工几乎同时挖到合法的区块时.
            2、断开区块、重组区块链涉及UTXO更改,被断开的区块中交易 会回退到交易内        存池,这 个时候“回滚”记录就可以用来回滚断开区块中的交易.
2、比特币节点后端-区块验证

区块验证模块会基于以下条件检查收到的比特币交易是否合规:

  • 1、交易的格式是数据结构必须正确;
  • 2、交易的输入和输出不能为空;(Coinbase交易没有输入)
  • 3、交易的大小不能超过定义的区块最大值MAX_BLOCK_SIZE(最早为1MB,后来逐渐调整);
  • 4、每个交易的输出,以及所有输出的合计,必须在一定范围内,也就是大于0,小于2100万;
  • 5、交易输入的哈希值不能为零,不应该转Coinbase交易;
  • 6、nLockTime小于等于INT_MAX;
  • 7、交易的字节大小要等于或大于100;
  • 8、交易的签名操作数要小于签名操作的上限;
  • 9、锁定脚本(scriptPubkey)必须是标准格式;
  • 10、和收到的交易相匹配的交易必须能在当前交易池或是主链上某个区块中找到;
  • 11、对交易的每个输入,如果其对应的UTXO输出能在当前交易池中找到,该交易必须拒绝(双花交易)因为当前交易池是未经记录在区块链中的交易,而交易的每个输入应该来自确认的 UTXO,如果在当前交易池中找到,那就是双花交易;
  • 12、对交易的每个输入,如果其对应的UTXO输出不能在主链或当前交易池中找到,该交易是一个孤儿交易,应将该交易放入孤儿交易池中;
  • 13、对交易中的每个输入,如果其对应的UTXO输出是一个挖矿初始(coinbase)交易,该初始交易 应该获得100个确认区块的确认(普通交易是6个确认区块的确认);
  • 14、对交易中的每个输入,其对应的输出必须是UTXO(存在且没被花掉)
  • 15、用对应的输出交易来获得输入的值,检查每个输入的值及其合计,应该在允许的区间(0~2100万比特币);
  • 16、如果一个交易的输入合计小于输出总计,则拒绝该交易;
  • 17、如果交易的费用太低,则拒绝该交易;
  • 18、每个输入的**解锁脚本(unlocking script)必须和相应输出的锁定脚本(locking script)**共同验证交易 的合规性.

最后这个18条的检查是比特币平台设计的精髓。比特币的一个很大的创新是依靠脚本来验证交易的合法性,即每一个将要花掉的比特币必须有相应的来源。

  • 解锁脚本 unlocking script是由签名与公钥组成,这就保证了必须拥有私钥的用户才能对某一笔交易进行解锁. 解锁脚本格式为:< Sig > < PubKey >
  • 锁定脚本 locking script是由一连串堆栈命令公钥哈希组成,公钥哈希即RIPEMD160(SHA256(公钥)),大 小20 字节;锁定脚本格式为:
    OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

比特币是将解锁脚本和锁定脚本串起来一同执行的,如果最后结果是逻辑值“真”TRUE,则验证该交易的比特币来源是合法的。脚本执行的过程和每个脚本执行后的堆栈状态如下:

  • ① 由于是堆栈式计算引擎,因此作为数值的< sig>和< pubKey>相继入栈.当执行脚本OP_DUP时, 它将堆栈头的< pubKey>复制一份也压入堆栈.
  • ② 脚本OP_HASH160执行,将把堆栈头的< pubKey>弹出,并用HASH160算法进行哈希处理, 哈希结果放回堆栈.然后遇到<pubKeyHash?>数值,该数值也被压入堆栈.
  • ③ 脚本OP_EQUALVERIFY把堆栈头端的两个哈希值都弹出,并进行比较.如果不一样,验证就出错,交易不合法.如果验证通过,堆栈只剩下< sig >和< pubKey >.
  • ④ 最后脚本OP_CHECKSIG将两者弹出,执行检查签名的脚本,验证该交易签名是否是由拥有该公钥对应用户用其私钥签的,如果是,交易就是合法交易,否则就是不合法交易.
3、比特币节点后端-内存池管理

比特币内存池(mempool)管理也就是交易池管理。

  • 1、节点将通过验证的交易放在一个交易池中,准备放在一个挖到的区块中.当准备挖矿时,它按一定的优先级次序从交易池中选出交易.
  • 2、**优先级是按交易中的输入对应的UTXO的“链龄”和交易额的大小来划分的.**越老UTXO的交易以及交易额越大的交易优先级会越高.
  • 3、优先级(Priority)采用以下公式计算:Priority=Sum*(Value of input×InputAge)/Transaction Size, 其中Value of input是按比特币基础单位(satoshi,聪)计算,1个satoshi等于一亿分之一(10-8)个 比特币.InputAge按已在链上记录该交易的区块为起点,按后面有多少个区块来计算,也就是计量该区块在区块链的“深度” .交易的大小以字节为单位.
  • 4、**当区块填满后,**剩下的交易会留在内存池,等待下一个区块的到来.随着它们的“链龄”的逐渐增加,它们以后被选中的几率也会逐渐增加.
  • 5、内存池的比特币的交易不会过期是内存池的交易不保存在硬盘上,当挖矿节点重启时, 内存池的交易会被清空.
  • 6、如果在一定时间内一个交易一直不能被矿工包括在区块链上,钱包软件需要重新发送该交易, 可以附上较高的交易费,获得优先权.
  • 7、**在一些比特币节点的实现也维护一个独立的“孤儿”交易池.**如果一个交易的输入相对应的UTXO不能被找到,也就是没有“父”交易,会被当作“孤儿”交易,暂时放在“孤儿”交易池.当父交易来到后,该“孤儿”交易会被从“孤儿”交易池移到内存池.
4、比特币节点后端-领节点管理

当一个新比特币节点做**初始启动(bootstrap)**的时候,它需要发现网络中的其他节点,并与至少一个节点连接。

  • 一般是与一个已知的节点在8333端口建立TCP连接.
  • 连接的“握手”流程发送一个版本信息,包括:P2P协议版本,本节点支持的服务,当前时间,对方节点IP地址,本节点IP地址,比特币软件版本,以及本节点当前区块链的长度.
  • 对方节点收到握手信息后会回复一个收到确认的信息.

新节点是如何发现领节点的?

  • 第一个办法是用一些“DNS种子”查询DNS.
  • 第二个办法是直接把一个已知的邻节点作为种子节点,然后通过它发现更多的邻节点.
  • 如果一个连接上一段时间内没有信息交互,节点会定期发一些信息去维护连接.
  • 如果一个节点和邻节点的连接在超过90分钟里没有联系,该邻节点会被认为下线,节点会寻 找一个新的邻节点来进行连接.

比特币网络能动态地调节节点的连接,以保证比特币网络的正常运行.

5、比特币节点后端-共识管理

比特币里广义的共识管理(Conensus)应该包括挖矿、区块验证交易验证规则

  • 由于比特币的关键是在陌生P2P环境建立共识机制,因此共识管理至关重要.
  • 在比特币0.12.0版本中,一部分共识管理的代码已经移到consensus子目录.
  • 目前在consensus子目录的共识程序有consensus.、merkle.、params.和validation..
6、比特币节点后端-规则管理

比特币的共识规则是所有节点都必须遵守的规则(policy),而每个节点可以采用一些共识规则以外的个性化规则(比如一个节点可以拒绝保存、中转大于200KB的交易).这部分的规则由 规则管理模块实现,目前放在policy子目录中.

7、比特币节点后端-密码模块

**密码模块(Crypto)主要是处理比特币地址,**采用RIMEMD和SHA-256算法以及Base-58编码来生成比特币地址。

  • 比特币的公钥是通过私钥产生的,然后采用Secure Hash Algorithm(SHA)算法SHA256和RACE Integrity Primitives Evaluation Message Digest(RIPEMD)【RACE 整形原语评估消息摘要】算法RIPEMD160对公钥进行处理,最 后通过Base58编码形成比特币地址
8、比特币节点后端-签名模块

比特币采用椭圆曲线数字签名算法(ECDSA)来实现数字签名以及生成公钥.ECDSA是一种非 对称密码算法,是基于椭圆曲线离散对数问题困难性的一种签名算法.

9、比特币节点后端-脚本引擎

比特币的脚本语言是一种专门设计的,与“Forth”类似的、基于堆栈的编程脚本语言。

  • 1、基于堆栈的语言的指令只按顺序执行一次,也就是说没有循环或跳转指令因此脚本的指令数可以决定一个程序运行时间的上限和所需的内存上限.
  • 2、 比特币的脚本语言非常小,只能有256个指令,每个指令是一个字节长.这256个指令中,75个是保留指令,15个已废弃.
  • 3、脚本引擎是校验交易的运算平台,从对解锁脚本和锁定脚本的自动执行校验可以看出该引擎的重要作用.
  • 4、新版本的比特币将脚本引擎放在script子目录中,将来可以变成可插拔引擎,使得引入新的功能更强大的引擎更为方便,不影响原有比特币的代码.
  • 5、目前 script 子目录里有interpreter.* 、 script.* 和 standard.* 程序 .script.h 定义了脚本命令, interpreter.cpp解析、评估和较验脚本命令,standard.h定义了标准的交易.
  • 6、比特币通常使用的指令如下:
10、比特币节点后端-挖矿

比特币最早的挖矿程序是cpuminer,是通过CPU来挖矿的。

  • 挖矿设备经过CPU、GPU、FPGA,到现在基本都使用ASIC挖矿设备.
  • 针对SHA256挖矿算法优化的ASIC挖矿设备比其他挖矿设备有着性能上无可比拟的优势.
  • Bfgminer 程序支持FPGA和ASIC挖矿设备,是目前比较流行的挖矿程序. 最新代码见:http://www.bfgminer.org/
  • 那如何把网络的出块速度稳定在10分钟一个呢?比特币网络是通过调整挖矿难度的目标来达 到这个目的. 难度计算公式是:
    New Difficulty = Old Difficulty × (Actual Time of Last 2016 Blocks / 20160minutes)
11、比特币节点后端-HTTP/JSON RPC 服务器

比特币在启动的时候,初始化程序init.cpp会启动HTTP/JSON RPC服务端的线程组。这个主要是为了提供接口,然后达到可以控制比特币节点的功能。

  • 该组件对外提供HTTP和JSON RPC的接口,外部程序可以通过JSONRPC接口来调比特币的API,达到控制比特币节点的功能.
  • 该接口缺省是仅能接收来自本机的客户端的连接请求.
12、比特币节点后端-Berkeley DB和Level DB数据库
  • Berkeley DB是一个开源的文件数据库(Sleepycat Software公司开发),介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,主要用来备份用户的密钥.
  • Berkeley DB是一个轻巧而又性能高的嵌入式数据库,可以保存任意类型的键/值对,可以为一个键保存多个数据,可以支持数千个并发线程同时操作数据库,支持最大256TB的数据.
  • Level DB用来存储区块的索引和UTXO(未花的比特币交易输出)记录,是一个Google实现的 非常高效的键值(Key Value)数据库,目前的版本1.2能够支持几十亿级别的数据量.
  • Level DB的数据是冗余数据,可以用原始区块链数据来重建.如果没有Level DB的数据,比特币的校验和其他操作都会变得非常缓慢.
13、比特币节点后端-P2P网络管理

P2P网络管理的代码主要是在P2P网络上实现和其他邻节点的通信功能.这些通信功能包括: 发现邻节点;连接并管理与邻节点的Socket连接;与邻节点交换不同的P2P消息(包含区块和交 易);有时在特殊情况下,会禁止异常行为的邻节点的连接.

  • 大部分的P2P代码集中在net.h/net.cpp.邻节点IP地址管理代addrman.h/addrman.cpp.地址管理程序把地址存放在peers.dat数据库中,在启动的时候再把它调入内存.
  • 比特币节点的缺省配置是主动连接8个邻节点,同时允许最多125个其他节点发起的连接请求.
  • 比特币防止拒绝服务攻击(DoS)的方法主要是禁止异常行为邻节点的连接. 如果一个邻节点传送非常明显的错误信息,该连接将被断开,而且其IP地址会被禁止,其重新连接申请会被拒绝。
14、比特币节点后端-队列管理

比特币采用Zero MQ作为消息队列管理和消息分发工具,Zero MQ号称是“史上最快的消息队列”,是基于C语言开发的。

  • ZMQ是一个简单好用的传输层,提供像框架一样的一个socket library,它使得Socket编程更加 简单、简洁,性能更高.
  • ZMQ是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩.
  • ZMQ不是一个服务器,更像一个底层的网络通信库,在Socket API之上做了一层封装,将网络通信、进程通信和线程通信抽象为统一的API接口.

3.2.2 区块链2.0 可编程区块链

可编程区块链的概念

比特币的区块链架构主要是围绕支持密码货币的实现,虽然它具有一定的灵活性,但是用来支撑密码货币以外的应用场景还很局限

区块链2.0的核心理念是把区块链作为一个可编程的分布式信用基础设施,支撑智能合约应用,对金融领域更广泛的场景和流程进行优化的应用,与过去比特币区块链作为一个虚拟货币 支撑平台区别开来.

在比特币后,出现很多被称为区块链2.0的平台,其中最具代表性的是以太坊平台.
所以下面以以太坊系统为例,描述一下其2.0版本中架构的一些变化。

以太坊系统架构

以太坊系统结构图:

与比特币系统相比较:

以下讨论以太坊和比特币架构不同的主要方面。

1、账户设计

比特币没有账户的概念.每个用户的余额都是从他们在区块链上的UTXO计算出来的.以太坊的设计是将区块链作为一个通用的管理对象状态转换的去中心化平台,账户就是有状态的对象. 以太坊则有两种类型的账户:一种是外部所有账户(EOA),另一种是合约账户.

  • 外部所有账户就是我们一般意义上的用户账户,它由私钥控制.
  • 合约账户是一种特殊的可编程账户,合约存在以太坊区块链上,它是代码(功能)和数据(状态)的集合.合约受代码控制并由外部所有账户激活.
  • 外部所有账户的状态就是余额,而合约账户的状态可以是余额代码执行情况以及合约的存储.
  • 以太坊网络的状态就是所有账户的状态,该状态由每个区块的交易来更新,同时需在全网形成共识.用户和以太坊区块链的交互需要通过对账户的交易来实现.
2、区块链设计

比特币采用Merkle树来将交易的哈希值组成二叉树,顶层节点的哈希值相当于整个交易清单的指纹,可以用来校验交易清单。但以太坊的区块链每个区块不但保存交易清单还保存最新的状态以太坊的状态包含一个键值表,其中键是地址,值是账户里声明的变量。

  • 以太坊区块报文头中存放了3个根哈希值一个是交易的Merkle根哈希值(比特币只存这一个),另外一个是状态的根哈希值还有一个是收据的根哈希值.
  • 另外一个和比特币的不同是,以太坊的区块链中的每个区块保存区块链号和区块难度.
  • 账户的状态经常被改变,新的账户也经常被插入,键在存储里也被经常插入和删除.还要求树的根哈希只是与树的数据有关,与更新的顺序无关.Patricia(帕特里夏)树是符合这些要求的数据结构,以太坊采用的Merkle Patricia树存储数据.
    **Patricia树,**或称压缩前缀树,是一种更节省空间的前缀树.对于基数树的每个节点,如果该 节点是唯一的儿子的话,就和父节点合并.

    【这里图片来源:链接https://blog.csdn.net/weixin_41545330/article/details/79394153:在这篇博客中有详细的介绍以太坊数据结构、存储、区块头的关系,可以去查看】
3、区块链设计
4、区块链设计

3.2.3 区块链3.0 价值互联网

我们把超越货币、金融范围的区块链3.0可以为各行业提供去中心化解决方案,应用领域扩展到人类生活的方方面面,在各类社会活动中实现信息的证明不再依靠某个第三个或者机构获取信息或建立信息,实现信息的共享,包括在司法、医疗、物流等各个领域,区块链技术可以解决信息问题,提高整个系统的运转效率。
支持行业应用表示区块链平台必须具备企业级属,也就是安全性的考虑会更为突出.另外区 块链3.0也需要图灵完备的智能合约平台,同时对网络和共识算法的性能、每秒交易数(TPS)都 有比较高的要求.
目前业界还没有一个成熟的区块链3.0平台

3.3 Hyperledger Fabric 简介

第三章 区块链技术架构与发展趋势相关推荐

  1. 【金融科技前沿】区块链和数字经济(区块链的缘起,现状和发展、区块链技术架构和原理解析 、区块链应用和案例综述)

    1.缘由 前段时间微众银行的区块链首席架构师张开翔老师给我们上了一堂近三小时的课,与其说是在上课,不如说是一场思想的享受.开翔老师跟我们学院联系挺密切的,之前比赛也见过他,我印象中他一直是一位顶级的技 ...

  2. 区块链入门与去中心化应用实战 之一 第3章 区块链技术核心原理实现

    第3章 区块链技术核心原理实现 建立项目,确定区块结构 实现区块类结构-添加交易 实现创建区块 实现工作量证明 添加节点通信功能 交易接口实现 挖矿接口实现 实现注册节点 实现共识机制

  3. 区块链技术架构 java_《区块链底层设计Java实战》之第二章区块链架构

    第2 章   区块链架构 会当凌绝顶  一览众山小 正如开篇所言:会当凌绝顶,一览众山小.进入区块链底层开发前,我们需要 了解区块链底层的通用架构是如何设计的,从上而下地审视区块链底层的结构,做 到了 ...

  4. 第三章 区块链进阶 [18]

    一.简单支付验证(SPV) 简单支付验证(Simplified Payment Verification,简称SPV)是一种无须维护完整的区块链信息,只需要保存所有的区块头部信息即可进行支付验证的技术 ...

  5. 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理

    区块链的过去与未来 密码朋克( Cypherpunk ) 维基解密的创始人阿桑奇 BT下载的作者的布莱姆-科恩 WWW的发明者蒂姆伯纳斯-李 区块链前世今生 戴伟发明了B-money,强调点对点交易和 ...

  6. 区块链以及区块链技术总结

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 摘要:区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这是一个牺牲一致性效率且保证最终一致性 ...

  7. Bitcoin比特币与BlockChain区块链技术

    一.比特币的历史 比特币现在大火,一枚7000多人民币,遥想当年1万枚才买一张价值25美元的披萨优惠券,如果上天能给我回到当年的机会的话,我一定买买买!!! 比特币有很高的开采及投资价值,被我们中国人 ...

  8. 区块链技术从入门到实践

    内容简介 经过多年的发展和演变,区块链被公认为下一代互联网,已经成为创业创新的最热门领域之一.同时,国内区块链 + 实体经济成为大势所趋,大量企业正在探索区块链应用之道.在此背景下,区块链也成为技术人 ...

  9. 区块链的架构,特点和优势

    一丶区块链基础架构 ①网络层 (一)区块链是建立在TCP/IP通信协议和对等网络的基础上的一个分布式系统,不依靠中心化的服务器节点来转发消息,而是每一个结点都参与消息的转发 (二)P2P网络比传统网络 ...

最新文章

  1. trigger() --工作中问题nav样式
  2. python时钟程序的设计总结_Python实现时钟显示效果思路详解
  3. OpenStack虚机网卡的创建过程
  4. 一步一步学Remoting系列文章
  5. 残疾人计算机高考试题,残疾人勇夺玉溪高考榜眼:想去清华学计算机
  6. java导出数据库的结构 表结构 字段信息 主键
  7. 中国农历2013,2014 (zz.IS2120@BG57IV3)
  8. Android项目:天气预报App
  9. python pytz_关于python:找不到符合pytz要求的版本
  10. 【Web Design The Missing Link】Handing Error
  11. VMware Workstation虚拟机备份及磁盘空间回收
  12. matlab 分段符号函数,Octave符号包中的分段函数?
  13. Unity 图片定点缩放功能
  14. 移位运算(左移和右移)
  15. 线上频繁GC怎么处理
  16. 安卓锁屏密码忘记怎么办【超强解锁百分百有效!】
  17. 交换瓶子-JavaA
  18. ThinkPHP5数据库操作
  19. SMS平台发短信的代码
  20. centos7只更新安全补丁

热门文章

  1. java home not set_hadoop安装及出现JAVA HOME is not set和No such file or directo
  2. PG数据库源码-SysCache部分匹配机制
  3. 3个老油条私藏多年的资源库被曝光了,原来这种资源都在这里找的
  4. 机器学习之决策树原理
  5. 全志A10s datasheet,A10s 数据手册,A10s规格书
  6. 笔趣阁小说站的爬虫小程序
  7. 比in效率更高的sql查询语句
  8. 搭建FTP服务器(二):虚拟目录的设置
  9. 计算机音乐丑八怪乐谱,薛之谦《丑八怪》五线乐谱
  10. JQuery运行机制及原理