# Node Operator Onboarding

### 1. Wallet Setup

Create a new Ethereum Externally Owned Account (EOA) or multisig wallet to use as your operator identity.

{% hint style="info" %}
Operators must generate a new wallet for each new delegator they receive stake from. Addresses cannot be changed after deployment. For best practices, we recommend using a multisig for this address.
{% endhint %}

### 2. Register with a Shared Security Provider of your choice

**Network/AVS address: `0x4a49d2E53B33a4D50024B99B4fA159041367E55D`**

Ditto Network supports:

{% tabs %}
{% tab title="Symbiotic" %}
👉 [Ditto on Symbiotic](https://app.symbiotic.fi/network/0x4a49d2E53B33a4D50024B99B4fA159041367E55D)

Symbiotic is a shared security protocol designed to create a marketplace for economic security. It enables networks that need security to access it from those who have assets to stake, creating an efficient ecosystem where stake can be shared and utilized across multiple networks.

To participate as an operator for Ditto, **if you’re not registered yet**:

Register as a Symbiotic Operator using this [guide](https://docs.symbiotic.fi/handbooks/operators-handbook/).
{% endtab %}

{% tab title="EigenLayer" %}
👉 [Ditto on EigenLayer](https://app.eigenlayer.xyz/avs/0x4a49d2E53B33a4D50024B99B4fA159041367E55D/)

EigenLayer enables **restaking**, allowing ETH and LST holders to re-stake their assets to secure new decentralized services (AVSs). Ditto leverages this to provide shared Ethereum security for its automation engine, without bootstrapping a separate validator set.

To participate as an operator for Ditto, **if you’re not registered yet**:

Register as an EigenLayer Operator using the [EigenLayer registration assistant from Othentic](https://docs.othentic.xyz/main/user-guide/operator-management/register-to-eigenlayer),  then [deposit your stake](https://docs.othentic.xyz/main/user-guide/operator-management/deposit-stake) to participate in consensus.
{% endtab %}
{% endtabs %}

### 3. Whitelisting

The Ditto Runner Node (DRN) is a backend service that indexes registered and executed workflows, stores them in a local database, retrieves workflow metadata from IPFS, and simulates active workflows.

Before running the node, each operator must be whitelisted. Please join the [Telegram group](https://t.me/+_zH57wUkqsIzYmYy) and provide your simulator and operator addresses in the following [google form](https://forms.gle/iQcGKtY7wq66Dnxg6).

* Simulator address: Generate a new EOA private and public key **(save them!)**. Fill this field with the generated **address**.
* Operator address: This is the address that holds the delegated stake on Symbiotic/EigenLayer.

This step is required to enable operations and reporting. Failure to complete it will prevent the node from functioning properly in the live environment.

### 4. Registering operator to othentic stack

**Install** [**Othentic CLI**](https://docs.othentic.xyz/main/reference/othentic-cli)**:**&#x20;

Verify that you have Node.js version `22.6.0` installed by running:

```sh
nvm use 22.6
node -v # Should output: v22.6.0
pnpm add -g @othentic/cli:v1.1.5
otcli -V # Should output: 1.1.5
```

```sh
otcli operator register --l1-chain mainnet --browser-sign 
```

* AVS Governance address: `0x4a49d2E53B33a4D50024B99B4fA159041367E55D`
* Enter your consensus private key: {It should match the private key of the [simulator address](#id-3.-whitelisting)}
* Rewards Receiver address (default: msg.sender): {As you wish}

Then on opened window connect to your Safe via Wallet Connect or to EOA wallet via any suggested way.

Then choice your staking provider in the CLI.

Then follow the instructions.

> **For Safe users:** if you encounter errors while signing a transaction, use the Safe UI transaction builder with the custom data provided. Send a transaction to the AVS Governance address using the data suggested by the Othentic UI.

### 5. Running the DRN

#### Prerequisites

**Hardware**

To ensure stable performance, we recommend running the software on an instance with at least the following specifications:

Instance type: Equivalent to AWS [t3a.medium](https://costcalc.cloudoptimo.com/aws-pricing-calculator/ec2/t3a.medium) (2 vCPUs, 4 GB RAM) Storage: 20 GB or more (SSD recommended)

**Software**

Before you begin, ensure that you have the following installed on your system:

* [Docker](https://docs.docker.com/get-docker/)
* [Docker Compose](https://docs.docker.com/compose/install/)
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [Make](https://www.gnu.org/software/make/) (optional, but recommended for using the provided commands)

#### 1. Clone DRN repository

```sh
git clone https://github.com/dittonetwork/ditto-runner-node.git
cd ditto-runner-node
```

#### 2. Configure Environment Variables

Create a file named `.env` and add the following critical variables. These are **required** for the node to operate.

```sh
EXECUTOR_PRIVATE_KEY=...
# Mainnet
RPC_URL_1=...
# Polygon
RPC_URL_137=...
# Base
RPC_URL_8453=...
# Arbitrum
RPC_URL_42161=...
```

`EXECUTOR_PRIVATE_KEY` — Consensus private key from [#id-4.-registering-operator-to-othentic-stack](#id-4.-registering-operator-to-othentic-stack "mention")

#### 3. Run the Setup Command

```sh
make up
```

After this, you are ready to go.

#### 4. Monitor node

```sh
make logs
```
