# Rayonism – Mergenet 0
[toc]
This is the first Rayonism devnet focused on the Merge. There are two main goals for this net:
- Implement and test [Consensus RPC](https://notes.ethereum.org/@n0ble/rayonism-the-merge-spec#Consensus-JSON-RPC)
- Client interop involving both, consensus and execution, layers of the client
The net starts with a nearly empty execution state and as if transition process had happened in the past. The one exception is an empty deposit contract which will be embedded in the genesis config. We expect this devnet lives for a few days, probably a week.
## Spec
### Consensus node
Consensus nodes must adhere [consensus node v0.1.0](https://notes.ethereum.org/@n0ble/rayonism-the-merge-spec#Consensus-node) Rayonism spec to be comliant with Mergenet 0. Exceptions are described below.
Mergenet 0 starts from after the docking has happened which is signified by corresponding `ExecutionPayloadHeader` in the genesis state. However, it is recommended to implement block processing as per spec with regard to the transition process.
Fork choice and validator parts of the transition might require more work on integrating consensus node with execution engine and are omitted for simplicity.
Supporting all types of [consensus messages](https://notes.ethereum.org/@n0ble/rayonism-the-merge-spec#Consensus-messages), including `FinaliseBlock`, is highly recommended.
### Execution engine
Execution engine must adhere the rules described in [execution engine v0.1.0](https://notes.ethereum.org/@n0ble/rayonism-the-merge-spec#Execution-engine) Rayonism spec.
The only exception is `SetHead` message handler. For our first devnet we rely on the old total difficulty fork choice rule. With the assumption that the beacon chain has no forks and **`difficulty = 1`** (as per spec) it should work well.
Handler of **`consensus_finaliseBlock`** method may be stubbed for simplicity.
*Note:* Despite of remaining total difficulty rule, difficulty check must be removed from **`consensus_newBlock`** method handler.
## Setup and instructions
There are general devnet setup and instructions by @protolambda:
- https://notes.ethereum.org/@protolambda/merge-devnet-setup-guide
We configure, instantiate and run Mergenet 0 according to these directions.
### Parameters
#### Execution
```yaml
chain_id: TBD
network_id: TBD
eth1_premine_address: TBD
hex_genesis_nonce: TBD
hex_eth1_timestamp: TBD
```
#### Consensus
```yaml
eth2_genesis_fork_version: TBD
eth2_genesis_delay: TBD
```
#### Validators
```yaml
- mnemonic: TBD
- count: TBD
```
### Bootnodes
- **Consensus**
- *TBD*
- **Execution**
- *TBD*
## Infrastructure
- Faucet service might be deployed
- No block explorer is planned for Mergenet 0
- No plans for ethstats either (may or may not be)