区块链 节点专题SPV轻节点怎么用 chainmaker为例

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 节点专题SPV轻节点怎么用 chainmaker为例相关的知识,希望对你有一定的参考价值。

9.1.1. SPV轻节点概述

SPV轻节点在spvlight两种模式下,支持独立部署和作为组件集成的方式使用:

  • 独立部署,单独一个进程。在spv模式下,作为验证节点,通过同步区块头和部分其他数据,可对外提供交易存在性及有效性证明服务;在light模式下,作为轻节点,可同步区块及同组织内的交易。

  • 作为组件集成进其他项目,与其他项目在一个进程中。在spv模式下,调用启动以获取业务链的数据,可提供交易存在性及有效性证明功能;在light模式下,可同步和查询区块和同组织内的交易数据,并支持用户注册回调函数,在提交区块后将被执行。

SPV模式独立部署时,Client端通过grpc验证交易有效性示例

package usecase

import (
	"context"
	"log"

	"chainmaker.org/chainmaker/spv/v2/pb/api"
	"google.golang.org/grpc"
)

func useCase() 
	// 1.构造Client
	conn, err := grpc.Dial("127.0.0.1:12308", grpc.WithInsecure())
	if err != nil 
		log.Fatal(err)
		return
	
	client := api.NewRpcProverClient(conn)

	// 2.构造交易验证信息
	request := &api.TxValidationRequest
		ChainId: "chainId", // 链Id
		BlockHeight: 1,     // 交易所在区块高度
		//Index: -1,        // 此版本未验证该字段,不需要填写
		TxKey: "TxId",      // 交易Id
		ContractData: &api.ContractData
			Name: "contractName",  // 合约名
			Method: "method",              // 方法名
			Version: "version",            // 合约版本
			Params: []*api.KVPair
				Key: "argName1", Value: []byte("argValue1"),  // Key是所调用合约方法的参数名,Value是参数值
				Key: "argName2", Value: []byte("argValue2"),
				Key: "argName3", Value: []byte("argValue3"),
			,
			Extra: nil,    // 预留扩展字段
		,
		Timeout: 5000,     // 验证超时时间 
		Extra: nil,        // 预留扩展字段
	

	// 3.验证交易有效性
	response, err := client.ValidTransaction(context.Background(), request)
	if err != nil 
		log.Fatal(err)
	

	if int32(response.Code) != 0 
		log.Fatal(err)
	

	// 4.用户其他逻辑

9. SPV轻节点 部署和使用文档 — chainmaker-docs v2.2.1 documentation

以上是关于区块链 节点专题SPV轻节点怎么用 chainmaker为例的主要内容,如果未能解决你的问题,请参考以下文章

区块链 节点专题SPV轻节点是什么 chainmaker为例

区块链 节点专题SPV轻节点是什么 chainmaker为例

区块链 节点专题SPV轻节点实例-跨链 chainmaker为例

区块链 节点专题SPV轻节点实例-跨链 chainmaker为例

区块链 交易怎么验证是否被篡改 SPV验证

区块链鼻祖比特币之12:(SPV) 节点与Bloom 过滤器