ledger

一、ledger简介 1、ledger简介 ledger包支持在Fabric网络上的指定通道上启用账本查询。如果应用程序需要对多个通道进行账本查询,需要为每个通道的账本客户端创建一个单独实例。账本客户端支持以下查询:QueryInfo,QueryBlock,QueryBlockByHash,QueryBlockByTxID,QueryTransaction和QueryConfig。 官方文档:  https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/client/ledger

2、ledger使用流程 ledger使用的基本流程如下: A、准备通道上下文 B、创建分类帐客户端 C、查询分类帐 使用示例:

ctx := mockChannelProvider("mychannel")

c, err := New(ctx) if err != nil { fmt.Println("failed to create client") }

block, err := c.QueryBlock(1) if err != nil { fmt.Printf("failed to query block: %s\n", err) }

if block != nil { fmt.Println("Retrieved block #1") } // output: // Retrieved block #11. 二、ledger常用接口 1、获取账本客户端实例 type Client struct { ctx context.Channel filter fab.TargetFilter ledger *channel.Ledger verifier channel.ResponseVerifier discovery fab.DiscoveryService } func New(channelProvider context.ChannelProvider, opts ...ClientOption) (*Client, error) 1. 2. 3. 4. 5. 6. 7. 8. New返回账本客户端实例。账本客户端实例提供处理程序以查询指定通道上的各种信息。如果应用程序需要对多个通道进行账本查询,需要为每个通道的账本客户端创建一个单独实例。账本客户端仅支持指定查询。 使用示例:

ctx := mockChannelProvider("mychannel")

c, err := New(ctx) if err != nil { fmt.Println(err) }

if c != nil { fmt.Println("ledger client created") } // output: // ledger client created1. 2、查询账本 func (c *Client) QueryBlock(blockNumber uint64, options ...RequestOption) (*common.Block, error) QueryBlock根据区块编号查询区块的账本。 参数: blockNumber是必需的区块号 options包含可选的请求选项