diff --git a/cmd/integration/commands/stages.go b/cmd/integration/commands/stages.go
index 8f5d35643a94b0c5540f772d600ae06e3770d7b6..650acd64cf1a5ea485e6fc2b0ca0a71bbc37e166 100644
--- a/cmd/integration/commands/stages.go
+++ b/cmd/integration/commands/stages.go
@@ -927,6 +927,9 @@ func byChain() (*core.Genesis, *params.ChainConfig) {
 	case params.KovanChainName:
 		chainConfig = params.KovanChainConfig
 		genesis = core.DefaultKovanGenesisBlock()
+	case params.FermionChainName:
+		chainConfig = params.FermionChainConfig
+		genesis = core.DefaultFermionGenesisBlock()
 	}
 	return genesis, chainConfig
 }
@@ -956,7 +959,7 @@ func newSync(ctx context.Context, db kv.RwDB, miningConfig *params.MiningConfig)
 	var engine consensus.Engine
 	engine = ethash.NewFaker()
 	switch chain {
-	case params.SokolChainName, params.KovanChainName:
+	case params.SokolChainName, params.KovanChainName, params.FermionChainName:
 		engine = ethconfig.CreateConsensusEngine(chainConfig, logger, &params.AuRaConfig{DBPath: path.Join(datadir, "aura")}, nil, false)
 	}
 
diff --git a/cmd/sentry/download/sentry.go b/cmd/sentry/download/sentry.go
index 28edf846eb930bc85cd939698e03d3fcf3370fba..8bef6da82a1ce2789854bbe208b5b952b000e0ef 100644
--- a/cmd/sentry/download/sentry.go
+++ b/cmd/sentry/download/sentry.go
@@ -124,6 +124,8 @@ func makeP2PServer(
 		urls = params.SokolBootnodes
 	case params.KovanGenesisHash:
 		urls = params.KovanBootnodes
+	case params.FermionGenesisHash:
+		urls = params.FermionBootnodes
 	}
 	p2pConfig.BootstrapNodes = make([]*enode.Node, 0, len(urls))
 	for _, url := range urls {
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 2b87de396c2389c7da197eb23ce6973496b9d9e0..f48bb34bef52c1e849330a15657eeb3f5113d8cc 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -601,6 +601,8 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
 			urls = params.SokolBootnodes
 		case params.KovanChainName:
 			urls = params.KovanBootnodes
+		case params.FermionChainName:
+			urls = params.FermionBootnodes
 		default:
 			if cfg.BootstrapNodes != nil {
 				return // already set, don't apply defaults.
@@ -643,6 +645,8 @@ func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) {
 			urls = params.SokolBootnodes
 		case params.KovanChainName:
 			urls = params.KovanBootnodes
+		case params.FermionChainName:
+			urls = params.FermionBootnodes
 		default:
 			if cfg.BootstrapNodesV5 != nil {
 				return // already set, don't apply defaults.
@@ -875,6 +879,8 @@ func DataDirForNetwork(datadir string, network string) string {
 		return filepath.Join(datadir, "sokol")
 	case params.KovanChainName:
 		return filepath.Join(datadir, "kovan")
+	case params.FermionChainName:
+		return filepath.Join(datadir, "fermion")
 	default:
 		return datadir
 	}
@@ -1253,6 +1259,11 @@ func SetEthConfig(ctx *cli.Context, nodeConfig *node.Config, cfg *ethconfig.Conf
 			cfg.NetworkID = 42
 		}
 		cfg.Genesis = core.DefaultKovanGenesisBlock()
+	case params.FermionChainName:
+		if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
+			cfg.NetworkID = 102
+		}
+		cfg.Genesis = core.DefaultFermionGenesisBlock()
 	case params.DevChainName:
 		if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
 			cfg.NetworkID = 1337
@@ -1328,6 +1339,8 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis {
 		genesis = core.DefaultSokolGenesisBlock()
 	case params.KovanChainName:
 		genesis = core.DefaultKovanGenesisBlock()
+	case params.FermionChainName:
+		genesis = core.DefaultFermionGenesisBlock()
 	case params.DevChainName:
 		Fatalf("Developer chains are ephemeral")
 	}
diff --git a/consensus/aura/consensusconfig/embed.go b/consensus/aura/consensusconfig/embed.go
index 883c4c3d04e2ebb9d3e7ac52b2f4662e669f03a0..88d27f3d3c059c8c2d370b53e4cfe234db6f9a38 100644
--- a/consensus/aura/consensusconfig/embed.go
+++ b/consensus/aura/consensusconfig/embed.go
@@ -11,12 +11,17 @@ var Sokol []byte
 //go:embed kovan.json
 var Kovan []byte
 
+//go:embed fermion.json
+var Fermion []byte
+
 func GetConfigByChain(chainName string) []byte {
 	switch chainName {
 	case params.SokolChainName:
 		return Sokol
 	case params.KovanChainName:
 		return Kovan
+	case params.FermionChainName:
+		return Fermion
 	default:
 		return Sokol
 	}
diff --git a/consensus/aura/consensusconfig/fermion.json b/consensus/aura/consensusconfig/fermion.json
new file mode 100644
index 0000000000000000000000000000000000000000..603a5fbdd3140e8a1d9f04af248f1ebb6e127172
--- /dev/null
+++ b/consensus/aura/consensusconfig/fermion.json
@@ -0,0 +1,36 @@
+{
+  "stepDuration": 4,
+  "blockReward": "0x4563918244F40000",
+  "validators": {
+    "multi": {
+      "0": {
+        "list": [
+          "0x00D6Cc1BA9cf89BD2e58009741f4F7325BAdc0ED",
+          "0x00427feae2419c15b89d1c21af10d1b6650a4d3d",
+          "0x4Ed9B08e6354C70fE6F8CB0411b0d3246b424d6c",
+          "0x0020ee4Be0e2027d76603cB751eE069519bA81A1",
+          "0x0010f94b296a852aaac52ea6c5ac72e03afd032d",
+          "0x007733a1FE69CF3f2CF989F81C7b4cAc1693387A",
+          "0x00E6d2b931F55a3f1701c7389d592a7778897879",
+          "0x00e4a10650e5a6D6001C38ff8E64F97016a1645c",
+          "0x00a0a24b9f0e5ec7aa4c7389b8302fd0123194de"
+        ]
+      },
+      "10960440": {
+        "list": [
+          "0x00D6Cc1BA9cf89BD2e58009741f4F7325BAdc0ED",
+          "0x0010f94b296a852aaac52ea6c5ac72e03afd032d",
+          "0x00a0a24b9f0e5ec7aa4c7389b8302fd0123194de"
+        ]
+      },
+      "10960500": {
+        "safeContract": "0xaE71807C1B0a093cB1547b682DC78316D945c9B8"
+      }
+    }
+  },
+  "validateScoreTransition": 4301764,
+  "validateStepTransition": 1500000,
+  "maximumUncleCountTransition": 5067000,
+  "maximumUncleCount": 0
+}
+
diff --git a/core/allocs/fermion.json b/core/allocs/fermion.json
new file mode 100644
index 0000000000000000000000000000000000000000..1821842a5631b68d32f81a1d7d8252427e69f69e
--- /dev/null
+++ b/core/allocs/fermion.json
@@ -0,0 +1,17 @@
+{
+  "0x0000000000000000000000000000000000000001": {
+    "balance": "0x1"
+  },
+  "0x0000000000000000000000000000000000000002": {
+    "balance": "0x1"
+  },
+  "0x0000000000000000000000000000000000000003": {
+    "balance": "0x1"
+  },
+  "0x0000000000000000000000000000000000000004": {
+    "balance": "0x1"
+  },
+  "0x00521965e7bd230323c423d96c657db5b79d099f": {
+    "balance": "1606938044258990275541962092341162602522202993782792835301376"
+  }
+}
\ No newline at end of file
diff --git a/core/genesis.go b/core/genesis.go
index e52eddf006d9cdf1455c74200ce2a101dde653ad..fd4f589383873a093071221b44e2e9cd2016d4be 100644
--- a/core/genesis.go
+++ b/core/genesis.go
@@ -309,6 +309,8 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig {
 		return params.SokolChainConfig
 	case ghash == params.KovanGenesisHash:
 		return params.KovanChainConfig
+	case ghash == params.FermionGenesisHash:
+		return params.FermionChainConfig
 	default:
 		return params.AllEthashProtocolChanges
 	}
@@ -621,6 +623,24 @@ func DefaultKovanGenesisBlock() *Genesis {
 	}
 }
 
+func DefaultFermionGenesisBlock() *Genesis {
+	sealRlp, err := rlp.EncodeToBytes([][]byte{
+		common.FromHex(""),
+		common.FromHex("0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+	})
+	if err != nil {
+		panic(err)
+	}
+	return &Genesis{
+		Config:     params.FermionChainConfig,
+		Timestamp:  0x0,
+		SealRlp:    sealRlp,
+		GasLimit:   0x5B8D80,
+		Difficulty: big.NewInt(0x20000),
+		Alloc:      readPrealloc("allocs/fermion.json"),
+	}
+}
+
 // Pre-calculated version of:
 //    DevnetSignPrivateKey = crypto.HexToECDSA(sha256.Sum256([]byte("erigon devnet key")))
 //    DevnetEtherbase=crypto.PubkeyToAddress(DevnetSignPrivateKey.PublicKey)
diff --git a/params/bootnodes.go b/params/bootnodes.go
index 9328d8d6994107890d3223a867b772a31de9e426..fe898b97b8f1f82d382113d2a43630bc1a0c22ab 100644
--- a/params/bootnodes.go
+++ b/params/bootnodes.go
@@ -83,6 +83,12 @@ var KovanBootnodes = []string{
 	"enode://49a0e1aa38caa12cbf31222cb4e31cef1e8794cb4dd38012f84498ac867b19584e29bbf6d53201d7dfd3b5eb0998a4d908d096ed4ddb5f9102c623852cd331ec@54.87.247.5:30303",
 }
 
+var FermionBootnodes = []string{
+	"enode://30499bde23362f7d310a34518a2a6ff765921870bf0c3e63d21153cfa7ba9cf39cc7c8e54e9dad2f2b3c07288b3e91b220656833cc2d843a54875c229f3f959a@8.9.8.175:30303",
+	"enode://16898006ba2cd4fa8bf9a3dfe32684c178fa861df144bfc21fe800dc4838a03e342056951fa9fd533dcb0be1219e306106442ff2cf1f7e9f8faa5f2fc1a3aa45@116.203.116.241:30303",
+	"enode://49a0e1aa38caa12cbf31222cb4e31cef1e8794cb4dd38012f84498ac867b19584e29bbf6d53201d7dfd3b5eb0998a4d908d096ed4ddb5f9102c623852cd331ec@54.87.247.5:30303",
+}
+
 var V5Bootnodes = []string{
 	// Teku team's bootnode
 	"enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA",
diff --git a/params/config.go b/params/config.go
index 56e36ce9b682a624d25f9696b19b479db9d0dd22..b925ab130cb288523539c6add974812300ec972a 100644
--- a/params/config.go
+++ b/params/config.go
@@ -34,6 +34,7 @@ const (
 	ErigonMineName   = "erigonmine"
 	SokolChainName   = "sokol"
 	KovanChainName   = "kovan"
+	FermionChainName = "fermion"
 )
 
 // Genesis hashes to enforce below configs on.
@@ -45,6 +46,7 @@ var (
 	ErigonGenesisHash  = common.HexToHash("0xfecd5c85712e36f30f09ba3a42386b42c46b5ba5395a4246b952e655f9aa0f58")
 	SokolGenesisHash   = common.HexToHash("0x5b28c1bfd3a15230c9a46b399cd0f9a6920d432e85381cc6a140b06e8410112f")
 	KovanGenesisHash   = common.HexToHash("0xa3c565fc15c7478862d50ccd6561e3c06b24cc509bf388941c25ea985ce32cb9")
+	FermionGenesisHash = common.HexToHash("0xa3c565fc15c7478862d50ccd6561e3c06b24cc509bf388941c25ea985ce32cb9")
 )
 
 var (
@@ -52,8 +54,9 @@ var (
 )
 
 var (
-	SokolGenesisStateRoot = common.HexToHash("0xfad4af258fd11939fae0c6c6eec9d340b1caac0b0196fd9a1bc3f489c5bf00b3")
-	KovanGenesisStateRoot = common.HexToHash("0x2480155b48a1cea17d67dbfdfaafe821c1d19cdd478c5358e8ec56dec24502b2")
+	SokolGenesisStateRoot   = common.HexToHash("0xfad4af258fd11939fae0c6c6eec9d340b1caac0b0196fd9a1bc3f489c5bf00b3")
+	KovanGenesisStateRoot   = common.HexToHash("0x2480155b48a1cea17d67dbfdfaafe821c1d19cdd478c5358e8ec56dec24502b2")
+	FermionGenesisStateRoot = common.HexToHash("0x2480155b48a1cea17d67dbfdfaafe821c1d19cdd478c5358e8ec56dec24502b2")
 )
 
 var (
@@ -248,6 +251,26 @@ var (
 		Aura:                &AuRaConfig{},
 	}
 
+	FermionChainConfig = &ChainConfig{
+		ChainName:           FermionChainName,
+		ChainID:             big.NewInt(102),
+		HomesteadBlock:      big.NewInt(0),
+		DAOForkBlock:        nil,
+		DAOForkSupport:      false,
+		EIP150Block:         big.NewInt(0),
+		EIP155Block:         big.NewInt(0),
+		EIP158Block:         big.NewInt(0),
+		ByzantiumBlock:      big.NewInt(5067000),
+		ConstantinopleBlock: big.NewInt(9200000),
+		PetersburgBlock:     big.NewInt(10255201),
+		IstanbulBlock:       big.NewInt(14111141),
+		MuirGlacierBlock:    nil,
+		BerlinBlock:         big.NewInt(24770900),
+		LondonBlock:         big.NewInt(26741100),
+		CatalystBlock:       nil,
+		Aura:                &AuRaConfig{},
+	}
+
 	// AllEthashProtocolChanges contains every protocol change (EIPs) introduced
 	// and accepted by the Ethereum core developers into the Ethash consensus.
 	//
diff --git a/turbo/stages/genesis_test.go b/turbo/stages/genesis_test.go
index b9c3fdcef47196b04b6b48b3542652574844a07a..7c181caf28343e681bf206fcb529931895519693 100644
--- a/turbo/stages/genesis_test.go
+++ b/turbo/stages/genesis_test.go
@@ -71,6 +71,17 @@ func TestDefaultGenesisBlock(t *testing.T) {
 	if block.Hash() != params.KovanGenesisHash {
 		t.Errorf("wrong kovan genesis hash, got %v, want %v", block.Hash(), params.KovanGenesisHash)
 	}
+
+	block, _, err = core.DefaultFermionGenesisBlock().ToBlock()
+	if err != nil {
+		t.Errorf("error: %w", err)
+	}
+	if block.Root() != params.FermionGenesisStateRoot {
+		t.Errorf("wrong fermion genesis state root, got %v, want %v", block.Root(), params.FermionGenesisStateRoot)
+	}
+	if block.Hash() != params.FermionGenesisHash {
+		t.Errorf("wrong fermion genesis hash, got %v, want %v", block.Hash(), params.FermionGenesisHash)
+	}
 }
 
 func TestSokolHeaderRLP(t *testing.T) {