区块链网络搭建(二)

news/2024/12/28 22:03:08/

Orderer模块启动之前需要生成一个创世块文件和Orderer模块所需的配置文件。创世块是Fabric的第一个区块,主要存储相关的配置信息。

configtx.yaml案例文件:

1.Organizations部分

组织配置,用来定义不同的组织机构实体,以便后续配置中引用。例如以下配置文件中,定义了三个机构:OrdererOrg、Org1、Org2

Organizations:- &OrdererOrg# 组织名称Name: OrdererOrg# 组织ID,ID是引用组织的关键ID: OrdererMSP# 组织的MSP证书路径MSPDir: ../organizations/ordererOrganizations/hmw.com/msp# 定义本层级的组织策略,其权威路径为 /Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('OrdererMSP.member')"Writers:Type: SignatureRule: "OR('OrdererMSP.member')"Admins:Type: SignatureRule: "OR('OrdererMSP.admin')"OrdererEndpoints:- orderer0.hmw.com:7050- orderer1.hmw.com:7052- orderer2.hmw.com:7054- &Org1Name: Org1MSPID: Org1MSPMSPDir: ../organizations/peerOrganizations/org1.hmw.com/mspPolicies:Readers:Type: SignatureRule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"Writers:Type: SignatureRule: "OR('Org1MSP.admin', 'Org1MSP.client')"Admins:Type: SignatureRule: "OR('Org1MSP.admin')"Endorsement:Type: SignatureRule: "OR('Org1MSP.peer')"- &Org2Name: Org2MSPID: Org2MSPMSPDir: ../organizations/peerOrganizations/org2.hmw.com/mspPolicies:Readers:Type: SignatureRule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"Writers:Type: SignatureRule: "OR('Org2MSP.admin', 'Org2MSP.client')"Admins:Type: SignatureRule: "OR('Org2MSP.admin')"Endorsement:Type: SignatureRule: "OR('Org2MSP.peer')"

2 Capabilities 通道能力配置部分 

Capabilities段定义了fabric程序要加入网络所必须支持的特性。

例如,如果添加了一个新的MSP类型,那么更新的程序可能会根据该类型识别并验证签名,但是老版本的程序就没有办法验证这些交易。这可能导致不同版本的fabric程序中维护的世界状态不一致。

Capabilities:# 通道capabilities适用于orderers和peers,并且两者都必须支持。# 将该配置项设置为ture表明要求节点具备该能力。Channel: &ChannelCapabilities# V2_0 能力确保orderers和peers按照 v2.0 通道capabilities行事。 来自先前版本的 # orderers和peers的行为方式不兼容,因此无法以 v2.0 的capabilities参与通道。在启用 # V2.0 通道capabilities之前,请确保通道上的所有订购者和对等方都处于 v2.0.0 或更高版 # 本。V2_0: true# orderer capabilities 仅适用于orderers,并且可以安全地与先前版本的peers一起使用。 # 将该配置项设置为ture表明要求节点具备该能力。Orderer: &OrdererCapabilities# V2_0 orderer capability 确保orderer根据 v2.0 orderer capability 行事。 来自先前 # 版本的orderer的行为方式不兼容,因此无法以 v2.0 的orderer capability 参与通道。在启 # 用 V2.0 orderer能力之前,请确保通道上的所有orderer都处于 v2.0.0 或更高版本。 V2_0: true# 应用程序功能仅适用于peer网络,并且可以安全地与先前发布的orderer一起使用。# 将该配置项设置为ture表明要求节点具备该能力Application: &ApplicationCapabilities# V2_0 应用能力确保peer的行为符合 v2.0 应用能力。 来自先前版本的peer的行为方式不兼 # 容,因此无法以 v2.0 应用程序功能参与通道。在启用 V2.0 应用程序功能之前,请确保通道 # 上的所有peer均处于 v2.0.0 或更高版本。V2_0: true

3 Application 应用通道配置部分

Application配置段用来定义要写入创世区块或配置交易的应用参数

Application: &ApplicationDefaults# 组织是定义为网络应用程序端参与者的组织列表Organizations:Policies:Readers:Type: ImplicitMetaRule: "ANY Readers"Writers:Type: ImplicitMetaRule: "ANY Writers"Admins:Type: ImplicitMetaRule: "MAJORITY Admins"LifecycleEndorsement:Type: ImplicitMetaRule: "MAJORITY Endorsement"Endorsement:Type: ImplicitMetaRule: "MAJORITY Endorsement"# Capabilities配置描述应用层级的能力需求,这里直接引用# 前面Capabilities配置段中的ApplicationCapabilities配置项Capabilities:<<: *ApplicationCapabilities

4 Orderer 排序节点配置部分

Orderer配置段用来定义要编码写入创世区块或通道交易的排序节点参数

Orderer: &OrdererDefaults# Orderer 类型: 要启动的Orderer实现类型# 定义order共识机制OrdererType: etcdraft# 地址曾经是Client和peer可以连接到的orderer地址列表。 但是,这不允许client关联orderer地 # 址和orderer组织,这对于诸如 TLS 验证之类的事情很有用。 现在,指定订购者地址的首选方法是 # 在您的组织定义中包含 OrdererEndpoints 项Addresses:- orderer0.hmw.com:7050- orderer1.hmw.com:7052- orderer2.hmw.com:7054# 定义了EtcdRaft排序类型被选择时的配置EtcdRaft:Consenters:- Host: orderer0.hmw.comPort: 7050ClientTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer0.hmw.com/tls/server.crtServerTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer0.hmw.com/tls/server.crt- Host: orderer1.hmw.comPort: 7052ClientTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer1.hmw.com/tls/server.crtServerTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer1.hmw.com/tls/server.crt- Host: orderer2.hmw.comPort: 7054ClientTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer2.hmw.com/tls/server.crtServerTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer2.hmw.com/tls/server.crt# 区块打包的最大超时时间 (到了该时间就打包区块)BatchTimeout: 2s# 区块打包的最大包含交易数(orderer端切分区块的参数)BatchSize:# 一个区块里最大的交易数MaxMessageCount: 10# 一个区块的最大字节数,任何时候都不能超过AbsoluteMaxBytes: 99 MB# 一个区块的建议字节数,如果一个交易消息的大小超过了这个值, 就会被放入另外一个更大的区 # 块中PreferredMaxBytes: 512 KB# 参与维护Orderer的组织,默认为空Organizations:Policies:Readers:Type: ImplicitMetaRule: "ANY Readers"Writers:Type: ImplicitMetaRule: "ANY Writers"Admins:Type: ImplicitMetaRule: "MAJORITY Admins"# BlockValidation 指定了必须在来自 orderer 的块中包含哪些签名,以便对等方对其进行验# # 证。BlockValidation:Type: ImplicitMetaRule: "ANY Writers"

5 Channel 通道配置部分 

Channel配置段用来定义要写入创世区块或配置交易的通道参数

Channel: &ChannelDefaults# 定义本层级的通道访问策略,推荐路径为 /Channel/<PolicyName> Policies:# 谁可能调用'Deliver' APIReaders:Type: ImplicitMetaRule: "ANY Readers"# Writes策略定义了调用Broadcast API提交交易的许可规则Writers:Type: ImplicitMetaRule: "ANY Writers"# Admin策略定义了修改本层级配置的许可规则Admins:Type: ImplicitMetaRule: "MAJORITY Admins"# 前面Capabilities配置段中的ChannelCapabilities配置项,这里直接引用(Capabilities配置描通道 # 层级的能力需求)Capabilities:<<: *ChannelCapabilities

6 Profiles 配置入口

Profiles配置段用来定义用于configtxgen工具的配置入口。包含联盟(consortium)的配置入口可以用来生成排序节点的创世区块。

Profiles:# # TwoOrgsOrdererGenesis用来生成orderer启动时所需的block,用于生成创世区块,名字可以任意TwoOrgsApplicationGenesis:<<: *ChannelDefaults# 指定Orderer系统通道自身的配置信息Orderer:<<: *OrdererDefaultsOrganizations:- *OrdererOrg  # 引用 Orderer 部分的配置 &OrdererDefaultsCapabilities: *OrdererCapabilities  #引用&OrdererCapabilitiesApplication:<<: *ApplicationDefaultsOrganizations:- *Org1- *Org2Capabilities: *ApplicationCapabilities

生成创世区块的命令

# 创建创世区块:
configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./orderer.genesis.block

configtxgen命令执行完成后会在根目录下生成创世块文件orderer.gensis.block


http://www.ppmy.cn/news/60314.html

相关文章

java学习之枚举二

目录 一、enum关键字实现枚举 二、注意事项 一、对Season2进行反编译&#xff08;javap&#xff09; ​编辑 三、练习题 第一题 第二题 一、enum关键字实现枚举 package enum_;public class Enumeration03 {public static void main(String[] args) {System.out.println…

M1 Mac配置JAVA环境

1、下载JDK 目前JDK有Oracle的JDK还有zulu的Open JDK可供选择&#xff0c;因为需要JAVA1.8所以下文以zulu的JDK为例。 Zulu官网&#xff1a;https://www.azul.com/downloads/?packagejdk 选择所需的JDK版本&#xff08;注意选择ARM架构&#xff09;> 下载.dmg包 > 安装 …

【地铁上的设计模式】--结构型模式:装饰器模式

什么是装饰器模式 装饰器模式是一种结构型设计模式&#xff0c;它允许你通过将对象放入包含行为的特殊封装对象中来为原对象添加新的行为&#xff0c;同时又不改变原有对象的结构。装饰器模式中&#xff0c;包装器对象和被包装对象实现了相同的接口&#xff0c;因此客户端无需…

关于数据倾斜

1、数据倾斜表现 1.1 hadoop中的数据倾斜表现 有一个多几个Reduce卡住&#xff0c;卡在99.99%&#xff0c;一直不能结束。各种container报错OOM异常的Reducer读写的数据量极大&#xff0c;至少远远超过其它正常的Reducer伴随着数据倾斜&#xff0c;会出现任务被kill等各种诡异…

视觉震撼的数据可视化示例

众所周知&#xff0c;数据可以非常强大——当你真正理解它告诉你什么时。 数据和信息可视化(数据可视化或信息可视化)是对大量复杂的定量、定性数据、信息进行设计和创建易于沟通、易于理解的图形或视觉表示的实践&#xff0c;在静态、动态或交互式视觉项目的帮助下&#xff0…

UE动画状态机的事件触发顺序测试

正常A状态过渡到B状态的事件顺序&#xff1a; 整个流程为&#xff1a; 调用B状态的On Become Relevant事件调用B状态的On Update事件调用A状态的Left State Event事件调用B状态的Entered State Event事件调用B状态的Start Transition Event事件调用B状态的End Transition Even…

git代码管理操作全流程之一: 提交、更新、解决冲突、合并等操作

使用 Git 提交代码步骤 Step 1&#xff0c;检查自己的代码改动。执行 git commit -am"" 提交到本地仓库。注意写好准确的描述信息。 Step 2&#xff0c;执行 git pull --rebase&#xff0c;将当前分支的代码更新到远程仓库的最新版本。如果有冲突解决冲突。解决git…

几种常见时间复杂度实例分析

多项式量级 常量阶 O(1) 对数阶 O(logn) 线性阶 O(n) 线性对数阶 O(nlogn) 平方阶O(n2 ),立方阶O(n3 )...k次方阶O(nk) 非多项式量级&#xff08;NP&#xff08;Non-Deterministic Polynomial&#xff0c;非确定多项式&#xff09;问题&#xff09; 指数阶O(2n) 阶乘阶…