内容简介:区块链教程Fabric1.0源代码分析Peer,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。在Fabric中,Peer(节点)是指在网络中负责接收交易请求、维护一致账本的各个fabric-peer实例。节点之间彼此通过gRPC通信。按角色划分,Peer包括两种类型:
区块链教程Fabric1.0源代码分析Peer,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Fabric 1.0源代码笔记 之 Peer
1、Peer概述
在Fabric中,Peer(节点)是指在网络中负责接收交易请求、维护一致账本的各个fabric-peer实例。节点之间彼此通过gRPC通信。
按角色划分,Peer包括两种类型:
- Endorser(背书者):负责对来自客户端的交易提案进行检查和背书。
- Committer(提交者):负责检查交易请求,执行交易并维护区块链和账本结构。
Peer核心代码在peer目录下,其他相关代码分布在core/peer和protos/peer目录下。目录结构如下:
- peer目录:
* main.go,peer命令入口。
* node目录,peer node命令及子命令peer node start和peer node status实现。
* node.go,peer node命令入口。
* start.go,peer node start子命令实现。
* status.go,peer node status子命令实现。
* channel目录,peer channel命令及子命令实现。
* chaincode目录,peer chaincode命令及子命令实现。
* clilogging目录,peer clilogging命令及子命令实现。
* version目录,peer version命令实现。
* common目录,peer相关通用代码。
* common.go,部分公共函数。
* ordererclient.go,BroadcastClient接口及实现。
* gossip目录,gossip最终一致性算法相关代码。
- core/peer目录:
* config.go,Peer配置相关 工具 函数。
* peer.go,Peer服务相关工具函数。
- core/endorser目录:背书服务端。
如下为分节说明Peer代码:
- Fabric 1.0源代码笔记 之 Peer #peer根命令入口及加载子命令
- Fabric 1.0源代码笔记 之 Peer #peer node start命令实现
- Fabric 1.0源代码笔记 之 Peer #peer channel命令及子命令实现
- Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现
- Fabric 1.0源代码笔记 之 Peer #EndorserClient(Endorser客户端)
- Fabric 1.0源代码笔记 之 Peer #EndorserServer(Endorser服务端)
- Fabric 1.0源代码笔记 之 Peer #BroadcastClient(Broadcast客户端)
- Fabric 1.0源代码笔记 之 Peer #committer(提交者)
2、Peer配置相关工具函数
//为全局变量localAddress和peerEndpoint赋值 func CacheConfiguration() (err error) func cacheConfiguration() //调用CacheConfiguration() //获取localAddress func GetLocalAddress() (string, error) //获取peerEndpoint func GetPeerEndpoint() (*pb.PeerEndpoint, error) //获取Peer安全配置 func GetSecureConfig() (comm.SecureServerConfig, error) //代码在core/peer/config.go
PeerEndpoint结构体定义如下:
type PeerID struct { Name string } type PeerEndpoint struct { Id *PeerID Address string } //代码在protos/peer/peer.pb.go
SecureServerConfig结构体定义如下:
type SecureServerConfig struct { ServerCertificate []byte //签名公钥,取自peer.tls.cert.file ServerKey []byte //签名私钥,取自peer.tls.key.file ServerRootCAs [][]byte //根CA证书,取自peer.tls.rootcert.file ClientRootCAs [][]byte UseTLS bool //是否启用TLS,取自peer.tls.enabled RequireClientCert bool } //代码在core/comm/server.go
3、Peer服务相关工具函数
func (cs *chainSupport) Ledger() ledger.PeerLedger func (cs *chainSupport) GetMSPIDs(cid string) []string func MockInitialize() func MockSetMSPIDGetter(mspIDGetter func(string) []string) func Initialize(init func(string)) //Peer初始化,并部署系统链码 func InitChain(cid string) func getCurrConfigBlockFromLedger(ledger ledger.PeerLedger) (*common.Block, error) func createChain(cid string, ledger ledger.PeerLedger, cb *common.Block) error func CreateChainFromBlock(cb *common.Block) error func MockCreateChain(cid string) error func GetLedger(cid string) ledger.PeerLedger func GetPolicyManager(cid string) policies.Manager func GetCurrConfigBlock(cid string) *common.Block func updateTrustedRoots(cm configtxapi.Manager) func buildTrustedRootsForChain(cm configtxapi.Manager) func GetMSPIDs(cid string) []string func SetCurrConfigBlock(block *common.Block, cid string) error func NewPeerClientConnection() (*grpc.ClientConn, error) func GetLocalIP() string func NewPeerClientConnectionWithAddress(peerAddress string) (*grpc.ClientConn, error) func GetChannelsInfo() []*pb.ChannelInfo //构造type channelPolicyManagerGetter struct{} func NewChannelPolicyManagerGetter() policies.ChannelPolicyManagerGetter func (c *channelPolicyManagerGetter) Manager(channelID string) (policies.Manager, bool) func CreatePeerServer(listenAddress string,secureConfig comm.SecureServerConfig) (comm.GRPCServer, error) func GetPeerServer() comm.GRPCServer //代码在core/peer/peer.go
以上所述就是小编给大家介绍的《兄弟连区块链教程Fabric1.0源代码分析Peer》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 区块链教程Fabric1.0源代码分析blockfile区块文件存储2
- 兄弟连区块链教程Fabric1.0源代码分析blockfile区块文件存储一
- Fabric 1.0源代码分析(2) blockfile(区块文件存储)
- 区块链教程Fabric1.0源代码分析configtx#genesis
- 区块链教程Fabric1.0源代码分析Ledger(账本)二
- 区块链教程Fabric1.0源代码分析Ledger(账本)一
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript高级程序设计:第2版
Nicholas Zakas / 李松峰、曹力 / 人民邮电出版社 / 2010-7 / 89.00元
《JavaScript高级程序设计(第2版)》在上一版基础上进行了大幅度更新和修订,融入了近几年来JavaScript应用发展的最新成果,几乎涵盖了所有需要理解的重要概念和最新的JavaScript应用成果。从颇具深度的JavaScript语言基础到作用域(链),从引用类型到面向对象编程,从极其灵活的匿名函数到闭包的内部机制,从浏览器对象模型(BOM)、文档对象模型(DOM)到基于事件的Web脚本......一起来看看 《JavaScript高级程序设计:第2版》 这本书的介绍吧!