一、区块链的基本原理
区块链包括三个基本概念:
1、交易(transaction):一次对账本的操作,导致账本状态的一次改变,如添加一次转账记录;
2、区块(block):记录一段时间内发生的所有交易和状态的结果,是对当前账本状态的一次共识;
3、链(chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。

二、Ledger-账本
账本是fabric中所有状态转换的记录,具有有序和防篡改的特点。
账本是由一条区块链构成的,并将不可变的、有序的记录存放在区块中;同时包含一个状态数据库来记录当前的fabric状态。每个通道中都各有一个账本。各个节点对于它所属的每个通道,都会保存一份该通道的账本副本。

三、Chain-链
链是一个交易日志,它由哈希值链接的区块构造而成,每个区块中包含N个有序的交易。块头中包含了本区块所记录交易的哈希值,以及上一个区块头的哈希值。通过这种方式,账本中的所有交易都被有序的、加密的形式串联在一起。换言之,如果不破坏哈希链的话,是无法篡改账本数据的。

链被存放于节点的文件系统中(本地或者挂载),有效地支持着区块链工作量只能追加的特性。

四、State Database-状态数据库
账本的当前状态信息呈现,是链交易日志中记录过的所有键的最新值。由于当前状态表示的是通道已知的所有键的最新值,由此也常被称作世界状态。

链码调用基于当前的状态数据执行交易。为了使链码调用高效运行,所有键的最新值被存储在状态数据库中。状态数据库是链的交易日志的索引视图,因此它可以随时从链中重新导出。节点启动的时候,在接受交易之前,状态数据库将被自动恢复(或者根据需要产生)。

五、Transaction Flow - 交易流程
{
概括而言,交易流程由应用客户端发送给背书节点交易提案组成。背书节点验证客户端的签名,然后执行链码来模拟交易。产生的输出就是链码结果,一组链码读取的键值版本(读集合),和一组被写入的链码的键值集合(写集合)。交易提案的响应被发送回客户端,同时包含了背书签名。

客户端汇总所有的背书到一个交易有效载荷中,并将它广播到排序服务。排序服务将排好序的交易放入区块并发送到通道内的所有节点。

在提交之前,节点们会验证交易。首先它们会检查背书策略来保证足够的指定节点正确地对结果进行了签名,并且会认证交易有效载荷中的签名。

其次,节点们会对交易的读集合进行版本检查,从而保证数据的一致性并防范一些攻击,比如双花(双重支付,一笔钱花了两次)。
}

六、State Database options-状态数据库选项
状态数据库选项包括LevelDB和CouchDB(beta)。LevelDB是节点流程中集成的缺省键值状态数据库。CouchDB是可选的外部状态数据库。类似于LevelDB的键值库,CouchDB能存储任何链码中建模的二进制数据(CouchDB附件功能被内部用于非JSON格式的二进制数据)。但作为一个JSON格式文档库,当链码的数据(比如资产)以JSON格式建模时,CouchDB额外提供了许多针对链码数据的查询方式。

CouchDB作为独立的数据库进程跟节点一起运行,所以安装、管理和操作的时候需要一些额外的考虑。你可以尝试开始的时候用缺省集成的LevelDB,然后当你需要额外的复杂查询时再切换到CouchDB。将链码的资产数据以JSON格式建模是一个非常好的实践,这样有利于你将来进行复杂多样的查询

区块链要点介绍:

分布式账本

分布式账本是区块链网络的核心,在这个账本中记录了网络中所有发生交易的信息(信息只能以附加的形式记录在区块链中,同时使用加密技术保障了交易一旦添加进账本中,就无法篡改)。在区块链网络中每一个参与者都保有一份账本的副本。

智能合约

用来实现对账本的访问和控制。例如:双方可以定义一个智能合约,以保证卖方发货的商品运送到达时,买方支付的货款会自动转账给卖方。

共识

保持网络中所有交易的流程同步。共识保证了账本只会在交易双方都确认后才进行更新。

同时在账本更新时,交易双方能够在账本中的相同位置,更新一个相同的交易信息。

简易概括:区块链是一个共享的,通过智能合约更新的多副本交易系统,同时这个系统通过共识协作机制保证了网络中所有账本副本的同步(不同于目前的系统参与者使用私有的程序对私有的账本进行更新,而区块链系统使用共享的程序对共享的账本进行更新)。

用途:账本共享。

意义:通过使用共享账本协调整个商业网络,区块链网络能够减少时间、成本以及隐私信息泄露的风险,并且能够使流程更加可信和透明。

Hyperledger Fabric

Hyperledger Fabric与其他区块链网络最大的不同体现在私有许可。(需要通过工作量证明协议来保证交易有效并维护网络的安全),haperledger fabric通过MSP来登记所有的成员(MSP:成员服务提供者,是一个提供抽象化成员操作框架的组件)。

共享账本

fabric包含一个子系统,这个系统包含两个组件:世界状态(world state)和交易记录

世界状态描述了账本在特定时间点的状态,它是账本的数据库。交易记录组件记录了产生世界状态当前值的所有交易。所以账本就是世界状态数据库和交易历史记录的集合

智能合约

fabric的智能合约称为chaincode,当一个区块链外部的应用程序需要访问账本时,就会调用chaincode。chaincode目前支持的语言是go。

共识

制定在网络中让不同的参与者写入的交易必须按照产生顺序依次写入账本。fabric的共识机制包含SOLO,Kafka以及PBFT (可以为文件副本提供一种机制来相互通信,即使是在发生腐败的情况下,也可以保证每个副本保持一致)。

系统架构

区块链是一个分布式系统,由许多相互通信的节点组成。区块链运行的程序成为链码,保存状态和账本数据、执行交易。链码是账本的核心要素,交易操作就是调用链码。交易必须被“背书”,只有经过背书的交易才可以交易,并对状态产生影响。有可能存在一个或多个特定的链码用于管理功能和参数,统称为系统链码。

交易

交易可以有两种类型:

调用交易:是在之前已经部署的链码上执行一个操作。调用交易引用链码的一个函数。

部署交易:创建新的链码并设置一个程序作为参数。当一个部署交易执行成功,表明链码已经被安装到区块链上。

综上所述,部署交易是调用交易的特例,部署交易创建新的链码,对应于系统链码的一个调用交易

区块链数据结构

数据存储模型:K/V

state由peer节点保持,而不是ordering peer和client。

账本(Ledger)

账本保存在所有peer节点,可选地保存在排序者的一个子集。账本是由排序服务构建的一个全部有序的交易哈希链块。哈希链块强制将全部排序块置入账本,并覆盖所有交易。

节点(Nodes)

Node节点是区块链的通信实体。有三种类型的node节点:

  1. 客户端或者提交客户端:客户端提交实际交易调用到背书者,广播交易请求到排序服务节点。(客户端代表最终的用户实体。它必须连接到一个peer节点与区块链交互。客户端可以选择连接任何peer节点创建并调用交易)
  2. Peer节点:提交交易、维持状态和账本的拷贝。(以块的形式从排序服务接收有序状态更新,维护状态和账本。并能附加一个特殊的背书节点背书者。背书节点的特殊功能是链码在提交之前背书一个交易。)。
  3. 排序服务节点或排序者(Orderer):运行通信服务实现交付保证,像原子或全序广播。(排序者产生排序服务,即,一个提供交付保证的通信架构。排序服务为客户端和peer节点提供共享的通信通道,为包含交易的消息提供广播服务。客户端连接到通道可以在通道上广播消息,通道随后传递消息给所有peer节点。通道支持所有的消息原子传递,意思是全部的排序交付通信具有可靠保证性。这个原子通信保证也成为分布式系统中的共识)

排序服务API

peer节点通过排序服务提供的接口连接到排序服务提供的通道。排序服务包含两个基本操作:

待办(TODO):新增的客户端/peer节点序列号。

账本和块构成:账本包含所有数据,通过一致性hash计算形成的一个哈希链。

排序服务的特性

  1. 安全性(一致性保证):只要peer节点连接到通道足够长的时间,就会看到交付消息的同等序列号。
  2. 活跃度(交付保证):原则上如果提交客户端没有失败,排序服务应该保证每个连接到排序服务的正确peer节点终究交付每个提交交易。

交易背书的基本工作流程

  1. 客户端创建交易并发送给选择的背书peer节点(调用交易);
  2. 背书peer节点模拟交易和产生背书签名
  3. 提交客户端收集背书交易并通过排序服务广播
  4. 排序服务向peer节点提交交易

背书策略

是背书一个交易的条件。区块链peer节点有一组预先确定的背书策略,它被安装在特定链码的部署中被交易引用。

交易只有经过背书策略的背书才会宣布有效。对于链码的调用交易首先需要得到一个满足链码策略的背书。

证实账本和节点账本检查

验证账本

维护一个账本的抽象,只包含有效的提交交易,这是一个哈希链,来自过滤掉无效交易的账本(交易的背书无效或版本依赖无效)。

区块链原理和fabric概念介绍相关推荐

  1. 区块链主流开源技术体系介绍

    区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种.作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想 ...

  2. COSCon'21 区块链(B)论坛介绍

    " 点击蓝字 / 关注我们 " | 作者.编辑:Corrie | 设计:朱亿钦.宋传琪 第六届中国开源年会 (COSCon'21) 将于 10月30-31日由开源社举办. 本次年会 ...

  3. [转]区块链主流开源技术体系介绍

    区块链应用开发入门 区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种.作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你, ...

  4. 区块链中的基本概念整理

    区块链中的基本概念整理 区块链本身是由多种技术集合而成,涉及了多方面的内容,而在其组合应用的过程中,同时也产生了很多新的概念.对于这些概念的整理和理解,有助于更加深刻的理解区块链的本质,也可以指导我们 ...

  5. 混合高斯模型原理和Lucas-Kanade方法介绍

    运动估计之混合高斯模型原理和Lucas-Kanade方法介绍 1. 简述混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想. 背景建模的思想:利用帧之间的像素变化来进行判断,像素灰度值 ...

  6. 吴军:AI应该变成通识教育,区块链不是炒概念

    来源:大数据文摘 作者:魏子敏.龙牧雪 本文共4100字,建议阅读6分钟. 本文为你分享吴军老师对AI相关话题的思考和见地. 2006年,当时的谷歌成立还不足10年.时任智能搜索部科学家的吴军,将其在 ...

  7. 吴军北京来信:人工智能应该变成通识教育,区块链不是炒概念

    大数据文摘作品 作者:魏子敏.龙牧雪 就像今天在每一所理工院校的图书馆,都能找到几台正在播放吴恩达深度学习课程的电脑,10年前,在每一栋理工院校的宿舍楼里,都能看到几本被放在枕边的<数学之美&g ...

  8. 区块链基础:分布式账本介绍

    区块链基础:分布式账本介绍 1.分布式账本是什么 2.商业账本扮演的角色 3.现行商业账本的问题 4.区块链是什么 5.区块链网络是如何工作的 6.区块链的商业利益 7.区块链的使用案例 8.你是否应 ...

  9. 区块链开源实现fabric快速部署及CLI体验

    区块链开源实现fabric快速部署及CLI体验 2018年05月22日 09:53:41 阅读数:1359 标签: hyperledgerfabric区块链联盟链PBFT 更多 个人分类: 区块链技术 ...

最新文章

  1. 邓公数据结构C++语言版学习笔记1
  2. 《Python Cookbook 3rd》笔记(3.8):分数运算
  3. 【python】hashlib.shasha256练习注册 --笔记
  4. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ActiveXForm运行容器...
  5. 使用Moq、NUnit和Shoulded进行单元测试
  6. Android开发笔记1之HelloWorld
  7. 移动硬盘(U盘)病毒对数据的破坏
  8. 浅谈Entity Framework中的数据加载方式
  9. cudnn下载速度很慢怎么解决
  10. 评价——模糊综合评价
  11. HDU 1019 least common Multipy
  12. 利用路由器实现VLAN
  13. 为什么mysql填不了数据库_求助,为何我的数据不能写入数据库
  14. 什么是软件验收测试?验收测试的标准和流程介绍
  15. Grafana Transformation的使用
  16. 我的世界服务器创世神文件夹,我的世界服务器怎么给创世神权限的指令
  17. 手游联运平台是怎样开发的?
  18. d610网络计算机,尼康D610,10年来我见过的真心值得买的全幅单反
  19. SpringBoot学习笔记(完整)
  20. DDR,DDR2,DDR3,DDR4,LPDDR区别讲解

热门文章

  1. Python之小数点位数的控制输出
  2. C#练习题答案: TO DE-RY-PO-陆琪暗号【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  3. 线性表应用 多项式加法
  4. mysql经度纬度类型_在MySQL数据库中存储纬度/经度时使用的理想数据类型是什么?...
  5. 串行FLASH文件系统FatFs---转自野火论坛
  6. SSL peer shut down incorrectly报错解决
  7. 4k电视测试软件准确吗,真假4K怎么分辨?告诉你几个买4K电视必看的知识
  8. 我经历的字节跳动后台开发实习二面,面试官说叫我补补操作系统和算法
  9. SharePoint BI培训资料
  10. 实现 element ui 走马灯图片插入与自适应大小