From d6a3661830f80ef57be208cec457d49c44a8d435 Mon Sep 17 00:00:00 2001 From: Meng-Ying Yang Date: Thu, 27 Dec 2018 19:22:41 +0800 Subject: indexer: support data exporting/forwarding (#103) To support more effective and flexible blockchain info exploring, we add `indexer` package, defines the flow of indexer dameon, and integrate into dex.Dexon fullnode. For more export options, we use Golang built-in `plugin` package to support mulitple implementations. --- dex/backend.go | 14 ++++++++++++++ dex/config.go | 5 +++++ 2 files changed, 19 insertions(+) (limited to 'dex') diff --git a/dex/backend.go b/dex/backend.go index 48e05698f..894906a64 100644 --- a/dex/backend.go +++ b/dex/backend.go @@ -33,6 +33,7 @@ import ( "github.com/dexon-foundation/dexon/eth/gasprice" "github.com/dexon-foundation/dexon/ethdb" "github.com/dexon-foundation/dexon/event" + "github.com/dexon-foundation/dexon/indexer" "github.com/dexon-foundation/dexon/internal/ethapi" "github.com/dexon-foundation/dexon/log" "github.com/dexon-foundation/dexon/node" @@ -75,6 +76,8 @@ type Dexon struct { networkID uint64 netRPCService *ethapi.PublicNetAPI + + indexer indexer.Indexer } func New(ctx *node.ServiceContext, config *Config) (*Dexon, error) { @@ -132,6 +135,14 @@ func New(ctx *node.ServiceContext, config *Config) (*Dexon, error) { } dex.bloomIndexer.Start(dex.blockchain) + if config.Indexer.Enable { + dex.indexer = indexer.NewIndexerFromConfig( + indexer.NewROBlockChain(dex.blockchain), + config.Indexer, + ) + dex.indexer.Start() + } + if config.TxPool.Journal != "" { config.TxPool.Journal = ctx.ResolvePath(config.TxPool.Journal) } @@ -241,6 +252,9 @@ func (s *Dexon) Start(srvr *p2p.Server) error { func (s *Dexon) Stop() error { s.bp.Stop() s.app.Stop() + if s.indexer != nil { + s.indexer.Stop() + } return nil } diff --git a/dex/config.go b/dex/config.go index 404be2fb0..8aa002222 100644 --- a/dex/config.go +++ b/dex/config.go @@ -28,6 +28,7 @@ import ( "github.com/dexon-foundation/dexon/core" "github.com/dexon-foundation/dexon/dex/downloader" "github.com/dexon-foundation/dexon/eth/gasprice" + "github.com/dexon-foundation/dexon/indexer" "github.com/dexon-foundation/dexon/params" ) @@ -48,6 +49,7 @@ var DefaultConfig = Config{ }, BlockProposerEnabled: false, DefaultGasPrice: big.NewInt(params.GWei), + Indexer: indexer.Config{}, } func init() { @@ -117,4 +119,7 @@ type Config struct { // Dexon options DMoment int64 + + // Indexer config + Indexer indexer.Config } -- cgit v1.2.3