【fiscoBcos】 解析交易回执

 fiscoBcos:联盟链,一个区块链底层平台。

解决问题:用java+webase-Front开发区块链应用,java程序与webase-Front交互时,返回的交易回执时十六进制编码,不是肉眼能读懂的信息。

问题描述:代码在文末】

                通过webase-Front平台中的合约操作,发现交易回执是可以解析的:

 

而返回给java客户端的信息需要解码才能读懂、使用。

FISCO BCOS的交易是一段发往区块链系统的请求数据,用于部署合约,调用合约接口,维护合约的生命周期以及管理资产,进行价值交换等。当交易确认后会产生交易回执,交易回执交易均保存在区块里,用于记录交易执行过程生成的信息,如结果码、日志、消耗的gas量等。用户可以使用交易哈希查询交易回执,判定交易是否完成。

代码:

导入jar包:

repositories {
    maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
    maven { url "https://dl.bintray.com/ethereum/maven/" }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    mavenCentral()
}
compile group: "org.fisco-bcos", name: "web3sdk", version: "2.0.34-SNAPSHOT"

代码包路径org.fisco.bcos.web3j.tx.txdecode,使用TransactionDecoderFactory工厂类建立交易解析对象TransactionDecoder有两种方式:

//方法【一】
//本文使用的方法
//abi:合约abi   bin:暂时不用,可以为空字符串
TransactionDecoder buildTransactionDecoder(String abi, String bin);
//方法【二】
//contracName:合约名
TransactionDecoder buildTransactionDecoder(String contractName);

 调用decodeInputReturnJson\decodeInputReturnObject获得Json\List输出

【完整代码(解析部分)】

方法(){
    
    /***与webase交互,发送交易,并获得交易回执**************/
        
        //...
        //交互代码...
    
    /***与webase交互,发送交易,并获得交易回执**************/

    //输出未解析的结果
        String outputRes = resBody.getStr("output");
        String inputRes = resBody.getStr("input");

        System.out.println(outputRes);
        System.out.println(inputRes);

        //创建TransactionDecoder对象,用于解析结果
        String abi = ABI;
        String bin = "";
        TransactionDecoder txDecodeSampleDecoder = buildTransactionDecoder(abi, bin);

        //解析输出output字段
        String jsonResult = txDecodeSampleDecoder.decodeOutputReturnJson(inputRes, outputRes);
        List<ResultEntity> listResult = txDecodeSampleDecoder.decodeOutputReturnObject(inputRes, outputRes);
        System.out.println("输出内容:");
        System.out.println("json => \n" + jsonResult);
        System.out.println("list => \n" + listResult);

        //解析输入input字段
        String jsonResult_in = txDecodeSampleDecoder.decodeInputReturnJson(inputRes);
        List<ResultEntity> listResult_in = txDecodeSampleDecoder.decodeInputReturnObject(inputRes);
        System.out.println("输入内容:");
        System.out.println("json => \n" + jsonResult_in);
        System.out.println("list => \n" + listResult_in);


}

突然解决困惑已久的问题,喜不自胜,写下此文记录

感谢各位大佬指正!

参考源自的fisco技术文档:https://www.bookstack.cn/read/fisco-bcos-v2.0/b69e6fc506dfa780.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值