区块链教程Fabric1.0源代码分析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
相关文章
|
4月前
|
存储 供应链 监控
区块链技术在供应链管理中的应用与前景分析
随着信息化时代的到来,供应链管理面临着越来越多的挑战和机遇。本文主要探讨了区块链技术在供应链管理中的应用,以及未来的发展前景。通过对区块链技术的特点和优势进行分析,结合实际案例和趋势展望,展示了区块链技术在提升供应链透明度、效率和安全性方面的潜力,以及未来发展的可能方向。
|
4月前
|
安全 区块链
区块链积分商城系统开发详细指南//需求功能/指南教程/源码流程
Developing a blockchain points mall system involves multiple aspects such as blockchain technology, smart contracts, front-end development, and business logic design. The following is the general process for developing a blockchain points mall system
|
4月前
|
存储 算法 API
面向企业的区块链教程(一)(2)
面向企业的区块链教程(一)
81 6
|
12天前
|
安全 区块链
Massa Layer 1区块链 POS 安全性分析
Massa Labs 回应 Certik 的挑战,通过严格的数学分析证明了其权益证明系统的安全性,抵抗了潜在攻击者试图操纵随机抽签的企图。
51 0
Massa Layer 1区块链 POS 安全性分析
|
3月前
|
存储 安全 区块链
元宇宙与区块链技术的关系可以从多个角度进行阐述。以下是对这两者之间关系的详细分析
**元宇宙:虚拟世界融合现实元素,强调交互与沉浸;区块链:去中心化、安全的分布式账本。两者结合,区块链确保元宇宙中虚拟资产安全、支付高效、身份验证私密、治理透明,支撑其经济体系与用户信任,驱动未来发展。**
|
4月前
|
存储 供应链 安全
基于区块链技术的智能合约安全性分析
【5月更文挑战第31天】本文深入探讨了区块链技术中智能合约的安全性问题,通过分析现有智能合约的安全漏洞和攻击手段,提出了一系列增强智能合约安全性的策略。文章首先介绍了区块链和智能合约的基本概念,随后详细讨论了智能合约面临的安全挑战,包括代码漏洞、重入攻击等问题,并对比分析了不同平台下智能合约的安全性差异。最后,文章提出了一系列提高智能合约安全性的建议,旨在为区块链应用的健康发展提供参考。
|
4月前
|
存储 算法 安全
区块链系统开发技术规则分析
区块链核心技术包括:1) 哈希算法,利用单向函数将任意数据转化为固定长度代码,确保安全验证;2) 非对称加密,使用公钥和私钥一对进行加密解密,保证信息安全;3) 共识机制,如PoW、PoS、DPoS等,实现快速交易验证和确认;4) 智能合约,自动执行的可信代码,一旦编写即不可更改,用于自动化交易;5) 分布式存储,将数据分散存储在网络各处,涵盖结构化、非结构化和半结构化数据。
|
3月前
|
区块链
近期区块链市场趋势分析
**区块链市场趋势摘要:** - 跨链技术成熟,提升互操作性,助力区块链网络融合。 - DeFi持续繁荣,智能合约与AMM创新活跃,市场竞争驱动市场壮大。 - NFT市场多样化,拓展至游戏、音乐等领域,实用性增强。 - 区块链寻求绿色转型,通过PoS共识与绿色能源减少能耗。 - 技术模块化、可组合性提升,降低成本,增强系统灵活性。 这些趋势展现区块链潜力,带来机遇与挑战,促进行业创新。
|
4月前
|
供应链 区块链 数据安全/隐私保护
探索区块链技术在金融领域的应用与前景分析
本文将深入探讨区块链技术在金融领域的具体应用场景,分析其优势与挑战,并展望未来发展趋势。通过案例分析和技术解析,揭示区块链技术在金融行业中的革新意义及前景。
481 15
|
4月前
|
安全 区块链
区块链游戏系统开发步骤需求丨功能逻辑丨规则玩法丨指南教程丨源码详细
Developing blockchain game systems has been a highly anticipated field in recent years. By combining blockchain technology and game mechanics, players can enjoy a brand new gaming experience and higher game credibility.
下一篇
DDNS