Fabric源码分析
boss2967
慎独
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
36.Fabric 1.0源代码分析(36) Peer #EndorserClient(Endorser客户端)
Fabric 1.0源代码笔记 之 Peer #EndorserClient(Endorser客户端)1、EndorserClient概述EndorserClient相关代码分布如下:protos/peer/peer.pb.go,EndorserClient接口及实现。peer/common/common.go,EndorserClient相关工具函数。2、EndorserClien...转载 2018-11-16 08:03:52 · 559 阅读 · 0 评论 -
26.Fabric 1.0源代码分析(26)Orderer #ledger(Orderer Ledger)
Fabric 1.0源代码笔记 之 Orderer #ledger(Orderer Ledger)1、Orderer Ledger概述Orderer Ledger代码分布在orderer/ledger目录下,目录结构如下:orderer/ledger目录:ledger.go,Factory、Iterator、Reader、Writer、ReadWriter等接口定义。util.go,...转载 2018-11-15 09:00:53 · 654 阅读 · 0 评论 -
27.Fabric 1.0源代码分析(27) Orderer #configupdate(处理通道配置更新)
Fabric 1.0源代码笔记 之 Orderer #configupdate(处理通道配置更新)1、configupdate概述configupdate,用于接收配置交易,并处理通道配置更新。相关代码在orderer/configupdate目录。2、SupportManager接口定义及实现2.1、SupportManager接口定义type SupportManager inte...转载 2018-11-15 09:01:07 · 751 阅读 · 0 评论 -
28.Fabric 1.0源代码分析(28) Orderer #localconfig(Orderer配置文件定义)
Fabric 1.0源代码笔记 之 Orderer #localconfig(Orderer配置文件定义)1、配置文件定义General: #通用配置 LedgerType: file #账本类型,包括ram、json和file,其中ram保存在内存中,生产环境推荐使用file ListenAddress: 127.0.0.1 #服务绑定的监听地址 ListenPort...转载 2018-11-15 09:01:14 · 830 阅读 · 0 评论 -
29.Fabric 1.0源代码分析(29) Orderer #multichain(多链支持包)
Fabric 1.0源代码笔记 之 Orderer #multichain(多链支持包)1、multichain概述multichain代码集中在orderer/multichain目录下,目录结构如下:manager.go,Manager接口定义及实现。chainsupport.go,ChainSupport接口定义及实现。systemchain.go,system chain。...转载 2018-11-15 09:01:20 · 922 阅读 · 0 评论 -
30.Fabric 1.0源代码分析(30) Orderer #BroadcastServer(Broadcast服务端)
Fabric 1.0源代码笔记 之 Orderer #BroadcastServer(Broadcast服务端)1、BroadcastServer概述BroadcastServer相关代码在protos/orderer、orderer目录下。protos/orderer/ab.pb.go,AtomicBroadcastServer接口定义。orderer/server.go,go,Atom...转载 2018-11-15 09:01:34 · 981 阅读 · 0 评论 -
31.Fabric 1.0源代码分析(31) Peer
Fabric 1.0源代码笔记 之 Peer1、Peer概述在Fabric中,Peer(节点)是指在网络中负责接收交易请求、维护一致账本的各个fabric-peer实例。节点之间彼此通过gRPC通信。按角色划分,Peer包括两种类型:Endorser(背书者):负责对来自客户端的交易提案进行检查和背书。Committer(提交者):负责检查交易请求,执行交易并维护区块链和账本结构。...转载 2018-11-15 09:01:41 · 985 阅读 · 0 评论 -
32.Fabric 1.0源代码分析(32) Peer #peer node start命令实现
Fabric 1.0源代码笔记 之 Peer #peer node start命令实现1、peer node加载子命令start和statuspeer node加载子命令start和status,代码如下:func Cmd() *cobra.Command { nodeCmd.AddCommand(startCmd()) //加载子命令start nodeCmd.AddCom...转载 2018-11-16 08:03:02 · 763 阅读 · 0 评论 -
33.Fabric 1.0源代码分析(32)Peer #peer根命令入口及加载子命令
Fabric 1.0源代码笔记 之 Peer #peer根命令入口及加载子命令1、加载环境变量配置和配置文件Fabric支持通过环境变量对部分配置进行更新,如:CORE_LOGGING_LEVEL为输出的日志级别、CORE_PEER_ID为Peer的ID等。此部分功能由第三方包viper来实现,viper除支持环境变量的配置方式外,还支持配置文件方式。viper使用方法参考:https://...转载 2018-11-17 19:10:06 · 683 阅读 · 0 评论 -
34.Fabric 1.0源代码分析(34) Peer #peer chaincode命令及子命令实现
Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现1、peer chaincode install子命令实现(安装链码)1.0、peer chaincode install子命令概述peer chaincode install,将链码的源码和环境封装为一个链码安装打包文件,并传输到背书节点。peer chaincode install支持如下两种方...转载 2018-11-16 08:03:30 · 783 阅读 · 0 评论 -
35.Fabric 1.0源代码分析(35)Peer #EndorserServer(Endorser服务端)
Fabric 1.0源代码笔记 之 Peer #EndorserServer(Endorser服务端)1、EndorserServer概述EndorserServer相关代码在protos/peer、core/endorser目录下。protos/peer/peer.pb.go,EndorserServer接口定义。core/endorser/endorser.go,EndorserSe...转载 2018-11-16 08:03:47 · 661 阅读 · 0 评论 -
35.Fabric 1.0源代码分析(35)Peer #EndorserServer(Endorser服务端)
Fabric 1.0源代码笔记 之 Peer #EndorserServer(Endorser服务端)1、EndorserServer概述EndorserServer相关代码在protos/peer、core/endorser目录下。protos/peer/peer.pb.go,EndorserServer接口定义。core/endorser/endorser.go,EndorserSe...转载 2018-11-17 19:11:28 · 546 阅读 · 0 评论 -
25.Fabric 1.0源代码分析(25) Orderer
Fabric 1.0源代码笔记 之 Orderer1、Orderer概述Orderer,为排序节点,对所有发往网络中的交易进行排序,将排序后的交易安排配置中的约定整理为块,之后提交给Committer进行处理。Orderer代码分布在orderer目录,目录结构如下:orderer目录main.go,main入口。util.go,orderer工具函数。metadata目录,me...转载 2018-11-15 09:00:47 · 957 阅读 · 0 评论 -
37.Fabric 1.0源代码分析(37) Peer #DeliverClient(Deliver客户端)
Fabric 1.0源代码笔记 之 Peer #DeliverClient(Deliver客户端)1、DeliverClient概述DeliverClient代码分布如下:peer/channel/deliverclient.go,deliverClientIntf接口定义及实现,以及DeliverClient工具函数。protos/orderer/ab.pb.go,AtomicBroa...转载 2018-11-16 08:03:57 · 602 阅读 · 0 评论 -
38.Fabric 1.0源代码分析(38) Peer #BroadcastClient(Broadcast客户端)
Fabric 1.0源代码笔记 之 Peer #BroadcastClient(Broadcast客户端)1、BroadcastClient概述BroadcastClient代码分布如下:peer/common/ordererclient.go,BroadcastClient接口定义及实现,及BroadcastClient工具函数。protos/orderer/ab.pb.go,Atom...转载 2018-11-16 08:04:02 · 543 阅读 · 0 评论 -
39. Fabric 1.0源代码分析(39) policy(背书策略)
Fabric 1.0源代码笔记 之 policy(背书策略)1、policy概述policy代码分布在core/policy、core/policyprovider、common/policies目录下。目录结构如下:core/policy/policy.go,PolicyChecker接口定义及实现、PolicyCheckerFactory接口定义。core/policyprovide...转载 2018-11-16 08:04:07 · 761 阅读 · 0 评论 -
40.Fabric 1.0源代码分析(40) Proposal(提案)
Fabric 1.0源代码笔记 之 Proposal(提案)1、Proposal概述Proposal,即向Endorser发起的提案。Proposal代码分布在protos/utils、protos/peer目录下,目录结构如下:protos/utils目录:proputils.go,Proposal工具函数。txutils.go,Proposal工具函数。protos/peer目录...转载 2018-11-16 08:04:12 · 986 阅读 · 0 评论 -
41.Fabric 1.0源代码分析(41)putils(protos/utils工具包)
Fabric 1.0源代码笔记 之 putils(protos/utils工具包)1、putils概述putils,即protos/utils工具包,代码分布在:protos/utils目录下。包括:txutils.go、proputils.go、commonutils.go、blockutils.go。2、txutils//TransactionAction.Payload =>...转载 2018-11-16 08:04:39 · 610 阅读 · 0 评论 -
42.Fabric 1.0源代码分析(42)scc(系统链码) #cscc(通道相关)
Fabric 1.0源代码笔记 之 scc(系统链码) #cscc(通道相关)1、cscc概述cscc代码在core/scc/cscc/configure.go。2、PeerConfiger结构体type PeerConfiger struct { policyChecker policy.PolicyChecker}//代码在core/scc/cscc/configure.g...转载 2018-11-16 08:04:46 · 656 阅读 · 0 评论 -
44.Fabric 1.0源代码分析(44)Tx #RWSet(读写集)
Fabric 1.0源代码笔记 之 Tx #RWSet(读写集)1、RWSet概述在背书节点模拟Transaction期间,为交易准备了一个读写集合。Read Set包含模拟Transaction读取的Key和版本的列表,Write Set包含Key、写入的新值、以及删除标记(是否删除Key)。RWSet相关代码分布在protos/ledger/rwset、core/ledger/kvle...转载 2018-11-17 19:10:57 · 869 阅读 · 0 评论 -
45.Fabric 1.0源代码分析(45)gRPC(Fabric中注册的gRPC Service)
Fabric 1.0源代码笔记 之 -gRPC(Fabric中注册的gRPC Service)Peer节点中注册的gRPC Service,包括:Events Service(事件服务):ChatAdmin Service(管理服务):GetStatus、StartServer、GetModuleLogLevel、SetModuleLogLevel、RevertLogLevelsEndo...转载 2018-11-17 19:11:56 · 709 阅读 · 0 评论 -
46.Fabric 1.0源代码分析(46)ECDSA(椭圆曲线数字签名算法)
Fabric 1.0源代码笔记 之 ECDSA(椭圆曲线数字签名算法)1、椭圆曲线算法概述1.1、无穷远点、无穷远直线、射影平面平行线相交于无穷远点;直线上有且只有一个无穷远点;一组相互平行的直线有公共的无穷远点;平面上任何相交的两直线,有不同的无穷远点;全部无穷远点沟通一条无穷远直线;平面上全部无穷远点和全部普通点构成射影平面。1.2、射影平面点定义对于普通平面上点(x,...转载 2018-11-17 19:12:07 · 1032 阅读 · 0 评论 -
47.Fabric 1.0源代码分析(47)Fabric 1.0.4 go代码量统计
Fabric 1.0源代码笔记 之Fabric 1.0.4 go代码量统计1、概述除test、vendor、mocks、example、protos外,go核心代码文件341个,核心代码行63433行。find ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$' | wc -l341wc -l `find ./ |...转载 2018-11-17 19:12:27 · 659 阅读 · 0 评论 -
13.Fabric 1.0源代码分析(13)events(事件服务)
Fabric 1.0源代码笔记 之 events(事件服务)1、events概述events代码分布在events/producer和events/consumer目录下,目录结构如下:events/producer目录:生产者,提供事件服务器。producer.go,EventsServer结构体及方法。events.go,eventProcessor结构体及方法,handlerL...转载 2018-11-15 09:00:26 · 852 阅读 · 0 评论 -
Fabric 1.0源代码分析(2) blockfile(区块文件存储)
Fabric 1.0源代码笔记 之 blockfile(区块文件存储)1、blockfile概述blockfile,即Fabric区块链区块文件存储,默认目录/var/hyperledger/production/ledgersData/chains,含index和chains两个子目录。其中index为索引目录,采用leveldb实现。而chains为各ledger的区块链文件,子目录以l...转载 2018-11-13 10:33:09 · 979 阅读 · 0 评论 -
Fabric 1.0源代码分析(3)Chaincode(链码)
Fabric 1.0源代码笔记 之 Chaincode(链码) #ChaincodeSupport(链码支持服务端)1、ChaincodeSupport概述ChaincodeSupport相关代码分布在protos/peer/chaincode_shim.pb.go和core/chaincode目录。protos/peer/chaincode_shim.pb.go,ChaincodeSup...转载 2018-11-13 10:34:13 · 1011 阅读 · 0 评论 -
04.Fabric 1.0源代码分析(4)Chaincode(链码)#platforms(链码语言平台)
Fabric 1.0源代码笔记 之 Chaincode(链码) #platforms(链码语言平台)1、platforms概述platforms代码集中在core/chaincode/platforms目录下。core/chaincode/platforms目录,链码的编写语言平台实现,如golang或java。platforms.go,Platform接口定义,及platforms相...转载 2018-11-13 10:35:55 · 771 阅读 · 0 评论 -
05.Fabric 1.0源代码分析(5)Chaincode(链码)体系总结
Fabric 1.0源代码笔记 之 Chaincode(链码)1、Chaincode概述Chaincode,即链码或智能合约,代码分布在protos/peer目录、core/chaincode和core/common/ccprovider目录,目录结构如下:protos/peer目录:chaincode.pb.go,ChaincodeDeploymentSpec、ChaincodeIn...转载 2018-11-13 10:39:09 · 901 阅读 · 0 评论 -
06.Fabric 1.0源代码分析(6)configtx(配置交易) #ChannelConfig(通道配置)
Fabric 1.0源代码笔记 之 configtx(配置交易) #ChannelConfig(通道配置)1、ChannelConfig概述ChannelConfig代码分布在common/config目录下。目录结构如下:channel_util.go,channel相关工具函数。orderer_util.go,orderer(系统通道)相关工具函数。application...转载 2018-11-13 10:41:16 · 669 阅读 · 0 评论 -
07.Fabric 1.0源代码分析(7)configtx(配置交易) #configtxgen(生成通道配置)
Fabric 1.0源代码笔记 之 configtx(配置交易) #configtxgen(生成通道配置)1、configtxgen概述configtxgen,用于生成通道配置,具体有如下三种用法:生成Orderer服务启动的初始区块(即系统通道的创世区块文件)configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./chann...转载 2018-11-13 14:18:56 · 834 阅读 · 0 评论 -
08.Fabric 1.0源代码分析(8)configtx(配置交易) #genesis(系统通道创世区块)
Fabric 1.0源代码笔记 之 configtx(配置交易) #genesis(系统通道创世区块)1、genesis概述genesis,即创世区块,此处特指系统通道的创世区块。相关代码在common/genesis/genesis.go,即Factory接口及实现。2、Factory接口定义type Factory interface { Block(channelID st...转载 2018-11-13 14:24:15 · 675 阅读 · 0 评论 -
09.Fabric 1.0源代码分析(9)configtx(配置交易)体系介绍
Fabric 1.0源代码笔记 之 configtx(配置交易)1、configtx概述configtx代码分布在common/configtx目录,目录结构如下:api目录,核心接口定义,如Manager、Resources、Transactional、PolicyHandler、Proposer、Initializer。initializer.go,Resources和Initial...转载 2018-11-13 14:25:12 · 565 阅读 · 0 评论 -
10.Fabric 1.0源代码分析(10)consenter(共识插件)
Fabric 1.0源代码笔记 之 consenter(共识插件)1、consenter概述consenter,即共识插件,负责接受交易信息进行排序,以及对交易进行切割并打包,打包后返回批量交易。Orderer包含三种共识插件:solo,单节点的排序功能,用于试验。kafka,基于kafka集群实现的排序,可用于生产环境。SBFT,支持拜占庭容错的排序实现,尚未完成开发。cons...转载 2018-11-13 14:26:37 · 1042 阅读 · 0 评论 -
11.Fabric 1.0源代码分析(11)consenter(共识插件) #filter(过滤器)
Fabric 1.0源代码笔记 之 consenter(共识插件) #filter(过滤器)1、filter概述filter代码分布在orderer/common/filter、orderer/common/configtxfilter、orderer/common/sizefilter、orderer/common/sigfilter、orderer/multichain目录下。order...转载 2018-11-13 14:27:37 · 727 阅读 · 0 评论 -
12.Fabric 1.0源代码分析(12)cryptogen(生成组织关系和身份证书)
Fabric 1.0源代码笔记 之 cryptogen(生成组织关系和身份证书)1、cryptogen概述cryptogen,用于生成组织关系和身份证书。命令为:cryptogen generate --config=./crypto-config.yaml --output ./crypto-config2、crypto-config.yaml文件示例OrdererOrgs: - ...转载 2018-11-14 08:11:09 · 694 阅读 · 0 评论 -
Fabric 1.0源代码分析(1)BCCSP(区块链加密服务提供者)
Fabric 1.0源代码笔记 之 BCCSP(区块链加密服务提供者)1、BCCSP概述BCCSP,全称Blockchain Cryptographic Service Provider,即区块链加密服务提供者,为Fabric提供加密标准和算法的实现,包括哈希、签名、校验、加解密等。BCCSP通过MSP(即Membership Service Provider成员关系服务提供者)给核心功能和...转载 2018-11-09 18:22:08 · 1548 阅读 · 0 评论 -
14.Fabric 1.0源代码分析(14) flogging(Fabric日志系统)
Fabric 1.0源代码笔记 之 flogging(Fabric日志系统)1、flogging概述flogging,即fabric logging,对第三方日志包go-logging做了封装,供全局使用。go-logging地址:https://github.com/op/go-logging。flogging代码集中在common/flogging目录下,包括logging.go和grp...转载 2018-11-14 08:11:16 · 589 阅读 · 0 评论 -
15.Fabric 1.0源代码分析(15)gossip(流言算法)
Fabric 1.0源代码笔记 之 gossip(流言算法)1、gossip概述gossip,翻译为流言蜚语,即为一种可最终达到一致的算法。最终一致的另外的含义就是,不保证同时达到一致。gossip中有三种基本的操作:push - A节点将数据(key,value,version)及对应的版本号推送给B节点,B节点更新A中比自己新的数据pull - A仅将数据key,version推送...转载 2018-11-14 08:11:26 · 1278 阅读 · 0 评论 -
16.Fabric 1.0源代码分析(16)gossip(流言算法) #GossipServer(Gossip服务端)
Fabric 1.0源代码笔记 之 gossip(流言算法) #GossipServer(Gossip服务端)1、GossipServer概述GossipServer相关代码,分布在protos/gossip、gossip/comm目录下。目录结构如下:protos/gossip目录:message.pb.go,GossipClient接口定义及实现,GossipServer接口定义。...转载 2018-11-14 08:11:32 · 586 阅读 · 0 评论 -
17.Fabric 1.0源代码分析(17)gossip(流言算法) #deliverclient(deliver客户端)
Fabric 1.0源代码笔记 之 gossip(流言算法) #deliverclient(deliver客户端)1、deliverclient概述deliverclient代码分布在gossip/service、core/deliverservice目录下,目录结构如下:gossip/service目录:gossip_service.go,DeliveryServiceFactory...转载 2018-11-14 08:11:45 · 585 阅读 · 0 评论
分享