code: func SetupGenesisBlock(db ethdb.Database, genesis *Genesis) (*params.ChainConfig, common.Hash, error) {
  	return SetupGenesisBlockWithOverride(db, genesis, nil)
  }
docs: // SetupGenesisBlock writes or updates the genesis block in db.
  // The block that will be used is:
  //
  //                          genesis == nil       genesis != nil
  //                       +------------------------------------------
  //     db has no genesis |  main-net default  |  genesis
  //     db has genesis    |  from DB           |  genesis (if compatible)
  //
  // The stored chain configuration will be updated if it is compatible (i.e. does not
  // specify a fork block below the local head block). In case of a conflict, the
  // error is a *params.ConfigCompatError and the new, unwritten config is returned.
  //
  // The returned chain configuration is never nil.