Common FAQs
如何判断交易执行成功
通过 cfx_getTransactionByHash 获取 transaction 信息,只有 status = 0 一种情况表示交易被成功执行了。
Invalid parameters: request, data: "network prefix unexpected: ours cfx, got cfxtest"
调用 cfx_call 方法时,如果调用合约地址的网络,跟节点的网络不一致,会返回此错误
如何在智能合约里面保证线程安全, 或者有没有方法锁之类的修饰 ?
合约是单线程执行的,没有线程安全问题
Couflux可以使用Chainlink吗
目前还没有集成 chainlink ,不过可以使用 Witnet
Conflux 目前 Oracle 服务有哪些
有没有 API 可以查询某个合约的所有交易记录?
ConfluxScan 提供 OPENAPI 支持查询某账户最多 1W 调交易记录。
为什么同一笔交易会出现在多个区块当中?
Conflux 的账本结构为树图结构,区块并行产生,因此会导致一笔交易被多个区块打包的情况;但最终账本全排序之后,只有交易所在的第一个区块中的交易是有效交易。
去重方式参看 Next One
Conflux (树图账本)如何扫块获取所有交易?
Conflux 账本有一个 epoch 编号,epoch 从 0 开始自增。每个 epoch 中可能有多个区块,区块中包含交易。因此扫描交易可按照 epoch 一次获取其中的所有区块,以及区块中所有的交易。
- cfx_getBlocksByEpoch 获取某 epoch 的所有区块hash
- cfx_getBlockByHash 获取区块内的交易
另外树图结构账本,有交易被多个区块重复打包的情况,可采用如下方式之一去重:
- 同时验证区块中交易的 blockHash 是否与区块的 hash 相同,不同则需要过滤掉
- 判断 tx.status 若值为 0x0 或 0x1 为有效交易,为 null 或者 0x2 则需要过滤掉
采用以上两种方式之一均可。
Note: 另外还需要注意 latest_confirm 到 latest_state 之间的交易,可能由于 pivot chain switch 而发生变化.
No Comments