# 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根命令入口及加载子命令](peer_main.md)
* [Fabric 1.0源代码笔记 之 Peer #peer node start命令实现](peer_node_start.md)
* [Fabric 1.0源代码笔记 之 Peer #peer channel命令及子命令实现](peer_channel.md)
* [Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现](peer_chaincode.md)
* [Fabric 1.0源代码笔记 之 Peer #EndorserClient(Endorser客户端)](EndorserClient.md)
* [Fabric 1.0源代码笔记 之 Peer #EndorserServer(Endorser服务端)](EndorserServer.md)
* [Fabric 1.0源代码笔记 之 Peer #BroadcastClient(Broadcast客户端)](BroadcastClient.md)
* [Fabric 1.0源代码笔记 之 Peer #committer(提交者)](committer.md)
## 2、Peer配置相关工具函数
```go
//为全局变量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结构体定义如下:
```go
type PeerID struct {
Name string
}
type PeerEndpoint struct {
Id *PeerID
Address string
}
//代码在protos/peer/peer.pb.go
```
SecureServerConfig结构体定义如下:
```go
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服务相关工具函数
```go
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
```

网址:http://www.qukuailianxueyuan.io/

欲领取造币技术与全套虚拟机资料

区块链技术交流QQ群:756146052  备注:CSDN

尹成学院微信:备注:CSDN

网址:http://www.qukuailianxueyuan.io/

欲领取造币技术与全套虚拟机资料

区块链技术交流QQ群:756146052  备注:CSDN

尹成学院微信:备注:CSDN

Fabric 1.0源代码分析(31) Peer相关推荐

  1. Fabric 1.0源代码分析(32)Peer #peer根命令入口及加载子命令

    # Fabric 1.0源代码笔记 之 Peer #peer根命令入口及加载子命令 ## 1.加载环境变量配置和配置文件 Fabric支持通过环境变量对部分配置进行更新,如:CORE_LOGGING_ ...

  2. Fabric 1.0源代码分析(37) Peer #DeliverClient(Deliver客户端)

    # Fabric 1.0源代码笔记 之 Peer #DeliverClient(Deliver客户端) ## 1.DeliverClient概述 DeliverClient代码分布如下: * peer ...

  3. Fabric 1.0源代码分析(32) Peer #peer node start命令实现

    # Fabric 1.0源代码笔记 之 Peer #peer node start命令实现 ## 1.peer node加载子命令start和status peer node加载子命令start和st ...

  4. Fabric 1.0源代码分析(34) Peer #peer chaincode命令及子命令实现

    # Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现 ## 1.peer chaincode install子命令实现(安装链码) ### 1.0.peer ...

  5. Fabric 1.0源代码分析(38) Peer #BroadcastClient(Broadcast客户端)

    # Fabric 1.0源代码笔记 之 Peer #BroadcastClient(Broadcast客户端) ## 1.BroadcastClient概述 BroadcastClient代码分布如下 ...

  6. Fabric 1.0源代码分析(33) Peer #peer channel命令及子命令实现

    # Fabric 1.0源代码笔记 之 Peer #peer channel命令及子命令实现 ## 1.peer channel create子命令实现(创建通道) ### 1.1.初始化Ordere ...

  7. Fabric 1.0源代码分析(15)gossip(流言算法)

    # Fabric 1.0源代码笔记 之 gossip(流言算法) ## 1.gossip概述 gossip,翻译为流言蜚语,即为一种可最终达到一致的算法.最终一致的另外的含义就是,不保证同时达到一致. ...

  8. Fabric 1.0源代码分析(22)Ledger #blkstorage(block文件存储)

    # Fabric 1.0源代码笔记 之 Ledger #blkstorage(block文件存储) ## blkstorage概述 blkstorage,默认目录/var/hyperledger/pr ...

  9. Fabric 1.0源代码分析(25) Orderer

    # Fabric 1.0源代码笔记 之 Orderer ## 1.Orderer概述 Orderer,为排序节点,对所有发往网络中的交易进行排序,将排序后的交易安排配置中的约定整理为块,之后提交给Co ...

最新文章

  1. Asp.net的Session和Cookie传值方式
  2. 用反向传导分子模型去计算基团的定位效应
  3. 【数据竞赛】消费金融场景下的用户购买预测冠军方案分享
  4. android builder模式 插件,如何在Kotlin中实现Builder模式?
  5. Pycharm中的Debug工具以及简单的使用方法
  6. proteus跑马灯仿真_不花费一分钱,实现跑马灯编程实验
  7. HDU 4548 美素数 素数题解
  8. MAPZONE GIS SDK接入Openlayers3之二——空间参考扩展
  9. AVPlayer设置从哪儿开始播放
  10. 《水经注全国POI兴趣点1.0》发布
  11. 从移动硬盘安装计算机系统文件,硬盘之前做成了移动硬盘,现在装回电脑上重装系统时分区认不到盘,怎么办?...
  12. 并查集+最小生成树(Kruskal)+最短路(Floyd、Dijkstra)
  13. HTML生成Word文档,可自定义Word文档页眉、页脚、分页。
  14. 攻防世界-杂项-simple_transfer
  15. opencv物体识别-识别水果
  16. 块存储、文件存储、对象存储
  17. NMock学习系列(三)--- NMock在DDD领域驱动的单元测试中的应用
  18. zynqmp Linux + 裸机 (A53-0 Linux,A53-1 2 3 裸机大数据量实时处理,R5-0 协议处理,R5-1 屏幕显示逻辑等)填坑笔记
  19. ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
  20. Python关于生日悖论分析

热门文章

  1. mysql可重复读和幻读的理解
  2. OpenGL三维模型+常见错误
  3. 机器人抓取 三维重建机器人抓取 三维物体匹配
  4. 防晒新时代,小红书美妆品牌营销趋势洞察
  5. java将汉字转成拼音首字母大写字母_java实现将汉字转为首字母、拼音
  6. 个人文件转移工具 v1.9.0.2107 系统目录迁移工具
  7. ubuntu双系统引导梅花_Ubuntu Windows双系统和USB无线网卡安装的正确方法
  8. 俄罗斯钓鱼四服务器未响应,俄罗斯钓鱼4《RussianFishing4》sbirolino钓组攻略
  9. JF-3型防火门氧指数测定仪
  10. 不懂编程也可以开发网站