44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package rosetta
|
|
|
|
import (
|
|
"github.com/cosmos/gogoproto/proto"
|
|
|
|
"cosmossdk.io/x/tx/signing"
|
|
|
|
"github.com/cosmos/cosmos-sdk/codec"
|
|
"github.com/cosmos/cosmos-sdk/codec/address"
|
|
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
|
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
authcodec "github.com/cosmos/cosmos-sdk/x/auth/types"
|
|
bankcodec "github.com/cosmos/cosmos-sdk/x/bank/types"
|
|
)
|
|
|
|
// MakeCodec generates the codec required to interact
|
|
// with the cosmos APIs used by the rosetta gateway
|
|
func MakeCodec() (*codec.ProtoCodec, codectypes.InterfaceRegistry) {
|
|
ir, err := codectypes.NewInterfaceRegistryWithOptions(
|
|
codectypes.InterfaceRegistryOptions{
|
|
ProtoFiles: proto.HybridResolver,
|
|
SigningOptions: signing.Options{
|
|
AddressCodec: address.Bech32Codec{
|
|
Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
|
|
},
|
|
ValidatorAddressCodec: address.Bech32Codec{
|
|
Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
|
|
},
|
|
},
|
|
},
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
cdc := codec.NewProtoCodec(ir)
|
|
|
|
authcodec.RegisterInterfaces(ir)
|
|
bankcodec.RegisterInterfaces(ir)
|
|
cryptocodec.RegisterInterfaces(ir)
|
|
|
|
return cdc, ir
|
|
}
|