package codec import ( "bytes" "encoding/json" "fmt" amino "github.com/tendermint/go-amino" cryptoAmino "github.com/tendermint/tendermint/crypto/encoding/amino" ) // amino codec to marshal/unmarshal type Codec = amino.Codec func New() *Codec { return amino.NewCodec() } // Register the go-crypto to the codec func RegisterCrypto(cdc *Codec) { cryptoAmino.RegisterAmino(cdc) } // attempt to make some pretty json func MarshalJSONIndent(cdc *Codec, obj interface{}) ([]byte, error) { bz, err := cdc.MarshalJSON(obj) if err != nil { return nil, err } var out bytes.Buffer err = json.Indent(&out, bz, "", " ") if err != nil { return nil, err } return out.Bytes(), nil } // MustMarshalJSONIndent executes MarshalJSONIndent except it panics upon failure. func MustMarshalJSONIndent(cdc *Codec, obj interface{}) []byte { bz, err := MarshalJSONIndent(cdc, obj) if err != nil { panic(fmt.Sprintf("failed to marshal JSON: %s", err)) } return bz } //__________________________________________________________________ // generic sealed codec to be used throughout sdk var Cdc *Codec func init() { cdc := New() RegisterCrypto(cdc) Cdc = cdc.Seal() }