FAQ¶
标签:c-sdk
FAQ
本小结罗列一些使用c-sdk
常见的一些问题:
1. 发送交易返回异常: transaction hash mismatching
¶
ErrorMessage: /home/ci/actions-runner/_work/FISCO-BCOS/FISCO-BCOS/bcos-tars-protocol/bcos-tars-protocol/protocol/TransactionFactoryImpl.h(77): Throw in function virtual bcos::protocol::Transaction::Ptr bcostars::protocol::TransactionFactoryImpl::createTransaction(bcos::bytesConstRef, bool, bool)
Dynamic exception type: boost::wrapexcept<std::invalid_argument>
std::exception::what: transaction hash mismatching
底层区块链环境由原来的版本升级至v3.2.0+
,或者直接使用v3.2.0+
环境,sdk
发送交易时,可能会出现transaction hash mismatching
的异常
原因
区块链节点v3.2.0+
新增对交易hash
强制校验
节点检测到sdk
发送交易结构里面携带的交易hash
字段与节点本身计算出来的交易hash
不匹配,认为该交易存在问题拒绝该交易。
场景
一般场景下不会出现该问题,仅在用户使用sdk
工具自行组装(分别调用接口创建、计算hash、签名)交易时,可能会出现该问题
解决
使用正确的接口组装交易:
bcos_sdk_create_transaction_data
bcos_sdk_calc_transaction_data_hash # 注意:一定要使用该接口计算hash
bcos_sdk_sign_transaction_data_hash
bcos_sdk_create_signed_transaction_with_signed_data或者bcos_sdk_create_signed_transaction_with_signed_data_ver_extra_data
示例: c-sdk示例
各个语言的sdk
对上述接口均有对应的封装:
- Java SDK
链接
- 其他语言sdk,请参考具体文档,或者源码