github.com/Finschia/finschia-sdk@v0.48.1/server/rosetta.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/Finschia/finschia-sdk/codec"
     9  	codectypes "github.com/Finschia/finschia-sdk/codec/types"
    10  	"github.com/Finschia/finschia-sdk/server/rosetta"
    11  )
    12  
    13  // RosettaCommand builds the rosetta root command given
    14  // a protocol buffers serializer/deserializer
    15  func RosettaCommand(ir codectypes.InterfaceRegistry, cdc codec.Codec) *cobra.Command {
    16  	cmd := &cobra.Command{
    17  		Use:   "rosetta",
    18  		Short: "spin up a rosetta server",
    19  		RunE: func(cmd *cobra.Command, args []string) error {
    20  			cmd.Println("WARNING: The Rosetta server is still a beta feature. Please do not use it in production.")
    21  
    22  			conf, err := rosetta.FromFlags(cmd.Flags())
    23  			if err != nil {
    24  				return err
    25  			}
    26  
    27  			protoCodec, ok := cdc.(*codec.ProtoCodec)
    28  			if !ok {
    29  				return fmt.Errorf("exoected *codec.ProtoMarshaler, got: %T", cdc)
    30  			}
    31  			conf.WithCodec(ir, protoCodec)
    32  
    33  			rosettaSrv, err := rosetta.ServerFromConfig(conf)
    34  			if err != nil {
    35  				return err
    36  			}
    37  			return rosettaSrv.Start()
    38  		},
    39  	}
    40  	rosetta.SetFlags(cmd.Flags())
    41  
    42  	return cmd
    43  }