0x01-名词解释
DLT
企业级商业化分布式账本技术
Hyperledger
由linux基金会孵化的区块链技术;DLT 框架;DLT 工具集
hyperledger用独特的共识协议:有个order(排序)节点进行验证
Hyperledger Fabirc
第一个孵化出来的商用的DLT 框架
Hyperledger composer
一个在DLT框架上创建商业应用的工具
Assets, chaincode& ledger
- assets : 有价值的东西, 可以被交易的东西
json表示 {vinnumber:xxx, owner:zhangsan}
- chaincode:智能合约
transaction | business logic
- ledger:账本,所有的参与者都保存了ledger
记录所有的transaction
Node和peer,client,orderer
node是区块链的通讯终端,在以太坊中所有的node都是相同的
但是在hyperledger中node分为三种:
- client:实例化transaction的(cli , node sdk, java sdk)
- peer:用来存储和同步ledger的数据
在生产环境中有多个peer, ,一个peer是ledger和blockchain存储的位置,
peer决定是否update的ledger. 一个peer会属于不同的channel.
每个channel都在peer里面,但是是完全隔离的.
一个peer可以控制多个channel
peer背书ledger的更新,最后强调一下peer是ledger和blockchain存储的位置,
peer互相发现,互相同步 - orderer:用来排序分发transaction的
order提供排序服务. 在数据被提交到ledger之前, 必须先交给order服务,
order服务创建block区块, 这些区块被签名和验证, 所有的transaction都在block里面
order做好了block之后,把数据发给peer, peer接收到block之后就把数据写入自己的ledger里面.
在hyperledger区块链中,挖矿的工作,共识的达成是有orderer节点来完成的,orderer负责避免双花,生成区块.
premissioned network 授权网络
access control 访问控制
business ineract with known entities
以太坊属于匿名网络. hpyerledger是实名制的网络
confidential transaction 交易安全
transaction 是可以控制可见性的
no cryptocurrency 无数字货币
没有旷工, 低成本, 验证操作灵活.
- programmable 可编程
- chaincode (smart contract 智能合约)
MSP和CA
每个operation在hyperledger网络 必须拥有数字签名. update, 查询, insert, 或者获取metadata. 都需要数字签名.数字签名遵循x.509
标准. fabric ca
是一个高质量的工具, 帮助我们自动生成证书.
ca可以为不同的用户生成不同的证书, 每个用户可以拥有不同的attribute(属性), 在属性里面可以添加角色,账户id,account number等等.你可以添加任意的信息.
hyperledger fabric 的chaincode可以获取用户的证书, 根据证书的类型决定某个智能合约是否可以执行.
比如说只有管理员可以安装链码, 普通用户只能查询.
fabric ca
就是生成ca和创建账户的工具. 可以根据自己的安全策略来管理用户.
这个证书有效期是多久,分发策略是什么,都可以通过fabric ca
来控制.
fabirc ca
支持链式继承, 假如某个证书被黑客攻陷, 上一级别的ca可以很容易作废这个证书.
通过ca认证, 我们可以查询每一笔交易的参与者,并且参与者无法抵赖. 这个特性是密码学保证的
hyperledger的组件是可插拔的, 你完全可以不使用fabric ca,
你可以自己建立一套认证体系,用于管理用户.设置用户属性,签名transaction.
但是fabric ca是一个非常高质量,企业级的组件, 推荐大家使用.
MSP
只是一个接口,Fabric-CA
是MSP
接口的一种实现。
MSP是Membership Service Provider - 是可插拔的接口,它用于支持各种认证体系结构,为membership orchestration architecture提供抽象层。
MSP抽象提供:
- 具体的身份格式
- 用户证书验证
- 用户证书撤销
- 签名生成和验证
而 Fabric-CA 用于生成证书和密钥,以真正的初始化MSP。
Fabric-CA是用于身份管理的MSP接口的默认实现。
msp 定义
- who you are 你是谁
- which network you are 你在什么网络
msp的证书是由fabric ca来颁发的
每个peer都需要msp的证书
每个order都需要msp的证书.
现在需要明确的概念是, 只有拥有相同msp的 peer才可以互相发现 互相通讯
MSP ID 是一个名字定义一组证书,说明你是谁你在哪个网络.
使用hyperledger fabirc sdk的时候 经常需要指定mspid
所以这个概念要注意.
0x02-选择题
hyperledger是什么
A. linux基金会孵化重点项目
B. DLT 框架
C. DLT 工具集
在DLT中分布式存储的是什么
A. 数据
B. 账本(book of records)
C. 技术
D. 资产
资产(assert)代表了什么
A. 价值
B. 账本
C. 转账信息
资产的变更会生成什么到DLT中
A. 价值(value)
B. 实体(entry)
C. 转账(transaction)
传统公有链能否解决下面的DLT问题 不能
- 隐私
- 机密
- 标准化
关于企业级商业化分布式账本技术(DLT)特点说法正确的是:(ABCD)
A. 需要是授权网络
B. 转账操作要安全可信
C. 没有挖矿的概念
D. 可编程
请你设计一套数字货币系统,可以实现转账和交易, 从技术角度下面的什么技术可以使用?(AB)
A. 以太坊
B. hyperledger
0x03-问答题
什么是Hyperledger fabric?
- 模块化
- 可扩展
- 超安全
Hyperledger fabric的革命性在于, 他提供了一种组织之间互相信任的机制, 让所有的数据和信息变化变得可信, 并且这种信任是不需要依赖任何一个中央机构.
Hyperledger fabric不是一个普通的软件或者框架解决普通问题,而是一个全新的解决问题的方式.
解决的最重要的问题---
如何在不信任的个体和组织中引入信任机制.
这种信任机制可以创建更高效的商业模式, 你不需要关心中间人, 信任和安全问题
一句话描述,hyperledger fabric是基于区块链的企业级分布式账本技术,通过智能合约解决多个组织之间的信任问题.
为什么说hyperledger区块链技术重建信任?
hyperledger是一个分布式系统.没有单点故障, 没有单点的信息存放,
每个节点都保存了全部的数据.所有的节点都保存了一致的区块链数据, 不可篡改.
每个节点存放了所有的转账记录(账本)
举例:
假设你的商业模式是使用hyperledger记录某个资产的所有者,
因为某种原因, 你错误的登记了这个资产的所有人.
在hyperledger里面你没法把这个错误的记录删除.
你的做法只能是创建一个新的记录,标记之前的记录是错误的.
在区块链系统里面,没有删除的概念, 所有对数据的添加和修改都会被记录.
blockchain 记录了数据变化的过程.
每一笔transaction都会导致数据的变化, 变化后的状态叫世界状态(world state)
因为所有的node节点都保存了所有的transaction, 这些transaction都是一致的,
所以所有的node节点的世界状态也是一致的.
这个账本是由密码学签名
保证,保证了数据完整性和安全性
所以说hyperledger区块链技术重建信任.
hyperledger为什么特别适合企业级开发(business)
使用hyperledger可以创建私有链, 可以创建联盟链, 甚至我们可以用hyperledger创建公有链.
只要node节点处于相同的网络节点, 他们可以互相发现, 我们就可以使用hyperledger 来让他们达成共识协议.
所以hyperledger的应用场景非常广泛, 在任何行业,任何应用场景都可以找到可以落地的需求.
hyperledger 没有51%攻击.没有挖矿的概念, 因为hyperledger 采用了独特的共识协议,
每个共识协议的参与者都是由CA来认证的.
超级账本:
- 记录全部的transaction -> 查找交易历史 快
- 记录当前 world states -> 查找当前余额/归属者 快
hyperledger如何解决现实生活中的问题
来看一下hyperledger fabric为什么有广泛的应用场景
有两个公司 A 和 B
交换一些东西(资产) 文档, 数字资产, 版权,健康记录,集装箱,房屋,车辆等... 他们交换一些东西
通常情况 a和b 互不信任.
两个公司都有自己的server 自己的服务器.
每周或者每月对账. 如果对账成功, 棒棒哒,
但是在现实生活中,他们从来都不匹配.
不同的软件,不同的技术栈,不同的操作人员.种种因素导致数据不匹配.
不匹配没关系, 对账啊.
如果你有个供应链 , 有10个组织, 之间怎么对账,怎么交流?
- 传统解决方案:
共同信任同一个中央机构
缺陷:
- 花钱,好多好多钱
- 所有机构都要共同信任一个中央机构
- 最主要的问题, 中央机构出了问题?
这个事情是会发生的. 传统的技术目前没办法解决这个问题。
避免中央机构出问题, 超级复杂的审批流程.硬件级别访问控制.操作人员背景调查...数据篡改问题依然存在
- 新的解决方案:
所有数据在每个节点同步, 通过智能合约描述商业流程.
hyperledger 保证数据实时同步, 所有的node节点保存同步的数据.
如果有人修改了自己的数据. 所有其他的party就能立刻发现数据错误了.
即使一个很牛逼的黑客, 如果能把所有node节点的数据都修改了. 但数据会校验失败.
节点就会发现数据错误,存在问题.
数据的更新靠chaincode , chaincode描述了transaction操作是否可以执行.
code is law. chaincode 执行可以指定背书策略, 某个机构可以执行什么策略.
chaincode 可以用java或者nodejs,go语言去编写, 任何负责的业务逻辑都可以用编程语言去描述.
hyperledger inforce trust between partys. 所有人都确信他们的数据是正确的, 没有被篡改的数据.
这就是hyperledger. 一个商业级别 能解决社会问题的, 区块链框架.
hyperledger 解决了人与人,机构与机构之间的信任问题, 通过chaincode 实现价值转移.