Hyperledger Fabric-基本概念

1、Hyperledger有独特的共识协议,这个共识协议让odering service(排序)节点进行验证,成本很低,不需要消耗大量电力,让挖矿变得不再必需。所以没有51%的攻击,没有挖矿概念

2、交易速度:

比特币7笔/秒,它十分钟产生一个区块,区块大小是1M。以太坊10几到30/秒,几百笔/分钟。hyperledger50万笔/分钟,随着集群,机器升级,还可以提升

3、hyperledger适合企业级开发

  • premissioned network 授权网络

    access control

  • confidential transaction 交易安全

    transaction 是可以控制可见性的

  • no cryptocurrency 没有数字货币

    没有矿工,低成本,验证操作灵活

  • programmable 可编程

    chaincode 链码(smart contract 智能合约)

4、Assets、chaincode&ledger(资产、链码&账本)

  • assets:资产,有价值的东西,可以被交易的东西

    二进制方式表示

    json表示 {vinnumber: XXX, owner: zhangsan}

  • chaincode:智能合约,链码

    transaction | business logic

  • ledger:账本

    记录所有的 transaction

所有的参与者都保存了ladger

image-20230324145459048.png

5、hyperledger如何解决现实问题

两个共识A和B交换一些东西(assets资产)文档、数据资产、版权、健康记录、集装箱、房屋、车辆等。两个公司都有自己的server自己的服务器。每周或每月对账,不同的软件、不同的技术栈、不同的操作人员,很多因素导致数据不匹配。不匹配的时候需要对账。

比如银行一般在月底或年底都会停止办理某些业务,因为需要处理对账。

A银行和B银行需要同时信任一个三方中央机构,中央机构出问题?避免中央机构出问题,超级复杂审批流程,硬件级别访问,操作人员背景调查

所有数据在每个节点同步,通过智能合约描述商业流程

hyperledger保证数据实时同步,所有的node节点保存同步的数据

如果有人修改了自己的数据,所有其他的party就能立刻发现数据错误了

即使一个很牛的黑客,如果把所有node节点数据修改了(修改的是hash值,这种成本是很高的),但数据会校验失败

数据的更新是靠smart contract链码,链码描述了transaction操作是否可以执行

code is law. 链码可以指定背景策略,某个机构可以执行什么策略

smart contract 可以用java、go或nodejs去编写。java开销大,1.1版本java是被禁用掉了。go编写过于麻烦,官方推荐nodejs

6、授权网络和MSP(会员管理者)&CA

business interact with known entities

以太坊属于匿名网络,hyperledger是实名制的网络

每个opertion(角色)在hyperledger都需要数字签名

fabric ca可以通过几个命令就可以生成一套证书,可拔插的组件,可不用,选择其他的,推荐使用这个

MSP只是一个接口,是个规范,颁发授权时要求实现两点,定义角色,定义角色有什么权限

具体的身份格式,用户证书验证,用户证书撤销,签名生成和验证,有MSP定义规范,fabirc ca实现

fabirc ca是用于身份管理的MSP接口的默认实现

msp定义 who you are你是谁,which network you are你在哪个网络,msp的证书是fabric ca来颁布的,每个peer都需要msp的证书,每个order都需要msp的证书

7、node和peer、client、oderers

node是区块链的通讯终端,在以太坊所有的node都是相同的

但是在hyperledger中node分为三种

  • client实例化transaction的(cli、node sdk、java sdk)
  • peer用来存储和同步ladger的数据
  • orderers用来排序分发transaction的

在生产环节有很多个peer,越多越冗余,系统越安全

orderers如果性能够强,50W笔/分钟没有很大问题

8、业务分析

实战案例-场景分析

image-20230323200043515.png

9、hyperledger的channel

每个channel可以理解成独立的hyperledger fabric的实例,channel是hyperledger fabric里面一个非常重要的概念。

其他区块链系统里没有channel的概念,channel是相互间是隔离的。

创建和加入channel的操作很简单,sdk里面有工具叫configtx

创建channel的时候,一般都有指定哪些peer加到channel里

新的peer加入到channel里面,是有策略的。同QQ群一样,比如只有管理员同意、或两个以上管理员同意、只有群内组员邀请才可以、只有所有群组员同意、只要有一个不同意就不能加进来。业务模型非常灵活

通过工具更新channel的配置,修改加入策略。也可以通过channel,把peer成员移除,sdk里面工具叫configtxlator

10、chaincode智能合约

是hyperledger里的应用程序,是我们编写的商业逻辑,他的作用是更新账本数据的

sdk发起一个transaction,peer执行这个chaincode,chaincode可以用nodejs、java和go编写

在hyperledger里要更新或读取数据,就必须通过chaincode来完成

chaincode必须属于某个channel,因为ladger是属于某个channel的,chaincode操作的是ladger

任何操作chaincode的逻辑,都必需要去出示权限(CA)

chaincode的生命周期

chaincode需要先安装,然后必须要实例化。实例化chaincode会启动docker容器,在这个容器里运行chaincode

  • 安装install
  • 实例化init
  • 调用invoke

chaincode背书策略

实例化chaincode需要指定背书策略

chaincode总结

  • 每个peer可以属于多个channel
  • 每个channel有独立的ladger
  • 每个channel有一个或多个chaincode
  • 每个chaincode可以有不同的背书策略

这种可扩展,灵活的设计,让hyperledger可以使用与任何业务场景

11、hyperledger工作流程


image-20230324135714

1、提案 transaction proposal,peer先接收到proposal,会模拟执行,拿到当前version的ladger去模拟执行。模拟执行会产生一个读写集(read write set),具体读写集的内容:某个key要被update成什么,update后的version是什么 。

2、每个peer会把模拟执行的结果 endorsement response(背书) 签名,最后返回给sdk。

3、sdk收到足够的背书后,就会把信息交给order。order检查签名、背书策略、排序,如果没有问题,就发送一个调用更新的操作( invocation)。背书策略非常重要,不同链码有不同背书策略。不合法的invacation request回被拒绝,不好更新ladger的状态(世界状态,读写集),但是transaction会记录到blockchain,方便以后排查检查问题。

ladger有两套日志:Adds transaction 和 Record state。上述被拒绝的场景,不会更新Record state,但是会记录transaction

orderer节点担任了排序角色,解决了hyperledger的双花问题

ordering service还需要检查所有的背书对应的读写集是否一样,只有一样才会被接受

4、order发起invoke更新请求,所有节点都收到请求,更新自己的ladger

回顾流程

1、sdk发送transaction proposal给一个或多个peer

2、peer模拟执行,给出模拟执行的结果、读写集、key的version,这些信息反馈给sdk

3、sdk收集背书信息,带着签名,发送给order节点

4、order节点检查签名,检查每个peer背书的读写集是否一致,排序,如果没问题,就发出invocation,让每个peer去apply新的读写集

最后几个细节

  • order节点不是立刻处理每个invacation request

  • 在order节点内部有一个消息队列,我们可以控制这个队列。控制这个队列的数量,容量大小,提交周期等参数。通过调整参数调整hypderladger的处理效率,这些是hyperledger开发中比较高级的话题

12、术语回顾

channel

数据通道,可以理解成独立的hyperledger fabirc的实例。不同的channel的数据彼此隔离,channel可以保证区块链上数据隐私问题,channel类似微信群组

ChainCode

链码、智能合约,chaincode定义了business logic,ladger的变化只能通过调用chaincode来完成,在区块链系统里面code is law

ladger

账本ladger记录的是当前的世界状态(word state),ladger还链式记录了所有的历史世界纪录状态。在hyperledger里面,ladger是一个具有授权管理的共享账本系统,从底层设计上保证数据的一致性、有效性、不可篡改性

network

由peer组成network,在同一network的peer,实施同步记录,保证数据一致

ordering service

排序服务,排序、验证transaction,最终提交invocation,把数据写入peer的ladger

work state

世界状态,当前ladger里面存放的数据 key和value,以version形式存在。当前实现有couchdb和leveldb

membership service provider

管理peer的身份和访问许可

13、渔业系统业务复盘

image-20230327174215834.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容