接口列表

标签:c-sdk API


本章节介绍c-sdkAPI列表,模块列表:

1. 基础操作

本小节介绍c-sdk的基础操作,包括sdk对象的创建、启动、停止、释放。

bcos_sdk_version

  • 原型:

    • const char* bcos_sdk_version()

  • 功能:

    • 获取c-sdk的版本以及构建信息

  • 参数:

  • 返回:

    • 字符串类型,包括c-sdk的版本以及构建信息,示例:

    FISCO BCOS C SDK Version : 3.1.0
    Build Time         : 20220915 11:11:11
    Build Type         : Darwin/appleclang/Release
    Git Branch         : main
    Git Commit         : dbc82415510a0e59339faebcd72e540fe408d2d0
    
  • 注意:

    • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

bcos_sdk_create

  • 原型:

    • void* bcos_sdk_create(struct bcos_sdk_c_config* config)

  • 功能:

    • 创建sdk对象指针

  • 参数:

  • 返回:

    • 返回sdk指针

    • 失败返回NULL,可以调用bcos_sdk_get_last_error获取错误信息, 参考bcos_sdk_get_last_error接口介绍

  • 注意:

    • 创建的sdk对象,需要由bcos_sdk_destroy接口释放,以免内存泄露

bcos_sdk_create_by_config_file

  • 原型:

    • void* bcos_sdk_create_by_config_file(const char *config_file)

  • 功能:

    • 创建sdk对象指针

  • 参数:

  • 返回:

    • 返回sdk指针

    • 失败返回NULL,可以调用bcos_sdk_get_last_error获取错误信息, 参考bcos_sdk_get_last_error接口介绍

  • 注意:

    • 创建的sdk对象,需要由bcos_sdk_destroy接口释放,以免内存泄露

bcos_sdk_start

  • 原型:

    • void bcos_sdk_start(void* sdk)

  • 功能:

    • 启动sdk

  • 参数:

    • sdk: sdk指针

  • 返回:

    • 无, 可以使用bcos_sdk_get_last_error确认是否启动成功, 参考bcos_sdk_get_last_error介绍

bcos_sdk_stop

  • 原型:

    • void bcos_sdk_stop(void* sdk)

  • 功能:

    • 停止sdk

  • 参数:

    • sdk: sdk指针

  • 返回:

bcos_sdk_destroy

  • 原型:

    • void bcos_sdk_destroy(void* sdk)

  • 功能:

    • 停止并且释放sdk

  • 参数:

    • sdk: sdk指针

  • 返回: 无

bcos_sdk_c_free

  • 原型:

    • void bcos_sdk_c_free(void* p)

  • 功能:

    • 释放内存

  • 参数:

    • p: 指针

  • 返回: 无

2. 错误处理

本小节介绍c-sdk的错误处理接口。

注意: 这些接口仅仅对同步调用接口有效,异步接口的错误信息在回调中返回

bcos_sdk_is_last_opr_success

  • 原型:

    • int bcos_sdk_is_last_opr_success()

  • 功能:

    • 最近一次操作是否成功,等价于bcos_sdk_get_last_error返回结果不为0。

  • 参数:

  • 返回:

    • 0: 操作失败

    • 1: 操作成功

bcos_sdk_get_last_error

  • 原型:

    • int bcos_sdk_get_last_error()

  • 功能:

    • 获取上一次操作的返回状态, 失败时可以调用bcos_sdk_get_last_error_msg获取错误描述信息

  • 参数:

  • 返回:

    • 0: 成功, 其他表示错误码, 可以使用bcos_sdk_get_last_error_msg获取错误描述信息

bcos_sdk_get_last_error_msg

  • 原型:

    • const char* bcos_sdk_get_last_error_msg()

  • 功能:

    • 获取上一次操作的错误信息描述, 与bcos_sdk_get_last_error配合使用

  • 参数:

  • 返回: 错误描述信息

3. RPC接口

本小节介绍如何在c-sdk中调用FISCO-BCOS 3.0rpc接口,与节点交互。

bcos_rpc_call

  • 原型:

    • void bcos_rpc_call(void* sdk, const char* group, const char* node, const char* to, const char* data, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 调用合约,查询操作,无需共识

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 请求发往的节点名称(节点名称可以通过getGroupInfo获取), 值为NULL或者空字符串时, 在群组中按最高块高的原则, 随机选择一个节点

    • to: 合约地址

    • data: 编码后的参数

      • 调用solidity合约时为ABI编码

      • 调用liquid合约时为liquid编码

    • callback: 回调函数, 函数原型:

      typedef void (*bcos_sdk_c_struct_response_cb)(struct bcos_sdk_c_struct_response* resp)
      

      bcos_sdk_c_struct_response定义及字段含义:

      struct bcos_sdk_c_struct_response
      {
          int error;   // 返回状态, 0成功, 其他失败
          char* desc;  // 失败时描述错误信息
      
          void* data;   // 返回数据, error=0 时有效
          size_t size;  // 返回数据大小, error=0 时有效
      
          void* context;  // 回调上下文,调用接口时传入的`context`参数
      };
      

      !!!注意: 回调的数据data仅在回调线程有效,多线程场景下,用户需自行拷贝保证数据的线程安全

    • context: 回调上下文, 在回调bcos_sdk_c_struct_responsecontext字段返回

  • 返回:

bcos_rpc_send_transaction

  • 原型:

    • void bcos_rpc_send_transaction(void* sdk, const char* group, const char* node, const char* data, int proof, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 发送交易,需要区块链共识

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • data: 签名的交易,十六进制c风格字符串

    • proof: 是否返回交易回执证明, 0:不返回,1:返回

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_transaction

  • 函数原型: void bcos_rpc_get_transaction(void* sdk, const char* group, const char* node, const char* tx_hash,int proof, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 根据交易哈希获取交易

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • tx_hash: 交易哈希

    • proof: 是否返回交易证明, 0:不返回, 1:返回

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_transaction_receipt

  • 原型:

    void bcos_rpc_get_transaction_receipt(void* sdk, const char* group, const char* node, const char* tx_hash, int proof, bcos_sdk_c_struct_response_cb callback, void* context)
    
  • 功能:

    • 根据交易哈希获取交易回执

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • tx_hash: 交易哈希

    • proof: 是否返回交易回执证明, 0: 不返回,1: 返回

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_block_by_hash

  • 原型:

    void bcos_rpc_get_block_by_hash(void* sdk, const char* group, const char* node,const char* block_hash, int only_header, int only_tx_hash, bcos_sdk_c_struct_response_cb callback, void* context)
    
  • 功能:

    • 根据区块哈希获取区块

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • block_hash: 区块哈希

    • only_header: 是否只获取区块头, 1: 是, 0: 否

    • only_tx_hash: 是否只获取区块的交易哈希, 1: 是, 0: 否

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_block_by_number

  • 原型:

    void bcos_rpc_get_block_by_number(void* sdk, const char* group, const char* node, int64_t block_number, int only_header, int only_tx_hash, bcos_sdk_c_struct_response_cb callback, void* context)
    
  • 功能:

    • 根据块高获取区块

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • block_number: 区块高度

    • only_header: 是否只获取区块头, 1: 是, 0: 否

    • only_tx_hash: 是否只获取区块的交易哈希, 1: 是, 0: 否

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_block_hash_by_number

  • 原型:

    • void bcos_rpc_get_block_hash_by_number(void* sdk, const char* group, const char* node, int64_t block_number, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 根据块高获取区块哈希

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • block_number: 区块高度

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回: 无

bcos_rpc_get_block_limit

  • 原型:

    • int64_t bcos_rpc_get_block_limit(void* sdk, const char* group)

  • 功能:

    • 获取块高限制,创建签名交易时需要使用

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

  • 返回:

    • >0时返回block limit

    • <=0表示获取失败,此时表示查询不到该群组

bcos_rpc_get_block_number

  • 原型:

    • void bcos_rpc_get_block_number(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组块高

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_code

  • 原型:

    • void bcos_rpc_get_code(void* sdk, const char* group, const char* node, const char* address,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 根据合约地址,查询合约代码

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • address: 合约地址

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回: 无

bcos_rpc_get_sealer_list

  • 原型:

    • void bcos_rpc_get_sealer_list(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组共识节点列表

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_observer_list

  • 原型:

    • void bcos_rpc_get_observer_list(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组观察节点列表

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_pending_tx_size

  • 原型:

    • void bcos_rpc_get_pending_tx_size(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取交易池待打包的交易数量

  • 参数;

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_sync_status

  • 原型:

    • void bcos_rpc_get_sync_status(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组的区块同步状态

  • 参数;

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_consensus_status

  • 原型:

    • void bcos_rpc_get_consensus_status(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取节点的共识状态

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_system_config_by_key

  • 原型:

    • void bcos_rpc_get_system_config_by_key(void* sdk, const char* group, const char* node,const char* key,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取系统配置

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • key: 配置key

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_total_transaction_count

  • 原型:

    • void bcos_rpc_get_total_transaction_count(void* sdk, const char* group, const char* node, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取当前区块高度下的交易总量

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称, 参考bcos_rpc_call接口对node的说明

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_group_peers

  • 原型:

    • void bcos_rpc_get_group_peers(void* sdk, const char* group, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组的网络连接信息

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_peers

  • 原型:

    • void bcos_rpc_get_peers(void* sdk, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取网关的p2p网络连接信息

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_group_list

  • 原型:

    • void bcos_rpc_get_group_list(void* sdk, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组列表

  • 参数:

    • sdk: sdk指针

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_group_info

  • 原型:

    • void bcos_rpc_get_group_info(void* sdk, const char* group, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组信息

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_group_info_list

  • 原型:

    • void bcos_rpc_get_group_info_list(void* sdk, bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组列表详情

  • 参数:

    • sdk: sdk指针

    • callback: 参考bcos_rpc_call接口对context的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

bcos_rpc_get_group_node_info

  • 原型:

    • void bcos_rpc_get_group_node_info(void* sdk, const char* group, const char* node,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 获取群组的节点信息

  • 参数:

    • sdk: sdk指针

    • group: 群组ID

    • node: 节点名称

    • callback: 参考bcos_rpc_call接口对callback的说明

    • context: 参考bcos_rpc_call接口对context的说明

  • 返回:

4. AMOP接口

本小节介绍在c-sdk使用FISCO-BCOS 3.0AMOP功能的接口。

bcos_amop_subscribe_topic

  • 原型:

    • void bcos_amop_subscribe_topic(void* sdk, char** topics, size_t count)

  • 功能:

    • 订阅topic

  • 参数:

    • sdk: sdk指针

    • topics: topics内容

    • count: topics长度

  • 返回:

bcos_amop_subscribe_topic_with_cb

  • 原型:

    • void bcos_amop_subscribe_topic_with_cb(void* sdk, const char* topic, bcos_sdk_c_amop_subscribe_cb cb, void* context)

  • 功能:

    • 订阅topic,并设置接收topic消息的回调函数

  • 参数:

    • sdk: sdk指针

    • topic: topic

    • cb: 回调函数, 函数原型如下:

      typedef void (*bcos_sdk_c_amop_subscribe_cb)(
      const char* endpoint, const char* seq, struct bcos_sdk_c_struct_response* resp);
      

      字段含义:

      • endpoint: 接收消息的网络连接标记, 回复消息调用bcos_amop_send_response时需要使用

      • seq: 消息标记, 回复消息调用bcos_amop_send_response时需要使用

      • resp: 参考bcos_rpc_call接口callbackbcos_sdk_c_struct_response的说明

    • context: 回调上下文, 参考bcos_rpc_call接口对context的说明

bcos_amop_set_subscribe_topic_cb

  • 原型:

    • void bcos_amop_set_subscribe_topic_cb(void* sdk, bcos_sdk_c_amop_subscribe_cb cb, void* context)

  • 功能:

    • topic设置回调函数,接收到的topic消息没有单独设置回调函数时,默认回调函数会被调用

  • 参数:

    • sdk: sdk指针

    • cb: topic回调函数, 参考bcos_amop_subscribe_topic_with_cb接口对cb的说明

    • context: 回调上下文

bcos_amop_unsubscribe_topic

  • 原型:

    • void bcos_amop_unsubscribe_topic(void* sdk, char** topics, size_t count)

  • 功能:

    • 取消订阅

  • 参数:

    • sdk: sdk指针

    • topics: topics内容

    • count: topics长度

bcos_amop_publish

  • 原型:

    • void bcos_amop_publish(void* sdk, const char* topic, void* data, size_t size, uint32_t timeout,bcos_sdk_c_amop_publish_cb cb, void* context)

  • 功能:

    • 发送topic消息

  • 参数:

    • sdk: sdk指针

    • topic: topic

    • data: 消息内容

    • size: 消息长度

    • timeout: 超时时间,单位ms

    • cb: 回调函数, 函数原型如下:

      typedef void (*bcos_sdk_c_amop_publish_cb)(struct bcos_sdk_c_struct_response* resp)
      
    • context: 回调上下文

bcos_amop_broadcast

  • 原型:

    • void bcos_amop_broadcast(void* sdk, const char* topic, void* data, size_t size)

  • 功能:

    • 发送topic广播消息

  • 参数:

    • sdk: sdk指针

    • topic: topic

    • data: 消息内容

    • size: 消息长度

bcos_amop_send_response

  • 原型:

    • void bcos_amop_send_response(void* sdk, const char* peer, const char* seq, void* data, size_t size)

  • 功能:

    • 发送回复消息

  • 参数:

    • sdk: sdk指针

    • peer: 接收消息的网络连接标记, 参考bcos_amop_subscribe_topic_with_cb接口回调函数cb的字段endpoint说明

    • seq: 消息标记, 参考bcos_amop_subscribe_topic_with_cb接口回调函数cb的字段seq说明

    • data: 消息内容

    • size: 消息长度

5. EventSub接口

本小节介绍在c-sdk使用FISCO-BCOS 3.0EventSub事件订阅功能的接口。

bcos_event_sub_subscribe_event

  • 原型:

    • const char* bcos_event_sub_subscribe_event(void* sdk, const char* group, const char* params,bcos_sdk_c_struct_response_cb callback, void* context)

  • 功能:

    • 合约事件订阅

  • 参数:

    • sdk: sdk指针

    • group: 请求群组ID

    • params: 请求参数,c风格JSON字符串

      • addresses: 字符串数组,订阅Event的合约地址列表,为空时表示所有的合约

      • fromBlock: 整形,初始区块,-1表示从当前最高块开始

      • toBlock: 整形,结束区块,-1表示不限制区块高度,已经是最高块时也继续等待新的区块

      • topics: 字符串数组,订阅的topic列表,为空时表示所有的topic

      示例:

      {
      "addresses": ["6849F21D1E455e9f0712b1e99Fa4FCD23758E8F1"],
      "fromBlock": -1,
      "toBlock": -1,
      "topics": []
      }
      
    • context: 回调上下文

  • 返回:

    • 合约事件订阅的任务id,c风格字符串

bcos_event_sub_unsubscribe_event

  • 原型:

    • void bcos_event_sub_unsubscribe_event(void* sdk, const char* id)

  • 功能:

    • 取消合约事件订阅

  • 参数:

    • sdk: sdk指针

    • id: 合约事件订阅的任务id,bcos_event_sub_subscribe_event的返回值

6. 工具类

本小结介绍c-sdk的基础工具类的使用,包括KeyPair签名对象、ABI编解码、构造签名交易。

6.1 KeyPair签名对象

  • bcos_sdk_create_keypair

    • 原型:

      • void* bcos_sdk_create_keypair(int crypto_type)

    • 功能:

      • 创建KeyPair对象

    • 参数:

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • KeyPair对象指针

      • 失败返回NULL,使用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • KeyPair对象不再使用时需要调用bcos_sdk_destroy_keypair接口释放,以免造成内存泄露

  • bcos_sdk_create_keypair_by_private_key

    • 原型:

      • void* bcos_sdk_create_keypair_by_private_key(int crypto_type, void* private_key, unsigned length)

    • 功能:

      • 加载私钥创建KeyPair对象

    • 参数:

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

      • private_key: 私钥,字节数组格式

      • length: 数组长度

    • 返回:

      • KeyPair对象指针

      • 失败返回NULL使用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • KeyPair对象不再使用时需要调用bcos_sdk_destroy_keypair接口释放,以免造成内存泄露

  • bcos_sdk_create_keypair_by_hex_private_key

    • 原型:

      • void* bcos_sdk_create_keypair_by_hex_private_key(int crypto_type, const char* private_key)

    • 功能:

      • 加载私钥创建KeyPair对象

    • 参数:

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

      • private_key: 私钥,十六进制c风格字符串格式

    • 返回:

      • KeyPair对象指针

      • 失败返回NULL,使用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • KeyPair对象不再使用时需要调用bcos_sdk_destroy_keypair接口释放,以免造成内存泄露

  • bcos_sdk_get_keypair_type

    • 原型:

      • int bcos_sdk_get_keypair_type(void* key_pair)

    • 功能:

      • 获取KeyPair对象类型

    • 参数:

      • key_pair: KeyPair对象指针

    • 返回:

      • 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

  • bcos_sdk_get_keypair_address

    • 原型:

      • const char* bcos_sdk_get_keypair_address(void* key_pair)

    • 功能:

      • 获取KeyPair对象对应的账户地址

    • 参数:

      • key_pair: KeyPair对象指针

    • 返回:

      • 账户地址,十六进制c风格字符串

    • 注意:

      • 返回的字符串不使用时使用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_get_keypair_public_key

    • 原型:

      • const char* bcos_sdk_get_keypair_public_key(void* key_pair)

    • 功能:

      • 获取KeyPair对象的公钥字符串

    • 参数:

      • key_pair: KeyPair对象指针

    • 返回:

      • 公钥,十六进制c风格字符串

    • 注意:

      • 返回的字符串不使用时使用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_get_keypair_private_key

    • 原型:

      • const char* bcos_sdk_get_keypair_private_key(void* key_pair)

    • 功能:

      • 获取KeyPair对象的私钥字符串

    • 参数:

      • key_pair: KeyPair对象指针

    • 返回:

      • 私钥,十六进制c风格字符串

    • 注意:

      • 返回的字符串不使用时使用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_destroy_keypair

    • 原型:

      • void bcos_sdk_destroy_keypair(void* key_pair)

    • 功能:

      • 释放KeyPair对象

    • 参数:

      • key_pair: KeyPair对象指针

    • 返回:

6.2 ABI编解码

  • bcos_sdk_abi_encode_constructor

    • 原型:

      • const char* bcos_sdk_abi_encode_constructor(const char* abi, const char* bin, const char* params, int crypto_type)

    • 功能:

      • 编码构造函数参数

    • 参数:

      • abi: 合约ABI,JSON字符串

      • bin: 合约BIN,十六进制c风格字符串

      • params: 构造函数参数,JSON字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 编码后的参数,十六进制c风格字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_encode_method

    • 原型:

      • const char* bcos_sdk_abi_encode_method(const char* abi, const char* method_name, const char* params, int crypto_type)

    • 功能:

      • 编码接口参数

    • 参数:

      • abi: 合约ABI,JSON字符串

      • method_name: 接口名

      • params: 构造函数的参数,JSON字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 编码后的参数,十六进制c风格字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_encode_method_by_method_id

    • 原型:

      • const char* bcos_sdk_abi_encode_method_by_method_id(const char* abi, const char* method_id, const char* params, int crypto_type)

    • 功能:

      • 根据methodID编码参数

    • 参数:

      • abi: 合约ABI,JSON字符串

      • method_id: methodID

      • params: 构造函数的参数,JSON字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 编码后的参数,十六进制c风格字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_encode_method_by_method_sig

    • 原型:

      • const char* bcos_sdk_abi_encode_method_by_method_sig(const char* method_sig, const char* params, int crypto_type)

    • 功能:

      • 根据接口signature编码参数

    • 参数:

      • method_sig: 接口signature

      • params: 构造函数的参数,JSON字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 编码后的参数,十六进制c风格字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_method_input

    • 原型:

      • const char* bcos_sdk_abi_decode_method_input(const char* abi, const char* method_name, const char* data, int crypto_type)

    • 功能:

      • 根据接口名解析输入参数

    • 参数:

      • abi: 合约ABI,JSON字符串

      • method_name: 接口名

      • data: 编码的参数,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的参数,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_method_input_by_method_id

    • 原型:

      • const char* bcos_sdk_abi_decode_method_input_by_method_id(const char* abi, const char* method_id, const char* data, int crypto_type)

    • 功能:

      • 根据methodID解析输入参数

    • 参数:

      • abi: 合约ABI

      • method_id: methodID

      • data: ABI编码的参数,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的参数,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_method_input_by_method_sig

    • 原型:

      • const char* bcos_sdk_abi_decode_method_input_by_method_sig(const char* method_sig, const char* data, int crypto_type)

    • 功能:

      • 根据接口signature解析输入参数

    • 参数:

      • method_sig: 接口signature

      • data: 编码的参数,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的参数,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_method_output

    • 原型:

      • const char* bcos_sdk_abi_decode_method_output(const char* abi, const char* method_name, const char* data, int crypto_type)

    • 功能:

      • 根据接口名解析返回参数

    • 参数:

      • abi: 合约ABI

      • method_name: 接口名

      • data: 编码的返回,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的返回,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_method_output_by_method_id

    • 原型:

      • const char* bcos_sdk_abi_decode_method_output_by_method_id(const char* abi, const char* method_id, const char* data, int crypto_type)

    • 功能:

      • 根据methodID解析返回参数

    • 参数:

      • abi: 合约ABI

      • method_id: methodID

      • data: 编码的返回,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的返回,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_event

    • 原型:

      • const char* bcos_sdk_abi_decode_event(const char* abi, const char* event_name, const char* data, int crypto_type)

    • 功能:

      • 根据event名解析event参数

    • 参数:

      • abi: 合约ABI

      • event_name: event名

      • data: 编码的返回,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的event参数,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_abi_decode_event_by_topic

    • 原型:

      • const char* bcos_sdk_abi_decode_event_by_topic(const char* abi, const char* topic, const char* data, int crypto_type)

    • 功能:

      • 根据topic解析event参数

    • 参数:

      • abi: 合约ABI

      • topic: event topic

      • data: 编码的返回,十六进制c风格字符串

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

    • 返回:

      • 解析后的event参数,十六进制c风格JSON字符串

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

6.3 构造签名交易

  • bcos_sdk_get_group_wasm_and_crypto

    • 原型:

      • void bcos_sdk_get_group_wasm_and_crypto(void* sdk, const char* group_id, int* wasm, int* crypto_type)

    • 功能:

      • 获取群组的部分基础信息 1. 群组运行wasm合约,还是solidity合约 2. 群组为国密还是非国密环境

    • 参数:

      • sdk: sdk对象,bcos_sdk_create或者bcos_sdk_create_by_config_file创建

      • group_id: 群组ID

      • wasm: 返回值,该群组是否运行wasm合约

        • 0: 否,群组运行solidity合约,

        • 1: 是,群组运行wasm合约

      • crypto_type: 返回值,该群组是否为国密类型,0: 否,1: 是

    • 返回:

  • bcos_sdk_get_group_chain_id

    • 原型:

      • const char* bcos_sdk_get_group_chain_id(void* sdk, const char* group_id)

    • 功能:

      • 获取群组的链ID,构造交易时需使用该参数

    • 参数:

      • sdk: sdk对象,bcos_sdk_create或者bcos_sdk_create_by_config_file创建

      • group_id: 群组ID

    • 返回:

      • 群组的链ID

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_create_transaction_data

    • 原型:

      • void* bcos_sdk_create_transaction_data(const char* group_id, const char* chain_id, const char* to, const char* data, const char* abi, int64_t block_limit)

    • 功能:

      • 创建TransactionData对象,该对象是未签名的交易对象

    • 参数:

      • group_id: 群组ID

      • chain_id: 链ID,可以调用bcos_sdk_get_group_chain_id接口获取群组的链ID

      • to: 调用的合约地址,部署合约时设置为空字符串””

      • data: ABI编码后的参数,十六进制c风格字符串,参考ABI编解码

      • abi: 合约的ABI,JSON字符串,可选参数,部署合约时可以将合约的ABI传入,默认传入空字符串””

      • block_limit: 区块限制,可以调用bcos_rpc_get_block_limit接口获取

    • 返回:

      • TransactionData对象指针

      • 失败返回NULL,使用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • TransactionData对象需要调用bcos_sdk_destroy_transaction_data接口释放,以免造成内存泄露

  • bcos_sdk_destroy_transaction_data

    • 原型:

      • void bcos_sdk_destroy_transaction_data(void* transaction_data)

    • 功能:

      • 释放TransactionData对象

    • 参数:

      • transaction_data: TransactionData对象指针

    • 返回:

  • bcos_sdk_calc_transaction_data_hash

    • 原型:

      • const char* bcos_sdk_calc_transaction_data_hash(int crypto_type, void* transaction_data)

    • 功能:

      • 计算TransactionData对象哈希

    • 参数:

      • crypto_type: 类型, ECDSA: BCOS_C_SDK_ECDSA_TYPE(0), SM: BCOS_C_SDK_SM_TYPE(1)

      • transaction_data: TransactionData对象指针

    • 返回:

      • TransactionData对象哈希

      • 失败返回NULL,使用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • TransactionData对象的哈希,也是交易的哈希

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_sign_transaction_data_hash

    • 原型:

      • const char* bcos_sdk_sign_transaction_data_hash(void* keypair, const char* transcation_hash)

    • 功能:

      • 交易哈希签名

    • 参数:

      • keypair:KeyPair对象,参考KeyPair签名对象

      • transcation_hash: 交易哈希,由bcos_sdk_calc_transaction_data_hash接口生成

    • 返回:

      • 交易签名,字符串类型

      • 失败返回NULL,调用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_create_signed_transaction_with_signed_data

    • 原型:

    const char* bcos_sdk_create_signed_transaction_with_signed_data(void* transaction_data, const char* signed_transaction_data, const char* transaction_data_hash, int32_t attribute)
    
    • 功能:

      • 创建签名的交易

    • 参数:

      • transaction_data: TransactionData对象

      • signed_transaction_data: 交易哈希的签名,十六进制c风格字符串,bcos_sdk_sign_transaction_data_hash接口生成

      • transaction_data_hash: 交易哈希,十六进制c风格字符串,bcos_sdk_calc_transaction_data_hash接口生成

      • attribute: 交易额外属性,待拓展,默认填0即可

    • 返回:

      • 签名的交易,十六进制c风格字符串

      • 失败返回NULL,调用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • 返回的字符串需要调用bcos_sdk_c_free释放,以免造成内存泄露

  • bcos_sdk_create_signed_transaction

    • 原型:

    void bcos_sdk_create_signed_transaction(void* key_pair, const char* group_id, const char* chain_id, const char* to, const char* data, const char* abi, int64_t block_limit, int32_t attribute, char** tx_hash, char** signed_tx)
    
    • 功能:

      • 创建签名的交易

    • 参数:

      • key_pair: KeyPair对象,参考KeyPair签名对象

      • group_id: 群组ID

      • chain_id: 链ID,可以调用bcos_sdk_get_group_chain_id接口获取群组的链ID

      • to: 调用的合约地址,部署合约时设置为空字符串””

      • data: ABI编码后的参数,参考ABI编解码

      • abi: 合约的ABI,可选参数,部署合约时可以将合约的ABI传入,默认空字符串””

      • block_limit: 区块限制,可以调用bcos_rpc_get_block_limit接口获取

      • attribute: 交易额外属性,待拓展,默认填0即可

      • tx_hash: 返回值,交易哈希,十六进制c风格字符串

      • signed_tx: 返回值,签名的交易,十六进制c风格字符串

    • 返回:

      • 调用bcos_sdk_get_last_error接口判断是否成功,0表示成功,其他值表示错误码

    • 注意:

      • 返回的tx_hashsigned_tx需要调用bcos_sdk_c_free释放,以免造成内存泄露

    • 说明:

      • bcos_sdk_create_signed_transaction相当于下面几个接口功能的组合,创建交易、交易哈希、交易签名流程需要分开处理时,使用下面几个接口:

        • bcos_sdk_create_transaction_data: 创建TransactionData

        • bcos_sdk_calc_transaction_data_hash: 计算交易哈希

        • bcos_sdk_sign_transaction_data_hash: 交易哈希签名

        • bcos_sdk_create_signed_transaction_with_signed_data: 创建签名的交易

  • bcos_sdk_create_transaction_builder_service

    • 原型:

      • void* bcos_sdk_create_transaction_builder_service(void* sdk, const char* group_id)

    • 功能:

      • 创建TransactionBuilderService对象,简化构造签名交易的姿势,可以对比bcos_sdk_create_transaction_data_with_tx_builder_servicebcos_sdk_create_transaction_data接口的差异

    • 参数:

      • sdk: sdk对象指针

      • group_id: 群组ID

    • 返回:

      • TransactionBuilderService对象指针

      • 失败返回NULL,调用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • TransactionBuilderService对象需要使用bcos_sdk_destroy_transaction_builder_service销毁,以免造成内存泄露

  • bcos_sdk_destroy_transaction_builder_service

    • 原型:

      • bcos_sdk_destroy_transaction_builder_service(void* service)

    • 功能:

      • 销毁TransactionBuilderService对象

    • 参数:

      • TransactionBuilderService对象指针

    • 返回:

  • bcos_sdk_create_transaction_data_with_tx_builder_service

    • 原型:

      • void* bcos_sdk_create_transaction_data_with_tx_builder_service(void* tx_builder_service, const char* to, const char* data, const char* abi)

    • 功能:

      • 创建TransactionData对象

    • 参数:

      • tx_builder_service: TransactionBuilderService对象指针

      • to: 调用的合约地址,部署合约时设置为空字符串””

      • data: ABI编码后的参数,参考ABI编解码

      • abi: 合约的ABI,可选参数,部署合约时可以将合约的ABI传入,默认空字符串””

    • 返回:

      • TransactionData对象指针

      • 失败返回NULL使用bcos_sdk_get_last_errorbcos_sdk_get_last_error_msg获取错误码和错误描述信息

    • 注意:

      • 创建的TransactionData对象需要由bcos_sdk_destroy_transaction_data接口释放,以免造成内存泄露

  • bcos_sdk_create_signed_transaction_with_tx_builder_service

    • 原型:

    void bcos_sdk_create_signed_transaction_with_tx_builder_service(void*tx_builder_service, void* key_pair, const char*to, const char* data, const char* abi, int32_t attribute, char** tx_hash, char** signed_tx)
    
    • 功能:

      • 创建签名的交易

    • 参数:

      • tx_builder_service: TransactionBuilderService对象指针

      • key_pair: KeyPair对象,参考KeyPair签名对象

      • to: 调用的合约地址,部署合约时设置为空字符串””

      • data: ABI编码后的参数,参考ABI编解码

      • abi: 合约的ABI,可选参数,部署合约时可以将合约的ABI传入,默认空字符串””

      • attribute: 交易额外属性,待拓展,默认填0即可

      • tx_hash: 返回值,交易哈希,十六进制c风格字符串

      • signed_tx: 返回值,签名的交易,十六进制c风格字符串

    • 注意:

      • 返回的tx_hashsigned_tx需要调用bcos_sdk_c_free释放,以免造成内存泄露