github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/state/keyring.go (about) 1 package state 2 3 import ( 4 kr "github.com/cosmos/cosmos-sdk/crypto/keyring" 5 6 apptypes "github.com/celestiaorg/celestia-app/x/blob/types" 7 8 "github.com/celestiaorg/celestia-node/libs/keystore" 9 "github.com/celestiaorg/celestia-node/nodebuilder/p2p" 10 ) 11 12 const DefaultAccountName = "my_celes_key" 13 14 // KeyringSigner constructs a new keyring signer. 15 // NOTE: we construct keyring signer before constructing node for easier UX 16 // as having keyring-backend set to `file` prompts user for password. 17 func KeyringSigner(cfg Config, ks keystore.Keystore, net p2p.Network) (*apptypes.KeyringSigner, error) { 18 ring := ks.Keyring() 19 var info *kr.Record 20 // if custom keyringAccName provided, find key for that name 21 if cfg.KeyringAccName != "" { 22 keyInfo, err := ring.Key(cfg.KeyringAccName) 23 if err != nil { 24 log.Errorw("failed to find key by given name", "keyring.accname", cfg.KeyringAccName) 25 return nil, err 26 } 27 info = keyInfo 28 } else { 29 // use default key 30 keyInfo, err := ring.Key(DefaultAccountName) 31 if err != nil { 32 log.Errorw("could not access key in keyring", "name", DefaultAccountName) 33 return nil, err 34 } 35 info = keyInfo 36 } 37 // construct signer using the default key found / generated above 38 signer := apptypes.NewKeyringSigner(ring, info.Name, string(net)) 39 signerInfo := signer.GetSignerInfo() 40 log.Infow("constructed keyring signer", "backend", cfg.KeyringBackend, "path", ks.Path(), 41 "key name", signerInfo.Name, "chain-id", string(net)) 42 43 return signer, nil 44 }