在 Hyperledger Fabric组织的动态添加和删除 中,我们已经完成了在运行着的网络中动态添加和删除组织。本文将在其基础上,详细介绍了如何在 soft 组织上添加新的 peer2 节点,并在简要概述了删除节点的方法,本实验必要的准备工作和 DNS 配置请参考准备工作
在 Fabric定制联盟链网络工程实践 中,我们虚拟了一个工作室的联盟链网络需求,并根据此需求分析了整个网络的架构且已经完成了一个简单 fabric 网络的搭建。本文将在其基础上,在 mychannel 通道上添加新的 hard 组织,并在之后删除 soft 组织,本实验必要的准备工作和 DNS 配置请参考 准备工作。
总体来看,网络上成体系的可用的 Fabric 教程极少——不是直接在 Fabric 官网复制内容大谈基础理论就是在描述一个几乎无法复现的项目实践,以至于学习 Fabric 的效率极低,印象最深刻的就是我曾经花费几天时间尝试按照官方教程 CA Deployment steps 搭建自己的 CA 服务,却始终无法成功也找不到原因。因此,为了提高生产效率,本系列虚拟了一个工作室联盟链需求并将逐步实现,致力于提供一个易理解、可复现的工程项目,其中工程部署配置的各个环节都清晰可见,并且可以通过流程脚本能够快速复现在任何一台主机上。
在基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例中,我们已经完成了Fabric 2.4的环境搭建及fabric-samples/test-network官方案例的运行。毫无疑问test-network是一个优秀的入门项目,让我们仅仅通过几行命令就能搭建起常用的Fabric联盟链网络,但是其过度的封装反而不利于我们了解掌握其中各个操作的真实过程。为了进一步掌握Fabric,本文根据test-network中的几个Bash脚本源码,从启动流程、创建通道、部署链码等多个入口函数着手详细分析了脚本执行过程,对未来定制自己的Fabric网络提供参考。本文分析源码主要包含启动默认网络、启动CA网络、创建通道、部署链码四个方面,每节分为官方调用和过程详解:官方调用是使用官方Bash脚本实现对应功能、过程详解是该脚本的实际实现流程,根据过程详解中的代码能够搭建出完全可用的网络。
在最近某次更新博客时,突然觉得每次写完文章再登陆服务器将代码pull到服务器本地部署的过程好傻(尽管总共也花不了1分钟时间),但作为一个表面的IT工作者怎么能忍受每次都进行这种重复工作呢,就想着有没有一种方法能够像之前Netlify那样push完就自动更新部署的方式。回忆起之前知乎划水时瞥见的CI/CD工具貌似能满足要求,于是在对比了几十种相关工具后,最终Drone以其开源、简易赢得了我的青睐,然后花了大概1-2天的时间入门、整理完成了本博客的自动化部署。
字符串的匹配在任何系统中都是最流行的功能,许多算法可以完成这个任务,KMP是最常用的算法之一。它的名字跟功能并没有任何关联,仅仅是以三个发明者姓名首字母的缩写(Knuth-Morris-Pratt),起头的那个K就是著名科学家Donald Knuth。KMP是我刷算法遇到的第一块难啃的骨头,这完全不是能不能想到的问题,而是完全看不懂,学到最后不得不佩服发明者的脑洞之大。网络上已有很多能够详细分析该算法的文章,但我一直看的还是云里雾里,最终决定花些时间写一个更加通俗易懂的版本(至少对我是如此),其中些许可能与众不同的地方大多已做说明,希望能对大家有所启发。
标签工具 labelimg:目标进行大致的标定,适用于图像检测任务的数据集制作 labelme:用于较为细致的轮廓标定,适用于图像分割任务的数据
在基于truffle框架实现以太坊公开拍卖智能合约中我们已经实现了以太坊智能合约的编写及部署,但其工作方式注定其只能应用于有限的业务场景中。相比之下,基于超级账本的Fabric具有高可扩展性和高可定制性,能够应用在更为复杂的商业场景中,但Fabric技术涉及很多新的概念,源代码跟新速度快且各版本间兼容性差,对初学者很不友好。为了使能够快速掌握Fabric,本文基于其目前最新的2.4版本搭建了一套区块链运行环境,并在此之上部署了官方示例chaincode并对其进行交互调试,最终整个环境及示例代码能够正常运行且得出预期结果。
环境依赖 以太坊的智能合约主要是 Solidity 实现,但是从零开始编写一个智能合约无疑是费时的(虽然本示例并不复杂),所以选择使用 Truffle 框架来帮助我们开发,所以
为了进一步了解以太坊区块链网络的工作方式和运行原理,笔者通过官方软件Geth搭建了私有以太坊网络fantasynetwork:首先通过VMware Workstation创建基础Ubuntu实验平台,再安装Golang、Geth等依赖环境;其次使用puppeth工具生成私网的配置文件genesis.json并复制到三个节点目录下,三个节点均使用该配置文件初始化网络;最后使用static-nodes.json的方式将三个节点设为默认接入节点,实现节点间的连通,连通后各节点中的账户可以互相转账挖矿。