HyperLeder fabric
1.区块链技术演进过程
1>区块链1.0仅仅是一个共享账本,只能记账而没有其他功能。
2>区块链2.0在共享账本的基础上增加了智能合约,通过智能合约可以提供更加丰富的功能。
3>区块链3.0进一步升级,不但能够记录交易还能记录交易状态,对数据溯源,使区块链技术不再局限于数字货币,而是应用在更多的业务场景。
区块链的三个版本之间并没有取代关系,每个版本都有自己的特点,它们之间没有必然的关系并且是相互独立的,到目前为止,每个版本的区块链技术依然在各自擅长的领域发挥着重要的作用。
2.公链,联盟链
公链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。(公链想要获取交易的记账权需要付出算力(POW(工作量证明算法)),通过这种方式使得单个节点造假的成本无限扩大,从而达到防止单个节点造假的目的)。
联盟链——部分去中心化
联盟链开放程度和去中心化程度是有所限制的,介于公链和私链之间。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。
3.Fabric是HyperLedger(超级账本)项目组的一个项目,属于区块链3.0的技术范畴之内,同时具有1.0和2.0的特性,比如Fabric可以共享账本,具有智能合约,可以通过共识算法确保数据的安全。同时它还具有和其他区块链系统不同的技术特性。
1>多账本特性
在faric之前的区块链平台比如比特币,以太坊,一般都只有一个账本,所有的记录都在一个账本中,这就导致这个账本非常大,这种设计再比特币这样的公有链中是没有问题的,但是再fabic这样的公有链中则是有问题的,因此fabric采用了多账本的设计方式。
Fabric中有一个被称为通道(channel)的概念。通道的本质是一个账本的逻辑概念。一个通道包含若干成员,这些成员之间共享同一个账本。通道内所有成员共享账本数据并且共同维护账本。
2>fabric的智能合约
Fabric中的智能合约称为码链(ChainCode),ChainCode是一段用计算机语言编写的程序,运行在容器中,fabric通过ChainCode可以读取和修改账本数据,同时会把交易的日志保存在状态数据库中。ChainCode支持多种编程语言开发,目前支持:Go、Java、Node.js等语言
3>fabric的权限系统
Fabric中有一个会员服务系统(Membership Service Provider (MSP))。MSP是基于PKI规范而建立的一个用户证书和私钥体系。为了 orderer(交易的打包和区块的生成)节点 和peer(数据经过orderer排序打包之后由peer模块存储在区块链中)节点定义的。
PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。PKI技术是一种遵循既定标准的密钥管理平台,它的基础是加密技术,核心是证书服务,支持集中自动的密钥管理和密钥分配,能够为所有的网络应用提供加密和数字签名等密码服务及所需要的密钥和证书管理体系。
4.Fabric模块
Fabric并不是一个单独的程序而是由一组模块组成,这些模块中的每一个都是可以独立运行的可执行文件。
1>peer 主节点模块,负责存储区块链数据,运行维护链码(ChainCode)。
2>Orderer 负责对交易进行排序,并将排好序的交易打包成区块。
3>Cryptogen 组织和证书生成模块
4>Configtxgen 区块和交易生成模块。
5>Configtxlator 区块和交易解析模块。
5.安装
1>Git
$ sudo apt-get install git
2>cUrl
$ sudo apt-get install curl
3>Docker
sudo apt-get -y install docker-compose
docker --version
docker-compose --version
sudo systemctl start docker
sudo systemctl enable docker
4>Go 环境 (1.16以下版本)
5>Fabric
git clone https://github.com/hyperledger/fabric.git
cd fabric/scripts
Git checkout release-2.2
./bootstrap.sh
fabric/scripts/fabric-samples/test-network# ./network.sh down
fabric/scripts/fabric-samples/test-network# ./network.sh up
可以参考:https://blog.csdn.net/WASEFADG/article/details/124291080