Hyperledger_Fabric_Model

本部分描述了Hyperledger Fabric的主要设计特点

  • Assets: 资产定义使得任何东西都可以通过货币值在网络中交易,从食物到老爷车再到期货。
  • Chaincode: 由以下几部分构成的执行部分,包括交易排序,限制信任等级,验证节点类型以及优化网络性能。
  • Ledger Features: 不可更改的、共享的账本编码了整个交易历史(for each channel),包含了类似于SQL语句的查询命用于高效审计和解决纠纷。
  • Privacy through Channels: 可以使具有高度隐私和机密性的多边交易成为竞争企业和受监管行业在公共网络上交换资产所必需的。
  • Security & Membership Services: Permissioned membership 提供了一个可信任的区块链网络,它的参与者知道所有的交易都可以被检测到兵器被管理者追踪。
  • Consensus: 一个统一的方法用来建立共识,实现了企业级网络所需要的灵活性与可扩展性。

Assets(资产)

资产可以是任何有型的无形的资产,Hyperledger Fabric提供了通过chaincode来修改资产的能力。

资产在Hyperledger Fabric中表现为一个键值对的集合,状态的改变会记录在一个channel的ledger上。资产可以以二进制或者是JSON格式。

在Hyperledger Fabric中,你可以通过Hyperledger Composer工具很容易的定义并使用资产。

Chaincode

Chaincode是通过软件定义资产,以及资产修改的指令。或者说,chaincode是商业逻辑。chaincode执行读取或者更改键值对的规则。Chaincode函数根据账本的当前状态来执行。如果chaincode的执行结果是更改键值对,那么这个操作会传播到网内的所有节点。

Ledger Features

ledger是顺序的、难以破坏的记录,其记录了整个fabric上所有状态变化。状态变化是chain code的执行结果。每个交易都会导致一系列键值对创建、修改或是删除。

ledger是用区块链来用来存储不变的、顺序记录的交易信息,除此之外还有一个状态数据库用来表示当前的fabric状态。每个channel都有一个ledger。每个peer都包含了他所属那个channel的ledger的整个拷贝。

privacy through channels

HyperLedger Fabric在每一个channel上都实现了一个不可变更的账本,chaincode可以管理修改资产的当前状态。一个账本存在于一个channel的作用域内,可以在网络间所有节点内共享(这时所有节点都使用这个channel),也可以只在部分节点中共享。

在后一种情况下,共享账本的节点会创建一个独立的channel以以在相互之间共享账本。为了解决在完全透明的账本和部分可见的账本之间的通讯问题,chaincode可以只在需要访问资产状态的节点上实现。换句话说就是,如果节点上没有安装chaincode,那么该节点就不能正确访问资产。

Security & Membership Services

Hyperledger Fabric实现的区块链网络中,所有节点都有一个唯一的ID,Public Key Infrastructure 用来产生加密证书,这些证书绑定到组织、网络参与者、用户或者客户端应用上。数据访问控制可以在整个网络,在channel级别进行管理。

Consensus 共识

在分布式分类帐技术中,共识最近已经成为特定算法的同义词,在一个单一的函数内。共识已经不仅仅是简单地同意交易的顺序,从提案和背书,到订购、验证和承诺,都突出显示在超级分类账上。简而言之,共识被定义为对包含块的一组事务的正确性进行全面的验证。

endorsement: 背书,是转让汇票权利的一种法定手续,就是由汇票持有人在汇票背面签上自己的名字,或再加上受让人的名字,并把汇票交给受让人的行为。

当块事务的顺序和结果满足显式策略标准检查时,最终会达成一致。这些检查和平衡在事务的生命周期中都会发生,包括使用背书策略来规定哪些特定成员必须认可某个事务类,以及系统链码以确保这些策略得到执行和维护。在确认之前,节点将使用这些chaincode,以确保有足够的背书存在,并且这些背书来自适当的实体。此外,在将包含交易的任何块附加到分类账之前,将进行版本检查,在此期间,对分类账的当前状态达成一致或同意。这个最后的检查提供了对重复开销操作和其他可能危及数据完整性的威胁的保护,并允许对非静态变量执行函数。

除了进行大量的背书、有效性和版本控制检查之外,还有在事务流的各个方向上正在进行的身份验证。访问控制列表在网络的层次层上实现(从服务到通道),并且有效负载在通过不同体系结构组件的事务提案时被反复签名、验证和验证。综上所述,共识不仅限于达成一致的一批交易的顺序,而是作为交易从提案到承诺的过程中正在进行的验证的副产品实现的总体特征。

Hyperledger_Fabric_Model的更多相关文章

随机推荐

  1. 编译nginx错误:make[1]: *** [/pcre//Makefile] Error 127

    --with-pcre=DIR 是设置源码目录,而不是编译安装后的目录.

  2. 一个input输入内容监听联动的demo

    两个input,一个在其中一个输入,内容在另一个input中实时回显 代码如下 <!DOCTYPE html> <html> <head> <title> ...

  3. angular setInterval计时操作

    在angular中setInterval方法是单向绑定,只绑定一次,无法实现计时效果, 可以使用$interval实现.附上代码:

  4. 3.3.2Qt的按钮部件

    #include "mywidget.h" #include "ui_mywidget.h" #include <QDebug> #include& ...

  5. docker inspect获取详细参数的两种方法

    docker inspect xx 返回的是一个json格式的数据 以下为部分返回值 [ { "Id": "706813b0da107c4d43c61e3db9da908 ...

  6. python格式化输出、逻辑表达式和字符编码

    格式化输出: %s  字符串占位符;%d 整数占位符 注意:如果前面有了占位符,那么后面所有的%都是占位,如果要输出“%”,需要使用转移符,即"%%" #定义三个变量 name = ...

  7. docker环境下构建flannel 网络

    flannel 是coreos 开发的网络解决方案,为每一台主机分配一个 subnet,容器从此subnet 中分配ip,ip可以在主机间路由.每个subnet从更大的ip池中划分,为了在各个主机间共 ...

  8. golang基础--Gocurrency并发

    Go并发特点 goroutine只是由官方实现的超级"线程池"而已,每个实例4-5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销. 并发不是并行(多CPU): Concu ...

  9. 在.net core中使用Thrift

    Thrift应用比较广泛,这里不介绍Thrift的基本概念和使用.Thrift对.net支持的很好,但自从.net core诞生引来,我曾多次关注Thrift的官方网站,看看对.net core是否提 ...

  10. 20155232 2016-2017-3 《Java程序设计》第3周学习总结

    20155232 2016-2017-3 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 1.对象(Object):存在的具体实体,具有明确的状态和行为. 2.类( ...