code: func New(config *params.CliqueConfig, db ethdb.Database) *Clique {
  	// Set any missing consensus parameters to their defaults
  	conf := *config
  	if conf.Epoch == 0 {
  		conf.Epoch = epochLength
  	}
  	// Allocate the snapshot caches and create the engine
  	recents, _ := lru.NewARC(inmemorySnapshots)
  	signatures, _ := lru.NewARC(inmemorySignatures)
  
  	return &Clique{
  		config:     &conf,
  		db:         db,
  		recents:    recents,
  		signatures: signatures,
  		proposals:  make(map[common.Address]bool),
  	}
  }
docs: // New creates a Clique proof-of-authority consensus engine with the initial
  // signers set to the ones provided by the user.