超级账本hyperledger fabric第一集:概念
一.hyperledger fabric 概念:
1. 什么是 hyperledger?
-
超级账本是 Linux 基金会在 2015 年发起的“开放式账本”开源项目,“开放式账 本”是为推进区块链技术应用于金融领域及交易验证方向的发展而发起的,“开放 式账本”随后被更名为“超级账本”
-
其加入成员包括:荷兰银行(ABN AMRO)、埃森哲(Accenture)等十几个不同 利益体,目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户 案例,并简化业务流程
-
官网地址:https://www.hyperledger.org/
2. hyperledger与数字货币
- 都是基于区块链技术实现的
- 比特币1秒7笔交易,以太坊1分钟几百笔,hyperledger理论上1分钟50万比交易
- hyperledger因为不用挖矿,不需要很强的硬件支持,也不耗费资源
- hyperledger没有51%攻击问题,加入链中的成员要经过CA认证,是有许可的网络
3. 现实问题
-
例如两家公司对账,由于两家公司数据存储技术栈不一样,数据对接出问题,也就 是信任谁的数据
-
银行和银联对账通知
-
由于对账成本太高,可能找第三方机构帮助判定,认证需要交认证费,找到两个公司都信任的第三方也不容易,三方机构的安全也有问题,因为是由人来操作的
4. hyperledger全家福
- BURROW和SAWTOOTH是对以太坊智能合约虚拟机方面的拓展
- INDY做去中心化的数字身份平台
- CALIPER:是一个去中心化的性能测试工具
- COMPOSER:区块链模板部署,设一些参数,直接部署
- EXPLORER:是区块链web端查看工具
-
地址:https://github.com/hyperledger
5.什么是 hyperledger fabric?
- 目标:做企业级联盟链的基础设施
- 公有链:全网公开,没有类似CA的用户验证
- 联盟链:只针对某个特定群体的成员和有限的第三方,内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定
- 私有链:所有网络中的节点都掌握在一家机构手中
- 联盟链和私有链可统称为许可链
- 可插拔的共识机制(solo和kafka等)
- 多链多通道隔离,做业务隔离,保护业务数据隐私
6.hyperledgerfabric的重要组件
-
fabric CA
- 自动生成认证证书
- 创建账户
- 是一个工具集
-
fabric Peer
- 可以有很多Peer,是ledger和blockchain存储的位置
- 一个peer可以加入不同的channel
-
fabric ordering service
- 提供排序服务
- 创建block区块
- 使用solo排序,配置成使用kafka排序(有限状态机)
7.hyperledger的开发语言
-
智能合约
- go
- java
-
SDK
- java
- node.js(官方推荐的,效率)
- go(大坑,支持是最差的)
- python
8.hyperledger的channel
- 每个channle可以理解成独立的fabric实例
- 不同的channel是私有的子网,类似于微信群,隔离业务数据,docker namespace
- peer是微信里的人,peer可以加入不同的channle
- 还可以设置允许什么人加入
9.hyperledger的chaincode
- chaincode(链码)就是智能合约,是一个应用程序
- 用于更新账本数据,由peer去执行chaincode
- 在fabirc里,chaincode是数据唯一的更新的方式
- chaincode属于某一个channel的
- chaincode是生命周期
- 安装链码
- 实例化(调用init方法)
- 调用使用(调用invoke方法)
- 每个chaincode有不同的背书策略(如何去达成共识)
- 可能有的chaincode是所有人都同意才可以
- 可能有的chaincode是至少有一个人同意才可以
- 可能有的chaincode是有4个人同意才可以
- 适应企业复杂应用场景
10.hyperledger 的 msp
- 是一组重要的密码学签名工具
- 定义了你是谁,你在哪(在那个channel中)
- CA去颁发证书
11.术语回顾
- channel : 数据通道,独立的fabric实例,不同channel数据是隔离的
- world state :是世界状态,是ledger里面存放的数据,是KV数据的存储,可以用levledb和couchdb
- ledger:账本,记录当前所有的世界状态,从底层架构上保证了数据一致性,不可篡改性
- chaincode:链码,编写智能合约,ledger的变化智能通过调用链码实现
- peer:是整个网络的基础,每一个peer都可以持有一个或多个ledger,每一个peer也可以有一个或多个chaincode
- network:是由peer组成的网络,形成区块链网络,在同一个网络中peer实现同步记账,保证了peer的数据一致性
- ordering service:排序服务,进行排序和验证,验证通过的数据,写入peer节点的ledger,具体还要看背书策略
- msp:peer节点的认证和标识