chainmaker_sdk_go

package module
v0.0.0-...-f78fda5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2021 License: Apache-2.0 Imports: 44 Imported by: 2

README

ChainMaker Go SDK 接口说明 v2.0.0

1 用户合约接口

1.1 创建合约待签名payload生成

参数说明

  • contractName: 合约名
  • version: 版本号
  • byteCode: 支持传入合约二进制文件路径或Hex或Base64编码的二进制内容
  • runtime: 合约运行环境
  • kvs: 合约初始化参数
CreateContractCreatePayload(contractName, version, byteCode string, runtime common.RuntimeType,
	kvs []*common.KeyValuePair) (*common.Payload, error)
1.2 升级合约待签名payload生成

参数说明

  • contractName: 合约名
  • version: 版本号
  • byteCode: 支持传入合约二进制文件路径或Hex或Base64编码的二进制内容
  • runtime: 合约运行环境
  • kvs: 合约升级参数
CreateContractUpgradePayload(contractName, version, byteCode string, runtime common.RuntimeType,
	kvs []*common.KeyValuePair) (*common.Payload, error)
1.3 冻结合约payload生成

参数说明

  • contractName: 合约名
CreateContractFreezePayload(contractName string) (*common.Payload, error)
1.4 解冻合约payload生成

参数说明

  • contractName: 合约名
CreateContractUnfreezePayload(contractName string) (*common.Payload, error)
1.5 吊销合约payload生成

参数说明

  • contractName: 合约名
CreateContractRevokePayload(contractName string) (*common.Payload, error)
1.6 合约管理获取Payload签名

参数说明

  • payload: 待签名payload
SignContractManagePayload(payload *common.Payload) (*common.EndorsementEntry, error)
1.7 发送合约管理请求(创建、更新、冻结、解冻、吊销)

参数说明

  • payload: 交易payload
  • endorsers: 背书签名信息列表
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
  • withSyncResult: 是否同步获取交易执行结果 当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo 当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
SendContractManageRequest(payload *common.Payload, endorsers []*common.EndorsementEntry, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)
1.8 合约调用

参数说明

  • contractName: 合约名称
  • method: 合约方法
  • txId: 交易ID 格式要求:长度为64字节,字符在a-z0-9 可为空,若为空字符串,将自动生成txId
  • kvs: 合约参数
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
  • withSyncResult: 是否同步获取交易执行结果 当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo 当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
InvokeContract(contractName, method, txId string, kvs []*common.KeyValuePair, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)
1.9 合约查询接口调用

参数说明

  • contractName: 合约名称
  • method: 合约方法
  • kvs: 合约参数
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
QueryContract(contractName, method string, kvs []*common.KeyValuePair, timeout int64) (*common.TxResponse, error)
1.10 构造待发送交易体

参数说明

  • contractName: 合约名称
  • method: 合约方法
  • txId: 交易ID 格式要求:长度为64字节,字符在a-z0-9 可为空,若为空字符串,将自动生成txId
  • kvs: 合约参数
GetTxRequest(contractName, method, txId string, kvs []*common.KeyValuePair) (*common.TxRequest, error)
1.11 发送已构造好的交易体

参数说明

  • txRequest: 已构造好的交易体
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
  • withSyncResult: 是否同步获取交易执行结果 当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo 当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
SendTxRequest(txRequest *common.TxRequest, timeout int64, withSyncResult bool) (*common.TxResponse, error)

2 系统合约接口

2.1 根据交易Id查询交易

参数说明

  • txId: 交易ID
GetTxByTxId(txId string) (*common.TransactionInfo, error)
2.2 根据区块高度查询区块

参数说明

  • blockHeight: 指定区块高度,若为-1,将返回最新区块
  • withRWSet: 是否返回读写集
GetBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)
2.3 根据区块高度查询完整区块

参数说明

  • blockHeight: 指定区块高度,若为-1,将返回最新区块
GetFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)
2.4 根据区块哈希查询区块

参数说明

  • blockHash: 指定区块Hash
  • withRWSet: 是否返回读写集
GetBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error)
2.5 根据交易Id查询区块

参数说明

  • txId: 交易ID
  • withRWSet: 是否返回读写集
GetBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)
2.6 查询最新的配置块

参数说明

  • withRWSet: 是否返回读写集
GetLastConfigBlock(withRWSet bool) (*common.BlockInfo, error)
2.7 查询最新区块

参数说明

  • withRWSet: 是否返回读写集
GetLastBlock(withRWSet bool) (*common.BlockInfo, error)
2.8 查询节点加入的链信息
  • 返回ChainId清单
GetNodeChainList() (*discovery.ChainList, error)
2.9 查询链信息
  • 包括:当前链最新高度,链节点信息
GetChainInfo() (*discovery.ChainInfo, error)
2.10 根据交易Id获取区块高度

参数说明

  • txId: 交易ID
GetBlockHeightByTxId(txId string) (uint64, error)
2.11 根据区块Hash获取区块高度

参数说明

  • blockHash: 指定区块Hash
GetBlockHeightByHash(blockHash string) (uint64, error)
2.12 查询当前最新区块高度
GetCurrentBlockHeight() (uint64, error)
2.13 根据区块高度查询区块头

参数说明

  • blockHeight: 指定区块高度,若为-1,将返回最新区块头
GetBlockHeaderByHeight(blockHeight uint64) (*common.BlockHeader, error)
2.14 系统合约调用

参数说明

  • contractName: 合约名称
  • method: 合约方法
  • txId: 交易ID 格式要求:长度为64字节,字符在a-z0-9 可为空,若为空字符串,将自动生成txId
  • kvs: 合约参数
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
  • withSyncResult: 是否同步获取交易执行结果 当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo 当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
InvokeSystemContract(contractName, method, txId string, kvs []*common.KeyValuePair, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)
2.15 系统合约查询接口调用

参数说明

  • contractName: 合约名称
  • method: 合约方法
  • kvs: 合约参数
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
QuerySystemContract(contractName, method string, kvs []*common.KeyValuePair, timeout int64) (*common.TxResponse, error)

3 链配置接口

3.1 查询最新链配置
GetChainConfig() (*config.ChainConfig, error)
3.2 根据指定区块高度查询最近链配置

参数说明

  • blockHeight: 指定区块高度 如果当前区块就是配置块,直接返回当前区块的链配置
GetChainConfigByBlockHeight(blockHeight uint64) (*config.ChainConfig, error)
3.3 查询最新链配置序号Sequence
  • 用于链配置更新
GetChainConfigSequence() (uint64, error)
3.4 链配置更新获取Payload签名

参数说明

  • payload: 待签名payload
SignChainConfigPayload(payload *common.Payload) (*common.EndorsementEntry, error)
3.5 发送链配置更新请求

参数说明

  • payload: 待签名payload
  • endorsers: 背书签名信息列表
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
  • withSyncResult: 是否同步获取交易执行结果 当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo 当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
SendChainConfigUpdateRequest(payload *common.Payload, endorsers []*common.EndorsementEntry, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)

以下CreateChainConfigXXXXXXPayload方法,用于生成链配置待签名payload,在进行多签收集后(需机构Admin权限账号签名),用于链配置的更新

3.6 更新Core模块待签名payload生成

参数说明

  • txSchedulerTimeout: 交易调度器从交易池拿到交易后, 进行调度的时间,其值范围为(0, 60], 若设置为0,则抛出错误
  • txSchedulerValidateTimeout: 交易调度器从区块中拿到交易后, 进行验证的超时时间,其值范围为(0, 60], 若设置为0,则抛出错误
CreateChainConfigCoreUpdatePayload(txSchedulerTimeout, txSchedulerValidateTimeout uint64) (*common.Payload, error)
3.7 更新Core模块待签名payload生成

参数说明

  • txTimestampVerify: 是否需要开启交易时间戳校验
  • (以下参数,若无需修改,请置为-1)
  • txTimeout: 交易时间戳的过期时间(秒),其值范围为[600, +∞)
  • blockTxCapacity: 区块中最大交易数,其值范围为(0, +∞]
  • blockSize: 区块最大限制,单位MB,其值范围为(0, +∞]
  • blockInterval: 出块间隔,单位:ms,其值范围为[10, +∞]
CreateChainConfigBlockUpdatePayload(txTimestampVerify bool, txTimeout, blockTxCapacity, blockSize,
	blockInterval uint32) (*common.Payload, error)
3.8 添加信任组织根证书待签名payload生成

参数说明

  • trustRootOrgId: 组织Id
  • trustRootCrt: 根证书
CreateChainConfigTrustRootAddPayload(trustRootOrgId string, trustRootCrt []string) (*common.Payload, error)
3.9 更新信任组织根证书待签名payload生成

参数说明

  • trustRootOrgId: 组织Id
  • trustRootCrt: 根证书
CreateChainConfigTrustRootUpdatePayload(trustRootOrgId string, trustRootCrt []string) (*common.Payload, error)
3.10 删除信任组织根证书待签名payload生成

参数说明

  • trustRootOrgId: 组织Id
CreateChainConfigTrustRootDeletePayload(trustRootOrgId string) (*common.Payload, error)
3.11 添加信任成员证书待签名payload生成

参数说明

  • trustMemberOrgId: 组织Id
  • trustMemberNodeId: 节点Id
  • trustMemberRole: 成员角色
  • trustMemberInfo: 成员信息内容
CreateChainConfigTrustMemberAddPayload(trustMemberOrgId, trustMemberNodeId,
	trustMemberRole, trustMemberInfo string) (*common.Payload, error)
3.12 删除信任成员证书待签名payload生成

参数说明

  • trustMemberInfo: 成员信息内容
CreateChainConfigTrustMemberDeletePayload(trustMemberInfo string) (*common.Payload, error)
3.13 添加权限配置待签名payload生成

参数说明

  • permissionResourceName: 权限名
  • policy: 权限规则
CreateChainConfigPermissionAddPayload(permissionResourceName string,
	policy *accesscontrol.Policy) (*common.Payload, error)
3.14 更新权限配置待签名payload生成

参数说明

  • permissionResourceName: 权限名
  • policy: 权限规则
CreateChainConfigPermissionUpdatePayload(permissionResourceName string,
	policy *accesscontrol.Policy) (*common.Payload, error)
3.15 删除权限配置待签名payload生成

参数说明

  • permissionResourceName: 权限名
CreateChainConfigPermissionDeletePayload(permissionResourceName string) (*common.Payload, error)
3.16 添加共识节点地址待签名payload生成

参数说明

  • nodeOrgId: 节点组织Id
  • nodeIds: 节点Id
CreateChainConfigConsensusNodeIdAddPayload(nodeOrgId string, nodeIds []string) (*common.Payload, error)
3.17 更新共识节点地址待签名payload生成

参数说明

  • nodeOrgId: 节点组织Id
  • nodeOldNodeId: 节点原Id
  • nodeNewNodeId: 节点新Id
CreateChainConfigConsensusNodeIdUpdatePayload(nodeOrgId, nodeOldNodeId, nodeNewNodeId string) (*common.Payload, error)
3.18 删除共识节点地址待签名payload生成

参数说明

  • nodeOrgId: 节点组织Id
  • nodeId: 节点Id
CreateChainConfigConsensusNodeIdDeletePayload(nodeOrgId, nodeId string) (*common.Payload, error)
3.19 添加共识节点待签名payload生成

参数说明

  • nodeOrgId: 节点组织Id
  • nodeIds: 节点Id
CreateChainConfigConsensusNodeOrgAddPayload(nodeOrgId string, nodeIds []string) (*common.Payload, error)
3.20 更新共识节点待签名payload生成

参数说明

  • nodeOrgId: 节点组织Id
  • nodeIds: 节点Id
CreateChainConfigConsensusNodeOrgUpdatePayload(nodeOrgId string, nodeIds []string) (*common.Payload, error)
3.21 删除共识节点待签名payload生成

参数说明

  • nodeOrgId: 节点组织Id
CreateChainConfigConsensusNodeOrgDeletePayload(nodeOrgId string) (*common.Payload, error)
3.22 添加共识扩展字段待签名payload生成

参数说明

  • kvs: 字段key、value对
CreateChainConfigConsensusExtAddPayload(kvs []*common.KeyValuePair) (*common.Payload, error)
3.23 添加共识扩展字段待签名payload生成

参数说明

  • kvs: 字段key、value对
CreateChainConfigConsensusExtUpdatePayload(kvs []*common.KeyValuePair) (*common.Payload, error)
3.24 添加共识扩展字段待签名payload生成

参数说明

  • keys: 待删除字段
CreateChainConfigConsensusExtDeletePayload(keys []string) (*common.Payload, error)

4 证书管理接口

4.1 用户证书添加

参数说明

  • 在common.TxResponse.ContractResult.Result字段中返回成功添加的certHash
AddCert() (*common.TxResponse, error)
4.2 用户证书删除

参数说明

  • certHashes: 证书Hash列表
DeleteCert(certHashes []string) (*common.TxResponse, error)
4.3 用户证书查询

参数说明

  • certHashes: 证书Hash列表 返回值说明
  • *common.CertInfos: 包含证书Hash和证书内容的列表
QueryCert(certHashes []string) (*common.CertInfos, error)
4.4 获取用户证书哈希
GetCertHash() ([]byte, error)
4.5 生成证书管理操作Payload(三合一接口)

参数说明

  • method: CERTS_FROZEN(证书冻结)/CERTS_UNFROZEN(证书解冻)/CERTS_REVOCATION(证书吊销)
  • kvs: 证书管理操作参数
CreateCertManagePayload(method string, kvs []*common.KeyValuePair) *common.Payload
4.6 生成证书冻结操作Payload

参数说明

  • certs: X509证书列表
CreateCertManageFrozenPayload(certs []string) *common.Payload
4.7 生成证书解冻操作Payload

参数说明

  • certs: X509证书列表
CreateCertManageUnfrozenPayload(certs []string) *common.Payload
4.8 生成证书吊销操作Payload

参数说明

  • certs: X509证书列表
CreateCertManageRevocationPayload(certCrl string) *common.Payload
4.9 待签payload签名

一般需要使用具有管理员权限账号进行签名 参数说明

  • payload: 待签名payload
SignCertManagePayload(payload *common.Payload) (*common.EndorsementEntry, error)
4.10 发送证书管理请求(证书冻结、解冻、吊销)

参数说明

  • payload: 交易payload
  • endorsers: 背书签名信息列表
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
  • withSyncResult: 是否同步获取交易执行结果 当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo 当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
SendCertManageRequest(payload *common.Payload, endorsers []*common.EndorsementEntry, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)

5 消息订阅接口

5.1 区块订阅

参数说明

  • startBlock: 订阅起始区块高度,若为-1,表示订阅实时最新区块
  • endBlock: 订阅结束区块高度,若为-1,表示订阅实时最新区块
  • withRwSet: 是否返回读写集
  • onlyHeader: 若设置为true,将忽略withRwSet选项,仅返回区块头(common.BlockHeader),若设置为false,将返回common.BlockInfo
SubscribeBlock(ctx context.Context, startBlock, endBlock int64, withRWSet, onlyHeader bool) (<-chan interface{}, error)
5.2 交易订阅

参数说明

  • startBlock: 订阅起始区块高度,若为-1,表示订阅实时最新区块
  • endBlock: 订阅结束区块高度,若为-1,表示订阅实时最新区块
  • contractName :指定订阅指定合约的交易,可以传用户合约名称或系统合约名称,若为空,表示订阅所有合约的交易
  • txIds: 订阅txId列表,若为空,表示订阅所有txId
SubscribeTx(ctx context.Context, startBlock, endBlock int64, contractName string,
	txIds []string) (<-chan interface{}, error)
5.3 合约事件订阅

参数说明

  • topic :指定订阅主题
  • contractName :指定订阅的合约名称
SubscribeContractEvent(ctx context.Context, topic string, contractName string) (<-chan interface{}, error)
5.4 多合一订阅

参数说明

  • txType: 订阅交易类型,目前已支持:区块消息订阅(common.TxType_SUBSCRIBE_BLOCK_INFO)、交易消息订阅(common.TxType_SUBSCRIBE_TX_INFO)
  • payloadBytes: 消息订阅参数payload
Subscribe(ctx context.Context, payloadBytes *common.Payload) (<-chan interface{}, error)

6 证书压缩

开启证书压缩可以减小交易包大小,提升处理性能

6.1 启用压缩证书功能
EnableCertHash() error
6.2 停用压缩证书功能
DisableCertHash() error

7 层级属性加密类接口

注意:层级属性加密模块 Id 使用 / 作为分隔符,例如: Org1/Ou1/Member1

7.1 生成层级属性参数初始化交易 payload

参数说明

  • orgId: 参与方组织 id
  • hibeParams: 传入序列化后的hibeParams byte数组
CreateHibeInitParamsTxPayloadParams(orgId string, hibeParams []byte) ([]*common.KeyValuePair, error)
7.2 生成层级属性加密交易 payload,加密参数已知

参数说明

  • plaintext: 待加密交易消息明文
  • receiverIds: 消息接收者 id 列表,需和 paramsList 一一对应
  • paramsBytesList: 消息接收者对应的加密参数,需和 receiverIds 一一对应
  • txId: 以交易 Id 作为链上存储 hibeMsg 的 Key, 如果不提供存储的信息可能被覆盖
  • keyType: 对明文进行对称加密的方法,请传入 common 中 crypto 包提供的方法,目前提供AES和SM4两种方法
CreateHibeTxPayloadParamsWithHibeParams(plaintext []byte, receiverIds []string, paramsBytesList [][]byte, txId string,
	keyType crypto.KeyType) ([]*common.KeyValuePair, error)
7.3 生成层级属性加密交易 payload,参数由链上查询得出

参数说明

  • contractName: 合约名
  • queryParamsMethod: 链上查询 hibe.Params 的合约方法
  • plaintext: 待加密交易消息明文
  • receiverIds: 消息接收者 id 列表,需和 paramsList 一一对应
  • paramsList: 消息接收者对应的加密参数,需和 receiverIds 一一对应
  • receiverOrgIds: 链上查询 hibe Params 的 Key 列表,需要和 receiverIds 一一对应
  • txId: 以交易 Id 作为链上存储 hibeMsg 的 Key, 如果不提供存储的信息可能被覆盖
  • keyType: 对明文进行对称加密的方法,请传入 common 中 crypto 包提供的方法,目前提供AES和SM4两种方法
  • timeout: (内部查询 HibeParams 的)超时时间,单位:s,若传入-1,将使用默认超时时间:10s
CreateHibeTxPayloadParamsWithoutHibeParams(contractName, queryParamsMethod string, plaintext []byte,
	receiverIds []string, receiverOrgIds []string, txId string, keyType crypto.KeyType,
	timeout int64) ([]*common.KeyValuePair, error)
7.4 查询某一组织的加密公共参数,返回其序列化后的byte数组

参数说明

  • contractName: 合约名
  • method: 查询的合约方法名
  • orgId: 参与方 id
  • timeout: 查询超时时间,单位:s,若传入-1,将使用默认超时时间:10s
QueryHibeParamsWithOrgId(contractName, method, orgId string, timeout int64) ([]byte, error)
7.5 已知交易id,根据私钥解密密文交易

参数说明

  • localId: 本地层级属性加密 id
  • hibeParams: hibeParams 序列化后的byte数组
  • hibePrivKey: hibe私钥序列化后的byte数组
  • txId: 层级属性加密交易 id
  • keyType: 对加密信息进行对称解密的方法,请和加密时使用的方法保持一致,请传入 common 中 crypto 包提供的方法,目前提供AES和SM4两种方法
DecryptHibeTxByTxId(localId string, hibeParams []byte, hibePrvKey []byte, txId string,
	keyType crypto.KeyType) ([]byte, error)

8 数据归档接口

(注意:请使用归档工具cmc进行归档操作,以下接口是归档原子接口,并不包括归档完整流程)

8.1 获取已归档区块高度

参数说明

  • 输出已归档的区块高度
GetArchivedBlockHeight() (uint64, error)
8.2 构造数据归档区块Payload

参数说明

  • targetBlockHeight: 归档目标区块高度
CreateArchiveBlockPayload(targetBlockHeight uint64) (*common.Payload, error)
8.3 构造归档数据恢复Payload

参数说明

  • fullBlock: 完整区块数据(对应结构:store.BlockWithRWSet)
CreateRestoreBlockPayload(fullBlock []byte) (*common.Payload, error)
8.4 获取归档操作Payload签名

参数说明

  • payload: 指向payload对象的指针
SignArchivePayload(payload *common.Payload) (*common.Payload, error)
8.5 发送归档请求

参数说明

  • payload: 指向payload对象的指针
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
SendArchiveBlockRequest(payload *common.Payload, timeout int64) (*common.TxResponse, error)
8.6 归档数据恢复

参数说明

  • payload: 指向payload对象的指针
  • timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
SendRestoreBlockRequest(payload *common.Payload, timeout int64) (*common.TxResponse, error)
8.7 根据交易Id查询已归档交易

参数说明

  • txId: 交易ID
GetArchivedTxByTxId(txId string) (*common.TransactionInfo, error)
8.8 根据区块高度查询已归档区块

参数说明

  • blockHeight: 指定区块高度
  • withRWSet: 是否返回读写集
GetArchivedBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)
8.9 根据区块高度查询已归档完整区块(包含:区块数据、读写集、合约事件日志)

参数说明

  • blockHeight: 指定区块高度
GetArchivedFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)
8.10 根据区块哈希查询已归档区块

参数说明

  • blockHash: 指定区块Hash
  • withRWSet: 是否返回读写集
GetArchivedBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error)
8.11 根据交易Id查询已归档区块

参数说明

  • txId: 交易ID
  • withRWSet: 是否返回读写集
GetArchivedBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)

9 隐私计算系统合约接口

9.1 保存隐私合约计算结果,包括合约部署

参数说明

  • contractName: 合约名称
  • contractVersion: 合约版本号
  • isDeployment: 是否是部署合约
  • codeHash: 合约字节码hash值
  • reportHash: Enclave report hash值
  • result: 隐私合约执行结果
  • codeHeader: solodity合部署合约时合约字节码的header数据
  • txId: 交易Id
  • rwSet: 隐私合约执行产生的读写集
  • sign: Enclave对执行结果数据的结果签名
  • events: 合约执行产生的事件
  • privateReq: 用户调用隐私计算请求时的request序列化字节数组
  • withSyncResult: 是否同步返回调用结果
  • timeout: 发送交易的超时时间
SaveData(contractName string, contractVersion string, isDeployment bool, codeHash []byte, reportHash []byte,
	result *common.ContractResult, codeHeader []byte, txId string, rwSet *common.TxRWSet, sign []byte,
	events *common.StrSlice, privateReq []byte, withSyncResult bool, timeout int64) (*common.TxResponse, error)
9.2 保存远程证明

参数说明

  • proof: 远程证明
  • txId: 交易Id
  • withSyncResult: 是否同步返回调用结果
  • timeout: 交易发送超时时间
SaveRemoteAttestationProof(proof, txId string, withSyncResult bool, timeout int64) (*common.TxResponse, error)
9.3 构建上传Enclave CA证书的报文

参数说明

  • caCert: Enclave CA证书
  • txId: 交易Id
CreateSaveEnclaveCACertPayload(caCert, txId string) (*common.Payload, error)
9.4 获取Enclave CA证书
GetEnclaveCACert() ([]byte, error)
9.5 隐私计算调用者权限验证

参数说明

  • payload: 用户签名验证的payload内容
  • orgIds: 组织Id的slice,注意和signPairs里面SignInfo的证书顺序一致
  • signPairs: 用户多签的签名和证书slice
CheckCallerCertAuth(payload string, orgIds []string, signPairs []*syscontract.SignInfo) (*common.TxResponse, error)
9.6 获取Enclave的report

参数说明

  • enclaveId: Enclave的Id,当前固定为
GetEnclaveReport(enclaveId string) ([]byte, error)
9.7 获取隐私证明材

参数说明

  • enclaveId: Enclave的Id,当前固定为
GetEnclaveProof(enclaveId string) ([]byte, error)
9.8 获取隐私合约计算结果

参数说明

  • contractName: 合约名称
  • key: 计算结果对应的键值
GetData(contractName, key string) ([]byte, error)
9.9 保存隐私目录

参数说明

  • orderId: 隐私目录的主键,供以后查询使用
  • txId: 交易ID
  • privateDir:
  • withSyncResult: 是否同步等待交易结果
  • timeout: 等待交易结果的超时时间
SaveDir(orderId, txId string, privateDir *common.StrSlice, withSyncResult bool,
	timeout int64) (*common.TxResponse, error)
9.10 获取用户部署的隐私合约

参数说明

  • contractName: 合约名称
  • codeHash: 代码哈希
GetContract(contractName, codeHash string) (*common.PrivateGetContract, error)
9.11 获取用户的隐私目录

参数说明

  • orderId: 隐私目录的主键
GetDir(orderId string) ([]byte, error)
9.12 构建上传隐私计算环境的report的报文

参数说明

  • enclaveId: 隐私计算环境的标识
  • report: 隐私计算环境的report
  • txId: 交易ID
CreateSaveEnclaveReportPayload(enclaveId, report, txId string) (*common.Payload, error)
9.13 获取隐私计算环境的加密公钥

参数说明

  • enclaveId: 隐私计算环境的标识
GetEnclaveEncryptPubKey(enclaveId string) ([]byte, error)
9.14 获取隐私计算环境的验签公钥

参数说明

  • enclaveId: 隐私计算环境的标识
GetEnclaveVerificationPubKey(enclaveId string) ([]byte, error)
9.15 获取隐私证明材料中的Challenge

参数说明

  • enclaveId: 隐私计算环境的标识
GetEnclaveChallenge(enclaveId string) ([]byte, error)
9.16 获取隐私证明材料中的Signature

参数说明

  • enclaveId: 隐私计算环境的标识
GetEnclaveSignature(enclaveId string) ([]byte, error)

10 系统类接口

10.1 SDK停止接口

关闭连接池连接,释放资源

Stop() error
10.2 获取链版本
GetChainMakerServerVersion() (string, error)

Documentation

Overview

Copyright (C) THL A29 Limited, a Tencent company. All rights reserved.

SPDX-License-Identifier: Apache-2.0

Index

Constants

View Source
const (
	// MaxConnCnt 单ChainMaker节点最大连接数
	MaxConnCnt = 1024
	// DefaultGetTxTimeout 查询交易超时时间
	DefaultGetTxTimeout = 10
	// DefaultSendTxTimeout 发送交易超时时间
	DefaultSendTxTimeout = 10
	// DefaultRpcClientMaxReceiveMessageSize 默认grpc客户端接受最大值 4M
	DefaultRpcClientMaxReceiveMessageSize = 4
)
View Source
const (
	// HibeMsgKey as a payload parameter
	HibeMsgKey = "hibe_msg"

	// HibeMsgIdKey Key as a hibeMsgMap parameter
	HibeMsgIdKey = "tx_id"

	// HibeMsgCipherTextKey Key as a hibeMsgMap parameter
	// The value of the key (CT) is the hibe_msg's message (ciphertext)
	HibeMsgCipherTextKey = "CT"

	// HibeParamsKey The value of the key (org_id) is the unique identifier of a HIBE params
	HibeParamsKey = "org_id"

	// HibeParamsValueKey The value of the key (params) is the Hibe's params
	HibeParamsValueKey = "params"
)

hibe msg's Keys

View Source
const ContractResultCode_OK uint32 = 0 //todo pb create const

Variables

This section is empty.

Functions

func GetEVMAddressFromCertBytes

func GetEVMAddressFromCertBytes(certBytes []byte) (string, error)

func GetEVMAddressFromCertPath

func GetEVMAddressFromCertPath(certFilePath string) (string, error)

func SignPayload

func SignPayload(keyBytes, crtBytes []byte, payload *common.Payload) (*common.EndorsementEntry, error)

func SignPayloadWithPath

func SignPayloadWithPath(keyFilePath, crtFilePath string, payload *common.Payload) (*common.EndorsementEntry, error)

Types

type ArchiveConfig

type ArchiveConfig struct {
	// contains filtered or unexported fields
}

ArchiveConfig Archive配置

func NewArchiveConfig

func NewArchiveConfig(opts ...ArchiveOption) *ArchiveConfig

type ArchiveOption

type ArchiveOption func(config *ArchiveConfig)

func WithSecretKey

func WithSecretKey(key string) ArchiveOption

WithSecretKey 设置Archive的secret key

type ChainClient

type ChainClient struct {
	// contains filtered or unexported fields
}

func CreateChainClient

func CreateChainClient(pool ConnectionPool, userCrtBytes, privKey, userCrtHash []byte, orgId, chainId string,
	enabledCrtHash int) (*ChainClient, error)

func NewChainClient

func NewChainClient(opts ...ChainClientOption) (*ChainClient, error)

func (*ChainClient) AddCert

func (cc *ChainClient) AddCert() (*common.TxResponse, error)

func (*ChainClient) CheckCallerCertAuth

func (cc *ChainClient) CheckCallerCertAuth(payload string, orgIds []string, signPairs []*syscontract.SignInfo) (
	*common.TxResponse, error)

func (*ChainClient) CheckNewBlockChainConfig

func (cc *ChainClient) CheckNewBlockChainConfig() error

func (*ChainClient) CreateArchiveBlockPayload

func (cc *ChainClient) CreateArchiveBlockPayload(targetBlockHeight uint64) (*common.Payload, error)

func (*ChainClient) CreateCertManageFrozenPayload

func (cc *ChainClient) CreateCertManageFrozenPayload(certs []string) *common.Payload

func (*ChainClient) CreateCertManagePayload

func (cc *ChainClient) CreateCertManagePayload(method string, kvs []*common.KeyValuePair) *common.Payload

func (*ChainClient) CreateCertManageRevocationPayload

func (cc *ChainClient) CreateCertManageRevocationPayload(certCrl string) *common.Payload

func (*ChainClient) CreateCertManageUnfrozenPayload

func (cc *ChainClient) CreateCertManageUnfrozenPayload(certs []string) *common.Payload

func (*ChainClient) CreateChainConfigBlockUpdatePayload

func (cc *ChainClient) CreateChainConfigBlockUpdatePayload(txTimestampVerify bool, txTimeout, blockTxCapacity,
	blockSize, blockInterval uint32) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusExtAddPayload

func (cc *ChainClient) CreateChainConfigConsensusExtAddPayload(kvs []*common.KeyValuePair) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusExtDeletePayload

func (cc *ChainClient) CreateChainConfigConsensusExtDeletePayload(keys []string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusExtUpdatePayload

func (cc *ChainClient) CreateChainConfigConsensusExtUpdatePayload(kvs []*common.KeyValuePair) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusNodeIdAddPayload

func (cc *ChainClient) CreateChainConfigConsensusNodeIdAddPayload(nodeOrgId string,
	nodeIds []string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusNodeIdDeletePayload

func (cc *ChainClient) CreateChainConfigConsensusNodeIdDeletePayload(nodeOrgId,
	nodeId string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusNodeIdUpdatePayload

func (cc *ChainClient) CreateChainConfigConsensusNodeIdUpdatePayload(nodeOrgId, nodeOldIds,
	nodeNewIds string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusNodeOrgAddPayload

func (cc *ChainClient) CreateChainConfigConsensusNodeOrgAddPayload(nodeOrgId string,
	nodeIds []string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusNodeOrgDeletePayload

func (cc *ChainClient) CreateChainConfigConsensusNodeOrgDeletePayload(nodeOrgId string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigConsensusNodeOrgUpdatePayload

func (cc *ChainClient) CreateChainConfigConsensusNodeOrgUpdatePayload(nodeOrgId string,
	nodeIds []string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigCoreUpdatePayload

func (cc *ChainClient) CreateChainConfigCoreUpdatePayload(txSchedulerTimeout,
	txSchedulerValidateTimeout uint64) (*common.Payload, error)

func (*ChainClient) CreateChainConfigPermissionAddPayload

func (cc *ChainClient) CreateChainConfigPermissionAddPayload(permissionResourceName string,
	policy *accesscontrol.Policy) (*common.Payload, error)

func (*ChainClient) CreateChainConfigPermissionDeletePayload

func (cc *ChainClient) CreateChainConfigPermissionDeletePayload(resourceName string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigPermissionUpdatePayload

func (cc *ChainClient) CreateChainConfigPermissionUpdatePayload(permissionResourceName string,
	policy *accesscontrol.Policy) (*common.Payload, error)

func (*ChainClient) CreateChainConfigTrustMemberAddPayload

func (cc *ChainClient) CreateChainConfigTrustMemberAddPayload(trustMemberOrgId, trustMemberNodeId,
	trustMemberRole, trustMemberInfo string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigTrustMemberDeletePayload

func (cc *ChainClient) CreateChainConfigTrustMemberDeletePayload(trustMemberInfo string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigTrustRootAddPayload

func (cc *ChainClient) CreateChainConfigTrustRootAddPayload(trustRootOrgId string,
	trustRootCrt []string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigTrustRootDeletePayload

func (cc *ChainClient) CreateChainConfigTrustRootDeletePayload(trustRootOrgId string) (*common.Payload, error)

func (*ChainClient) CreateChainConfigTrustRootUpdatePayload

func (cc *ChainClient) CreateChainConfigTrustRootUpdatePayload(trustRootOrgId string,
	trustRootCrt []string) (*common.Payload, error)

func (*ChainClient) CreateContractCreatePayload

func (cc *ChainClient) CreateContractCreatePayload(contractName, version, byteCode string, runtime common.RuntimeType,
	kvs []*common.KeyValuePair) (*common.Payload, error)

func (*ChainClient) CreateContractFreezePayload

func (cc *ChainClient) CreateContractFreezePayload(contractName string) (*common.Payload, error)

func (*ChainClient) CreateContractRevokePayload

func (cc *ChainClient) CreateContractRevokePayload(contractName string) (*common.Payload, error)

func (*ChainClient) CreateContractUnfreezePayload

func (cc *ChainClient) CreateContractUnfreezePayload(contractName string) (*common.Payload, error)

func (*ChainClient) CreateContractUpgradePayload

func (cc *ChainClient) CreateContractUpgradePayload(contractName, version, byteCode string, runtime common.RuntimeType,
	kvs []*common.KeyValuePair) (*common.Payload, error)

func (*ChainClient) CreateHibeInitParamsTxPayloadParams

func (cc *ChainClient) CreateHibeInitParamsTxPayloadParams(orgId string,
	hibeParams []byte) ([]*common.KeyValuePair, error)

func (*ChainClient) CreateHibeTxPayloadParamsWithHibeParams

func (cc *ChainClient) CreateHibeTxPayloadParamsWithHibeParams(plaintext []byte, receiverIds []string,
	paramsBytesList [][]byte, txId string, keyType crypto.KeyType) ([]*common.KeyValuePair, error)

func (*ChainClient) CreateHibeTxPayloadParamsWithoutHibeParams

func (cc *ChainClient) CreateHibeTxPayloadParamsWithoutHibeParams(contractName, queryParamsMethod string,
	plaintext []byte, receiverIds []string, receiverOrgIds []string, txId string, keyType crypto.KeyType,
	timeout int64) ([]*common.KeyValuePair, error)

func (*ChainClient) CreateRestoreBlockPayload

func (cc *ChainClient) CreateRestoreBlockPayload(fullBlock []byte) (*common.Payload, error)

func (*ChainClient) CreateSaveEnclaveCACertPayload

func (cc *ChainClient) CreateSaveEnclaveCACertPayload(enclaveCACert string, txId string) (*common.Payload, error)

func (*ChainClient) CreateSaveEnclaveReportPayload

func (cc *ChainClient) CreateSaveEnclaveReportPayload(enclaveId, report, txId string) (*common.Payload, error)

func (*ChainClient) DecryptHibeTxByTxId

func (cc *ChainClient) DecryptHibeTxByTxId(localId string, hibeParams []byte, hibePrvKey []byte, txId string,
	keyType crypto.KeyType) ([]byte, error)

func (*ChainClient) DeleteCert

func (cc *ChainClient) DeleteCert(certHashes []string) (*common.TxResponse, error)

func (*ChainClient) DisableCertHash

func (cc *ChainClient) DisableCertHash() error

func (*ChainClient) EasyCodecItemToParamsMap

func (cc *ChainClient) EasyCodecItemToParamsMap(items []*serialize.EasyCodecItem) map[string][]byte

func (*ChainClient) EnableCertHash

func (cc *ChainClient) EnableCertHash() error

EnableCertHash Cert Hash logic

func (*ChainClient) GetArchivedBlockByHash

func (cc *ChainClient) GetArchivedBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetArchivedBlockByHeight

func (cc *ChainClient) GetArchivedBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetArchivedBlockByTxId

func (cc *ChainClient) GetArchivedBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetArchivedBlockFromMySQL

func (cc *ChainClient) GetArchivedBlockFromMySQL(blockHeight uint64) (*store.BlockWithRWSet, error)

func (*ChainClient) GetArchivedBlockHeight

func (cc *ChainClient) GetArchivedBlockHeight() (uint64, error)

func (*ChainClient) GetArchivedFullBlockByHeight

func (cc *ChainClient) GetArchivedFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)

func (*ChainClient) GetArchivedTxByTxId

func (cc *ChainClient) GetArchivedTxByTxId(txId string) (*common.TransactionInfo, error)

func (*ChainClient) GetBlockByHash

func (cc *ChainClient) GetBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetBlockByHeight

func (cc *ChainClient) GetBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetBlockByTxId

func (cc *ChainClient) GetBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetBlockHeaderByHeight

func (cc *ChainClient) GetBlockHeaderByHeight(blockHeight uint64) (*common.BlockHeader, error)

func (*ChainClient) GetBlockHeightByHash

func (cc *ChainClient) GetBlockHeightByHash(blockHash string) (uint64, error)

func (*ChainClient) GetBlockHeightByTxId

func (cc *ChainClient) GetBlockHeightByTxId(txId string) (uint64, error)

func (*ChainClient) GetCertHash

func (cc *ChainClient) GetCertHash() ([]byte, error)

func (*ChainClient) GetChainConfig

func (cc *ChainClient) GetChainConfig() (*config.ChainConfig, error)

func (*ChainClient) GetChainConfigByBlockHeight

func (cc *ChainClient) GetChainConfigByBlockHeight(blockHeight uint64) (*config.ChainConfig, error)

func (*ChainClient) GetChainConfigSequence

func (cc *ChainClient) GetChainConfigSequence() (uint64, error)

func (*ChainClient) GetChainInfo

func (cc *ChainClient) GetChainInfo() (*discovery.ChainInfo, error)

func (*ChainClient) GetChainMakerServerVersion

func (cc *ChainClient) GetChainMakerServerVersion() (string, error)

func (*ChainClient) GetContract

func (cc *ChainClient) GetContract(contractName, codeHash string) (*common.PrivateGetContract, error)

func (*ChainClient) GetCurrentBlockHeight

func (cc *ChainClient) GetCurrentBlockHeight() (uint64, error)

func (*ChainClient) GetData

func (cc *ChainClient) GetData(contractName, key string) ([]byte, error)

func (*ChainClient) GetDir

func (cc *ChainClient) GetDir(orderId string) ([]byte, error)

func (*ChainClient) GetEnabledCrtHash

func (cc *ChainClient) GetEnabledCrtHash() bool

func (*ChainClient) GetEnclaveCACert

func (cc *ChainClient) GetEnclaveCACert() ([]byte, error)

func (*ChainClient) GetEnclaveChallenge

func (cc *ChainClient) GetEnclaveChallenge(enclaveId string) ([]byte, error)

func (*ChainClient) GetEnclaveEncryptPubKey

func (cc *ChainClient) GetEnclaveEncryptPubKey(enclaveId string) ([]byte, error)

func (*ChainClient) GetEnclaveProof

func (cc *ChainClient) GetEnclaveProof(enclaveId string) ([]byte, error)

func (*ChainClient) GetEnclaveReport

func (cc *ChainClient) GetEnclaveReport(enclaveId string) ([]byte, error)

func (*ChainClient) GetEnclaveSignature

func (cc *ChainClient) GetEnclaveSignature(enclaveId string) ([]byte, error)

func (*ChainClient) GetEnclaveVerificationPubKey

func (cc *ChainClient) GetEnclaveVerificationPubKey(enclaveId string) ([]byte, error)

func (*ChainClient) GetFromArchiveStore

func (cc *ChainClient) GetFromArchiveStore(blockHeight uint64) (*store.BlockWithRWSet, error)

func (*ChainClient) GetFullBlockByHeight

func (cc *ChainClient) GetFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)

func (*ChainClient) GetLastBlock

func (cc *ChainClient) GetLastBlock(withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetLastConfigBlock

func (cc *ChainClient) GetLastConfigBlock(withRWSet bool) (*common.BlockInfo, error)

func (*ChainClient) GetNodeChainList

func (cc *ChainClient) GetNodeChainList() (*discovery.ChainList, error)

func (*ChainClient) GetTxByTxId

func (cc *ChainClient) GetTxByTxId(txId string) (*common.TransactionInfo, error)

func (*ChainClient) GetTxRequest

func (cc *ChainClient) GetTxRequest(contractName, method, txId string,
	kvs []*common.KeyValuePair) (*common.TxRequest, error)

func (*ChainClient) GetUserCrtHash

func (cc *ChainClient) GetUserCrtHash() []byte

func (*ChainClient) InvokeContract

func (cc *ChainClient) InvokeContract(contractName, method, txId string, kvs []*common.KeyValuePair, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) InvokeSystemContract

func (cc *ChainClient) InvokeSystemContract(contractName, method, txId string, kvs []*common.KeyValuePair,
	timeout int64, withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) QueryCert

func (cc *ChainClient) QueryCert(certHashes []string) (*common.CertInfos, error)

func (*ChainClient) QueryContract

func (cc *ChainClient) QueryContract(contractName, method string, kvs []*common.KeyValuePair,
	timeout int64) (*common.TxResponse, error)

func (*ChainClient) QueryHibeParamsWithOrgId

func (cc *ChainClient) QueryHibeParamsWithOrgId(contractName, method, orgId string, timeout int64) ([]byte, error)

func (*ChainClient) QuerySystemContract

func (cc *ChainClient) QuerySystemContract(contractName, method string, kvs []*common.KeyValuePair,
	timeout int64) (*common.TxResponse, error)

func (*ChainClient) SaveData

func (cc *ChainClient) SaveData(contractName string, contractVersion string, isDeployment bool, codeHash []byte,
	reportHash []byte, result *common.ContractResult, codeHeader []byte, txId string, rwSet *common.TxRWSet,
	sign []byte, events *common.StrSlice, privateReq []byte, withSyncResult bool,
	timeout int64) (*common.TxResponse, error)

func (*ChainClient) SaveDir

func (cc *ChainClient) SaveDir(orderId, txId string,
	privateDir *common.StrSlice, withSyncResult bool, timeout int64) (*common.TxResponse, error)

func (*ChainClient) SaveEnclaveCACert

func (cc *ChainClient) SaveEnclaveCACert(
	enclaveCACert, txId string, withSyncResult bool, timeout int64) (*common.TxResponse, error)

func (*ChainClient) SaveEnclaveReport

func (cc *ChainClient) SaveEnclaveReport(
	enclaveId, report, txId string, withSyncResult bool, timeout int64) (*common.TxResponse, error)

func (*ChainClient) SaveRemoteAttestationProof

func (cc *ChainClient) SaveRemoteAttestationProof(proof, txId string, withSyncResult bool,
	timeout int64) (*common.TxResponse, error)

func (*ChainClient) SendArchiveBlockRequest

func (cc *ChainClient) SendArchiveBlockRequest(payload *common.Payload, timeout int64) (*common.TxResponse, error)

func (*ChainClient) SendCertManageRequest

func (cc *ChainClient) SendCertManageRequest(payload *common.Payload, endorsers []*common.EndorsementEntry,
	timeout int64, withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) SendChainConfigUpdateRequest

func (cc *ChainClient) SendChainConfigUpdateRequest(payload *common.Payload, endorsers []*common.EndorsementEntry,
	timeout int64, withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) SendContractManageRequest

func (cc *ChainClient) SendContractManageRequest(payload *common.Payload, endorsers []*common.EndorsementEntry,
	timeout int64, withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) SendMultiSigningRequest

func (cc *ChainClient) SendMultiSigningRequest(payload *common.Payload, endorsers []*common.EndorsementEntry,
	timeout int64, withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) SendRestoreBlockRequest

func (cc *ChainClient) SendRestoreBlockRequest(payload *common.Payload, timeout int64) (*common.TxResponse, error)

func (*ChainClient) SendTxRequest

func (cc *ChainClient) SendTxRequest(txRequest *common.TxRequest, timeout int64,
	withSyncResult bool) (*common.TxResponse, error)

func (*ChainClient) SignArchivePayload

func (cc *ChainClient) SignArchivePayload(payload *common.Payload) (*common.Payload, error)

func (*ChainClient) SignCertManagePayload

func (cc *ChainClient) SignCertManagePayload(payload *common.Payload) (*common.EndorsementEntry, error)

func (*ChainClient) SignChainConfigPayload

func (cc *ChainClient) SignChainConfigPayload(payload *common.Payload) (*common.EndorsementEntry, error)

func (*ChainClient) SignContractManagePayload

func (cc *ChainClient) SignContractManagePayload(payload *common.Payload) (*common.EndorsementEntry, error)

func (*ChainClient) SignPayload

func (cc *ChainClient) SignPayload(payload *common.Payload) (*common.EndorsementEntry, error)

func (*ChainClient) Stop

func (cc *ChainClient) Stop() error

func (*ChainClient) Subscribe

func (cc *ChainClient) Subscribe(ctx context.Context, payload *common.Payload) (<-chan interface{}, error)

func (*ChainClient) SubscribeBlock

func (cc *ChainClient) SubscribeBlock(ctx context.Context, startBlock, endBlock int64, withRWSet,
	onlyHeader bool) (<-chan interface{}, error)

func (*ChainClient) SubscribeContractEvent

func (cc *ChainClient) SubscribeContractEvent(ctx context.Context, topic string,
	contractName string) (<-chan interface{}, error)

func (*ChainClient) SubscribeTx

func (cc *ChainClient) SubscribeTx(ctx context.Context, startBlock, endBlock int64, contractName string,
	txIds []string) (<-chan interface{}, error)

type ChainClientConfig

type ChainClientConfig struct {
	// contains filtered or unexported fields
}

type ChainClientOption

type ChainClientOption func(*ChainClientConfig)

func AddChainClientNodeConfig

func AddChainClientNodeConfig(nodeConfig *NodeConfig) ChainClientOption

AddChainClientNodeConfig 添加ChainMaker节点地址及连接数配置

func WithArchiveConfig

func WithArchiveConfig(conf *ArchiveConfig) ChainClientOption

WithArchiveConfig 设置Archive配置

func WithChainClientChainId

func WithChainClientChainId(chainId string) ChainClientOption

WithChainClientChainId 添加ChainId

func WithChainClientLogger

func WithChainClientLogger(logger utils.Logger) ChainClientOption

WithChainClientLogger 设置Logger对象,便于日志打印

func WithChainClientOrgId

func WithChainClientOrgId(orgId string) ChainClientOption

WithChainClientOrgId 添加OrgId

func WithConfPath

func WithConfPath(confPath string) ChainClientOption

WithConfPath 设置配置文件路径

func WithRPCClientConfig

func WithRPCClientConfig(conf *RPCClientConfig) ChainClientOption

WithRPCClientConfig 设置grpc客户端配置

func WithUserCrtBytes

func WithUserCrtBytes(userCrtBytes []byte) ChainClientOption

WithUserCrtBytes 添加用户证书文件内容配置

func WithUserCrtFilePath

func WithUserCrtFilePath(userCrtFilePath string) ChainClientOption

WithUserCrtFilePath 添加用户证书文件路径配置

func WithUserKeyBytes

func WithUserKeyBytes(userKeyBytes []byte) ChainClientOption

WithUserKeyBytes 添加用户私钥文件内容配置

func WithUserKeyFilePath

func WithUserKeyFilePath(userKeyFilePath string) ChainClientOption

WithUserKeyFilePath 添加用户私钥文件路径配置

func WithUserSignCrtBytes

func WithUserSignCrtBytes(userSignCrtBytes []byte) ChainClientOption

WithUserSignCrtBytes 添加用户签名证书文件内容配置

func WithUserSignCrtFilePath

func WithUserSignCrtFilePath(userSignCrtFilePath string) ChainClientOption

WithUserSignCrtFilePath 添加用户签名证书文件路径配置

func WithUserSignKeyBytes

func WithUserSignKeyBytes(userSignKeyBytes []byte) ChainClientOption

WithUserSignKeyBytes 添加用户签名私钥文件内容配置

func WithUserSignKeyFilePath

func WithUserSignKeyFilePath(userSignKeyFilePath string) ChainClientOption

WithUserSignKeyFilePath 添加用户签名私钥文件路径配置

type ClientConnectionPool

type ClientConnectionPool struct {
	// contains filtered or unexported fields
}

ClientConnectionPool 客户端连接池结构定义

func NewConnPool

func NewConnPool(config *ChainClientConfig) (*ClientConnectionPool, error)

NewConnPool 创建连接池

func NewConnPoolWithOptions

func NewConnPoolWithOptions(opts ...ChainClientOption) (*ClientConnectionPool, error)

func (*ClientConnectionPool) Close

func (pool *ClientConnectionPool) Close() error

Close 关闭连接池

type ConnectionPool

type ConnectionPool interface {
	Close() error
	// contains filtered or unexported methods
}

type NodeConfig

type NodeConfig struct {
	// contains filtered or unexported fields
}

NodeConfig 节点配置

func NewNodeConfig

func NewNodeConfig(opts ...NodeOption) *NodeConfig

type NodeOption

type NodeOption func(config *NodeConfig)

func WithNodeAddr

func WithNodeAddr(addr string) NodeOption

WithNodeAddr 设置节点地址

func WithNodeCACerts

func WithNodeCACerts(caCerts []string) NodeOption

WithNodeCACerts 添加CA证书内容

func WithNodeCAPaths

func WithNodeCAPaths(caPaths []string) NodeOption

WithNodeCAPaths 添加CA证书路径

func WithNodeConnCnt

func WithNodeConnCnt(connCnt int) NodeOption

WithNodeConnCnt 设置节点连接数

func WithNodeTLSHostName

func WithNodeTLSHostName(tlsHostName string) NodeOption

func WithNodeUseTLS

func WithNodeUseTLS(useTLS bool) NodeOption

WithNodeUseTLS 设置是否启动TLS开关

type RPCClientConfig

type RPCClientConfig struct {
	// contains filtered or unexported fields
}

RPCClientConfig RPC Client 链接配置

func NewRPCClientConfig

func NewRPCClientConfig(opts ...RPCClientOption) *RPCClientConfig

type RPCClientOption

type RPCClientOption func(config *RPCClientConfig)

func WithRPCClientMaxReceiveMessageSize

func WithRPCClientMaxReceiveMessageSize(size int) RPCClientOption

WithRPCClientMaxReceiveMessageSize 设置RPC Client的Max Receive Message Size

type SDKInterface

type SDKInterface interface {
	// ## 1 用户合约接口
	// ### 1.1 创建合约待签名payload生成
	// **参数说明**
	//   - contractName: 合约名
	//   - version: 版本号
	//   - byteCode: 支持传入合约二进制文件路径或Hex或Base64编码的二进制内容
	//   - runtime: 合约运行环境
	//   - kvs: 合约初始化参数
	// “`go
	CreateContractCreatePayload(contractName, version, byteCode string, runtime common.RuntimeType,
		kvs []*common.KeyValuePair) (*common.Payload, error)

	// ### 1.2 升级合约待签名payload生成
	// **参数说明**
	//   - contractName: 合约名
	//   - version: 版本号
	//   - byteCode: 支持传入合约二进制文件路径或Hex或Base64编码的二进制内容
	//   - runtime: 合约运行环境
	//   - kvs: 合约升级参数
	// “`go
	CreateContractUpgradePayload(contractName, version, byteCode string, runtime common.RuntimeType,
		kvs []*common.KeyValuePair) (*common.Payload, error)

	// ### 1.3 冻结合约payload生成
	// **参数说明**
	//   - contractName: 合约名
	// “`go
	CreateContractFreezePayload(contractName string) (*common.Payload, error)

	// ### 1.4 解冻合约payload生成
	// **参数说明**
	//   - contractName: 合约名
	// “`go
	CreateContractUnfreezePayload(contractName string) (*common.Payload, error)

	// ### 1.5 吊销合约payload生成
	// **参数说明**
	//   - contractName: 合约名
	// “`go
	CreateContractRevokePayload(contractName string) (*common.Payload, error)

	// ### 1.6 合约管理获取Payload签名
	// **参数说明**
	//   - payload: 待签名payload
	// “`go
	SignContractManagePayload(payload *common.Payload) (*common.EndorsementEntry, error)

	// ### 1.7 发送合约管理请求(创建、更新、冻结、解冻、吊销)
	// **参数说明**
	//   - payload: 交易payload
	//   - endorsers: 背书签名信息列表
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	//   - withSyncResult: 是否同步获取交易执行结果
	//            当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo
	//            当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
	// “`go
	SendContractManageRequest(payload *common.Payload, endorsers []*common.EndorsementEntry, timeout int64,
		withSyncResult bool) (*common.TxResponse, error)

	// ### 1.8 合约调用
	// **参数说明**
	//   - contractName: 合约名称
	//   - method: 合约方法
	//   - txId: 交易ID
	//           格式要求:长度为64字节,字符在a-z0-9
	//           可为空,若为空字符串,将自动生成txId
	//   - kvs: 合约参数
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	//   - withSyncResult: 是否同步获取交易执行结果
	//            当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo
	//            当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
	// “`go
	InvokeContract(contractName, method, txId string, kvs []*common.KeyValuePair, timeout int64,
		withSyncResult bool) (*common.TxResponse, error)

	// ### 1.9 合约查询接口调用
	// **参数说明**
	//   - contractName: 合约名称
	//   - method: 合约方法
	//   - kvs: 合约参数
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	// “`go
	QueryContract(contractName, method string, kvs []*common.KeyValuePair, timeout int64) (*common.TxResponse, error)

	// ### 1.10 构造待发送交易体
	// **参数说明**
	//   - contractName: 合约名称
	//   - method: 合约方法
	//   - txId: 交易ID
	//           格式要求:长度为64字节,字符在a-z0-9
	//           可为空,若为空字符串,将自动生成txId
	//   - kvs: 合约参数
	// “`go
	GetTxRequest(contractName, method, txId string, kvs []*common.KeyValuePair) (*common.TxRequest, error)

	// ### 1.11 发送已构造好的交易体
	// **参数说明**
	//   - txRequest: 已构造好的交易体
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	//   - withSyncResult: 是否同步获取交易执行结果
	//            当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo
	//            当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
	// “`go
	SendTxRequest(txRequest *common.TxRequest, timeout int64, withSyncResult bool) (*common.TxResponse, error)

	// ## 2 系统合约接口
	// ### 2.1 根据交易Id查询交易
	// **参数说明**
	//   - txId: 交易ID
	// “`go
	GetTxByTxId(txId string) (*common.TransactionInfo, error)

	// ### 2.2 根据区块高度查询区块
	// **参数说明**
	//   - blockHeight: 指定区块高度,若为-1,将返回最新区块
	//   - withRWSet: 是否返回读写集
	// “`go
	GetBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)

	// ### 2.3 根据区块高度查询完整区块
	// **参数说明**
	//   - blockHeight: 指定区块高度,若为-1,将返回最新区块
	// “`go
	GetFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)

	// ### 2.4 根据区块哈希查询区块
	// **参数说明**
	//   - blockHash: 指定区块Hash
	//   - withRWSet: 是否返回读写集
	// “`go
	GetBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error)

	// ### 2.5 根据交易Id查询区块
	// **参数说明**
	//   - txId: 交易ID
	//   - withRWSet: 是否返回读写集
	// “`go
	GetBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)

	// ### 2.6 查询最新的配置块
	// **参数说明**
	//   - withRWSet: 是否返回读写集
	// “`go
	GetLastConfigBlock(withRWSet bool) (*common.BlockInfo, error)

	// ### 2.7 查询最新区块
	// **参数说明**
	//   - withRWSet: 是否返回读写集
	// “`go
	GetLastBlock(withRWSet bool) (*common.BlockInfo, error)

	// ### 2.8 查询节点加入的链信息
	//    - 返回ChainId清单
	// “`go
	GetNodeChainList() (*discovery.ChainList, error)

	// ### 2.9 查询链信息
	//   - 包括:当前链最新高度,链节点信息
	// “`go
	GetChainInfo() (*discovery.ChainInfo, error)

	// ### 2.10 根据交易Id获取区块高度
	// **参数说明**
	//   - txId: 交易ID
	// “`go
	GetBlockHeightByTxId(txId string) (uint64, error)

	// ### 2.11 根据区块Hash获取区块高度
	// **参数说明**
	//   - blockHash: 指定区块Hash
	// “`go
	GetBlockHeightByHash(blockHash string) (uint64, error)

	// ### 2.12 查询当前最新区块高度
	// “`go
	GetCurrentBlockHeight() (uint64, error)

	// ### 2.13 根据区块高度查询区块头
	// **参数说明**
	//   - blockHeight: 指定区块高度,若为-1,将返回最新区块头
	// “`go
	GetBlockHeaderByHeight(blockHeight uint64) (*common.BlockHeader, error)

	// ### 2.14 系统合约调用
	// **参数说明**
	//   - contractName: 合约名称
	//   - method: 合约方法
	//   - txId: 交易ID
	//           格式要求:长度为64字节,字符在a-z0-9
	//           可为空,若为空字符串,将自动生成txId
	//   - kvs: 合约参数
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	//   - withSyncResult: 是否同步获取交易执行结果
	//            当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo
	//            当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
	// “`go
	InvokeSystemContract(contractName, method, txId string, kvs []*common.KeyValuePair, timeout int64,
		withSyncResult bool) (*common.TxResponse, error)

	// ### 2.15 系统合约查询接口调用
	// **参数说明**
	//   - contractName: 合约名称
	//   - method: 合约方法
	//   - kvs: 合约参数
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	// “`go
	QuerySystemContract(contractName, method string, kvs []*common.KeyValuePair, timeout int64) (*common.TxResponse, error)

	// ## 3 链配置接口
	// ### 3.1 查询最新链配置
	// “`go
	GetChainConfig() (*config.ChainConfig, error)

	// ### 3.2 根据指定区块高度查询最近链配置
	// **参数说明**
	//   - blockHeight: 指定区块高度
	//     如果当前区块就是配置块,直接返回当前区块的链配置
	// “`go
	GetChainConfigByBlockHeight(blockHeight uint64) (*config.ChainConfig, error)

	// ### 3.3 查询最新链配置序号Sequence
	//   - 用于链配置更新
	// “`go
	GetChainConfigSequence() (uint64, error)

	// ### 3.4 链配置更新获取Payload签名
	// **参数说明**
	//   - payload: 待签名payload
	// “`go
	SignChainConfigPayload(payload *common.Payload) (*common.EndorsementEntry, error)

	// ### 3.5 发送链配置更新请求
	// **参数说明**
	//   - payload: 待签名payload
	//   - endorsers: 背书签名信息列表
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	//   - withSyncResult: 是否同步获取交易执行结果
	//            当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo
	//            当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
	// “`go
	SendChainConfigUpdateRequest(payload *common.Payload, endorsers []*common.EndorsementEntry, timeout int64,
		withSyncResult bool) (*common.TxResponse, error)

	// ### 3.6 更新Core模块待签名payload生成
	// **参数说明**
	//   - txSchedulerTimeout: 交易调度器从交易池拿到交易后, 进行调度的时间,其值范围为(0, 60], 若设置为0,则抛出错误
	//   - txSchedulerValidateTimeout: 交易调度器从区块中拿到交易后, 进行验证的超时时间,其值范围为(0, 60], 若设置为0,则抛出错误
	// “`go
	CreateChainConfigCoreUpdatePayload(txSchedulerTimeout, txSchedulerValidateTimeout uint64) (*common.Payload, error)

	// ### 3.7 更新Core模块待签名payload生成
	// **参数说明**
	//   - txTimestampVerify: 是否需要开启交易时间戳校验
	//   - (以下参数,若无需修改,请置为-1)
	//   - txTimeout: 交易时间戳的过期时间(秒),其值范围为[600, +∞)
	//   - blockTxCapacity: 区块中最大交易数,其值范围为(0, +∞]
	//   - blockSize: 区块最大限制,单位MB,其值范围为(0, +∞]
	//   - blockInterval: 出块间隔,单位:ms,其值范围为[10, +∞]
	// “`go
	CreateChainConfigBlockUpdatePayload(txTimestampVerify bool, txTimeout, blockTxCapacity, blockSize,
		blockInterval uint32) (*common.Payload, error)

	// ### 3.8 添加信任组织根证书待签名payload生成
	// **参数说明**
	//   - trustRootOrgId: 组织Id
	//   - trustRootCrt: 根证书
	// “`go
	CreateChainConfigTrustRootAddPayload(trustRootOrgId string, trustRootCrt []string) (*common.Payload, error)

	// ### 3.9 更新信任组织根证书待签名payload生成
	// **参数说明**
	//   - trustRootOrgId: 组织Id
	//   - trustRootCrt: 根证书
	// “`go
	CreateChainConfigTrustRootUpdatePayload(trustRootOrgId string, trustRootCrt []string) (*common.Payload, error)

	// ### 3.10 删除信任组织根证书待签名payload生成
	// **参数说明**
	//   - trustRootOrgId: 组织Id
	// “`go
	CreateChainConfigTrustRootDeletePayload(trustRootOrgId string) (*common.Payload, error)

	// ### 3.11 添加信任成员证书待签名payload生成
	// **参数说明**
	//   - trustMemberOrgId: 组织Id
	//   - trustMemberNodeId: 节点Id
	//   - trustMemberRole: 成员角色
	//   - trustMemberInfo: 成员信息内容
	// “`go
	CreateChainConfigTrustMemberAddPayload(trustMemberOrgId, trustMemberNodeId,
		trustMemberRole, trustMemberInfo string) (*common.Payload, error)

	// ### 3.12 删除信任成员证书待签名payload生成
	// **参数说明**
	//   - trustMemberInfo: 成员信息内容
	// “`go
	CreateChainConfigTrustMemberDeletePayload(trustMemberInfo string) (*common.Payload, error)

	// ### 3.13 添加权限配置待签名payload生成
	// **参数说明**
	//   - permissionResourceName: 权限名
	//   - policy: 权限规则
	// “`go
	CreateChainConfigPermissionAddPayload(permissionResourceName string,
		policy *accesscontrol.Policy) (*common.Payload, error)

	// ### 3.14 更新权限配置待签名payload生成
	// **参数说明**
	//   - permissionResourceName: 权限名
	//   - policy: 权限规则
	// “`go
	CreateChainConfigPermissionUpdatePayload(permissionResourceName string,
		policy *accesscontrol.Policy) (*common.Payload, error)

	// ### 3.15 删除权限配置待签名payload生成
	// **参数说明**
	//   - permissionResourceName: 权限名
	// “`go
	CreateChainConfigPermissionDeletePayload(permissionResourceName string) (*common.Payload, error)

	// ### 3.16 添加共识节点地址待签名payload生成
	// **参数说明**
	//   - nodeOrgId: 节点组织Id
	//   - nodeIds: 节点Id
	// “`go
	CreateChainConfigConsensusNodeIdAddPayload(nodeOrgId string, nodeIds []string) (*common.Payload, error)

	// ### 3.17 更新共识节点地址待签名payload生成
	// **参数说明**
	//   - nodeOrgId: 节点组织Id
	//   - nodeOldNodeId: 节点原Id
	//   - nodeNewNodeId: 节点新Id
	// “`go
	CreateChainConfigConsensusNodeIdUpdatePayload(nodeOrgId, nodeOldNodeId, nodeNewNodeId string) (*common.Payload, error)

	// ### 3.18 删除共识节点地址待签名payload生成
	// **参数说明**
	//   - nodeOrgId: 节点组织Id
	//   - nodeId: 节点Id
	// “`go
	CreateChainConfigConsensusNodeIdDeletePayload(nodeOrgId, nodeId string) (*common.Payload, error)

	// ### 3.19 添加共识节点待签名payload生成
	// **参数说明**
	//   - nodeOrgId: 节点组织Id
	//   - nodeIds: 节点Id
	// “`go
	CreateChainConfigConsensusNodeOrgAddPayload(nodeOrgId string, nodeIds []string) (*common.Payload, error)

	// ### 3.20 更新共识节点待签名payload生成
	// **参数说明**
	//   - nodeOrgId: 节点组织Id
	//   - nodeIds: 节点Id
	// “`go
	CreateChainConfigConsensusNodeOrgUpdatePayload(nodeOrgId string, nodeIds []string) (*common.Payload, error)

	// ### 3.21 删除共识节点待签名payload生成
	// **参数说明**
	//   - nodeOrgId: 节点组织Id
	// “`go
	CreateChainConfigConsensusNodeOrgDeletePayload(nodeOrgId string) (*common.Payload, error)

	// ### 3.22 添加共识扩展字段待签名payload生成
	// **参数说明**
	//   - kvs: 字段key、value对
	// “`go
	CreateChainConfigConsensusExtAddPayload(kvs []*common.KeyValuePair) (*common.Payload, error)

	// ### 3.23 添加共识扩展字段待签名payload生成
	// **参数说明**
	//   - kvs: 字段key、value对
	// “`go
	CreateChainConfigConsensusExtUpdatePayload(kvs []*common.KeyValuePair) (*common.Payload, error)

	// ### 3.24 添加共识扩展字段待签名payload生成
	// **参数说明**
	//   - keys: 待删除字段
	// “`go
	CreateChainConfigConsensusExtDeletePayload(keys []string) (*common.Payload, error)

	// ## 4 证书管理接口
	// ### 4.1 用户证书添加
	// **参数说明**
	//   - 在common.TxResponse.ContractResult.Result字段中返回成功添加的certHash
	// “`go
	AddCert() (*common.TxResponse, error)

	// ### 4.2 用户证书删除
	// **参数说明**
	//   - certHashes: 证书Hash列表
	// “`go
	DeleteCert(certHashes []string) (*common.TxResponse, error)

	// ### 4.3 用户证书查询
	// **参数说明**
	//   - certHashes: 证书Hash列表
	// **返回值说明**
	//   - *common.CertInfos: 包含证书Hash和证书内容的列表
	// “`go
	QueryCert(certHashes []string) (*common.CertInfos, error)

	// ### 4.4 获取用户证书哈希
	// “`go
	GetCertHash() ([]byte, error)

	// ### 4.5 生成证书管理操作Payload(三合一接口)
	// **参数说明**
	//   - method: CERTS_FROZEN(证书冻结)/CERTS_UNFROZEN(证书解冻)/CERTS_REVOCATION(证书吊销)
	//   - kvs: 证书管理操作参数
	// “`go
	CreateCertManagePayload(method string, kvs []*common.KeyValuePair) *common.Payload

	// ### 4.6 生成证书冻结操作Payload
	// **参数说明**
	//   - certs: X509证书列表
	// “`go
	CreateCertManageFrozenPayload(certs []string) *common.Payload

	// ### 4.7 生成证书解冻操作Payload
	// **参数说明**
	//   - certs: X509证书列表
	// “`go
	CreateCertManageUnfrozenPayload(certs []string) *common.Payload

	// ### 4.8 生成证书吊销操作Payload
	// **参数说明**
	//   - certs: X509证书列表
	// “`go
	CreateCertManageRevocationPayload(certCrl string) *common.Payload

	// ### 4.9 待签payload签名
	//  *一般需要使用具有管理员权限账号进行签名*
	// **参数说明**
	//   - payload: 待签名payload
	// “`go
	SignCertManagePayload(payload *common.Payload) (*common.EndorsementEntry, error)

	// ### 4.10 发送证书管理请求(证书冻结、解冻、吊销)
	// **参数说明**
	//   - payload: 交易payload
	//   - endorsers: 背书签名信息列表
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	//   - withSyncResult: 是否同步获取交易执行结果
	//            当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo
	//            当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果
	// “`go
	SendCertManageRequest(payload *common.Payload, endorsers []*common.EndorsementEntry, timeout int64,
		withSyncResult bool) (*common.TxResponse, error)

	// ## 5 消息订阅接口
	// ### 5.1 区块订阅
	// **参数说明**
	//   - startBlock: 订阅起始区块高度,若为-1,表示订阅实时最新区块
	//   - endBlock: 订阅结束区块高度,若为-1,表示订阅实时最新区块
	//   - withRwSet: 是否返回读写集
	//   - onlyHeader: 若设置为true,将忽略withRwSet选项,仅返回区块头(common.BlockHeader),若设置为false,将返回common.BlockInfo
	// “`go
	SubscribeBlock(ctx context.Context, startBlock, endBlock int64, withRWSet, onlyHeader bool) (<-chan interface{}, error)

	// ### 5.2 交易订阅
	// **参数说明**
	//   - startBlock: 订阅起始区块高度,若为-1,表示订阅实时最新区块
	//   - endBlock: 订阅结束区块高度,若为-1,表示订阅实时最新区块
	//   - contractName :指定订阅指定合约的交易,可以传用户合约名称或系统合约名称,若为空,表示订阅所有合约的交易
	//   - txIds: 订阅txId列表,若为空,表示订阅所有txId
	// “`go
	SubscribeTx(ctx context.Context, startBlock, endBlock int64, contractName string,
		txIds []string) (<-chan interface{}, error)

	// ### 5.3 合约事件订阅
	// **参数说明**
	//   - topic :指定订阅主题
	//   - contractName :指定订阅的合约名称
	// “`go
	SubscribeContractEvent(ctx context.Context, topic string, contractName string) (<-chan interface{}, error)

	// ### 5.4 多合一订阅
	// **参数说明**
	//   - txType: 订阅交易类型,目前已支持:区块消息订阅(common.TxType_SUBSCRIBE_BLOCK_INFO)、交易消息订阅(common.TxType_SUBSCRIBE_TX_INFO)
	//   - payloadBytes: 消息订阅参数payload
	// “`go
	Subscribe(ctx context.Context, payloadBytes *common.Payload) (<-chan interface{}, error)

	// ## 6 证书压缩
	// *开启证书压缩可以减小交易包大小,提升处理性能*
	// ### 6.1 启用压缩证书功能
	// “`go
	EnableCertHash() error

	// ### 6.2 停用压缩证书功能
	// “`go
	DisableCertHash() error

	// ## 7 层级属性加密类接口
	// > 注意:层级属性加密模块 `Id` 使用 `/` 作为分隔符,例如: Org1/Ou1/Member1
	// ### 7.1 生成层级属性参数初始化交易 payload
	// **参数说明**
	//   - orgId: 参与方组织 id
	//   - hibeParams: 传入序列化后的hibeParams byte数组
	// “`go
	CreateHibeInitParamsTxPayloadParams(orgId string, hibeParams []byte) ([]*common.KeyValuePair, error)

	// ### 7.2 生成层级属性加密交易 payload,加密参数已知
	// **参数说明**
	//   - plaintext: 待加密交易消息明文
	//   - receiverIds: 消息接收者 id 列表,需和 paramsList 一一对应
	//   - paramsBytesList: 消息接收者对应的加密参数,需和 receiverIds 一一对应
	//   - txId: 以交易 Id 作为链上存储 hibeMsg 的 Key, 如果不提供存储的信息可能被覆盖
	//   - keyType: 对明文进行对称加密的方法,请传入 common 中 crypto 包提供的方法,目前提供AES和SM4两种方法
	// “`go
	CreateHibeTxPayloadParamsWithHibeParams(plaintext []byte, receiverIds []string, paramsBytesList [][]byte, txId string,
		keyType crypto.KeyType) ([]*common.KeyValuePair, error)

	// ### 7.3 生成层级属性加密交易 payload,参数由链上查询得出
	// **参数说明**
	//   - contractName: 合约名
	//   - queryParamsMethod: 链上查询 hibe.Params 的合约方法
	//   - plaintext: 待加密交易消息明文
	//   - receiverIds: 消息接收者 id 列表,需和 paramsList 一一对应
	//   - paramsList: 消息接收者对应的加密参数,需和 receiverIds 一一对应
	//   - receiverOrgIds: 链上查询 hibe Params 的 Key 列表,需要和 receiverIds 一一对应
	//   - txId: 以交易 Id 作为链上存储 hibeMsg 的 Key, 如果不提供存储的信息可能被覆盖
	//   - keyType: 对明文进行对称加密的方法,请传入 common 中 crypto 包提供的方法,目前提供AES和SM4两种方法
	//   - timeout: (内部查询 HibeParams 的)超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	// “`go
	CreateHibeTxPayloadParamsWithoutHibeParams(contractName, queryParamsMethod string, plaintext []byte,
		receiverIds []string, receiverOrgIds []string, txId string, keyType crypto.KeyType,
		timeout int64) ([]*common.KeyValuePair, error)

	// ### 7.4 查询某一组织的加密公共参数,返回其序列化后的byte数组
	// **参数说明**
	//   - contractName: 合约名
	//   - method: 查询的合约方法名
	//   - orgId: 参与方 id
	//   - timeout: 查询超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	// “`go
	QueryHibeParamsWithOrgId(contractName, method, orgId string, timeout int64) ([]byte, error)

	// ### 7.5 已知交易id,根据私钥解密密文交易
	// **参数说明**
	//   - localId: 本地层级属性加密 id
	//   - hibeParams: hibeParams 序列化后的byte数组
	//   - hibePrivKey: hibe私钥序列化后的byte数组
	//   - txId: 层级属性加密交易 id
	//   - keyType: 对加密信息进行对称解密的方法,请和加密时使用的方法保持一致,请传入 common 中 crypto 包提供的方法,目前提供AES和SM4两种方法
	// “`go
	DecryptHibeTxByTxId(localId string, hibeParams []byte, hibePrvKey []byte, txId string,
		keyType crypto.KeyType) ([]byte, error)

	// ## 8 数据归档接口
	// **(注意:请使用归档工具cmc进行归档操作,以下接口是归档原子接口,并不包括归档完整流程)**
	// ### 8.1 获取已归档区块高度
	// **参数说明**
	//   - 输出已归档的区块高度
	// “`go
	GetArchivedBlockHeight() (uint64, error)

	// ### 8.2 构造数据归档区块Payload
	// **参数说明**
	//   - targetBlockHeight: 归档目标区块高度
	// “`go
	CreateArchiveBlockPayload(targetBlockHeight uint64) (*common.Payload, error)

	// ### 8.3 构造归档数据恢复Payload
	// **参数说明**
	//   - fullBlock: 完整区块数据(对应结构:store.BlockWithRWSet)
	// “`go
	CreateRestoreBlockPayload(fullBlock []byte) (*common.Payload, error)

	// ### 8.4 获取归档操作Payload签名
	// **参数说明**
	//   - payload: 指向payload对象的指针
	// “`go
	SignArchivePayload(payload *common.Payload) (*common.Payload, error)

	// ### 8.5 发送归档请求
	// **参数说明**
	//   - payload: 指向payload对象的指针
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	// “`go
	SendArchiveBlockRequest(payload *common.Payload, timeout int64) (*common.TxResponse, error)

	// ### 8.6 归档数据恢复
	// **参数说明**
	//   - payload: 指向payload对象的指针
	//   - timeout: 超时时间,单位:s,若传入-1,将使用默认超时时间:10s
	// “`go
	SendRestoreBlockRequest(payload *common.Payload, timeout int64) (*common.TxResponse, error)

	// ### 8.7 根据交易Id查询已归档交易
	// **参数说明**
	//   - txId: 交易ID
	// “`go
	GetArchivedTxByTxId(txId string) (*common.TransactionInfo, error)

	// ### 8.8 根据区块高度查询已归档区块
	// **参数说明**
	//   - blockHeight: 指定区块高度
	//   - withRWSet: 是否返回读写集
	// “`go
	GetArchivedBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)

	// ### 8.9 根据区块高度查询已归档完整区块(包含:区块数据、读写集、合约事件日志)
	// **参数说明**
	//   - blockHeight: 指定区块高度
	// “`go
	GetArchivedFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)

	// ### 8.10 根据区块哈希查询已归档区块
	// **参数说明**
	//   - blockHash: 指定区块Hash
	//   - withRWSet: 是否返回读写集
	// “`go
	GetArchivedBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error)

	// ### 8.11 根据交易Id查询已归档区块
	// **参数说明**
	//   - txId: 交易ID
	//   - withRWSet: 是否返回读写集
	// “`go
	GetArchivedBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)

	// ## 9 隐私计算系统合约接口
	// ### 9.1 保存隐私合约计算结果,包括合约部署
	// **参数说明**
	//   - contractName: 合约名称
	//   - contractVersion: 合约版本号
	//   - isDeployment: 是否是部署合约
	//   - codeHash: 合约字节码hash值
	//   - reportHash: Enclave report hash值
	//   - result: 隐私合约执行结果
	//   - codeHeader: solodity合部署合约时合约字节码的header数据
	//   - txId: 交易Id
	//   - rwSet: 隐私合约执行产生的读写集
	//   - sign: Enclave对执行结果数据的结果签名
	//   - events: 合约执行产生的事件
	//   - privateReq: 用户调用隐私计算请求时的request序列化字节数组
	//   - withSyncResult: 是否同步返回调用结果
	//   - timeout: 发送交易的超时时间
	// “`go
	SaveData(contractName string, contractVersion string, isDeployment bool, codeHash []byte, reportHash []byte,
		result *common.ContractResult, codeHeader []byte, txId string, rwSet *common.TxRWSet, sign []byte,
		events *common.StrSlice, privateReq []byte, withSyncResult bool, timeout int64) (*common.TxResponse, error)

	// ### 9.2 保存远程证明
	// **参数说明**
	//   - proof: 远程证明
	//   - txId: 交易Id
	//   - withSyncResult: 是否同步返回调用结果
	//   - timeout: 交易发送超时时间
	// “`go
	SaveRemoteAttestationProof(proof, txId string, withSyncResult bool, timeout int64) (*common.TxResponse, error)

	// ### 9.3 构建上传Enclave CA证书的报文
	// **参数说明**
	//   - caCert: Enclave CA证书
	//   - txId: 交易Id
	// “`go
	CreateSaveEnclaveCACertPayload(caCert, txId string) (*common.Payload, error)

	// ### 9.4 获取Enclave CA证书
	// “`go
	GetEnclaveCACert() ([]byte, error)

	// ### 9.5 隐私计算调用者权限验证
	// **参数说明**
	//   - payload: 用户签名验证的payload内容
	//   - orgIds: 组织Id的slice,注意和signPairs里面SignInfo的证书顺序一致
	//   - signPairs: 用户多签的签名和证书slice
	// “`go
	CheckCallerCertAuth(payload string, orgIds []string, signPairs []*syscontract.SignInfo) (*common.TxResponse, error)

	// ### 9.6 获取Enclave的report
	// **参数说明**
	//   - enclaveId: Enclave的Id,当前固定为
	// “`go
	GetEnclaveReport(enclaveId string) ([]byte, error)

	// ### 9.7 获取隐私证明材
	// **参数说明**
	//   - enclaveId: Enclave的Id,当前固定为
	// “`go
	GetEnclaveProof(enclaveId string) ([]byte, error)

	// ### 9.8 获取隐私合约计算结果
	// **参数说明**
	//   - contractName: 合约名称
	//   - key: 计算结果对应的键值
	// “`go
	GetData(contractName, key string) ([]byte, error)

	// ### 9.9 保存隐私目录
	// **参数说明**
	//   - orderId: 隐私目录的主键,供以后查询使用
	//   - txId: 交易ID
	//   - privateDir:
	//   - withSyncResult: 是否同步等待交易结果
	//   - timeout: 等待交易结果的超时时间
	// “`go
	SaveDir(orderId, txId string, privateDir *common.StrSlice, withSyncResult bool,
		timeout int64) (*common.TxResponse, error)

	// ### 9.10 获取用户部署的隐私合约
	// **参数说明**
	//   - contractName: 合约名称
	//   - codeHash: 代码哈希
	// “`go
	GetContract(contractName, codeHash string) (*common.PrivateGetContract, error)

	// ### 9.11 获取用户的隐私目录
	// **参数说明**
	//   - orderId: 隐私目录的主键
	// “`go
	GetDir(orderId string) ([]byte, error)

	// ### 9.12 构建上传隐私计算环境的report的报文
	// **参数说明**
	//   - enclaveId: 隐私计算环境的标识
	//   - report: 隐私计算环境的report
	//   - txId: 交易ID
	// “`go
	CreateSaveEnclaveReportPayload(enclaveId, report, txId string) (*common.Payload, error)

	// ### 9.13 获取隐私计算环境的加密公钥
	// **参数说明**
	//   - enclaveId: 隐私计算环境的标识
	// “`go
	GetEnclaveEncryptPubKey(enclaveId string) ([]byte, error)

	// ### 9.14 获取隐私计算环境的验签公钥
	// **参数说明**
	//   - enclaveId: 隐私计算环境的标识
	// “`go
	GetEnclaveVerificationPubKey(enclaveId string) ([]byte, error)

	// ### 9.15 获取隐私证明材料中的Challenge
	// **参数说明**
	//   - enclaveId: 隐私计算环境的标识
	// “`go
	GetEnclaveChallenge(enclaveId string) ([]byte, error)

	// ### 9.16 获取隐私证明材料中的Signature
	// **参数说明**
	//   - enclaveId: 隐私计算环境的标识
	// “`go
	GetEnclaveSignature(enclaveId string) ([]byte, error)

	// ## 10 系统类接口
	// ### 10.1 SDK停止接口
	// *关闭连接池连接,释放资源*
	// “`go
	Stop() error

	// ### 10.2 获取链版本
	// “`go
	GetChainMakerServerVersion() (string, error)
}

SDKInterface # ChainMaker Go SDK 接口说明

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL