bnb-chain / go-sdk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tx decode problem

asovetnikov opened this issue · comments

Hi! I use
github.com/binance-chain/go-sdk@v1.2.9
github.com/tendermint/tendermint@v0.32.3

When i try decode tx data, i get error
UnmarshalBinaryBare expected to read prefix bytes F0625DEE (since it is registered concrete) but got 41487759...

I use this code

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"github.com/bnb-chain/go-sdk/types"
	"github.com/bnb-chain/go-sdk/types/tx"
)

func main() {
	t := "xAHwYl3uClAqLIf6CiQKFDl0HkpqVwLPX3tRmpePL0eW9zYjEgwKA0JOQhCAwKjKmjoSJAoUILhJdbGuyuZDjKR/KVNqO//8IgUSDAoDQk5CEIDAqMqaOhJsCibrWumHIQNdu1R5kUw3Fnnwgi0gHNenyhF4aDixw6ML8koevPcIZxJAFfqW7RjkwC7PdlZaN2XV1n070I7tyLIGWwoxTnk3Ldd8LWSlu0NXCcZCF3RA2bEWjHtyZRZ1SWaliBcj72o3uSAD"

	codec := types.NewCodec()

	parsedTxs := tx.StdTx{}
	_, err := codec.UnmarshalBinaryLengthPrefixedReader(bytes.NewBuffer([]byte(t)), &parsedTxs, 0)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	bz, err := json.Marshal(parsedTxs)

	if err != nil {
		fmt.Println("Error - json marshal")
		return
	}

	fmt.Println(string(bz))

}

I resolved this problem

package main

import (
	"encoding/base64"
	"encoding/json"
	"fmt"
	"github.com/bnb-chain/go-sdk/types"
	"github.com/bnb-chain/go-sdk/types/tx"
)

func main() {
	t := "xAHwYl3uClAqLIf6CiQKFDl0HkpqVwLPX3tRmpePL0eW9zYjEgwKA0JOQhCAwKjKmjoSJAoUILhJdbGuyuZDjKR/KVNqO//8IgUSDAoDQk5CEIDAqMqaOhJsCibrWumHIQNdu1R5kUw3Fnnwgi0gHNenyhF4aDixw6ML8koevPcIZxJAFfqW7RjkwC7PdlZaN2XV1n070I7tyLIGWwoxTnk3Ldd8LWSlu0NXCcZCF3RA2bEWjHtyZRZ1SWaliBcj72o3uSAD"

	decode, err := base64.StdEncoding.DecodeString(t)
	if err != nil {
		return
	}

	codec := types.NewCodec()
	parsedTxs := tx.StdTx{}

	err = codec.UnmarshalBinaryLengthPrefixed(decode, &parsedTxs)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	bz, err := json.Marshal(parsedTxs)

	if err != nil {
		fmt.Println("Error - json marshal")
		return
	}

	fmt.Println(string(bz))

}