NewNode returns a new, ready to go, Tendermint Node.
(config *cfg.Config, privValidator types.PrivValidator, nodeKey *p2p.NodeKey, clientCreator proxy.ClientCreator, genesisDocProvider GenesisDocProvider, dbProvider DBProvider, metricsProvider MetricsProvider, logger log.Logger, misbehaviors map[int64]cs.Misbehavior, options ...Option, )
| 718 | |
| 719 | // NewNode returns a new, ready to go, Tendermint Node. |
| 720 | func NewNode(config *cfg.Config, |
| 721 | privValidator types.PrivValidator, |
| 722 | nodeKey *p2p.NodeKey, |
| 723 | clientCreator proxy.ClientCreator, |
| 724 | genesisDocProvider GenesisDocProvider, |
| 725 | dbProvider DBProvider, |
| 726 | metricsProvider MetricsProvider, |
| 727 | logger log.Logger, |
| 728 | misbehaviors map[int64]cs.Misbehavior, |
| 729 | options ...Option, |
| 730 | ) (*Node, error) { |
| 731 | blockStore, stateDB, err := initDBs(config, dbProvider) |
| 732 | if err != nil { |
| 733 | return nil, err |
| 734 | } |
| 735 | |
| 736 | stateStore := sm.NewStore(stateDB, sm.StoreOptions{ |
| 737 | DiscardABCIResponses: false, |
| 738 | }) |
| 739 | |
| 740 | state, genDoc, err := LoadStateFromDBOrGenesisDocProvider(stateDB, genesisDocProvider) |
| 741 | if err != nil { |
| 742 | return nil, err |
| 743 | } |
| 744 | |
| 745 | // Create the proxyApp and establish connections to the ABCI app (consensus, mempool, query). |
| 746 | proxyApp, err := createAndStartProxyAppConns(clientCreator, logger) |
| 747 | if err != nil { |
| 748 | return nil, err |
| 749 | } |
| 750 | |
| 751 | // EventBus and IndexerService must be started before the handshake because |
| 752 | // we might need to index the txs of the replayed block as this might not have happened |
| 753 | // when the node stopped last time (i.e. the node stopped after it saved the block |
| 754 | // but before it indexed the txs, or, endblocker panicked) |
| 755 | eventBus, err := createAndStartEventBus(logger) |
| 756 | if err != nil { |
| 757 | return nil, err |
| 758 | } |
| 759 | |
| 760 | indexerService, txIndexer, blockIndexer, err := createAndStartIndexerService(config, dbProvider, eventBus, logger) |
| 761 | if err != nil { |
| 762 | return nil, err |
| 763 | } |
| 764 | |
| 765 | // If an address is provided, listen on the socket for a connection from an |
| 766 | // external signing process. |
| 767 | if config.PrivValidatorListenAddr != "" { |
| 768 | // FIXME: we should start services inside OnStart |
| 769 | privValidator, err = createAndStartPrivValidatorSocketClient(config.PrivValidatorListenAddr, genDoc.ChainID, logger) |
| 770 | if err != nil { |
| 771 | return nil, fmt.Errorf("error with private validator socket client: %w", err) |
| 772 | } |
| 773 | } |
| 774 | |
| 775 | pubKey, err := privValidator.GetPubKey() |
| 776 | if err != nil { |
| 777 | return nil, fmt.Errorf("can't get pubkey: %w", err) |
no test coverage detected