code: func NewSimulatedBackend(alloc core.GenesisAlloc, gasLimit uint64) *SimulatedBackend {
  	database := rawdb.NewMemoryDatabase()
  	genesis := core.Genesis{Config: params.AllEthashProtocolChanges, GasLimit: gasLimit, Alloc: alloc}
  	genesis.MustCommit(database)
  	blockchain, _ := core.NewBlockChain(database, nil, genesis.Config, ethash.NewFaker(), vm.Config{}, nil)
  
  	backend := &SimulatedBackend{
  		database:   database,
  		blockchain: blockchain,
  		config:     genesis.Config,
  		events:     filters.NewEventSystem(new(event.TypeMux), &filterBackend{database, blockchain}, false),
  	}
  	backend.rollback()
  	return backend
  }
docs: // NewSimulatedBackend creates a new binding backend using a simulated blockchain
  // for testing purposes.