# 👋 Welcome

Welcome to the Official IoTeX Delegates Documentation where you will find information regarding Delegate roles & responsibilities, node requirements, onboarding instructions, and more!

{% hint style="success" %}
For additional onboarding support, please contact an admin on [Discord](https://iotex.io/devdiscord) or [Telegram](https://t.me/IoTeXGroup)
{% endhint %}


# What is a Delegate

IoTeX is a decentralized and permissionless network with a digital democracy where token-holders **stake** IOTX and vote for **Delegates** to maintain/grow the network.&#x20;

The IoTeX Network utilizes Roll-DPoS consensus, where community-voted Delegates manage consensus on behalf of the entire network. 24 of the top 36 community-voted Delegates are randomly selected to mine blocks every hour.

The top 36 voted Delegates are called **Consensus Delegates**, that manage transaction verification and block production on behalf of the IoTeX Network. For their services, Delegates are rewarded in IOTX tokens, which they may share with their voters.

There are currently over 100 Delegates in the IoTeX network. You can see the current list of elected IoTeX delegates on [stake.iotex.io](https://stake.iotex.io).

<figure><img src="/files/m0cmlwbTAQFTbNH2B9BZ" alt=""><figcaption></figcaption></figure>

Any token-holder that stakes IOTX can vote for one or more Delegates. By staking/voting, token-holders not only enhance the overall security of the IoTeX Network, but also earn up to 10% annualized interest on their staked IOTX.


# Benefits and Rewards

IoTeX Delegates enjoy **exclusive** benefits, including:

* Ability to make proposals on [gov.iotex.io](https://gov.iotex.io) and join ***Delegate-only*** votes.
* Early access to new IoTeX features, tools, and dApps.
* Every 1 [epoch](/addendum/glossary#epoch) (i.e. 1 hour), the top 100 Delegates split an *epoch bonus reward* proportional to the percentage of total votes.
* Consensus Delegates are eligible for bonus rewards:
  * Earn a fixed reward of 8 IOTX per mined block (1 block every 5 sec)
  * The top 36 voted Consensus Delegates earn an extra bonus of 80 IOTX per epoch from the IoTeX Foundation

<figure><img src="/files/TXR3s4kt07jo96YvrMTV" alt=""><figcaption></figcaption></figure>

You can use the[ IoTeX Delegates Rewards Calculator](https://iotexlab.io/calculator) provided by our delegates to estimate your annual profits. These estimates are based on assumptions, and the actual amount of rewards will depend on the real votes distribution of the IoTeX Blockchain.

As a Delegate, you may choose to share Delegate rewards with your voters. IoTeX provides [HERMES](https://hermes.to), a rewards auto-distribution service, that takes care of automatically distributing rewards to your voters based on your rewards policy. Delegates who do not use HERMES will be responsible for distributing awards based on their own policy. Check out the [HERMES user guide](https://hermes.to/user-guide) for more info.


# Delegate Requirements

Being a decentralized network, IoTeX allows **anyone** to register and become a **Delegate** at any time. However, all Delegates must meet some minimum requirements.&#x20;

These minimum Delegate Requirements are summarized below and will be addressed in detail in the next sections:&#x20;

### **Delegate Profile**

Every Delegate must have its *identity* registered on the IoTeX blockchain, in the form of a blockchain account. This identity is called the *Profile Account* of the Delegate.

### **Self-Staked IOTX**

To become eligible, the Delegate profile account must self-stake at least 1,200,000 IOTX.&#x20;

[IoTeX Delegate Sponsorship Program → ](/get-started/delegate-endorsement/delegate-sponsorship-program)

### **Delegated Votes**

Once the Delegate is eligible, the profile account must receive at least 2,000,000 total votes.

### Technical requirements

Technical requirements are not mandatory, but it's highly recommended that your infrastructure meets at least the minimum requirements as listed in the [Operational Costs](/introduction/hardware-specs) section.&#x20;


# Hardware Specs

{% hint style="info" %}
Adhering to minimum technical standards is crucial. Failing to meet these can affect the entire network performance and lead your Delegate node being probed for six blockchain epochs without reward, if it's unable to generate blocks on time.
{% endhint %}

### **Recommended Hardware Specifications**

For optimal performance, especially during high blockchain traffic, consider the following recommended setup. This ensures reliability and efficiency for your delegate infrastructure, particularly if you aim to be a consistent block producer.

<table><thead><tr><th width="96">RAM</th><th width="178">STORAGE SPACE</th><th>DISK</th><th width="204">CPU</th><th>NETWORK</th></tr></thead><tbody><tr><td>64 GB</td><td>500 GB</td><td>SSD or Nvme</td><td>8 Cores, 2.4 Ghz, 64 bit</td><td>1 Gbit</td></tr></tbody></table>

{% hint style="info" %}
**Backup Node:** Implement at least one backup node for software updates and maintenance.
{% endhint %}

### **Software and Operational Guidelines**

<table><thead><tr><th width="219">OS</th><th width="200">Compilers</th><th>Tools</th><th>Software</th></tr></thead><tbody><tr><td>Debian Stretch Linux</td><td>Go-Lang > 1.18.5</td><td>Monitoring &#x26; Alerting</td><td>Docker</td></tr></tbody></table>

* Maintain 99.99% server uptime.
* Implement failover and data backup across different geolocations.
* Prioritize security with preventive measures.
* Regularly support and update node software.

### Redundancy and Security

A primary server with one or more backup servers, all secured behind a firewall, is advised. This configuration aids in uninterrupted operation during software upgrades.


# Profile registration

{% hint style="info" %}
In this section, you will learn how to autonomously run and manage an IoTeX delegate node. If you are interested in a hosted service that saves you from managing all the technical aspects of configuring, managing, and updating a full node, please go to the [Fastblock](/get-started/hosted-service) section.&#x20;
{% endhint %}

Feel free to follow this video to register your profile on the [Delegates Portal](https://stake.iotex.io/), or simply follow the step-by-step guide right below it:

{% embed url="<https://youtu.be/RJAeNcx4Asc>" %}

### Become a Delegate

From the landing page, simply click on *"Become a Delegate"* to start the registration process. You'll need to connect your wallet. The portal supports ioPay Desktop, or browser wallets such as Metamask, [ioPay](https://docs.iotex.io/get-started/iotex-wallets/official-iopay-wallet), Trust, Math, and imToken.&#x20;

<figure><img src="/files/8pNaPf0dECrMNv99K8QB" alt=""><figcaption></figcaption></figure>


# Delegate Accounts

Before getting into registering you account, it's important to make a distinction on the different types of accounts an IoTeX Delegate owns: a **Profile Account**, an **Operator Account**, and a **Rewards Account**. These are not necessarily three different accounts.&#x20;

{% hint style="info" %}
Be sure to carefully read all the information below in order to create all your accounts in the most secure way possible for your needs.&#x20;
{% endhint %}

## Profile Account

This is the main, and most important, of all three accounts for a Delegate. The Profile Account is used to register the Delegate in the network, manage its configuration, and set the Operator and Rewards accounts addresses. Because this is the most important account, you may want to generate it using a hardware wallet - such as the Ledger or Trezor wallets.&#x20;

{% hint style="warning" %}
Please notice that you will not be able to change the Profile Account address for your Delegate. Losing or exposing the private key of your Profile Account **will likely result in losing access to your delegate profile, funds, and rewards permanently**. \
\
For this reason, it's highly recommended that you use a **hardware wallet** for your profile account and that you pick a different address for the operator account.
{% endhint %}

## Operator Account

This account is used for the actual node software running on your node servers (check out [High Availability](/get-started/advanced/high-availability)to learn how to run backup nodes that share the same Operator Account). We advise using an Operator Account that is different from the Profile Account, to avoid exposing your Profile Account to the node operator if it's managed by a third party, or to hackers that could get access to your node configuration on the server. Because the private key must be included in the node configuration file, **you cannot use a hardware wallet for your Operator Account.**&#x20;

If your Operator Account's private key gets lost or exposed, you can just use a different address as long as you also change it in your Delegate profile.

## Rewards Account

{% hint style="info" %}
Please notice that IoTeX provides [HERMES](https://hermes.to): an automatic rewards distribution system based on smart contracts that take care of automatically distributing rewards to your voters based on your rewards policy.

Check out the [HERMES guide](https://hermes.to/user-guide) for more information.
{% endhint %}

{% hint style="warning" %}
Please notice that if you configure your own custom Rewards Account (i.e., you will not using HERMES), then you will receive all the node rewards to your account, and you'll be fully responsible for distributing rewards due to your voters based on your rewards policy.
{% endhint %}

This is the last account to configure for a Delegate profile. The Rewards Account receives the Delegate rewards when you claim them. Depending on your needs, the Rewards Account can match the Profile Account, the Operator Account, or it can be its own account.

Since claiming your Delegate rewards requires using the [ioctl command-line client](https://docs.iotex.io/reference/ioctl-cli-reference), you **cannot use a hardware wallet for your Rewards Account**, because the command-line tool does not support hardware wallets.

If your Rewards Account's private key gets lost or exposed, you can just use a different address as well as you also change it in your Delegate profile.

### Summary

| Account              | Description                | Hardware wallet             |
| -------------------- | -------------------------- | --------------------------- |
| **Profile Account**  | Main delegate account      | Optional / Highly suggested |
| **Operator Account** | Required to run the node   | No                          |
| **Rewards Account**  | Receives the block rewards | No                          |


# Name Registration

The Name Registration is the most crucial part of the registration process: on this page, you can set the unique name that identifies your delegate node in the network.&#x20;

Later on you will configure the staking requirements for your delegate and the rewards mechanism.

<figure><img src="/files/pyfhcNsCIato5L2kagy5" alt=""><figcaption></figcaption></figure>

### Profile Account Name

The Profile Account Name is a 12 alphanumeric characters string and is used to uniquely identify the delgates in the network.&#x20;

### Delegate Name

The Delegate Name is your user-friendly public facing name, and is a maximum of 20 characters long.&#x20;

### Delegate Bio

Use a sentence that represents your Delegate brand.&#x20;

### Operator Address

This account is used for the actual node software running on your node servers and we therefore recommend using a different address than the one used in the Profile Account, since if it would get somehow compromised, delegates will forever lose access.&#x20;

### Email Address

Make sure to add a reliable email address, possibly one  that connects directly to the node operator, as IoTeX will use this email address to send update notifications to delegate operators as well as other urgent communications.


# Staking Bucket

<figure><img src="/files/drCIowK448d61jJHZxbK" alt=""><figcaption></figcaption></figure>

Select the amount of IOTX to be staked and voted to yourself.&#x20;

{% hint style="info" %}
Remember that the self-stake bucket has a 1.2 million IOTX minimum.&#x20;
{% endhint %}

Select the staking duration next, and keep in mind that the longer the duration of your stake, the higher yield you'll receive.&#x20;

Next, you'll be prompted to choose to activate the Stake-Lock which will yield a higher return, but won't allow you to unstake your deposit until the staking period of 365 days has elapsed after you disabling it.&#x20;


# Server Information

Use the top right button to skip this step if you don't have a server yet. However consider configuring it as soon as possible since this is used on [stake.iotex.io](http://stake.iotex.io/) to show your Delegate's status, cnfirming that your Delegate is online and is running the correct protocol version.

<figure><img src="/files/tq8AZUa5Q0qkbqwRJmoL" alt=""><figcaption></figcaption></figure>


# Rewards Policy

When you set your rewards policy, you're able to choose between automatic or manual distribution. This information is publicly available for everyone on the Delegate Profile page on the [staking portal ](https://stake.iotex.io)when they click your delegate name.

<figure><img src="/files/LjvMjFOpCuzH2dhEWBZb" alt=""><figcaption></figcaption></figure>

### Automatic Distribution

Automatic Distribution is backed by the [HERMES](https://hermes.to/) protocol and will allow your delegate to automatically distribute rewards to voters on a daily basis. Choose the **Epoch**, **Block** and **Foundation** Reward Distribution portion that you'd like to share with your voters.

{% hint style="info" %}
If your Delegate utilizes HERMES as the rewards distribution system, this policy will be used by HERMES to calculate the rewards distributed. If your Delegate does not use HERMES, you should make sure this policy is always up to date with your accurate rewards distribution policy.&#x20;
{% endhint %}

### Manual Distribution

If you set up your custom rewards address in your delegate profile, then you are in charge of claiming these rewards and distributing them to your voters if you decided to do so.

Once your delegate is active and running, the blockchain will collect delegate rewards for your delegate at the end of every blockchain epoch. You can *claim* your accumulated delegate rewards at any time by sending a "claim rewards" action to the blockchain using your rewards account.

### Monitor Rewards

{% hint style="info" %}
You can monitor your accumulated delegate rewards directly from the delegate's profile on the [staking portal](https://stake.iotex.io/profile/claim-rewards).
{% endhint %}

Just input your delegate rewards account and you will see your current rewards available for claiming.

### Claim Your Rewards

You need the ioctl command-line tool to monitor and claim your rewards.


# Profile Data

Access the "*My Profile*" tab to configure basic Delegate Profile information:

<figure><img src="/files/AGLbDA5Jt5sViGE5REOH" alt=""><figcaption></figcaption></figure>

This is public information (non-technical) ). It includes a link to your website,  logo, social channels, banner, and more information identifying your Delegate brand in the ecosystem displayed on your Delegate Profile page on stake.iotex.io by clicking the delegate's name.


# Advanced


# Server provider

### Run your node behind a commercial cloud load balancer

While you can run an IoTeX delegate node on your own hardware, we suggest using reliable service providers, that provide solutions built by network experts to help you protect your node.

Cloud providers like Amazon AWS, Google GCE, Cloudflare, etc, provide good protection against large amounts of L3, L4 DDoS attacks including SYN floods, IP fragment floods, port exhaustion, etc.


# Edge Proxy

### Run your node behind an edge proxy like Envoy

[Envoy](https://www.envoyproxy.io/) combined with [rate limit](https://github.com/lyft/ratelimit) provides request rate limiting on HTTP/HTTP2 and connection limits on all network traffic. Putting your IoTeX node behind an Envoy proxy gives you another layer of protection against attackers, especially if you intend to use your node and an IoTeX API gateway.&#x20;

Additionally, since the IoTeX node API utilizes GRPC, if you want to be an IoTeX *service node* and serve API requests to in-browser applications, you will need Envoy's [grpc-web](https://github.com/grpc/grpc-web) filter enabled for this functionality.

Below you find an example configuration file for Envoy where we set the max connection numbers to 50 and enabled the rate limit for HTTP requests (find the respective rate limit configuration file below):

{% embed url="<https://gist.github.com/yutongp/c61292bf5c9c6e3058df96989365cb0c>" %}


# Kubernetes

### Use Kubernetes for deployment and health monitoring.

[Kubernetes](https://kubernetes.io/) (k8s) is a very powerful tool to manage your containerized services. It is very convenient to deploy and upgrade services running in a Docker container in Kubernetes.

k8s will also do the health check and automatically restart the falling node to maximize your uptime.

We heavily rely on k8s in our test environment. With our own experience, we can tell that k8s will for sure reduce your operation cost.

These are the probe configuration we use in our `deployment.yaml`:

```yaml
livenessProbe:
  httpGet:
    path: "/liveness"
    port: 8080
  initialDelaySeconds: 15
  timeoutSeconds: 2
  periodSeconds: 15
  failureThreshold: 5
readinessProbe:
  httpGet:
    path: "/readiness"
    port: 8080
  initialDelaySeconds: 30
  timeoutSeconds: 2
  periodSeconds: 15
  failureThreshold: 5

```

The setup we currently run for the IoTeX testnet is very similar to the one illustrated below:

![](https://github.com/iotexproject/iotex-bootstrap/raw/master/infra/infra.png?raw=true)


# High Availability

### Run backup nodes

It's likely that your IoTeX node could be in outage because of code bugs, insufficient compute resources, host failure, network failure and etc. Also, you may have to shut down your node to do some maintenance work or update the node software itself.&#x20;

Running multiple IoTeX nodes is the best way to guarantee the high availability (*zero downtime*) of your delegation, that's why IoTeX nodes provide a utility feature to run in "backup mode" conveniently.

### Configure the main and backup nodes

Let's assume that you want to run three nodes for your block producer delegate: one is the *main node*, i.e. the one that actively participates in the consensus work, and the other two are on "standby" and only *listening* to the blocks.

You can conveniently configure all of the three nodes with the same `producerPrivKey` private key setting, as long as you also add the following settings in `config.yaml` **for all the nodes:**

```yaml
...
network:
  ...
  masterKey: producer_private_key-replica_id
  ...
...
```

while you add this setting for the **main node only**:

```yaml
...
system:
  ...
  active: true
  ...
...
```

and this one for the standby nodes only:

```yaml
...
system:
  ...
  active: false
  ...
...
```

### Switch the active mode

{% hint style="warning" %}
Make sure you export port `9009` from the node's docker container.
{% endhint %}

As soon as your main node is **down**, make sure you manually switched the mode to standby" in the configuration file (this reduces the risk of running two active delegates, see below), then you can open the following URL to turn one of your backup nodes from *standby* into *active* mode:

`http://ip-to-one-node:9009/ha?activate=true`

{% hint style="danger" %}
Always make sure you don't have any other node in Active mode before activating a backup node: running two block-producer nodes which use the same private key is considered a serious attack on the network and will result in slashing of your delegate and possibly loss of the self staked delegate deposit.&#x20;
{% endhint %}

Similarly, you can turn an active node into standby mode by using:

`http://ip-to-one-node:9009/ha?activate=false`.&#x20;

Finally, if you only want to check the active status of a node, use the ULR below:

`http://ip-to-one-node:9009/ha`&#x20;

### Automatic Leader Election&#x20;

If you run many nodes, and you want to get rid of the tedious manual operation, or just want to try out the fancy setup of a high availability cluster, you can take a look at this automatic *leader election* solution:

{% embed url="<https://github.com/zjshen14/iotex-leader-election>" %}

{% hint style="danger" %}
Please notice that running two block-producer nodes using the same private key is considered a serious attack on the network and will result in slashing of your delegate and possibly loss of the self staked delegate deposit.&#x20;

**Always be careful when using automatic leader election algorithms and make sure you never have two block producers sharing the same private key in active mode**
{% endhint %}


# Gravity Chain Binding

{% hint style="success" %}
This documentation only applies if you are syncing your node from a block height 1 or anyway prior to Mainnet 1.0 height (5157001). You can ignore this if you are syncing your node starting from an [official snapshot](broken://pages/IjdWo0ZlV5NBJhRNYP51#start-from-a-snapshot).&#x20;
{% endhint %}

Before the final release of IoTeX 1.0, the blockchain relied on the delegate election result fetched from the IoTeX staking contract deployed on Ethereum. As a consequence, if you intend to sync your node from the very first block, you will need to provide a list of Ethereum JSON-RPC endpoints for the node to consume the relevant data from Ethereum.&#x20;

While we provide a list of default JSON-RPC endpoints, delegates are encouraged to set up their own endpoint, to be more decentralized, secured, and performant.

There are two approaches that have been experimented:

* **Setup your own Ethereum node.** No need to mine, just use it as an Ethereum API Getheway ([geth](https://github.com/ethereum/go-ethereum/wiki/Installing-Geth) and [parity](https://wiki.parity.io/Setup)), and expose the JSON-RPC endpoint.
* **Use** [**Infura**](https://infura.io/) **Ethereum blockchain infrastructure.** Signing up for an account and creating a project. The JSON-RPC endpoint would be <https://mainnet.infura.io/v3/YOUR-PROJECT-ID>. For more details of setting up the Infura endpoint, please check [here](https://ethereumico.io/knowledge-base/infura-api-key-guide/).

After getting your own JSON-RPC endpoint, you can add it into your node configuration file`config.yaml`and restart your server. Then, your IoTeX server will read from this endpoint to get Ethereum data. You could also create and add multiple endpoints for the sake of robustness.

```yaml
...
chain:
  ...
  committee:
    ...
    gravityChainAPIs:
      - [YOUR JSON-RPC ENDPOINT]
      ...
    ...
  ...
...
```


# Improvements

Running decentralized infrastructures is a complex area of IT. There are still many things we can learn and improve. And since it is **decentralized**, options and ideas from different perspectives are very much needed. Feel free to provide your contribution to help IoTeX get better and more secure.

### Footnotes <a href="#footnote-label" id="footnote-label"></a>

1. <https://aws.amazon.com/answers/networking/aws-ddos-attack-mitigation/> [↩](https://github.com/iotexproject/iotex-bootstrap/blob/master/infra/infraguide.md#user-content-fnref-1-6cd337403e277b4067fd5a08d61d7493)
2. <https://cloud.google.com/files/GCPDDoSprotection-04122016.pdf> [↩](https://github.com/iotexproject/iotex-bootstrap/blob/master/infra/infraguide.md#user-content-fnref-2-6cd337403e277b4067fd5a08d61d7493)
3. <https://www.cloudflare.com/ddos/>&#x20;


# Hosted Service

[*Fastblocks*](https://www.fastblocks.io/) is a PaaS (*Platform as a Service*) product, that aims to lower the threshold of accessing IoTeX data and solve the problems that arise when building nodes by yourself such as environmental consistency, security, network speed, and storage space.&#x20;

The *Fastblocks* platform is based on an advanced, dynamically scalable, and microservice-driven architecture, providing a service of resilient and dedicated nodes customized for IoTeX.<br>

Learn more about Fastblocks:

{% embed url="<https://docs.fastblocks.io>" %}


# Delegate Endorsement

**Delegate Endorsement** is a feature introduced to the IoTeX Network that allows aspiring Delegates to participate in governance and consensus without directly meeting the self-staking requirement of 1.2 million IOTX tokens. By leveraging endorsements from other stakeholders, this system fosters inclusivity, decentralization, and broader participation within the IoTeX ecosystem.

***

### Key Features

#### For Delegates

* **Participation Without Self-Stake:** Aspiring Delegates can now register and accept endorsements from stakeholders to meet the 1.2M IOTX staking requirement.
* **Streamlined Process:** Delegates register with a 100 IOTX fee and can accept endorsement requests without needing to self-stake.
* **Governance Inclusion:** Gain eligibility to participate in consensus and governance, contributing to the network’s direction.

#### For Endorsers

* **Support Delegates:** Stake IOTX to endorse aspiring Delegates, enabling them to join the consensus process.
* **Earn Rewards:** Endorsers share in block rewards and bonuses based on the endorsement agreement.
* **Flexible Staking Options:** Stake endorsement buckets with customizable durations, including auto-stake options for rewards.

***

### How It Works

#### Roles and Operations

**Delegates**

* **Register Without Bucket:** Register as a Delegate by paying 100 IOTX. Initially, Delegates are not eligible for consensus.
* **Accept Endorse Requests:** Delegates can accept endorsement requests from Endorsers, unlocking eligibility to participate in consensus.
* **Terminate Endorsement:** Delegates can terminate endorsements as needed.

**Endorsers**

* **Stake Endorsement Bucket:** Create endorsement buckets by staking at least 1.2M IOTX for a chosen duration.
* **Submit Endorse Request:** Propose endorsements to Delegates. Once accepted, the bucket becomes locked for the endorsement period.
* **Revoke or Cancel Endorsement:** Endorsers can revoke active endorsements or cancel pending requests.

***

#### Endorsement Process

1. **Delegate Registration:**
   * Delegates register with a 100 IOTX fee.
   * Registered Delegates are not eligible for consensus until endorsed.
2. **Endorsement Bucket Creation:**
   * Endorsers stake at least 1.2M IOTX to create an endorsement bucket.
   * Buckets can have customizable staking durations, with options for auto-stake bonuses.
3. **Endorsement Request Submission:**
   * Endorsers select a bucket and propose an endorsement to a Delegate.
   * The endorsement includes an expiration date, determining the period for which the Delegate can participate in consensus.
4. **Accepting the Endorsement:**
   * Delegates accept the request, and the bucket becomes locked until the endorsement is terminated.
   * The Delegate is now eligible to participate in consensus.
5. **Termination:**
   * Endorsements can end through expiration, revocation, or Delegate termination.
   * A protection period ensures smooth transitions for both parties.

***

### Benefits

#### For Delegates

1. **Accessible Participation:** No need to own 1.2M IOTX tokens to join the network.
2. **Reputation Building:** Gain visibility and credibility by securing endorsements from stakeholders.
3. **Focus on Governance:** Participate in consensus without managing self-staked assets.

#### For Endorsers

1. **Reward Opportunities:** Earn rewards through block production, bonuses, and negotiated agreements with Delegates.
2. **Active Governance:** Influence network direction by empowering credible Delegates.
3. **No Node Management:** Participate without the technical or operational burden of running a node.

| **Staking Method**      | **Rewards**          | **Requirements**       | **Risks**                                |
| ----------------------- | -------------------- | ---------------------- | ---------------------------------------- |
| **Self-Stake Delegate** | 1.06x rewards        | Run a node + 1.2M IOTX | Full self-responsibility                 |
| **Endorse Delegate**    | Negotiable (\~1.06x) | 1.2M IOTX stake        | Potential penalty if Delegate misbehaves |
| **Vote Delegate**       | 1x rewards           | Small token amounts    | Minimal risks                            |

***

### Rewards Distribution

* Rewards come from block rewards, foundation bonuses, and epoch bonuses.
* Endorsers receive their share of rewards based on the endorsement bucket, which also benefits from the self-stake bonus (1.06x).
* Reward splits between Delegates and Endorsers are arranged off-chain.

***

### Implementation Notes

* **Compatibility:** The endorsement mechanism integrates seamlessly with IoTeX’s existing staking system.
* **Security:** Endorsement locking ensures stability and protects against abrupt changes.
* **Flexibility:** The ability to revoke endorsements with a protection period balances stability with adaptability.

***

### Get Started

1. Visit [stake.iotex.io](https://stake.iotex.io) to explore Delegate Endorsement.
2. Register as a Delegate or create an endorsement bucket to support the IoTeX ecosystem.
3. Shape the future of IoTeX with greater inclusivity and decentralization!

For detailed discussions and updates, visit the [Delegate Endorsement Forum Thread](https://community.iotex.io/t/iip-25-delegate-endorsement/11142).


# Delegate Sponsorship Program

## Overview of the IoTeX L1 Consensus

IoTeX uses a consensus mechanism called ***Roll-DPoS***, based on  ***Delegated Proof of Stake (DPoS)***. In this system, anyone can run a node, but only those who are **voted in** by token holders are eligible to **produce blocks**.

Token holders participate by **staking IOTX**, which gives them **voting power**. They can then delegate this voting power to a specific node (or “delegate”) of their choice.

Anyone can **self-nominate** as a delegate by creating a Delegate profile, which requires a **self-vote of 1.2 million votes** (usually done by staking \~1.2M IOTX, though this can be much less depending on lock-up settings).

All Delegates earn “**epoch rewards**” every hour based on the number of votes they’ve received. However, only the **top 36 delegates by vote count** are selected to actually produce blocks, which leads to higher rewards.

## IoTeX Delegate Sponsorship Program

The IoTeX **Delegate Sponsorship Program** helps new delegates by sponsoring the initial 1.2M self-vote requirement. In return, delegate teams are expected to:

* Contribute to the community
* Share rewards with their voters
* Promote their role and attract more votes to rank in the top 36

## Apply to the Sponsorship program

{% hint style="success" %}
If you’re interested in applying to become a delegate and potentially receive support through the IoTeX Delegate Endorsement Program, you can submit your application via this Google Form:

<https://forms.gle/q7PWRG6oiWtJAU5j6>
{% endhint %}


# Tutorials

## **For New Delegates**

### Access the Delegate Tab on the Staking Portal

1. Visit [stake.iotex.io](https://stake.iotex.io).
2. Click on the **"Delegate"** tab in the navigation bar.

<figure><img src="/files/Lzd37byKcMFxk6QnmtFq" alt=""><figcaption></figcaption></figure>

### **Create Your Delegate Profile:**

Select **"Create Self-Staking Bucket"** to begin setting up your profile.

<figure><img src="/files/3ok9433ZGP7YeqVxG5oz" alt=""><figcaption></figcaption></figure>

* Navigate to the **"By Endorse"** tab and complete the required information.

<figure><img src="/files/aVO82BYjolIJ3UX2Nyin" alt=""><figcaption></figcaption></figure>

* Refer to [this section in the documentation](/delegate-management/access-the-portal), if you need help filling out any fields.

1. **Prepare to Receive Endorsements:**
   * Once you've submitted the form, your delegate profile will be set up and ready to accept endorsements.
2. **Manage Your Dashboard:**
   * After completing your registration, you’ll be redirected to your dashboard.
   * From here, you can:
     * Edit your profile details.
     * Configure your distribution plan for rewards.
     * Review and accept endorsement requests.
3. **Need Additional Help?**
   * Check out the [**Delegate Management**](/delegate-management/access-the-portal) section of these docs for detailed instructions.

***

**For Stakers (Endorsers)**

You have two options to endorse a Delegate:

1. Create an **Endorse Bucket** directly.
2. Convert an existing **Native Bucket** to an **Endorse Bucket**.

**Option 1: Create an Endorse Bucket Directly**

1. **Stake Your IOTX:**

   * Click **"Stake Your IOTX"** on the homepage.
   * Select the **"Endorse Bucket"** option under Native Staking.

   <figure><img src="/files/Shu5mWyYbRKXkzUKOviG" alt=""><figcaption></figcaption></figure>
2. **Choose Delegate and Stake Amount:**
   * Select the Delegate you want to endorse.
   * Enter the amount of IOTX you want to stake (minimum 1.2M IOTX).
   * For detailed staking requirements, refer to the relevant section in these docs.

***

**Option 2: Convert a Native Bucket to an Endorse Bucket**

1. **Go to My Vote Panel:**

   * Visit the [My Votes](https://stake.iotex.io/my-votes#myVote) page.
   * Locate the bucket you want to convert and click the **Action** button to the right of the bucket item.

   <figure><img src="/files/xHx4H4HyqRkRYYAMPO6Y" alt=""><figcaption></figcaption></figure>
2. **Confirm Eligibility:**
   * Only buckets with more than **1.2M IOTX** and in **staking status** can be converted into an Endorse Bucket.

***

**Approving Endorsement Requests (For Delegates)**

1. **Approve Endorsement Requests:**
   * Delegates can approve pending endorsement requests from the **Advanced Configuration** section of their dashboard, under My Profile.&#x20;
   * Once approved, the Delegate becomes an active participant in consensus.
2. **Manage Multiple Endorse Buckets:**
   * Delegates can switch approval on multiple endorsement buckets at any time.
   * Approving one endorsement bucket does not impact others in the request queue.
3. **Handle Additional Endorsements:**
   * When a Delegate approves an endorsement, any additional bucket endorsed to the same Delegate will require manual withdrawal to proceed further.


# Access the portal

{% hint style="info" %}
In order to access the Delegate Management Portal, you must first be registered as a Delegate. Go through the [Get Started](/get-started/profile-registration) section or contact [Discord](https://discord.gg/FTjGGP7T) for help.&#x20;
{% endhint %}

The [**Delegate Management Portal**](https://stake.iotex.io/portal) allows you to view the performance metrics of your node, check out your rewards, manage your public profile, and edit important node settings regarding your staking bucket, your server information, and your reward distribution system.&#x20;

Access the portal at: <https://stake.iotex.io/portal> and connect the wallet you used to [create your delegate profile](/get-started/profile-registration).


# Delegate Performance

The **Delegate Performace** page shows a number of stats related to your Delegate.&#x20;

You'll be able to quickly check out the ***status***, the ***version***, the ***epoch progress*** of you Delegate, as well as the ***height:***

<figure><img src="/files/kAQESLudp6QS2bDjkBhF" alt=""><figcaption></figcaption></figure>

You'll be able to also check your Delegate's

* ***productivity*** (i.e. the number of blocks produced):&#x20;

<figure><img src="/files/VRSesZDaOLJ6ds5cmhgE" alt=""><figcaption></figcaption></figure>

* ***server up time*** in hours:&#x20;

<figure><img src="/files/X1Jl58irANQ4EzSNfkJP" alt=""><figcaption></figcaption></figure>

* &#x20;***probation*** (i.e. the number of epoch/block been probated):

<figure><img src="/files/Hmujv2sbF9cXre8aPvHY" alt=""><figcaption></figcaption></figure>


# Delegate Rewards

This page will show you the rewards your Delegate has received <mark style="color:yellow;">**after distribution**</mark>:&#x20;

<figure><img src="/files/kCvdVkQRkZs99os2DHJq" alt=""><figcaption></figcaption></figure>

You'll also be able to quickly visualize the amount of rewards distributed:

<figure><img src="/files/DLMMgUFVGgHldBLRxbIi" alt=""><figcaption></figcaption></figure>


# Profile settings

This page will allow you and your team to modify your Delegate's public profile.&#x20;

{% hint style="success" %}
Feel free to be creative, or pass this job along to your marketing team.&#x20;
{% endhint %}

<figure><img src="/files/9Juo29HwltThFCG0VwAh" alt=""><figcaption></figcaption></figure>


# Advanced Configuration

This page allows you to configure some of the more important settings.&#x20;

You'll be able to view and edit your ***Staking Bucket*** settings:&#x20;

<figure><img src="/files/NGPXe0BKZxiierjeFFXZ" alt=""><figcaption></figcaption></figure>

As well as your ***Server Information*** and ***Reward Distribution*** settings:&#x20;

<figure><img src="/files/VaQhCylJ3shWf2pp5O4a" alt=""><figcaption></figcaption></figure>


# Profits Projections

#### Average rewards (per epoch)

<table><thead><tr><th width="192.57453857075248">% of Network Votes</th><th width="169.86180795703916" align="right">Block Rewards (1)</th><th width="159.35767178375775" align="right">IoTeX Foundation Bonus (2)</th><th width="203.1655508796607" align="right">Epoch Rewards (3)</th><th data-hidden align="right">Est. total IOTX/year</th><th data-hidden></th><th data-hidden data-type="number"></th></tr></thead><tbody><tr><td>5.0%</td><td align="right">160 IOTX</td><td align="right"> 80 IOTX (suspended) </td><td align="right">937.50 IOTX</td><td align="right"><mark style="background-color:green;">10,314,900 IOTX</mark></td><td></td><td>null</td></tr><tr><td>2.0%</td><td align="right">160 IOTX</td><td align="right"> 80 IOTX (suspended)</td><td align="right">375,00 IOTX</td><td align="right"><mark style="background-color:green;">5,387,400 IOTX</mark></td><td></td><td>null</td></tr><tr><td>0.5%</td><td align="right">N/A <em>(4)</em></td><td align="right">N/A <em>(4)</em></td><td align="right">93.75 IOTX</td><td align="right"><mark style="background-color:green;">821,250 IOTX</mark></td><td></td><td>null</td></tr></tbody></table>

*(1) Calculated on average, taking into account that for every epoch 2/3 of the consensus, delegates get randomly selected to produce blocks.* &#x20;

*(2) Extra 80 IOTX/epoch provided by the IoTeX foundation to the top 36 delegates. Voted on a yearly basis by the community on* [*gov.iotex.io*](https://gov.iotex.io)

*(3) The share of the epoch bonus equals the delegate share of the network votes. For example, a delegate with 2% of the total votes in the network will receive 2% of the epoch reward every epoch.*

*(4) Delegates with less than 1% of network votes will likely not be a consensus delegate*

#### Yearly projections

<table><thead><tr><th width="242.57142857142856">% of Network Votes</th><th align="right">Est. total IOTX/year</th><th data-hidden align="right">Block Rewards</th><th data-hidden align="right">IoTeX Foundation Bonus</th><th data-hidden align="right">Epoch Rewards</th><th data-hidden></th><th data-hidden data-type="number"></th></tr></thead><tbody><tr><td>5.0%</td><td align="right"><mark style="background-color:green;">10,314,900 IOTX</mark></td><td align="right">160 IOTX</td><td align="right"> 80 IOTX</td><td align="right">937.50 IOTX</td><td></td><td>null</td></tr><tr><td>2.0%</td><td align="right"><mark style="background-color:green;">5,387,400 IOTX</mark></td><td align="right">160 IOTX</td><td align="right"> 80 IOTX</td><td align="right">375,00 IOTX</td><td></td><td>null</td></tr><tr><td>0.5%</td><td align="right"><mark style="background-color:green;">821,250 IOTX</mark></td><td align="right">N/A<em><mark style="color:red;">(*)</mark></em></td><td align="right">N/A<em><mark style="color:red;">(*)</mark></em></td><td align="right">93.75 IOTX</td><td></td><td>null</td></tr></tbody></table>

#### Profit calculator tools

You can use profit calculator tools provided by our delegates to estimate your annual profit:

![iotexlab.io/calculator](/files/CPIFtXU8hCPVTF8wzKK8)

{% hint style="warning" %}
Estimates from these tools are based on assumptions - please do your own analysis.
{% endhint %}


# Glossary

## Epoch

In IoTeX, transactions verification and consensus happen in *epochs*. One IoTeX epoch is completed every time 720 blocks get added to the blockchain. Because IoTeX features a 5-second block time, one IoTeX epoch lasts roughly 1 hour.&#x20;


