推荐几个开源项目,教你快速搭建Hyperledger Fabric区块链网络
最近,在做一个区块链溯源的项目,有空学习了一下时下流行的区块链框架Hyperledger Fabric。和旨在打造公有链为主的比特币和以太坊相比,Hyperledger Fabric更多的是实现私有链和联盟链,更适合企业和联盟去打造区块链即服务的BAAS平台。
目前,各大云商(BAT,华为等)都推出了基于Fabric的区块链即服务平台(BAAS)。京东,蚂蚁区块链更是推出了基于Fabric的溯源平台。项目之初,在学习技术的同时,我也参考了大量的云平台的建设方案和使用费用,总体感觉就是,Fabric区块链网络的搭建需要巨大的硬件投入和资金支持,对于小公司和项目探索开发阶段来说,选择云BAAS平台将是笔不小的开销。今天有空,特意将我在开发阶段尝试过的几种Fabric区块链网络的搭建方法做个总结,希望可以帮到大家。
Build Your First Network
第一种方案,当属官方fabric-samples(https://github.com/hyperledger/fabric-samples.git)里的first-network了,这个Demo里将各种操作都集合在了几个脚本文件中,基本上可以做到拿来即用,是Fabric学习和本地开发最直接的工具。
具体的操作步骤,请参考如下内容:
修改configtx.yaml,配置组织(Organization),背书方案及排序方案等。修改crypto-config.yaml,配置节点(Peer)等账号相关信息。运行byfn.sh generate,生成证书和配置文件。运行byfn.sh up,创建Fabric区块链网络。
需要注意的地方:
由于是通用的demo,通道默认为mychannel,域名默认为example.com,组织默认为Org1..*,如需修改,需要做大量的替换工作。智能合约(chaincode)的目录也用的是fabric-samples中的目录结构,如果需要在创建网络时安装智能合约,请勿忘记在docker-compose-cli.yaml中的cli节点下的volumns中修改映射目录。有时候初始化智能合约时,会出现找不到_byfn网路的错误,是因为在peer-base.yaml中配置的CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_byfn环境变量的问题,${COMPOSE_PROJECT_NAME}有时候会读不到,可以考虑硬编码,然后解决。在最近发布的版本中,加入了自动生成网络连接(connection-*.yaml或connection-*.json)的脚本,可以生成用来初始化NetworkConfig的配置文件。多服务器部署方案
第二种方案,Altoros提供的多机(服务器)部署方案,即 Ansible Fabric Starter(https://github.com/Altoros/Ansible-Fabric-Starter.git)。此方案使用了Ansible这个轻量的运维工具,实现了基于本地运行,然后在各个服务器上实现自动安装依赖和Fabric网络的功能。
具体的操作步骤如下:
修改host_xxx.yml文件,xxx为不同的后缀名,具体用哪个根据你自己的业务决定。在这里可以定义域名、节点结每个节点所要部署的服务器的连接信息等。(所有的Fabric网络的节点信息都可以在这个文件中定义)本地运行ansible-playbook install-dependencies.yml -i hosts_xxx.yml,在各个服务器上安装所需要的依赖,如fabric的二进制文件,docker等。本地运行ansible-playbook config-network.yml -i hosts_xxx.yml,在各个服务器上安装Fabric网络。
需要注意的地方:
所有的信息都在host_xxx.yml文件中配置,包括服务器的连接信息。Ansible会使用SSH工具来连接服务器,最好是配置密钥文件来连接。区块链的通用配置文件及证书等,会生成到本地artifacts目录下,可以自行甄别使用。可以通过修改group_vars目录下的all.yml文件,来修改一些网络的基本信息,如fabric的版本,网络的名称等。在各个服务器中的root文件夹中,会生成Fabric网络的配置文件及证书,可以下载到本地以便加载到项目中使用。k8s多节点部署方案
第三种方案,使用Kubernetes容器服务,将Fabric网络安装到k8s容器中。参照Cello Ansible agent(https://github.com/hyperledger/cello.git)中src/agent/ansible目录下的实现方案,通过Ansible自动运维工具来实现。
具体实现方案如下:
将K8s的配置文件,下载到vars目录下,保存为kubeconfig。创建Fabric网络的配置文件,保存为network.yml。具体可参考已有参考的文件。修改resource.yml文件,配置各个节点的资源使用配置(内存,CPU等资源分配)。运行ansible-playbook -i hosts -e "mode=apply env=network" setupfabric.yml,创建Fabric网络。
需要注意的地方:
运行ansible脚本时注意,env变量即Fabric网络配置文件的名称。resource.yml是对k8s容器服务器的资源分配,如果分配过大,会导致某些节点不能创建,所以要特别注意。另外,服务器的配置要求一般为8核16G或更高。运行ansible-playbook -i hosts -e "mode=destroy env=network" setupfabric.yml,即可删除已创建的fabric网络。在配置Fabric网络时,其中有一项为storageclass,此项为服务器所支持的存储类型的名称,如腾讯云为cbs,你也可以自己创建及命名,一般是按需收费。
以上这些,就是我在搭建Fabric区块链网络时,所用过的一些方法及总结,有不到之处,希望大家能够指正。
你可能感兴趣的文章
-
迁移到新区块链的令牌是什么,它们为什么会发生?
-
迁移到新区块链的令牌是什么,它们为什么会发生?
什么是令牌交换,它们为什么会发生?令牌交换(也称为令牌迁移)是将密码令牌从一个区块链转移到另一个区块链。这意味着在交换中,不是用一个令牌交换另一个令牌,而是用新...
2024-10-16
以太坊合并来袭转向权益证明后耗电量将大幅
-
以太坊合并来袭转向权益证明后耗电量将大幅
世界第二大加密货币以太币(ETH)背后的区块链网络以太坊,预计在9月中旬“合并”。此举将带来什么影响?当地时间8月12日,以太坊联合创始人Vitalik But...
2024-10-15
如何设计区块链应用程序架构?
-
如何设计区块链应用程序架构?
本文提出了一种分层的区块链参考架构,该架构包括应用层、智能合约层、集成层、分布式账本层以及安全层。该架构提供了区块链应用程序所必需的组件和服务,并适用于公链或私...
2024-10-15
区块链钱包对接流程
-
区块链钱包对接流程
对接区块链钱包涉及多个步骤,包括选择合适的区块链网络、集成钱包SDK、实现钱包功能以及确保安全性。以下是详细的步骤和考虑因素。北京木奇移动技术有限公司,专业的软...
2024-10-15
区块链进化简史为什么开源是其核心所在
-
区块链进化简史为什么开源是其核心所在
从比特币到下一代区块链。当开源项目开发下一个新版本时,用后缀 “-ng” 表示 “下一代”的情况并不鲜见。幸运的是,到目前为止,快速演进的区块链成功地避开了这个...
2024-10-12
区块链如何提升每秒交易处理量?
-
区块链如何提升每秒交易处理量?
自诞生以来,区块链的落地应用经历了一段渐进的发展过程。从第一个落地应用比特币,到如今区块链广泛与产业开始结合,区块链技术始终在发展成熟之中,不断地克服技术难关。...
2024-10-12
区块链应用|美国政府已经在大规模开展区块链的探索及应用
-
区块链应用|美国政府已经在大规模开展区块链的探索及应用
近期正在进行的达沃斯世界经济论坛上,区块链及加密货币成为绕不开的话题。对这两种休戚相关的事物,政商界出现了两种极端态度。一部分学者专家对区块链技术相当乐观,另一...
2024-10-12
区块链运用案例:慈善
-
区块链运用案例:慈善
区块链在慈善领域的运用:“数字慈善”慈善事业因缺少曝光量和透明度,责任问题不明朗化,以及能接受捐助渠道的有限化,往往很难成功。数字慈善(利用区块链技术促进慈善捐...
2024-10-10
智能手机陷入区块链,意味着什么?
-
智能手机陷入区块链,意味着什么?
摘要: 亚马逊推出量子分类帐和管理区块链;HTC最新的Exodus智能手机用比特币和以太币购买;Solarin Android智能手机的制造商Sirin Lab...
2024-10-08
区块链体系结构有哪些?区块链特点是什么?
-
区块链体系结构有哪些?区块链特点是什么?
区块链技术自诞生以来,凭借其独特的分布式、去中心化、不可篡改等特性,迅速在金融科技、供应链管理、数字版权保护等多个领域展现出巨大的应用潜力。本文旨在深入探讨区块...
2024-10-08