hyperledgerfabric[hyperledgerfabric官网]
2023年06月27日 08:29
欧易okx交易所下载
欧易交易所又称欧易OKX,是世界领先的数字资产交易所,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务,通过使用区块链技术为全球交易者提供高级金融服务。
面对信息化时代,稍不注意就会脱轨,所以及时的补充知识才能让我们与时俱进,今天给大家带来的是关于hyperledgerfabric和hyperledgerfabric官网的一篇文章,相信会给你带来较大的帮助!
hyper ledger fabric不是公有链,是一个许可的基于商业的区块链构架,主要解决商业性的区块链需求。Hyperledger Fabric是开源的,企业级的,带权限的分布式账本平台。它的设计初衷就是针对企业级应用的,针对市面上流行的其他分布式账本系统或者区块链平台,Hyperledger Fabric拥有很多不同的特点和应用领域。
拓展资料:
一、关于区块链( Blockchain )
1、区块链(Blockchain),本质上是一种去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链概念,最早由一个叫中本聪的人在2008年提出。
2、区块链之所以产生,是因为传统的商业网络,每家公司进行数据交互,或者业务往来时,每家都会通过自己的数据库,对另外一家公司提供接口,供其访问。这样,会出现一个问题,不能保证每家的数据是相同性。而且从别人的中心数据库去取数据,不能保证数据的真实性,其中存在信任问题,区块链这种分布式账本的模式,可以很好地解决这个问题。
3、区块链有几个明显的特点,即:去中心化、不可伪造、不可篡改、公开透明、账本一致,并且可以匿名。区块链分公有链、私有链和联盟链。公有链,是指全世界任何人都可读取、发送交易且交易能获得有效确认的、也可以参与其中共识过程的区块链。私有链最大的区别是,它仅仅对单独的个人或实体开放。因此,私有区块链其写入权限仅在一个组织手里。读取权限或者对外开放,或者被任意程度地进行了限制。私有链的特点是,交易速度非常之快,给隐私更好的保障,能大幅降低交易成本,甚至让成本为零。联盟链,只针对某个特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定。
二、关于Hyperledger Fabric
Hyperledger Fabric是一个许可的基于商业的区块链构架(permissioned blockchain infrastructure)。主要解决商业性的区块链需求。首先,所有节点都会有一个共享账本,它会把商业的合约、合同封装起来,放在账本里,根据条件自动触发信息,没有人为操作步骤,能保证公平公正性。其次是,隐私性。联盟链有不同的角色不同的权限,不同的角色操作不同的数据,隐私性功能可以及时保护数据。其三,是信任机制更好。各个节点之间,无需身份确认,即可建立信任关系。
Fabric是联盟链,Peer代表一系列组织,Peers是整个区块链网络的基础,因为它是账本和智能合约的载体。通过智能合约,账本通过不可篡改的方式记录了交易的全过程。
对于不能的公司来说,是有不同的业务的,不同的业务又与不同的公司相关联,需要创建多个联盟链,因此就需要创建多个channel,channel是多个特定成员之间以机密交易为目的建立的私网,一个peer可以加入多个channel,每个channel维护自己的账本,账本和账本之间是隔离的,每个channel可以维护一个或多个账本。所以为了满足复杂的交易需求,每个peer上可以安装不同的智能合约,当peer交易完成时,会发送事件通知Client。peer上还有一个Local MSP(成员服务提供器)服务,提供身份认证和加密签名等功能。
WorldState 以key-value的形式,维护着当前账本的当前信息。
智能合约(Smart Contract)是区块链的核心,定义了各个不同组织间的业务规范,创建交易并记录在账本里。多个智能合约可以打包到一个链码中。只有链码(Chaincode)部署之后,智能合约才能被应用使用。
不同于一般的链码运行在一个独立的容器,系统链码运行在peer进程上,实现了一些系统行为。
Fabric为了优化网络性能,提高安全性和可扩展性,将每个交易分到 Endorsing Peer 、 Ording-Service 和 Committting Peer 三个部分,这就需要一种安全的,可信的和可扩展的数据传输协议——Gossip Protocol。 Gossip 传输协议以随机的方式将信息散播到网络中,主要执行三个功能:
区块链网络中的不同参与者包括 Peer 节点、排序节点、客户端应用程序、管理员等。每一个参与者(网络内部或外部能够使用服务的活动元素)都具有封装在 X.509 数字证书中的数字身份。这些身份确实很重要,因为它们 确定了对资源的确切权限以及对参与者在区块链网络中拥有的信息的访问权限。
此外,数字身份还具有 Fabric 用于确定权限的一些其他属性,并且它为身份和关联属性的并集提供了特殊名称—— 主体 ?。主体就像 userID 或 groupID,但更灵活一点,因为它们可以包含参与者的身份的各种属性,例如参与者的组织,组织单位,角色甚至是参与者的特定身份。当我们谈论主体时,它们是决定其权限的属性。
要使身份可以被 验证 ,它必须来自 可信任的 权威机构。成员服务提供者(Membership Service Provider,MSP)是 Fabirc 中可以信任的权威机构。具体地说,一个 MSP 是定义管理该组织有效身份规则的组件。Fabric 中默认的 MSP 实现使用 X.509 证书作为身份,采用传统的公钥基础结构(Public Key Infrastructure,PKI)分层模型(稍后将详细介绍PKI)。
想象你去超市购买一些杂货。在结账时,你会看到一个标志,表明只接受 Visa,Mastercard 和 AMEX 卡。如果你尝试使用其他卡付款(我们称之为“想象卡”)无论该卡是否真实、或你的帐户中是否有足够的资金,都无关紧要。它不会被接受。
拥有有效的信用卡是不够的,它也必须被商店接受!PKI 和 MSP 以相同的方式协同工作,PKI提供身份列表,MSP说哪些是参与网络的给定组织的成员。
PKI 证书和 MSP 提供了类似的功能组合。PKI 就像一个卡片提供商,它分配了许多不同类型的可验证身份。另一方面,MSP 类似于商店接受的卡提供商列表,确定哪些身份是商店支付网络的可信成员(参与者)。 MSP 将可验证的身份转变为区块链网络的成员 ?。
让我们更详细地深入研究这些概念。
公钥基础结构(PKI)是一组互联网技术,可在网络中提供安全通信。 是 PKI 将? S ?放在? HTTPS ?中,如果你在网页浏览器上阅读这个文档,你可能正使用 PKI 来确保它来自一个验证过的来源。
公钥基础结构(PKI)的元素。PKI 由向各方(例如,服务的用户,服务提供者)发布数字证书的证书授权中心组成,然后使用它们在与其环境交换的消息中对自己进行身份验证。CA 的证书撤销列表(CRL)构成不再有效的证书的参考。证书的撤销可能由于多种原因而发生。例如,因为与证书相关联的加密私有材料已被公开,所以证书可能被撤销。
虽然区块链网络不仅仅是一个通信网络,但它依赖于 PKI 标准来确保各个网络参与者之间的安全通信,并确保在区块链上发布的消息得到适当的认证。因此,了解 PKI 的基础知识以及为什么 MSP 是非常重要的。
PKI 有四个关键要素:
数字证书
公钥和私钥
证书授权中心
证书撤销列表
数字证书是包含与证书持有者相关的属性的文档。最常见的证书类型是符合?X.509标准的证书,它允许在其结构中编码一些用于身份识别的信息。
例如,密歇根州底特律的 Mitchell 汽车的制造部门的 Mary Morris 可能有一个带有?SUBJECT?属性为?C=US,?ST=Michigan,?L=Detroit,?O=Mitchell?Cars,?OU=Manufacturing,?CN=Mary?Morris?/UID=123456?的数字证书。Mary 的证书类似于她的身份证(提供了 Mary 的信息),她可以用来证明关于她的重要事实。X.509 证书中还有许多其他属性,但现在让我们专注于这些。
描述一个名为 Mary Morris 的组织的数字证书。Mary 是证书的?SUBJECT,突出显示的?SUBJECT?文本显示了关于 Mary 的重要事实。如你所见,证书还包含更多信息。最重要的是,Mary 的公钥是在她的证书中分发的,而她的私人签名密钥则不是。此签名密钥必须保密。
重要的是,Mary 的所有属性都可以使用称为密码学(字面意思,“? 秘密书写 ?”)的数学技术进行记录,这样篡改将使证书无效。只要对方信任证书颁发者,即 证书授权中心(CA) ,密码学就允许 Mary 将证书提交给其他人以证明其身份。只要 CA 安全地保存某些加密信息(CA 的 私钥 ),任何阅读证书的人都可以确定上述文章内容就是 Mary 的信息没有被篡改,它将始终具有 Mary Morris 的特定属性。将 Mary 的 X.509 证书视为无法改变的数字身份证。
身份验证和消息完整性是安全通信中的重要概念。身份验证要求确保交换消息的各方创建特定消息的身份。对于具有“完整性”的消息意味着在其传输期间不能被修改。例如,你可能希望确保与真正的 Mary Morris 而不是模仿者进行沟通。或者,如果 Mary 向你发送了一条消息,你可能希望确保其在传输过程中没有被其他任何人篡改过。
传统的身份验证机制依赖于 数字签名 ,顾名思义,它允许一方对其消息进行数字 签名 。数字签名还可以保证签名消息的完整性。
从技术上讲,数字签名机制要求每一方保存两个加密连接的密钥:广泛可用的公钥和充当授权锚的私钥,以及用于在消息上产生 数字签名 的私钥 。数字签名消息的接收者可以通过检查附加签名在预期发送者的公钥下是否有效来验证接收消息的来源和完整性。
私钥和公钥的唯一关系是保证安全通信的加密魔法 。密钥之间唯一的数学关系使得私钥在消息上的签名,只有对应公钥在相同的消息上才可以与之匹配。
在上面的示例中,Mary 使用她的私钥对邮件进行签名。任何使用她的公钥查看签名消息的人都可以验证签名。
如你所见,人员或节点能够通过由系统信任的机构为其发布的 数字身份 参与区块链网络。在最常见的情况下,数字身份(或简称 身份 )的形式为,符合 X.509 标准并由证书授权中心(CA)颁发的经加密验证的数字证书。
CA 是互联网安全协议的常见部分,你可能已经听说过一些比较流行的协议:Symantec(最初是 Verisign),GeoTrust,DigiCert,GoDaddy 和 Comodo 等。
证书授权中心向不同的参与者颁发证书。这些证书由 CA 进行签名,并将参与者的公钥绑定在一起(并且可选是否具有全部属性列表)。因此,如果一个成员信任 CA(并且知道其公钥),则可以信任与参与者绑定的证书中包含的公钥,并通过验证参与者证书上的 CA 签名来获取所包含的属性。
证书可以广泛传播,因为它们既不包括参与者也不包括 CA 的私钥。因此,它们可以用作信任的锚,用于验证来自不同参与者的消息。
CA 也有一个证书,它们可以广泛使用。这就可以让从给定 CA 获取身份证书的消费者验证自己的身份,因为只有对应的私钥才可以生成该证书。
在区块链设置中,希望与网络交互的每个参与者都需要一个身份。在此设置中,你可能会说使用 一个或多个 CA 从数字角度定义了组织的成员 ?。CA 是为组织的参与者提供可验证的数字身份的基础。
CA 有两种形式: 根 CA 和 中间 CA ?。因为根 CA(Symantec,Geotrust等)必须 安全地 向互联网用户 颁发 数亿个证书,所以将这个过程分散到所谓的 中间 CA 中 是很有用的。这些中间 CA 具有由根 CA 或其他中间 CA 颁发的证书,允许为链中的任何 CA 颁发的任何证书建立“信任链”。追溯到根 CA 的能力不仅让 CA 的功能在仍然提供安全性的同时进行扩展(允许使用证书的组织充满信心地使用中间 CA),还限制了根 CA 的暴露,如果根 CA 受到损害,将会危及整个信任链。另一方面,如果中间 CA 受到损害,则曝光量会小得多。
只要每个中间 CA 的证书的颁发 CA 是根 CA 本身或具有对根 CA 的信任链,就在根 CA 和一组中间 CA 之间建立信任链。
中间 CA 在跨多个组织颁发证书时提供了巨大的灵活性,这在许可的区块链系统(如Fabric)中非常有用。例如,你将看到不同的组织可能使用不同的根 CA,或者使用具有不同中间 CA 的相同根 CA,这取决于网络的需求。
因为 CA 非常重要,Fabric 提供了一个内置的 CA 组件,允许在你的区块链网络中创建 CA。此组件称为? Fabric CA ?,是一个私有根 CA 提供者,能够管理具有 X.509 证书形式的 Fabric 参与者的数字身份。由于 Fabric CA 是针对 Fabric 的根 CA 需求的自定义 CA,因此它本身无法为浏览器中的常规或自动使用提供 SSL 证书。但是,由于 一些 ?CA 必须用于管理身份(即使在测试环境中),因此可以使用 Fabric CA 来提供和管理证书。使用公共或商业的根或中间 CA 来提供识别也是可以的,并且完全合适。
证书撤销列表(Certificate Revocation List,CRL)很容易理解,它是 CA 知道由于某些原因而被撤销的证书的引用列表。如果你回想商店场景,CRL 就像被盗信用卡列表一样。
当第三方想要验证另一方的身份时,它首先检查颁发 CA 的 CRL 以确保证书尚未被撤销。验证者不是必须要检查 CRL,但如果不检查,则他们冒着接受无效身份的风险。
本文使用 fabric 源码中自带的 e2e_cli 例子创建一个包含1个orderer 节点,2个org 组织,以及每个org组织包含2个 peer 节点。
本文测试才用 fabric 的版本为1.1.1。
步骤3中,在 cli 容器中初始化的链码mycc,在加入组织Org3以后,可以同步查询链码mycc的数据,但是通过Org3提交的交易,无法被其他节点认证,由于在链码mycc初始化的时候,指定org1与org2的成员背书,并不包含org3的成员。
下面,重新安装链码mycc1,并在初始化链码的时候,指定背书策略Org1 、Org2以及 Org3的成员背书,经过测试验证,三个组织的任意节点都可以提交交易事务,并被共识确认。
1.打开hyperledgerfabric软件。2.点击二维码生成。3.将二维码内的内容导入。4.点击生成即可。
Build Your First network提供了一个 fabric 的示例网络。该示例网络中由两个组织构成,每个组织维护两个 peer 节点,演示了基于链码查询2个账户余额与转账操作。
first-network 中有一个启动脚本 byfn.sh,利用构建的 Docker 镜像快速启动网络。该脚本会启动一个 orderer 节点和四个归属两个不同组织的 peer 节点,还将启动一个cli运行脚本,它将 peer 节点加入通道(Channel)、部署和实例化链码,并根据已部署的链码驱动交易执行,以下是byfn.sh的帮助文档。
执 up -o etcdraft启动脚本,指定使用raft共识算法
通过cryptogen工具生成组织成员关系和身份证书、密钥等文件。调用configtxgen工具生成节点与通道配置文件,包括Orderer节点上系统通道的创世区块文件genesis.block,新建应用通道的配置交易文件channel.tx、组织锚节点配置更新交易文件Org1MSPanchors.tx与Org2MSPanchors.tx等。
用户执行network_setup.sh脚本启动Fabric网络,该脚本调用networkUp函数,该命令会检查网络实体的证书是否生成,如果没有则首先生成相关证书目录。
generateCerts主要执行了cryptogen generate –config=https://yrb114.com/crypto-config.yaml
根据crypto-config.yaml生成网络成员组织结构和对应的身份证书、签名私钥等文件,并保存到默认的crypto-config目录,身份证书等文件在对应的目录msp/ 中,TLS证书与密钥文件保存到tls/ 中。
crypto-config.yaml主要包含的fabric排序节点证书配置以及fabric组织证书配置。
Template 模板定义节点的配置模式
Specs 另外一种配置模式
Count 节点总数
Hostname 全限定域名 命名格式
Domain 域名
Users 添加到管理员的用户帐户数
采用Specs模式配置了5个排序节点
采用Template模式配置了两个组织,每个组织2套公私钥和证书,包含普通User数量为1
ordererOrganizations目录 :包含Orderer组织类型的身份证书.pem文件、签名私钥文件 _sk文件、TLS证书(证书.crt文件和密钥.key文件)
peerOrganizations目录 :包含Peer组织类型的身份证书.pem文件、签名私钥文件 _sk文件、TLS证书(证书.crt文件和密钥.key文件)
这些文件通过docker-compose工具,基于docker-compose-cil.yaml、docker-compose-base.yaml等配置文件,将目录作为挂载卷到容器的指定目录。
调用replacePrivateKey基于docker-compose-e2e-template.yaml文件创建新的配置文件docker-compose-e2e.yaml。进入Org1组织的CA目录,获取私钥文件名作为PRIV_KEY,替换docker-compose-e2e.yaml文件的CA1_PRIVATE_KEY。同理替换CA2_PRIVATE_KEY。
执行generateChannelArtifacts函数,使用configtxgen工具基于configtx.yaml创建节点与通道配置文件,包括Orderer通道的创世区块,应用通道配置配置交易文件channel.tx,锚节点配置更新交易文件Org1MSPanchors.tx和Org2MSPanchors.tx
Orderer系统通道的创世区块
执行configtxgen命令,创建Orderer创世区块文件genesis.block
新建应用通道的配置交易文件
执行configtxgen命令,创建应用通道的配置交易文件channel.tx,后续执行peer channel create读取文件。
锚节点配置更新交易文件
执行configtxgen命令,创建锚节点配置更新交易文件Org1MSPanchors.tx和Org2MSPanchors.tx,后续执行peer channel update进行更新。
返回到network_setup.sh脚本,判断是否启用了CouchDB标志位(默认关闭),使用docker-Compose工具执行docker-Compose-cil.yaml文件,启动Fabric网络。
继续分析network_setup.sh脚本,默认COMPOSE_FILES是docker-compose-cli.yaml文件,当设置了kafka共识或者raft共识,则使用对应的yaml文件。
Orderer节点继承了docker-compose-base.yaml中的orderer.example.com配置属性,Orderer节点容器启动时执行如下命令
docker-compose-cil.yaml文件
继续追踪base/docker-compose-base.yaml,找到orderer.example.com服务,挂载目录和暴露7050端口。
orderer的配置还是引入peer-base.yaml中的orderer-base服务
4个Peer节点继承了docker-compose-base.yaml中对应容器名称的配置属性,Peer节点容器启动时执行如下命令
docker-compose-cil.yaml文件中Peer节点配置。
docker-compose-base.yaml文件中Peer节点的配置。
引入peer-base.yaml中的peer-base服务
docker-compose-cil.yaml文件中CLI客户端配置。启动完 orderer 节点、peer 节点和 CLI 容器之后,实际是调用 script.sh 脚本,该脚本是在 CLI 容器中执行,CLI 容器其实就是用户客户端,只不过是命令行客户端,运行在容器中。默认情况下CLI 的身份是 admin.org1,连接 peer0.org1 节点,执行 script.sh 脚本
script.sh脚本顺序执行默认的测试流程,包括创建新的应用通道、添加节点、更新锚节点、安装链码、实例化链码、调用链码、查询链码等操作。
Fabric要求创建、加入与更新通道的权限必须具有通道组织的管理员身份。调用setGlobals设置全局环境变量,CLI客户端能够灵活切换指定容器的管理员角色,可以直接连接并操作指定的Peer节点,先切换到Peer0/Org1节点。
接着采用Org1管理员身份执行peer指令,将通道配置文件Channel.tx发送给Orderer节点,创建mychananel的应用通道。如果创建成功,则返回一个创世区块block,它会存储在 peer 节点的文件系统中,包含 channel.tx 指定的通道配置信息。
遍历所有节点,调用setGlobals切换指定节点,执行peer指令,将Org1组织包含的Peer0/Org1和Peer1/Org1节点加入mychananel应用通道,将创世区块mychananel.block设置成命令行参数。Org2组织类似。
joinChannelWithRetry 函数中的 setGlobals 是设置 CLI 容器的环境变量的函数。例如:setGlobals 1 2 设置 CLI 的身份为 admin.org2,连接 peer1.org2 节点。
使用 peer channel join 命令让节点加入通道,$CHANNEL_NAME.block 就是前面创建通道成功时返回的区块,该区块在上面 org1.peer0 创建通道时保持在 CLI 容器内,所以能直接使用。节点成功加入通道后会创建 CHANNEL_NAME.block 开头的链。
一个组织只能有一个锚节点,节点加入通道后才能进行更新,连续两次调用updateAnchorPeers,更新两个组织的锚节点配置,用Org1管理身份更新Peer0/Org1的配置,并指定锚节点配置更新文件Org1MSPanchors.tx,Org2组织同理。
连续两次调用installChaincode分别在Peer0/Org1和Peer2/Org2中安装chaincode_example02链码,并将链码命名为“mycc”且版本1.0,如果链码安装成功,在指定安装目录/var/hyperledger/production/chaincodes下存在name.version的链码文件。
实例化链码必须在安装过链码的节点上进行,同一个通道内所有节点上相同的实例化数据在通道账本中是共享的,用户只需要在任意一个Peer节点上成功执行一次实例化链码操作,并通过排序打包后将实例化数据广播到其他节点上,通道内所有合法节点都可以访问该链码的实例化数据。
实例化将链码添加到通道上,启动目标节点的容器,初始化与链码相关的初始值,这里的初始值为 [“a”,”100″,”b”,”200″]。”实例化“ 过程会产生链码的容器,例如: dev-peer0-org1.example.com-mycc-1.0 。实例化过程需要指定背书策略,通过 -P 参数设置,这里的策略定义为 AND (‘Org1MSP.peer’,’Org2MSP.peer’) ,表示任何交易必须要有 org1 和 org2 节点的共同背书。
Peer0/Org1上调用链码查询函数chaincodeQuery和链码调用函数chaincodeQuery。查看A的余额,并从账户A中向账户B中转账10元。
Peer3/Org2上安装链码,执行查询A的余额,检查余额是否为90元,如果是说明转账成功。
感谢您阅读本篇对hyperledgerfabric的详细介绍,如果你对hyperledgerfabric官网还不够了解,想进一步学习关于hyperledgerfabric的知识,可以在本站首页搜索你想知道的!
推荐阅读
- 上一篇:乌克兰募捐虚拟货币视频
- 下一篇:游戏停止运行虚拟货币
-
公安比特币病毒(公安比特币病毒最新消息)
1970-01-01
Template 模板定义节点的配置模式 Specs 另外一种配置模式 Count 节点总数 Host...
-
比特币交易赌博,比特币交易算赌博吗
1970-01-01
Template 模板定义节点的配置模式 Specs 另外一种配置模式 Count 节点总数 Host...
-
达程国际期货a50手续费,达程国际期货a50手续费多少
1970-01-01
Template 模板定义节点的配置模式 Specs 另外一种配置模式 Count 节点总数 Host...
-
格林大华期货电话 格林大华期货有限公司
1970-01-01
Template 模板定义节点的配置模式 Specs 另外一种配置模式 Count 节点总数 Host...
-
比特币每天开采量?比特币每天开采量多少
1970-01-01
Template 模板定义节点的配置模式 Specs 另外一种配置模式 Count 节点总数 Host...
-
菜粕期货供过于求 菜粕期货价格下跌
1970-01-01
Template 模板定义节点的配置模式 Specs 另外一种配置模式 Count 节点总数 Host...