最近,我在做一个区块链可追溯性项目,我有时间了解流行的区块链框架Hyperledger结构。相对于旨在构建公链的比特币和以太坊,Hyperledger Fabric更多的是实现私有链和联盟链,更适合企业和联盟构建区块链的BAAS平台即服务。
目前各大云商(BAT、华为等。)推出了基于结构的区块链即服务平台(BAAS)。在JD.COM,蚂蚁区块链推出了一个基于面料的追溯平台。项目之初,我在学习技术的同时,也参考了大量的云平台建设方案和使用成本。总体感觉是建设Fabric区块链网络需要巨大的硬件投入和资金支持。对于小公司和项目的勘探开发阶段,选择云BAAS平台会是一笔不小的开支。今天有空,就把我在开发阶段尝试过的几种布艺区块链网的搭建方法做个总结,希望能帮到你。
00-1010第一个方案在Fabric-samples官方(https://github.com/hyperledger/Fabric-samples . git)属于first-network。这个演示把各种操作集成在几个脚本文件里,基本上能用就能用。是面料学习和地方发展最直接的工具。
具体操作步骤请参考以下内容:
修改configtx.yaml,配置组织、背书方案、排序方案等。修改crypto-config.yaml,配置对等机和其他帐户相关信息。运行byfn.sh generate生成证书和配置文件。运行byfn.sh创建一个区块链结构网络。需要注意的事项:
因为是一般的演示,所以默认渠道是mychannel,默认域名是example.com,默认组织是Org1.*.如果需要修改,需要做大量的更换工作。智能合同的目录(链码)也使用fabric-samples中的目录结构。如果在创建网络时需要安装智能合约,请不要忘记修改docker-compose-cli.yaml中cli节点下volumns中的映射目录,有时候在初始化智能合约时会出现_byfn网络找不到的错误,这是因为peer-base . YAML $ { COMPOSE _ PROJECT _ NAME }中配置的core _ VM _ docker _ host config _ network mode=$ { COMPOSE _ PROJECT _ NAME }环境变量的问题有时候无法读取,可以考虑硬编码在最近发布的版本中,自动生成网络连接的脚本(connection-*。yaml或连接-*。json),它可以生成用于初始化NetworkConfig的配置文件。00-1010秒方案,Altoros提供的多机(服务器)部署方案,即ansi ble Fabric Starter(https://github.com/alto ROS/ansi ble-Fabric-Starter . git)。该方案使用轻量级运维工具Ansible,实现在本地运行,然后在各个服务器上自动安装依赖和Fabric网络的功能。
具体操作步骤如下:
修改文件host_xxx.yml,xxx是不同的后缀,用哪个看你自己的事。在这里,您可以定义域名、每个节点要部署的服务器的连接信息等等。(fabric网络的所有节点信息都可以在这个文件中定义)本地运行ansi ble-playbook install-dependencies . yml-ihosts _ XXX . yml,在每台服务器上安装需要的依赖项,比如Fabric的二进制文件,docker等。运行本地ansi ble-playbook config-network . yml-ihosts _ XXX . yml在每台服务器上安装结构网络。需要注意的事项:
的所有信息都配置在host_xxx.yml文件中,包括服务器的连接信息。Ansible会使用SSH工具连接服务器,最好配置一个密钥文件进行连接。区块链的通用配置文件和证书将被生成到本地工件目录中,该目录可以被自己识别和使用。通过修改group_vars目录下的all.yml文件,可以修改网络的一些基本信息,比如fabric的版本,网络的名称等。在每个服务器的根文件夹中,将生成结构网络的配置文件和证书,这些文件和证书可以本地下载以加载到项目中。00-1010第三种方案使用Kubernetes容器服务,将光纤网络安装到k8s容器中。按照Cello Ansible Agent(https://github.com/hyperledger/Cello . git)的src/agent/Ansible目录下的实现方案,通过ansi ble自动化运维工具实现。
具体实施方案如下:
将K8s的配置文件下载到vars目录下,保存为kubeconfig。创建结构网络的配置文件,并将其保存为network.yml。有关详细信息,请参阅参考文档。修改resource.yml文件,配置每个节点的资源使用配置(内存、CPU等资源分配)。运行ansi ble-playbook-ihosts-e \' mode=apply env=network \' setup fabric . yml创建结构网络。需要注意的事项:
运行ansible脚本时,请注意env变量是结构网络配置文件的名称。Resource.yml是k8s容器服务器的资源分配。如果分配过大,有些节点无法创建,需要特别注意。另外,服务器的配置要求一般是8核16G或者更高。运行ansi ble-playbook-ihosts-e \' mode=destrover NV=network \' setup fabric . yml删除创建的结构网络。在配置结构网络时,其中之一是storageclass,它是服务器支持的存储类型的名称。比如腾讯云是cbs,你也可以自己创建命名,一般是按需收费。这些是我在构建区块链光纤网络时使用的一些方法和总结。有不足之处希望大家指正。