code: func NewTxPool(config *params.ChainConfig, chain *LightChain, relay TxRelayBackend) *TxPool {
  	pool := &TxPool{
  		config:      config,
  		signer:      types.NewEIP155Signer(config.ChainID),
  		nonce:       make(map[common.Address]uint64),
  		pending:     make(map[common.Hash]*types.Transaction),
  		mined:       make(map[common.Hash][]*types.Transaction),
  		quit:        make(chan bool),
  		chainHeadCh: make(chan core.ChainHeadEvent, chainHeadChanSize),
  		chain:       chain,
  		relay:       relay,
  		odr:         chain.Odr(),
  		chainDb:     chain.Odr().Database(),
  		head:        chain.CurrentHeader().Hash(),
  		clearIdx:    chain.CurrentHeader().Number.Uint64(),
  	}
  	// Subscribe events from blockchain
  	pool.chainHeadSub = pool.chain.SubscribeChainHeadEvent(pool.chainHeadCh)
  	go pool.eventLoop()
  
  	return pool
  }
docs: // NewTxPool creates a new light transaction pool