# Luganodes

Enjoy hassle-free staking with Luganodes

Luganodes is a world-class, non-custodial blockchain infrastructure provider that has rapidly gained recognition in the industry for providing institutional-grade staking services. It maintains an exceptional 99.9% uptime with round-the-clock monitoring by SRE experts. With growing support on 30+ PoS networks, Luganodes is amongst top validators on Polygon, Polkadot, Sui, Solana and Tron. Luganodes prioritises security and compliance, holding the distinction of being one of the first staking providers to adhere to SOC 2 Type II, GDPR, and ISO 27001 standards.

**Trusted and Verified**

As an institutional staking provider, we showcase our expertise in the blockchain infrastructure space, standing among the World's Top 15 Verified Providers.

**Empowering the Web3 Ecosystem**

Our mission is to provide leading blockchain infrastructure for Proof of Stake (PoS) networks, fostering a thriving web3 ecosystem.

**Seamless Staking Experience**

Luganodes offers seamless staking experiences for institutions and individuals, all while ensuring custody of your funds in your existing solution.

**Customer-Centric Approach**

Customer experience is of utmost importance to us. We frequently update our documentation to enable smooth onboarding for our new clients.


# Introduction

Reliable JSON-RPC access to Ethereum, Bitcoin and Tron

Luganodes RPC is a self-serve platform for blockchain node access. Create an app, get per chain endpoints, and monitor usage, alerts and billing from a single dashboard at [rpc.luganodes.com](https://rpc.luganodes.com/). Endpoints run on the same institutional grade infrastructure that powers Luganodes staking, monitored around the clock by our SRE team.

Every request is served over HTTPS using the JSON-RPC protocol native to each chain. Your API key is part of the endpoint URL, so once you have an app you can connect any standard client or library with no extra configuration.

### Supported networks

<table><thead><tr><th width="165.8984375">Chain</th><th width="87.20703125">Network</th><th width="466.296875">RPC style</th></tr></thead><tbody><tr><td>Ethereum Mainnet</td><td>Mainnet</td><td>EVM JSON-RPC</td></tr><tr><td>Ethereum Beacon</td><td>Mainnet</td><td>Beacon REST API</td></tr><tr><td>Bitcoin</td><td>Mainnet</td><td>Bitcoin Core JSON-RPC</td></tr><tr><td>Tron</td><td>Mainnet</td><td>Tron JSON-RPC (eth compatible), HTTP, Solidity and gRPC APIs</td></tr></tbody></table>

### How the platform works

**Apps and endpoints.** An app is your unit of access. Each app has one API key and is enabled for all supported chains at creation, giving you one endpoint per chain. Your first app is created automatically when you sign up.

**Compute units.** Usage is measured in compute units, a per method weight that reflects the cost of serving each request. Light reads cost less than heavy scans and traces. Every plan includes a monthly compute unit allowance. [See how compute units work.](/rpc/compute-units/how-compute-units-work)

**Statistics and alerts.** The dashboard shows requests, compute units, latency and errors per app, chain and method, with AI Insights that explain what changed in your usage. Alert rules notify your team about usage thresholds, overage, latency and error rate spikes.

**Teams and roles.** Organizations support multiple members with Owner, Admin, Billing and Viewer roles, and team-based control over which apps each member can see. [See teams, members and roles.](/rpc/platform-guide/teams-members-and-roles)

### Plans

| Plan       | Price   | Monthly CU | Throughput | Active apps |
| ---------- | ------- | ---------- | ---------- | ----------- |
| Free       | $0      | 25M        | 25 RPS     | 3           |
| Growth     | $49/mo  | 300M       | 200 RPS    | 20          |
| Pro        | $199/mo | 1.5B       | 500 RPS    | Unlimited   |
| Enterprise | Custom  | Custom     | Custom     | Unlimited   |

Every account starts on the Free plan with no payment method required. [See plans and limits](/rpc/billing-and-plans/plans-and-limits) for the full comparison.

{% hint style="info" %}
The [Quickstart](/rpc/quickstart) takes you from signup to your first successful response in under five minutes.
{% endhint %}


# Quickstart

Create an app and send your first request in under five minutes

### Create your account

Sign up at [rpc.luganodes.com/sign-up](https://rpc.luganodes.com/sign-up). Your organization is created automatically on the Free plan, which includes 25 million compute units per month, 25 requests per second and up to 3 active apps. No payment method is required.

### Get your endpoint

Your first app is created for you at signup, enabled for all supported chains. Open it from the dashboard to view its endpoints. Each chain has its own URL with your API key included:

```
https://ethereum-mainnet.rpc.luganodes.com/v1/<API_KEY>
https://ethereum-beacon-mainnet.rpc.luganodes.com/v1/<API_KEY>
https://bitcoin-mainnet.rpc.luganodes.com/v1/<API_KEY>
https://tron-mainnet.rpc.luganodes.com/v1/<API_KEY>
```

The Ethereum Beacon endpoint requires Growth or above. The other three are available on every plan.

{% hint style="info" %}
Your API key is part of the endpoint URL, so treat the full URL as a secret. See [Security](/rpc/security) for key rotation and allowlists.
{% endhint %}

### Send your first request

You can test your endpoint directly from the dashboard using **Test your endpoint** on the app page, with no setup needed. To call it from your own machine, request the latest block from any chain. The examples below return the current block number or block count.

{% tabs %}
{% tab title="Ethereum" %}

```shellscript
curl https://ethereum-mainnet.rpc.luganodes.com/v1/<API_KEY> \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
```

{% endtab %}

{% tab title="Ethereum Beacon" %}

```shellscript
curl -s 'https://ethereum-beacon-mainnet.staging-rpc.luganodes.com/v1/<API_KEY>/eth/v1/beacon/genesis' \
  -H 'Accept: application/json'
```

{% endtab %}

{% tab title="Bitcoin" %}

```shellscript
curl https://bitcoin-mainnet.rpc.luganodes.com/v1/<API_KEY> \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"1.0","method":"getblockcount","params":[],"id":1}'
```

{% endtab %}

{% tab title="Tron" %}

```shellscript
curl https://tron-mainnet.rpc.luganodes.com/v1/<API_KEY> \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
```

{% endtab %}
{% endtabs %}

Response

```
{"jsonrpc":"2.0","id":1,"result":"0x1554a52"}
```

A block number in the result field means your endpoint is live. Since endpoints are standard JSON-RPC URLs, they work directly with libraries such as ethers.js, web3.js and viem.

### Track your usage

The [Statistics](/rpc/platform-guide/statistics-and-ai-insights) page shows requests, compute units, latency and errors for every app and chain. Each method call consumes compute units based on its weight, and your monthly allowance resets at the start of each billing cycle. [See how compute units work.](/rpc/compute-units/how-compute-units-work)

### Next steps

1. [How compute units work](/rpc/compute-units/how-compute-units-work): understand what each method costs
2. [Apps, endpoints and API keys](/rpc/platform-guide/apps-endpoints-and-api-keys): create more apps and configure key allowlists
3. [Alerts](/rpc/platform-guide/alerts): get notified before you reach your limits
4. [Rate limits and errors](/rpc/rate-limits-and-errors): error codes and handling 429 responses


# Compute units


# How compute units work

What each request costs and why

A compute unit (CU) is the unit of usage on Luganodes RPC. Every method has a CU weight that reflects what it costs to serve. A light read like fetching a block number costs little, while a heavy scan or trace costs more. Your plan includes a monthly CU allowance, and every request draws from it.

### How cost is calculated

The CU charged for a request is the chain's base rate multiplied by the method's weight multiplier:

```
CU charged = chain base rate x method multiplier
```

Each chain has a base rate that reflects the cost of running its nodes:

<table><thead><tr><th width="284.50390625">Chain</th><th>Base CU per method</th></tr></thead><tbody><tr><td>Bitcoin</td><td>5</td></tr><tr><td>Ethereum Mainnet</td><td>20</td></tr><tr><td>Ethereum Beacon</td><td>20</td></tr><tr><td>Tron</td><td>30</td></tr></tbody></table>

### Weight multipliers <a href="#weight-multipliers" id="weight-multipliers"></a>

Most methods are Standard and cost the base rate. Heavier methods cost a multiple of it:

<table><thead><tr><th width="100.046875">Multiplier</th><th width="244.4765625">Applies to</th><th>Examples</th></tr></thead><tbody><tr><td>1x</td><td>Standard reads and writes on every chain</td><td><code>eth_getBalance</code>, <code>getblockcount</code>, <code>/wallet/getnowblock</code></td></tr><tr><td>2x</td><td>Log queries, transaction broadcast, trace, debug and txpool namespaces</td><td><code>eth_getLogs</code>, <code>eth_sendRawTransaction</code>, <code>trace_block</code>, <code>debug_traceTransaction</code>, <code>sendrawtransaction</code></td></tr><tr><td>4x</td><td>Methods that return very large responses or scan wide state</td><td><code>trace_replayBlockTransactions</code>, <code>trace_replayTransaction</code>, <code>getrawmempool</code>, <code>getrawtransaction</code></td></tr></tbody></table>

Example: `eth_getBalance` on Ethereum Mainnet is 1x, so it costs 20 CU. `eth_getLogs` is 2x, so it costs 40 CU. `trace_replayTransaction` is 4x, so it costs 80 CU. The full per method weights are in the [Ethereum Mainnet](/rpc/compute-units/ethereum-mainnet-cu-table), [Ethereum Beacon](/rpc/compute-units/ethereum-beacon-cu-table), [Bitcoin](/rpc/compute-units/bitcoin-cu-table) and [Tron](/rpc/compute-units/tron-cu-table) CU tables.

### Method access by plan

Which buckets you can call depends on your plan:

<table><thead><tr><th width="102.85546875">Plan</th><th>Method access</th></tr></thead><tbody><tr><td>Free</td><td>Standard reads and writes on all chains</td></tr><tr><td>Growth</td><td>Adds logs and filters, heavier reads, transaction broadcast on Ethereum Mainnet, and the Beacon API</td></tr><tr><td>Pro</td><td>Adds trace, debug and txpool</td></tr></tbody></table>

The Plan column on each CU table shows the minimum plan for every method. Calling a method outside your plan returns HTTP 402 with the code `plan_upgrade_required`. See [rate limits and errors](/rpc/rate-limits-and-errors).

### Batch requests

A batch request costs the sum of its sub calls. A batch of ten Standard Ethereum calls costs 200 CU, the same as sending them individually.

### Allowances and overage

* Your CU allowance resets at the start of each billing cycle. Unused compute units do not roll over.
* On Free, usage stops at the monthly cap until the next cycle.
* On Growth and Pro, usage beyond the allowance is billed as overage at the end of the cycle. [See plan changes and overage.](/rpc/billing-and-plans/plan-changes-and-overage)

{% hint style="info" %}
Methods not listed in the CU tables are billed at the chain's base rate.
{% endhint %}


# Ethereum Mainnet CU table

Per method compute unit weights and minimum plan for Ethereum Mainnet

The Ethereum Mainnet base rate is 20 CU. Methods are listed by the minimum plan that can call them, with the CU each call consumes. Methods not listed here are billed at the base rate of 20 CU.

### Available on all plans

Standard reads and writes. 20 CU per call.

<table><thead><tr><th width="603.6640625">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>eth_accounts</code></td><td>20</td></tr><tr><td><code>eth_blobBaseFee</code></td><td>20</td></tr><tr><td><code>eth_blockNumber</code></td><td>20</td></tr><tr><td><code>eth_call</code></td><td>20</td></tr><tr><td><code>eth_chainId</code></td><td>20</td></tr><tr><td><code>eth_createAccessList</code></td><td>20</td></tr><tr><td><code>eth_estimateGas</code></td><td>20</td></tr><tr><td><code>eth_feeHistory</code></td><td>20</td></tr><tr><td><code>eth_gasPrice</code></td><td>20</td></tr><tr><td><code>eth_getAccount</code></td><td>20</td></tr><tr><td><code>eth_getBalance</code></td><td>20</td></tr><tr><td><code>eth_getBlockByHash</code></td><td>20</td></tr><tr><td><code>eth_getBlockByNumber</code></td><td>20</td></tr><tr><td><code>eth_getBlockTransactionCountByHash</code></td><td>20</td></tr><tr><td><code>eth_getBlockTransactionCountByNumber</code></td><td>20</td></tr><tr><td><code>eth_getCode</code></td><td>20</td></tr><tr><td><code>eth_getRawTransactionByHash</code></td><td>20</td></tr><tr><td><code>eth_getStorageAt</code></td><td>20</td></tr><tr><td><code>eth_getTransactionByBlockHashAndIndex</code></td><td>20</td></tr><tr><td><code>eth_getTransactionByBlockNumberAndIndex</code></td><td>20</td></tr><tr><td><code>eth_getTransactionByHash</code></td><td>20</td></tr><tr><td><code>eth_getTransactionBySenderAndNonce</code></td><td>20</td></tr><tr><td><code>eth_getTransactionCount</code></td><td>20</td></tr><tr><td><code>eth_getTransactionReceipt</code></td><td>20</td></tr><tr><td><code>eth_getUncleCountByBlockHash</code></td><td>20</td></tr><tr><td><code>eth_getUncleCountByBlockNumber</code></td><td>20</td></tr><tr><td><code>eth_maxPriorityFeePerGas</code></td><td>20</td></tr><tr><td><code>eth_syncing</code></td><td>20</td></tr><tr><td><code>net_listening</code></td><td>20</td></tr><tr><td><code>net_peerCount</code></td><td>20</td></tr><tr><td><code>net_version</code></td><td>20</td></tr><tr><td><code>web3_clientVersion</code></td><td>20</td></tr><tr><td><code>web3_sha3</code></td><td>20</td></tr></tbody></table>

### Growth and above <a href="#growth-and-above" id="growth-and-above"></a>

Log queries, filters, heavier reads and transaction broadcast. Log queries and broadcast cost 40 CU and the rest cost 20 CU.

<table><thead><tr><th width="605.62109375">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>eth_callMany</code></td><td>20</td></tr><tr><td><code>eth_getBlockReceipts</code></td><td>20</td></tr><tr><td><code>eth_getFilterChanges</code></td><td>20</td></tr><tr><td><code>eth_getFilterLogs</code></td><td>40</td></tr><tr><td><code>eth_getLogs</code></td><td>40</td></tr><tr><td><code>eth_getProof</code></td><td>20</td></tr><tr><td><code>eth_newBlockFilter</code></td><td>20</td></tr><tr><td><code>eth_newFilter</code></td><td>20</td></tr><tr><td><code>eth_newPendingTransactionFilter</code></td><td>20</td></tr><tr><td><code>eth_sendRawTransaction</code></td><td>40</td></tr><tr><td><code>eth_simulateV1</code></td><td>20</td></tr><tr><td><code>eth_uninstallFilter</code></td><td>20</td></tr></tbody></table>

### Pro only <a href="#pro-only" id="pro-only"></a>

Trace, debug and txpool namespaces at 40 CU. The two trace replay methods return full execution traces and cost 80 CU.

<table><thead><tr><th width="605.88671875">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>debug_getBadBlocks</code></td><td>40</td></tr><tr><td><code>debug_storageRangeAt</code></td><td>40</td></tr><tr><td><code>debug_traceBlock</code></td><td>40</td></tr><tr><td><code>debug_traceBlockByHash</code></td><td>40</td></tr><tr><td><code>debug_traceBlockByNumber</code></td><td>40</td></tr><tr><td><code>debug_traceCall</code></td><td>40</td></tr><tr><td><code>debug_traceTransaction</code></td><td>40</td></tr><tr><td><code>trace_block</code></td><td>40</td></tr><tr><td><code>trace_call</code></td><td>40</td></tr><tr><td><code>trace_callMany</code></td><td>40</td></tr><tr><td><code>trace_filter</code></td><td>40</td></tr><tr><td><code>trace_rawTransaction</code></td><td>40</td></tr><tr><td><code>trace_replayBlockTransactions</code></td><td>80</td></tr><tr><td><code>trace_replayTransaction</code></td><td>80</td></tr><tr><td><code>trace_transaction</code></td><td>40</td></tr><tr><td><code>txpool_content</code></td><td>40</td></tr><tr><td><code>txpool_contentFrom</code></td><td>40</td></tr><tr><td><code>txpool_inspect</code></td><td>40</td></tr><tr><td><code>txpool_status</code></td><td>40</td></tr></tbody></table>

{% hint style="info" %}
Batch requests cost the sum of their sub calls. See [how compute units work](/rpc/compute-units/how-compute-units-work) for the full pricing model.
{% endhint %}


# Ethereum Beacon CU table

Per endpoint compute unit weights for the Ethereum Beacon chain

Ethereum Beacon is served as its own chain with its own endpoint. The base rate is 20 CU and every endpoint below costs 20 CU per call. All Beacon endpoints require Growth or above. Endpoints not listed here are billed at the base rate of 20 CU.

### Beacon <a href="#beacon" id="beacon"></a>

Blocks, headers, states, rewards and the voluntary exit pool.

<table><thead><tr><th width="633.9453125">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/eth/v1/beacon/blob_sidecars/{block_id}</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/blobs/{block_id}</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/blocks/{block_id}/root</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/genesis</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/headers</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/headers/{block_id}</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/pool/voluntary_exits</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/rewards/attestations/{epoch}</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/rewards/blocks/{block_id}</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/rewards/sync_committee/{block_id}</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/committees</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/finality_checkpoints</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/fork</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/pending_consolidations</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/pending_deposits</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/pending_partial_withdrawals</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/randao</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/root</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/sync_committees</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/validator_balances</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/validators</code></td><td>20</td></tr><tr><td><code>/eth/v1/beacon/states/{state_id}/validators/{validator_id}</code></td><td>20</td></tr><tr><td><code>/eth/v2/beacon/blocks/{block_id}</code></td><td>20</td></tr></tbody></table>

### Config <a href="#config" id="config"></a>

Chain configuration and spec.

<table><thead><tr><th width="624.453125">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/eth/v1/config/deposit_contract</code></td><td>20</td></tr><tr><td><code>/eth/v1/config/fork_schedule</code></td><td>20</td></tr><tr><td><code>/eth/v1/config/spec</code></td><td>20</td></tr></tbody></table>

### Node <a href="#node" id="node"></a>

Node identity, peers and sync status.

<table><thead><tr><th width="629.8359375">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/eth/v1/node/peer_count</code></td><td>20</td></tr><tr><td><code>/eth/v1/node/peers</code></td><td>20</td></tr><tr><td><code>/eth/v1/node/syncing</code></td><td>20</td></tr><tr><td><code>/eth/v1/node/version</code></td><td>20</td></tr></tbody></table>

### Validator <a href="#validator" id="validator"></a>

Duties, blinded blocks and sync committee contributions.

<table><thead><tr><th width="634.6953125">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/eth/v1/validator/blinded_blocks/{slot}</code></td><td>20</td></tr><tr><td><code>/eth/v1/validator/duties/attester/{epoch}</code></td><td>20</td></tr><tr><td><code>/eth/v1/validator/duties/proposer/{epoch}</code></td><td>20</td></tr><tr><td><code>/eth/v1/validator/duties/sync/{epoch}</code></td><td>20</td></tr><tr><td><code>/eth/v1/validator/sync_committee_contribution</code></td><td>20</td></tr></tbody></table>

### Events <a href="#events" id="events"></a>

Server sent event stream for beacon chain events.

<table><thead><tr><th width="633.13671875">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/eth/v1/events</code></td><td>20</td></tr></tbody></table>

### Debug <a href="#debug" id="debug"></a>

Full state and data column sidecars.

<table><thead><tr><th width="641.171875">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/eth/v1/debug/beacon/data_column_sidecars/{block_id}</code></td><td>20</td></tr><tr><td><code>/eth/v2/debug/beacon/states/{state_id}</code></td><td>20</td></tr></tbody></table>

{% hint style="info" %}
Batch requests cost the sum of their sub calls. See [how compute units work](/rpc/compute-units/how-compute-units-work) for the full pricing model.
{% endhint %}


# Bitcoin CU table

Per method compute unit weights for Bitcoin mainnet

The Bitcoin base rate is 5 CU. All supported Bitcoin Core JSON-RPC methods are Standard, so every call costs 5 CU and is available on all plans. Methods not listed here are billed at the base rate of 5 CU.

### Available on all plans <a href="#available-on-all-plans" id="available-on-all-plans"></a>

Standard reads, address and script utilities, and PSBT and raw transaction construction at 5 CU. Broadcasting and mempool acceptance checks cost 10 CU.

<table><thead><tr><th width="606.07421875">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>analyzepsbt</code></td><td>5</td></tr><tr><td><code>combinepsbt</code></td><td>5</td></tr><tr><td><code>combinerawtransaction</code></td><td>5</td></tr><tr><td><code>converttopsbt</code></td><td>5</td></tr><tr><td><code>createmultisig</code></td><td>5</td></tr><tr><td><code>createpsbt</code></td><td>5</td></tr><tr><td><code>createrawtransaction</code></td><td>5</td></tr><tr><td><code>decodepsbt</code></td><td>5</td></tr><tr><td><code>decoderawtransaction</code></td><td>5</td></tr><tr><td><code>decodescript</code></td><td>5</td></tr><tr><td><code>deriveaddresses</code></td><td>5</td></tr><tr><td><code>estimatesmartfee</code></td><td>5</td></tr><tr><td><code>finalizepsbt</code></td><td>5</td></tr><tr><td><code>getbestblockhash</code></td><td>5</td></tr><tr><td><code>getblock</code></td><td>5</td></tr><tr><td><code>getblockchaininfo</code></td><td>5</td></tr><tr><td><code>getblockcount</code></td><td>5</td></tr><tr><td><code>getblockfilter</code></td><td>5</td></tr><tr><td><code>getblockhash</code></td><td>5</td></tr><tr><td><code>getblockheader</code></td><td>5</td></tr><tr><td><code>getblockstats</code></td><td>5</td></tr><tr><td><code>getblocktemplate</code></td><td>5</td></tr><tr><td><code>getchaintxstats</code></td><td>5</td></tr><tr><td><code>getdeploymentinfo</code></td><td>5</td></tr><tr><td><code>getdescriptorinfo</code></td><td>5</td></tr><tr><td><code>getdifficulty</code></td><td>5</td></tr><tr><td><code>getmempoolancestors</code></td><td>5</td></tr><tr><td><code>getmempooldescendants</code></td><td>5</td></tr><tr><td><code>getmempoolentry</code></td><td>5</td></tr><tr><td><code>getmempoolinfo</code></td><td>5</td></tr><tr><td><code>getnetworkhashps</code></td><td>5</td></tr><tr><td><code>gettxspendingprevout</code></td><td>5</td></tr><tr><td><code>joinpsbts</code></td><td>5</td></tr><tr><td><code>sendrawtransaction</code></td><td>10</td></tr><tr><td><code>utxoupdatepsbt</code></td><td>5</td></tr><tr><td><code>validateaddress</code></td><td>5</td></tr><tr><td><code>verifymessage</code></td><td>5</td></tr><tr><td><code>verifytxoutproof</code></td><td>5</td></tr></tbody></table>

### Growth and above <a href="#growth-and-above" id="growth-and-above"></a>

Heavier reads that scan the mempool or UTXO set. 20 CU per call.

<table><thead><tr><th width="605.59765625">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>getrawmempool</code></td><td>20</td></tr><tr><td><code>getrawtransaction</code></td><td>20</td></tr><tr><td><code>gettxout</code></td><td>20</td></tr><tr><td><code>gettxoutproof</code></td><td>20</td></tr></tbody></table>

{% hint style="info" %}
Batch requests cost the sum of their sub calls. See [how compute units work](/rpc/compute-units/how-compute-units-work) for the full pricing model.
{% endhint %}


# Tron CU table

Per method compute unit weights for Tron mainnet

The Tron base rate is 30 CU. Methods are listed by the minimum plan that can call them, with the CU each call consumes. Methods not listed here are billed at the base rate of 30 CU.

### Available on all plans <a href="#available-on-all-plans" id="available-on-all-plans"></a>

Every Tron method below is 30 CU per call, across five interfaces.

#### EVM JSON-RPC methods <a href="#evm-json-rpc-methods" id="evm-json-rpc-methods"></a>

Eth compatible JSON-RPC methods served at the Tron endpoint.

<table><thead><tr><th width="605.921875">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>eth_accounts</code></td><td>30</td></tr><tr><td><code>eth_blockNumber</code></td><td>30</td></tr><tr><td><code>eth_call</code></td><td>30</td></tr><tr><td><code>eth_chainId</code></td><td>30</td></tr><tr><td><code>eth_estimateGas</code></td><td>30</td></tr><tr><td><code>eth_gasPrice</code></td><td>30</td></tr><tr><td><code>eth_getBalance</code></td><td>30</td></tr><tr><td><code>eth_getBlockByHash</code></td><td>30</td></tr><tr><td><code>eth_getBlockByNumber</code></td><td>30</td></tr><tr><td><code>eth_getBlockTransactionCountByHash</code></td><td>30</td></tr><tr><td><code>eth_getBlockTransactionCountByNumber</code></td><td>30</td></tr><tr><td><code>eth_getCode</code></td><td>30</td></tr><tr><td><code>eth_getStorageAt</code></td><td>30</td></tr><tr><td><code>eth_getTransactionByBlockHashAndIndex</code></td><td>30</td></tr><tr><td><code>eth_getTransactionByBlockNumberAndIndex</code></td><td>30</td></tr><tr><td><code>eth_getTransactionByHash</code></td><td>30</td></tr><tr><td><code>eth_getTransactionReceipt</code></td><td>30</td></tr><tr><td><code>eth_syncing</code></td><td>30</td></tr><tr><td><code>net_listening</code></td><td>30</td></tr><tr><td><code>net_peerCount</code></td><td>30</td></tr><tr><td><code>net_version</code></td><td>30</td></tr><tr><td><code>web3_clientVersion</code></td><td>30</td></tr><tr><td><code>web3_sha3</code></td><td>30</td></tr></tbody></table>

#### Build transaction methods <a href="#build-transaction-methods" id="build-transaction-methods"></a>

JSON-RPC methods for constructing Tron transactions.

<table><thead><tr><th width="605.42578125">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>CreateSmartContract</code></td><td>30</td></tr><tr><td><code>TransferAssetContract</code></td><td>30</td></tr><tr><td><code>TransferContract</code></td><td>30</td></tr><tr><td><code>TriggerSmartContract</code></td><td>30</td></tr></tbody></table>

#### HTTP API <a href="#http-api" id="http-api"></a>

Tron full node HTTP endpoints under /wallet.

<table><thead><tr><th width="605.83203125">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/wallet/accountpermissionupdate</code></td><td>30</td></tr><tr><td><code>/wallet/broadcasthex</code></td><td>30</td></tr><tr><td><code>/wallet/broadcasttransaction</code></td><td>30</td></tr><tr><td><code>/wallet/clearabi</code></td><td>30</td></tr><tr><td><code>/wallet/createassetissue</code></td><td>30</td></tr><tr><td><code>/wallet/createaccount</code></td><td>30</td></tr><tr><td><code>/wallet/createshieldedcontractparameters</code></td><td>30</td></tr><tr><td><code>/wallet/createspendauthsig</code></td><td>30</td></tr><tr><td><code>/wallet/createtransaction</code></td><td>30</td></tr><tr><td><code>/wallet/delegateresource</code></td><td>30</td></tr><tr><td><code>/wallet/deploycontract</code></td><td>30</td></tr><tr><td><code>/wallet/estimateenergy</code></td><td>30</td></tr><tr><td><code>/wallet/exchangecreate</code></td><td>30</td></tr><tr><td><code>/wallet/exchangeinject</code></td><td>30</td></tr><tr><td><code>/wallet/exchangetransaction</code></td><td>30</td></tr><tr><td><code>/wallet/exchangewithdraw</code></td><td>30</td></tr><tr><td><code>/wallet/freezebalance</code></td><td>30</td></tr><tr><td><code>/wallet/freezebalancev2</code></td><td>30</td></tr><tr><td><code>/wallet/getaccount</code></td><td>30</td></tr><tr><td><code>/wallet/getaccountbalance</code></td><td>30</td></tr><tr><td><code>/wallet/getaccountnet</code></td><td>30</td></tr><tr><td><code>/wallet/getaccountresource</code></td><td>30</td></tr><tr><td><code>/wallet/getakfromask</code></td><td>30</td></tr><tr><td><code>/wallet/getassetissuebyaccount</code></td><td>30</td></tr><tr><td><code>/wallet/getassetissuebyid</code></td><td>30</td></tr><tr><td><code>/wallet/getassetissuebyname</code></td><td>30</td></tr><tr><td><code>/wallet/getassetissuelist</code></td><td>30</td></tr><tr><td><code>/wallet/getassetissuelistbyname</code></td><td>30</td></tr><tr><td><code>/wallet/getavailableunfreezecount</code></td><td>30</td></tr><tr><td><code>/wallet/getbandwidthprices</code></td><td>30</td></tr><tr><td><code>/wallet/getblock</code></td><td>30</td></tr><tr><td><code>/wallet/getblockbalance</code></td><td>30</td></tr><tr><td><code>/wallet/getblockbyid</code></td><td>30</td></tr><tr><td><code>/wallet/getblockbylatestnum</code></td><td>30</td></tr><tr><td><code>/wallet/getblockbylimitnext</code></td><td>30</td></tr><tr><td><code>/wallet/getblockbynum</code></td><td>30</td></tr><tr><td><code>/wallet/getburntrx</code></td><td>30</td></tr><tr><td><code>/wallet/getcandelegatedmaxsize</code></td><td>30</td></tr><tr><td><code>/wallet/getcanwithdrawunfreezeamount</code></td><td>30</td></tr><tr><td><code>/wallet/getchainparameters</code></td><td>30</td></tr><tr><td><code>/wallet/getcontract</code></td><td>30</td></tr><tr><td><code>/wallet/getcontractinfo</code></td><td>30</td></tr><tr><td><code>/wallet/getdelegatedresource</code></td><td>30</td></tr><tr><td><code>/wallet/getdelegatedresourceaccountindex</code></td><td>30</td></tr><tr><td><code>/wallet/getdelegatedresourceaccountindexv2</code></td><td>30</td></tr><tr><td><code>/wallet/getdelegatedresourcev2</code></td><td>30</td></tr><tr><td><code>/wallet/getdiversifier</code></td><td>30</td></tr><tr><td><code>/wallet/getenergyprices</code></td><td>30</td></tr><tr><td><code>/wallet/getexchangebyid</code></td><td>30</td></tr><tr><td><code>/wallet/getexpandedspendingkey</code></td><td>30</td></tr><tr><td><code>/wallet/getincomingviewingkey</code></td><td>30</td></tr><tr><td><code>/wallet/getnewshieldedaddress</code></td><td>30</td></tr><tr><td><code>/wallet/getnkfromnsk</code></td><td>30</td></tr><tr><td><code>/wallet/getnodeinfo</code></td><td>30</td></tr><tr><td><code>/wallet/getnowblock</code></td><td>30</td></tr><tr><td><code>/wallet/getpaginatedassetissuelist</code></td><td>30</td></tr><tr><td><code>/wallet/getpendingsize</code></td><td>30</td></tr><tr><td><code>/wallet/getproposalbyid</code></td><td>30</td></tr><tr><td><code>/wallet/getspendingkey</code></td><td>30</td></tr><tr><td><code>/wallet/gettransactionbyid</code></td><td>30</td></tr><tr><td><code>/wallet/gettransactionfrompending</code></td><td>30</td></tr><tr><td><code>/wallet/gettransactioninfobyblocknum</code></td><td>30</td></tr><tr><td><code>/wallet/gettransactioninfobyid</code></td><td>30</td></tr><tr><td><code>/wallet/gettransactionlistfrompending</code></td><td>30</td></tr><tr><td><code>/wallet/gettriggerinputforshieldedtrc20contract</code></td><td>30</td></tr><tr><td><code>/wallet/getzenpaymentaddress</code></td><td>30</td></tr><tr><td><code>/wallet/isshieldedtrc20contractnotespent</code></td><td>30</td></tr><tr><td><code>/wallet/listexchanges</code></td><td>30</td></tr><tr><td><code>/wallet/listproposals</code></td><td>30</td></tr><tr><td><code>/wallet/participateassetissue</code></td><td>30</td></tr><tr><td><code>/wallet/proposalapprove</code></td><td>30</td></tr><tr><td><code>/wallet/proposaldelete</code></td><td>30</td></tr><tr><td><code>/wallet/scanshieldedtrc20notesbyivk</code></td><td>30</td></tr><tr><td><code>/wallet/scanshieldedtrc20notesbyovk</code></td><td>30</td></tr><tr><td><code>/wallet/transferasset</code></td><td>30</td></tr><tr><td><code>/wallet/triggerconstantcontract</code></td><td>30</td></tr><tr><td><code>/wallet/triggersmartcontract</code></td><td>30</td></tr><tr><td><code>/wallet/undelegateresource</code></td><td>30</td></tr><tr><td><code>/wallet/unfreezeasset</code></td><td>30</td></tr><tr><td><code>/wallet/unfreezebalance</code></td><td>30</td></tr><tr><td><code>/wallet/unfreezebalancev2</code></td><td>30</td></tr><tr><td><code>/wallet/updateaccount</code></td><td>30</td></tr><tr><td><code>/wallet/updateasset</code></td><td>30</td></tr><tr><td><code>/wallet/updateenergylimit</code></td><td>30</td></tr><tr><td><code>/wallet/updatesetting</code></td><td>30</td></tr><tr><td><code>/wallet/withdrawexpireunfreeze</code></td><td>30</td></tr><tr><td><code>/wallet/validateaddress</code></td><td>30</td></tr><tr><td><code>/wallet/votewitnessaccount</code></td><td>30</td></tr></tbody></table>

#### Solidity API <a href="#solidity-api" id="solidity-api"></a>

Solidified node HTTP endpoints under /walletsolidity, serving confirmed state.

<table><thead><tr><th width="605.609375">Endpoint</th><th>CU</th></tr></thead><tbody><tr><td><code>/walletsolidity/estimateenergy</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getaccount</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getassetissuebyid</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getassetissuebyname</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getassetissuelist</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getassetissuelistbyname</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getavailableunfreezecount</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getblock</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getblockbyid</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getblockbylatestnum</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getblockbylimitnext</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getblockbynum</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getburntrx</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getcandelegatedmaxsize</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getcanwithdrawunfreezeamount</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getdelegatedresource</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getdelegatedresourceaccountindex</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getdelegatedresourceaccountindexv2</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getexchangebyid</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getnowblock</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getpaginatedassetissuelist</code></td><td>30</td></tr><tr><td><code>/walletsolidity/gettransactionbyid</code></td><td>30</td></tr><tr><td><code>/walletsolidity/gettransactioncountbyblocknum</code></td><td>30</td></tr><tr><td><code>/walletsolidity/gettransactioninfobyblocknum</code></td><td>30</td></tr><tr><td><code>/walletsolidity/getTransactionInfoById</code></td><td>30</td></tr><tr><td><code>/walletsolidity/isshieldedtrc20contractnotespent</code></td><td>30</td></tr><tr><td><code>/walletsolidity/listexchanges</code></td><td>30</td></tr><tr><td><code>/walletsolidity/scanshieldedtrc20notesbyivk</code></td><td>30</td></tr><tr><td><code>/walletsolidity/scanshieldedtrc20notesbyovk</code></td><td>30</td></tr><tr><td><code>/walletsolidity/triggerconstantcontract</code></td><td>30</td></tr></tbody></table>

### Growth and above <a href="#growth-and-above" id="growth-and-above"></a>

Block receipts and log queries. 30 CU per call.

<table><thead><tr><th width="606.06640625">Method</th><th>CU</th></tr></thead><tbody><tr><td><code>eth_getBlockReceipts</code></td><td>30</td></tr><tr><td><code>eth_getLogs</code></td><td>30</td></tr></tbody></table>

{% hint style="info" %}
Batch requests cost the sum of their sub calls. See [how compute units work](/rpc/compute-units/how-compute-units-work) for the full pricing model.
{% endhint %}


# Platform guide


# Apps, endpoints and API keys

Create apps, manage their endpoints and keep keys under control

### Apps

An app is your unit of access. Each app has exactly one API key and is enabled for all supported chains at creation, giving you one endpoint per chain. Your first app is created automatically when you sign up.

An app is in one of three states:

| State    | Meaning                                                                                  |
| -------- | ---------------------------------------------------------------------------------------- |
| Active   | Serves traffic and counts toward your plan's active app limit                            |
| Disabled | Stops serving traffic, does not count toward the limit, can be enabled again at any time |
| Deleted  | Permanent. The API key is revoked and cannot be restored                                 |

Only active apps count toward your plan limit (Free 3, Growth 20, Pro unlimited), so you can keep more apps than the limit as long as enough are disabled.

### Creating apps

Select **Create New App** from the dashboard and give it a name. The app is enabled for all chains and its endpoints are live immediately. You can verify any endpoint with **Test your endpoint** on the app page.

If you are at your plan's active app limit, creating a new app is blocked until you disable an existing app or upgrade. The **Create New App** button stays visible and explains both options.

### Endpoints

Each app exposes one endpoint per chain, with the API key in the URL:

```
https://ethereum-mainnet.rpc.luganodes.com/v1/<API_KEY>
https://ethereum-beacon-mainnet.rpc.luganodes.com/v1/<API_KEY>
https://bitcoin-mainnet.rpc.luganodes.com/v1/<API_KEY>
https://tron-mainnet.rpc.luganodes.com/v1/<API_KEY>
```

An endpoint serves traffic when three things are true: the app is active, the organization's billing is in good standing, and the organization is within its active app limit. If your endpoints stop responding, the dashboard shows which of these is the cause. See [plan changes and overage](/rpc/billing-and-plans/plan-changes-and-overage) for how billing state affects endpoints.

### API keys

The API key is a long lived credential embedded in the endpoint URL. It is not a show once secret: you can view it again at any time from the app page. For security, keys never appear in app lists, and every reveal is recorded in the audit log.

**Rotation:** Rotating a key issues a new secret and revokes the old one immediately, propagating to the gateway within seconds. Update your services with the new endpoint URL before rotating, or expect a brief interruption on that app.

Who can do what with keys depends on organization roles. Owners and Admins manage apps and keys, Viewers can see endpoints and keys for apps they can access, and the Billing role never sees endpoint URLs or keys. See [teams, members and roles](/rpc/platform-guide/teams-members-and-roles).

### Security and access controls

Because the key is embedded in the URL, per app restrictions are your primary defense if a key leaks. Each app has four controls, configured under **Security and access** in the app settings:

<table><thead><tr><th width="146.56640625">Control</th><th width="189.51171875">Use for</th><th>Effect</th></tr></thead><tbody><tr><td>Domain whitelist</td><td>Browser apps</td><td>Browser based requests are accepted only from the listed origins</td></tr><tr><td>Allowed IP addresses</td><td>Backend services</td><td>Requests are accepted only from the listed IPs or CIDR ranges</td></tr><tr><td>Allowed methods</td><td>Limiting key scope</td><td>The key can call only the listed JSON-RPC methods. Empty allows all methods in your plan tier</td></tr><tr><td>Per app RPS cap</td><td>Protecting throughput</td><td>Caps this app's requests per second so one app cannot use the whole organization's throughput budget. Must be at or below your plan limit</td></tr></tbody></table>

With no restrictions configured, the key works from anywhere and can call any method in your plan tier. Requests blocked by a control receive HTTP 403, and changes take effect within seconds of saving. If you lock yourself out by excluding your own origin or IP, edit or clear the list from the app page. If you suspect a leak, rotate the key first, then tighten the restrictions. See [Security](/rpc/security) for key handling best practices.

{% hint style="info" %}
Treat the full endpoint URL as a secret. Anyone holding it can spend your compute units until the key is rotated or blocked by an allowlist.
{% endhint %}


# Statistics and AI Insights

See what your apps are doing, and understand what changed.

The Statistics page shows requests, compute units, latency and errors for your organization. The home dashboard summarizes the same data at a glance: monthly CU usage against your plan, CU used today, peak requests per second against your plan limit, and error rate over the last 24 hours.

### Filters and scope <a href="#filters-and-scope" id="filters-and-scope"></a>

Everything on the page follows the app switcher in the top bar: pick **All Apps** for the whole organization or a single app. Three filters at the top right refine every chart and table at once:

<table><thead><tr><th width="122.140625">Filter</th><th>Options</th></tr></thead><tbody><tr><td>Network</td><td>All chains, or one of Ethereum, Bitcoin, Tron</td></tr><tr><td>Method</td><td>All methods, or a specific method</td></tr><tr><td>Time range</td><td>This billing cycle, last 7, 30 or 90 days, or a custom date range from the calendar</td></tr></tbody></table>

The **Get AI insights** button sits beside the filters, so whatever scope you set is the scope it analyzes.

### What the page shows <a href="#what-the-page-shows" id="what-the-page-shows"></a>

<table><thead><tr><th width="187.7734375">Section</th><th>What it tells you</th></tr></thead><tbody><tr><td>Usage overview</td><td>Total requests, success rate, error count and throttled requests for the selected period</td></tr><tr><td>Monthly CU cap</td><td>Compute units used against your plan allowance, with cycle dates and percent used</td></tr><tr><td>Daily request volume</td><td>Requests per day over time, with a toggle between requests and CU</td></tr><tr><td>Requests by chain</td><td>Per chain volume, share percent and totals, with a requests vs CU toggle</td></tr><tr><td>Requests per second</td><td>RPS over time with your plan limit drawn as a reference line</td></tr><tr><td>Usage by app</td><td>Per app CU consumed, limit and percent used for the selected period</td></tr><tr><td>Top methods</td><td>Methods ranked by requests, with share, CU consumed and success and failure percent</td></tr><tr><td>Latency distribution</td><td>Histograms by network and by method across buckets from 0-10 ms up to above 1000 ms</td></tr></tbody></table>

### Request logs <a href="#request-logs" id="request-logs"></a>

Recent requests with timestamp, method, chain, latency and status. Three filters narrow the list: search by method, status code (200, 400, 401, 429, 500, 503) and latency band (under 50 ms, 50-200 ms, above 200 ms). Logs cover the last 30 days.

### AI Insights <a href="#ai-insights" id="ai-insights"></a>

Select **Get AI insights** on the Statistics page to generate a written explanation of your usage, scoped to whatever filters are applied. It describes what changed in the selected period and why, for example which app, chain or method drove a spike in compute units or errors. Set the filters you care about first, then generate.

### Data retention <a href="#data-retention" id="data-retention"></a>

* Statistics can be queried for up to 6 months back. The date picker does not allow earlier dates.
* Request logs are available for the last 30 days.
* Members with the Viewer role see only the apps they have access to, in every chart, table and log. See [teams, members and roles](/rpc/platform-guide/teams-members-and-roles).

{% hint style="info" %}
To be notified when usage crosses a threshold instead of checking the dashboard, set up [alerts](/rpc/platform-guide/alerts).
{% endhint %}


# Alerts

Get notified when usage, latency or errors cross a threshold

Alerts watch your organization's metrics and email the selected recipients when a threshold is breached. Owners and Admins create and manage rules on the Alerts page, and every firing is logged in Alert history with its timestamp and value.

### Alert types

<table><thead><tr><th width="174.53515625">Type</th><th width="338.19921875">Fires when</th><th width="113.125">Scope</th><th>Plans</th></tr></thead><tbody><tr><td>CU usage threshold</td><td>Monthly compute units cross a percent of your plan limit</td><td>Organization</td><td>All plans</td></tr><tr><td>Overage</td><td>Usage goes past the plan limit by a chosen percent</td><td>Organization</td><td>Growth, Pro</td></tr><tr><td>High latency</td><td>Average latency for an app on a chain exceeds a value over a window</td><td>App and chain</td><td>Growth, Pro</td></tr><tr><td>Error rate spike</td><td>Error rate for an app on a chain exceeds a percent over a window</td><td>App and chain</td><td>Growth, Pro</td></tr></tbody></table>

### How rules work

A rule has a threshold, notification recipients, and, for latency and error rate alerts, a measurement window and a cooldown between repeat notifications. CU usage and overage alerts have no cooldown: they fire once per billing cycle and reset at rollover.

Recipients are members of your organization. Each firing emails them the alert name, the current value against the threshold and a link to the relevant dashboard view. Alert emails never contain endpoint URLs or API keys.

### Plan limits

| Plan           | Active rules | Types available |
| -------------- | ------------ | --------------- |
| Free           | 1            | CU usage only   |
| Growth and Pro | 100          | All four        |

Deactivating a rule frees a slot. On a downgrade to Free, rules are deactivated and preserved, and upgrading restores them.


# Teams, members and roles

Bring your team in and control what each member can see and do

Everything on the platform belongs to an organization: apps, usage, billing and members. You can belong to several organizations with a different role in each, and switch between them from the bottom of the sidebar. Members require Growth or above; the Free plan is single user.

### Roles

Every member has one role per organization, set when they are invited and changeable later.

<table><thead><tr><th width="101.7578125">Role</th><th>What they can do</th></tr></thead><tbody><tr><td>Owner</td><td>Everything, including plan changes. One per organization, cannot be removed</td></tr><tr><td>Admin</td><td>Manage apps, keys, teams, members and alerts. Cannot change the plan</td></tr><tr><td>Billing</td><td>View usage and billing, upgrade the plan and update payment. Never sees endpoint URLs or API keys</td></tr><tr><td>Viewer</td><td>Read only access to apps, endpoints and statistics, limited by team access</td></tr></tbody></table>

### Inviting members

From Organization Settings, open the Members tab and select **Invite Member**, entering a name, email and role. The invitee gets an email link that is valid for 7 days; until they accept, they appear under Pending invites, where you can resend or cancel. If they don't have a Luganodes RPC account yet, they create one when accepting.

### Teams

Teams group members and control which apps Viewers can see. Owners and Admins create teams from the Teams tab and assign members to one or more of them.

* Every app is visible to all teams by default. Restricting an app for a team hides it from that team's Viewers, including in statistics.
* Access is additive: a Viewer in several teams sees an app if any of their teams has access. A member with no team sees all apps.
* Owner, Admin and Billing always see all apps regardless of team restrictions.

{% hint style="info" %}
Because the API key is embedded in the endpoint URL, any role that can view endpoints (Owner, Admin, Viewer) can use them. Only the Billing role is excluded from keys and endpoints.
{% endhint %}


# Billing and plans


# Plans and limits

What each plan includes and where the limits sit

Plans apply per organization and bill monthly, with the cycle anchored to your signup date. Every account starts on Free with no payment method required.

### Plan comparison

|                | Free             | Growth                   | Pro                         | Enterprise |
| -------------- | ---------------- | ------------------------ | --------------------------- | ---------- |
| Price          | $0               | $49/mo                   | $199/mo                     | Custom     |
| Monthly CU     | 25M              | 300M                     | 1.5B                        | Custom     |
| Throughput     | 25 RPS           | 200 RPS                  | 500 RPS                     | Custom     |
| At the CU cap  | Requests blocked | Overage billed           | Overage billed              | Custom     |
| Overage rate   | Not applicable   | $0.35 per 1M CU          | $0.30 per 1M CU             | Custom     |
| Active apps    | 3                | 20                       | Unlimited                   | Unlimited  |
| Members        | 1                | Unlimited                | Unlimited                   | Unlimited  |
| Alerts         | 1, CU usage only | 100                      | 100                         | Custom     |
| Method access  | Standard         | Standard and heavy reads | Full, incl. debug and trace | Full       |
| AI Insights    | Unlimited        | Unlimited                | Unlimited                   | Unlimited  |
| Data retention | 6 months         | 6 months                 | 6 months                    | Custom     |

### How limits behave

* Unused compute units expire at the end of each cycle. There is no rollover.
* On Free, reaching the monthly CU cap blocks further requests with HTTP 402 until the next cycle. Growth and Pro continue serving and bill the excess as overage.
* Exceeding your throughput limit returns HTTP 429 on the excess requests. See [rate limits and errors](/rpc/rate-limits-and-errors).
* All plans include all four chains over HTTPS.

### Enterprise

Enterprise plans add custom limits and rates, dedicated infrastructure and an account manager. Contact <rpc-support@luganodes.com> to discuss requirements.

{% hint style="info" %}
To change plans, see [plan changes and overage](/rpc/billing-and-plans/plan-changes-and-overage) for how upgrades, downgrades and proration work.
{% endhint %}


# Plan changes and overage

How upgrades, downgrades, proration and overage billing work

Owners and the Billing role can upgrade from the Billing page. Downgrading to Free is Owner only. Three rules govern every change:

* Upgrades take effect immediately on successful payment. Downgrades take effect at the start of the next billing cycle.
* Charges are prorated, allowances are not. On upgrade you get the full new plan allowance, with usage already consumed carried over.
* A Free to paid upgrade resets the billing cycle to the upgrade date. A paid to paid change keeps your existing billing date.

### Upgrading

**From Free.** You are charged the full plan price, your billing cycle restarts on the upgrade date, the usage counter resets to zero and all new limits apply immediately.

**From Growth to Pro.** You are charged the prorated difference for the days remaining in the cycle, and your billing date stays the same. Usage consumed so far carries over and counts against the new 1.5B allowance. Any overage already accrued on Growth is billed at the Growth rate on the upgrade invoice.

Example: Your cycle runs 1 to 31 July, you have used 380M CU on Growth and upgrade to Pro on 17 July.

<table><thead><tr><th width="549.76953125">Line</th><th>Amount</th></tr></thead><tbody><tr><td>Pro, 17 to 31 July ($199 x 15/31)</td><td>$96.29</td></tr><tr><td>Credit for unused Growth ($49 x 15/31)</td><td>-$23.71</td></tr><tr><td>Overage under Growth (80M x $0.35 per 1M)</td><td>$28.00</td></tr><tr><td>Charged on 17 July</td><td>$100.58</td></tr></tbody></table>

After the upgrade, 1,120M CU of the Pro allowance remains for the cycle, and $199 is charged on the usual billing date for the next cycle.

### Downgrading

A downgrade is scheduled for your next cycle boundary and can be cancelled any time before then. Until the boundary you keep full current plan access. A reminder email arrives one day before it takes effect.

* If your active apps exceed the target plan's limit at the boundary, all endpoints suspend until you disable enough apps. Nothing is deleted; you choose what to keep.
* On a downgrade to Free, members other than the Owner are frozen and teams and alerts are deactivated. Everything is preserved and restored if you upgrade again.

### Overage billing

On Growth and Pro, usage beyond your monthly allowance is billed at your plan's overage rate on the invoice issued at the end of the cycle. Your renewal invoice therefore shows the next cycle's subscription in advance and the finished cycle's overage in arrears, each labeled with the period it covers. Set an [overage alert](/rpc/platform-guide/alerts) to hear about it before the invoice does.

### If a payment fails

Nothing changes on the day a payment fails: endpoints keep running and everyone keeps access. The Owner, Admins and Billing are emailed, with a reminder and a dashboard banner on day 3.

If the payment is still unresolved after 7 days, the organization locks: endpoints stop, members other than the Owner and Billing lose access, and everything is preserved. Paying the outstanding invoice restores service immediately, with no reconfiguration needed.

{% hint style="info" %}
Update your payment method any time from the Billing page. Payment details are handled by Stripe and never stored by Luganodes.
{% endhint %}


# Rate limits and errors

Throughput limits, error codes and how to handle rejections

### Rate limits

Throughput is limited per organization: 25 requests per second on Free, 200 on Growth and 500 on Pro. Requests over the limit receive HTTP 429. Requests under it are unaffected. Two related limits can also stop traffic:

* An optional per app RPS cap, set in the app's security settings, rejects that app's excess requests with 429 before they touch the organization budget.
* On Free, reaching the monthly CU cap blocks all requests with HTTP 402 until the next cycle. Growth and Pro bill overage instead of blocking.

Each sub call in a batch counts toward the rate limit individually.

### Handling 429 responses

Treat 429 as a signal to slow down, not an outage. Retry with exponential backoff and jitter, smooth bursts on your side rather than sending spikes, and prefer batch requests over rapid sequential calls when fetching related data. If you hit the limit routinely, an upgrade raises it. Sustained 429s are visible as throttled requests on the [Statistics](/rpc/platform-guide/statistics-and-ai-insights) page.

### Error codes

Platform level rejections use HTTP status codes with a machine readable code in the response body:

| Code                    | HTTP | Meaning                                                           |
| ----------------------- | ---- | ----------------------------------------------------------------- |
| `plan_upgrade_required` | 402  | The method, alert type or feature needs a higher plan             |
| `quota_exceeded`        | 402  | The monthly CU cap is reached on a hard capped plan               |
| `app_limit_exceeded`    | 402  | Endpoints are suspended because active apps exceed the plan limit |
| `org_locked`            | 403  | The organization is locked for non payment                        |
| `forbidden`             | 403  | Your role does not permit this action                             |
| `app_limit_reached`     | 409  | Creating or enabling an app is blocked at the active app limit    |
| `team_not_empty`        | 409  | A team cannot be deleted while it still has members               |
| `owner_required`        | 409  | The sole Owner cannot be removed or demoted                       |
| `rate_limited`          | 429  | The requests per second limit is exceeded                         |

For 402 codes, the fix is a plan action: upgrade, reduce active apps, or wait for the cycle. For `org_locked`, settle the outstanding invoice on the Billing page. See [plan changes and overage](/rpc/billing-and-plans/plan-changes-and-overage).

### JSON-RPC errors

Errors inside a method call, such as invalid parameters or an unknown method, come back with HTTP 200 and a JSON-RPC error object:

```
{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid params"}}
```

Check both the HTTP status and the response body: platform rejections live in the status code, method problems live in the error object.


# Security

How keys are protected and how to handle them well

### Key handling best practices

* Store the endpoint URL in environment variables or a secrets manager, never in source code or client side bundles.
* Use separate apps for production, staging and development, so a leaked development key never touches production and each environment's usage is visible on its own.
* Set the domain whitelist for browser use and the IP allowlist for backend use, and scope the key with the allowed methods list where possible. See [security and access controls](/rpc/platform-guide/apps-endpoints-and-api-keys).
* Rotate the key immediately if you believe it has been exposed, and whenever someone with access leaves your team. Rotation revokes the old key within seconds.

### How keys are protected

* Keys are encrypted at rest through a key management service and authenticated at the gateway on every request.
* Role based access control ensures only the appropriate members can view or manage keys. The Billing role never sees endpoint URLs or keys.
* Keys never appear in app lists in the dashboard: They are revealed only on the app page, and every reveal and rotation is recorded.

Luganodes will never ask for your API key. Report anything suspicious to <rpc-support@luganodes.com>.


# Overview

Track Rewards and Metrics with Transparency

### **Unlocking Insights for Enterprises**

Enterprises, including venture capital firms, hedge funds, and banks, navigate the complex landscape of substantial investments. To fortify risk mitigation strategies, Luganodes introduces the [Terminal](https://terminal.luganodes.com/login/)—a sophisticated staking platform designed to provide centralized insights into portfolio performance.

Crafted with precision, the Terminal consolidates actionable insights for institutions, offering a unified perspective on their delegations. This capability is driven by Luganodes' proprietary in-house indexers, meticulously tailored for each blockchain. These custom indexers empower institutional clients with precise access to historical on-chain data, elevating their decision-making processes.

### **Comprehensive Support for Networks**

The Terminal's robust indexers extend comprehensive support across a diverse range of blockchains. This ensures a broad spectrum of coverage for institutional clients, enhancing their ability to navigate the intricacies of blockchain investments. Currently, the Terminal indexers provide support for the following chains:

1. [Tron](/networks/active-networks/tron)
2. [Aptos](/networks/active-networks/aptos)
3. [Sui](/networks/active-networks/sui)
4. [Cardano](/networks/active-networks/cardano)
5. [Polygon](/networks/active-networks/polygon)
6. [Ethereum](/networks/active-networks/ethereum)
7. [Polkadot](/networks/active-networks/polkadot)
8. [Broken mention](broken://pages/Y9WBm0DPzjK0I5NVdfdB)
9. [Solana](/networks/active-networks/solana)

With the ability to add and keep track of multiple wallets, as well as monitor rewards and delegation, our indexers empower institutions with detailed insights and efficient management across these dynamic networks.\
\
Learn how you can get started with the [Luganodes Terminal](https://terminal.luganodes.com/login/) in 2 simple steps! 👉


# Getting Started

Setup your Terminal Account in a matter of seconds!

{% hint style="info" %}
&#x20;Navigate to [Luganodes Terminal](https://terminal.luganodes.com/login/) to follow along!
{% endhint %}

### **Create an Account**

To embark on your Terminal experience, the first crucial step is creating an account. Choose between the traditional email registration or the streamlined Wallet Connect option, tailored to your preference.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FPKFOSxThltfXHSy74E90%2Fimage%20(1).png?alt=media&amp;token=a779fe79-115b-49eb-b59a-8f7b8216320a" alt=""><figcaption></figcaption></figure>

### **Add your Addresses**

After successfully registering and signing in, the address section facilitates the addition of addresses linked to token delegation to Luganodes. Our customers can harness the platform's unparalleled adaptability, enabling the inclusion of multiple addresses, with each earmarked for a specific chain. Feel free to add or remove addresses as per your preference.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2F9dFBci4mgRW1qUpJxi3u%2Fimage%20(2).png?alt=media&amp;token=43b79004-5eed-4d00-aef0-e432c11dede5" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FwCmX5v23ox2tgnDHbTlH%2Fimage%20(3).png?alt=media&amp;token=71653714-d11e-425d-9a57-7e3fcec521a4" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
If your stake with Luganodes still awaits activation, the Terminal temporarily restricts address additions. Our indexers may take a few hours to process and index addresses from users who have recently staked their tokens.&#x20;
{% endhint %}

Explore the extensive array of features awaiting on the Luganodes Terminal! 👉


# Features

Making staking easy for you

Luganodes Terminal, equipped with tailored custom indexers for each chain, grants users precise access to on-chain data. Our mission is to furnish users with actionable insights into portfolio performance. To achieve this, the Terminal is loaded with features for an intuitive client experience. The following features facilitate a consolidated view of staking statistics, portfolio distribution, network statistics, and reward metrics—all presented through a sleek user interface.

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Monitor Multiple Assets</strong></td><td>Track through a single user interface rather than shifting from one platform to another.</td><td></td></tr><tr><td><strong>Dashboard</strong></td><td>Gain real-time insights into your whole staking portfolio and see performance charts.</td><td></td></tr><tr><td><strong>Asset Management</strong></td><td>Access a detailed transaction history, balances, pending rewards covering staking, unstaking, and chain-specific transactions. </td><td></td></tr><tr><td><strong>Custom Staking Theme</strong></td><td>Toggle between light or dark modes to browse through your portfolio as you see fit.</td><td></td></tr><tr><td><strong>Professional Charts</strong></td><td>Explore and analyze assets with integrated technical analysis and calendar tools.</td><td></td></tr><tr><td><strong>Help Centre</strong></td><td>Learn how to navigate within the dashboard, fix a problem, and get assistance from our round the clock team.</td><td></td></tr></tbody></table>


# Dashboard

### **Monitor your Key Metrics**

The Terminal offers users a comprehensive overview of their portfolio, leveraging our in-house custom indexers to provide valuable insights. We monitor the following key metrics:

1. Total Staked Amount across all chains
2. Total Rewards Earned across all chains
3. Yearly, monthly, and current rewards across all chains
4. Interactive widget displaying withdrawals and pending rewards
5. Portfolio distribution illustrated through an interactive pie chart

In addition to these metrics, users can delve into their reward and stake history via dedicated graphs.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2Fm7HBxlYgvbmAY5zvicin%2Fimage%20(4).png?alt=media&amp;token=fbfee904-acdc-4fce-b435-5e7873c29bda" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The reward and stake history graphs present a historical perspective, accounting for fluctuations in token prices and reward tokens since the initial stake date.
{% endhint %}


# Portfolio

### **Portfolio Insights**

The portfolio page empowers users to examine reward metrics at a chain level. Users gain visibility into average monthly rewards, total rewards, and pending rewards. Granular access to staking and reward history is facilitated through filterable graphs, offering insights that can be customized by day, month, and year.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FaQR5zoVKBMHBRqHn7Dv1%2Fimage%20(5).png?alt=media&amp;token=1b2db41c-1edb-49f3-b21d-949b8c7831d9" alt=""><figcaption></figcaption></figure>

### **Delegation Details at a Glance**

The address table provides users with delegation data at an address level. Users can leverage a date filter to access granular information, such as rewards earned on a specific date, month, or year. This feature offers a comprehensive view of delegation details for informed decision-making.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FYh0OeDp0VjTLIcx3Q4TZ%2Fimage%20(9).png?alt=media&amp;token=05875d89-7ba9-44a8-a87c-5770f74aa0f9" alt=""><figcaption></figcaption></figure>


# Transactions

### **Transaction Tracking**

Through the Terminal, users can monitor all staking-related transactions, including reward payouts. While these transactions may vary at a chain level, with some reward payouts not displayed as transactions. Additionally, users have the ability to download chain-specific transaction reports which cover all transactions from the day of stake.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FcrMBYz2p3cL6obnOpAsX%2Fimage%20(7).png?alt=media&amp;token=7bbbcdb7-603c-4d81-ba6c-38b6e7dbcd42" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Luganodes does not track all wallet transactions. Tracked addresses include ones which interact with Luganodes staking contracts on all chains.
{% endhint %}

### **Exporting Transactions**

In the Terminal, users have the convenient option to export transactions to an Excel sheet, serving as a valuable tool for tax purposes. The exported report includes the following parameters:

* **Transaction Hash:** Hash of the transaction on the block explorer.
* **Transaction Type:** Encompassing all staking transactions, including stake, unstake, auto-compounding, and reward payouts.
* **Amount:** Number of tokens associated with the transaction.
* **Timestamp:** Timestamp of the transaction.

For your reference, a sample transaction is available for download below

{% file src="/files/O2al4A2Noew0OMCtnHyu" %}


# Features

Making staking easy for you

The Luganodes native ETH staking Dapp allows users to stake multiples of 32 ETH and provision validators with ease. To achieve this, the Dapp is loaded with features for an intuitive client experience. The following features facilitate a consolidated view of validators, and rewards statistics—all presented through a sleek user interface.

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Track Rewards</strong></td><td>Track your validator rewards through a consolidated view.</td><td></td></tr><tr><td><strong>Withdrawals</strong></td><td>Perform withdrawal operations on your validators in a single click.</td><td></td></tr><tr><td><strong>Staking</strong></td><td>Stake in multiples of 32 ETH through our batch deposit contracts with ease.</td><td></td></tr></tbody></table>


# Stake

### Staking

The Native ETH Staking App allows users to stake ETH and provision validators seamlessly. Users can stake ETH in multiples of 32 ETH and track rewards. We monitor the following key metrics:

1. Total Staked Amount across all validators
2. Total Rewards Earned across all validators

In addition to these metrics, users can delve into their provisioned validators along with their respective status.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2F6GWTz5zmyYKijTHtHJzT%2Fimage%20(14).png?alt=media&amp;token=cc548019-de20-4d47-8b83-d22aef123d9f" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
To get started, pleaee contact us at <hello@luganodes.com> to receive your login credentials
{% endhint %}


# Portfolio

### **Portfolio Insights**

The portfolio page empowers users to examine reward metrics at a validator level. Users gain visibility into total rewards, and validator specific rewards. Additionally, users can filter through validators based on their status.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2Fj12BjKi9GJW6UkONpKOX%2Fimage%20(15).png?alt=media&amp;token=af2f198e-bbf5-4e5d-b832-f4e02fefb78f" alt=""><figcaption></figcaption></figure>

### **Withdrawals**

Users can exit their validators in a single click. Additionally, you can select the number of validators to exit ( chronologically oldest ) or manually select the validators you wish to exit.

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FwwU67X3j2TJj4GdsAfGp%2Fimage%20(16).png?alt=media&amp;token=0338d867-b6b5-45be-b4a3-3089d1fe1bcc" alt=""><figcaption></figcaption></figure>


# Wallets & Custodians

Stake directly with Luganodes from your preferred custodians

{% content-ref url="/pages/qU44oQnFybqS8z239sDL" %}
[Fireblocks](/wallets-and-custodians/fireblocks)
{% endcontent-ref %}

{% content-ref url="/pages/LASe8Bg3bFfKi26TzSn6" %}
[Ledger](/wallets-and-custodians/ledger)
{% endcontent-ref %}


# Fireblocks

ETH Staking via Fireblocks + Luganodes

* [Step-by-Step Staking Process](#step-by-step-staking-process)
* [Validator Exit Process](#validator-exit-process)

### Step-by-Step Staking Process <a href="#step-by-step-staking-process" id="step-by-step-staking-process"></a>

#### Video Guide <a href="#video-guide" id="video-guide"></a>

{% embed url="<https://www.youtube.com/watch?ab_channel=Luganodes&v=Zf8kYZdjnkU>" %}

#### Guide <a href="#guide" id="guide"></a>

#### Step 1: Access and Log In <a href="#step-access-and-log-in" id="step-access-and-log-in"></a>

* Head over to our [Native Staking Dashboard](https://native-staking.luganodes.com/).
* Enter your registered email ID and password, then click on "Log In".
* The dashboard includes three main sections: Staking, Portfolio, and FAQs, accessible via the top pill menu.

![Frame 1321321384.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321384_59c4ca4ac3.png)

#### Step 2: Connect Your Wallet via Fireblocks <a href="#step-connect-your-wallet-via-fireblocks" id="step-connect-your-wallet-via-fireblocks"></a>

* Click on the "Connect Wallet" button.
* Select Fireblocks from the available options.

![Frame 1321321385.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321385_c900b9b14e.png)

* Click on the "Webapp" tab, then click "Open", which will redirect you to your Fireblocks Console in a new browser tab.

![Frame 1321321386.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321386_a223f69f98.png)

* In the Fireblocks Console, select the Vault account holding your ETH.
* Click on "Connect Vault" to establish a connection.

![Frame 1321321387.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321387_0fe771b27f.png)

#### Step 3: Stake ETH <a href="#step-stake-eth" id="step-stake-eth"></a>

* Return to the Native Staking Dashboard.
* Enter the amount of ETH you wish to stake (must be in multiples of 32 ETH).
* Review the activation time, validator exit time, and estimated APR.
* Accept the Terms of Service and click on "Stake".

![Frame 1321321388.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321388_11b4d3830f.png)

#### Step 4: Confirm the Transaction <a href="#step-confirm-the-transaction" id="step-confirm-the-transaction"></a>

* A confirmation window will appear—review the transaction details carefully.
* Click on "Confirm" to proceed.

![Frame 1321321389.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321389_1d9d2f1a1a.png)

#### Step 5: Approve the Transaction in Fireblocks Mobile App <a href="#step-approve-the-transaction-in-fireblocks-mobile-app" id="step-approve-the-transaction-in-fireblocks-mobile-app"></a>

* Open the Fireblocks Mobile App.
* Click on "View" to check the pending transaction.
* Verify the transaction details again and click on "Approve".
* Enter your Fireblocks PIN to finalize the approval.

![Frame 1321321383.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321383_2c1bc03854.png)

#### Step 6: Final Confirmation & Tracking <a href="#step-final-confirmation-tracking" id="step-final-confirmation-tracking"></a>

* Return to the Native Staking Dashboard and wait for the transaction to process.
* Once completed, a success message will appear.
* Click on the "Portfolio" tab to check your total staked ETH and track your rewards.

![Frame 1321321390.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321390_6b4d9bcc96.png)

### Validator Exit Process <a href="#validator-exit-process" id="validator-exit-process"></a>

#### Video Guide <a href="#video-guide" id="video-guide"></a>

{% embed url="<https://www.youtube.com/watch?ab_channel=Luganodes&v=Z79r7PXR4RM>" %}

#### Guide <a href="#guide" id="guide"></a>

#### Step 1: Navigate to the Portfolio Section <a href="#step-navigate-to-the-portfolio-section" id="step-navigate-to-the-portfolio-section"></a>

* Head over to the Portfolio section of the Native Staking Dashboard.

#### Step 2: Initiate Validator Exit <a href="#step-initiate-validator-exit" id="step-initiate-validator-exit"></a>

* Click on the “Exit” button. A menu will appear, prompting you to enter the number of validators you wish to exit. Once entered, click “Done”. If you prefer to manually select the validators, click on “Select Manually”.

![Frame 1321321391.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321391_8561c02e53.png)

#### Step 3: Manual Validator Selection (Optional) <a href="#step-manual-validator-selection-optional" id="step-manual-validator-selection-optional"></a>

* In the “Manual Select” page, use the checkboxes to select the validators you wish to exit. After making your selection, click “Exit Selected”. You will be prompted to confirm your choice.

![Frame 1321321392.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321392_0a1aa560e3.png)

#### Step 4: Approve the Exit in Fireblocks Mobile App <a href="#step-approve-the-exit-in-fireblocks-mobile-app" id="step-approve-the-exit-in-fireblocks-mobile-app"></a>

* Open the Fireblocks Mobile App to approve the exit. Follow the same steps as in Step 5 of the staking guide to verify and approve the transaction.

#### Step 5: Monitor the Exiting Validators <a href="#step-monitor-the-exiting-validators" id="step-monitor-the-exiting-validators"></a>

* Once the transaction is confirmed, you will receive a message indicating that all your selected validators are exiting. Click on “View Exiting” to track the progress of the exiting validators in real-time.

![Frame 1321321393.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321393_5bef3b2a48.png)

<br>


# Ledger

ETH Staking via Ledger + Luganodes

### Step-by-Step Staking Process <a href="#step-by-step-staking-process" id="step-by-step-staking-process"></a>

#### Video Guide <a href="#video-guide" id="video-guide"></a>

{% embed url="<https://www.youtube.com/watch?ab_channel=Luganodes&v=wibLus1_kY0>" %}

#### Guide <a href="#guide" id="guide"></a>

#### Step 1: Access and Log In <a href="#step-access-and-log-in" id="step-access-and-log-in"></a>

* Open the Luganodes [Native Staking Dashboard](https://native-staking.luganodes.com/). Log in using your email and password. If you don’t have credentials, you can register by contacting <hello@luganodes.com>.

![image8.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/image8_b097c2ec77.png)

* The interface includes three main sections: Staking, Portfolio, and FAQs, easily accessible via the pill menu.

![image1.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/image1_c49ddb97c6.png)

#### Step 2: Connect Your Wallet <a href="#step-connect-your-wallet" id="step-connect-your-wallet"></a>

* Click the Connect Wallet button in the top-right corner. Select your preferred wallet. In this guide, we’ll demonstrate using the Ledger Wallet method.

![Frame 1321321373.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321373_2438eede87.png)

![Frame 1321321372.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321372_3824a213c5.png)

![Frame 1321321374.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321374_5e110b15a7.png)

* Choose Ledger Live and follow the on-screen instructions to establish a connection. You can select from desktop, mobile, or browser options. Click on “Connect” in the Ledger Live app. After successfully connecting, proceed to the staking process.

![Frame 1321321371.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321371_98b672209f.png)

#### Step 3: Stake ETH <a href="#step-stake-eth" id="step-stake-eth"></a>

* Navigate to the Enter ETH menu. Select the amount you wish to stake in multiples of 32 ETH. The interface will display important details, including the activation time, validator exit time, and estimated APR.
* Carefully review the withdrawal address and fees accrued. Once satisfied, check the box to accept the terms and conditions. Click on Stake to initiate the staking process.

![Frame 1321321370.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321370_f9efd52a39.png)

#### Step 4: Confirm the Transaction <a href="#step-confirm-the-transaction" id="step-confirm-the-transaction"></a>

* A confirmation prompt will appear. Click Confirm to proceed.

![Frame 1321321365.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321365_2ce56d9ceb.png)

* You’ll be redirected to Ledger Live to sign the transaction. Choose the network fee, confirm the details, and sign the transaction on your Ledger device. The transaction will then be processed.

![Frame 1321321366.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321366_f5773b88ac.png)

![Frame 1321321367.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321367_b4b30e1c1f.png)

![Frame 1321321368.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321368_d282f56b35.png)

#### Step 5: Verify and Track <a href="#step-verify-and-track" id="step-verify-and-track"></a>

* After the transaction is sent, the staking interface will display a success message. To verify your stake, click on the Portfolio button, where you’ll see your staked amount and status.

![image12.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/image12_871bdb1575.png)

![Frame 1321321369.png](https://better-triumph-f08c8a30a5.media.strapiapp.com/Frame_1321321369_80971db9a2.png)

<br>


# Overview

Luganodes provides robust support for staking across a variety of blockchains, offering opportunities for both enterprises and individuals to participate. Supported blockchains include:

<details>

<summary><a href="broken://pages/jmyYDoMfpNLuXTzuvtUm">Active Networks</a></summary>

* [Aptos](/networks/active-networks/aptos)&#x20;
* [Archway](broken://pages/9gkOX83CLhGE12ihDpBx)&#x20;
* [Avalanche](/networks/active-networks/avalanche)&#x20;
* [Canto](/networks/active-networks/canto)&#x20;
* [Cardano](/networks/active-networks/ethereum)&#x20;
* [Chillz](/networks/active-networks/chiliz)&#x20;
* [Composbale Finance](broken://pages/uurLkM7IXIEYZ57DDIxd)&#x20;
* [Concordium](/networks/active-networks/concordium)&#x20;
* [Cosmos](broken://pages/IW6o3KOq8aZmCHhInzrq)&#x20;
* [Covalent](/networks/active-networks/covalent)&#x20;
* [Ethereum](/networks/active-networks/ethereum)&#x20;
* [Flare](/networks/active-networks/flare)&#x20;
* [Gitopia](broken://pages/pn4TafDjRJN4Q81mXher)&#x20;
* [Kava](/networks/active-networks/kava)&#x20;
* [Kroma](broken://pages/ylm0P8eAo74C33YENy5X)&#x20;
* [Kusama](broken://pages/Y9WBm0DPzjK0I5NVdfdB)&#x20;
* [Lukso](broken://pages/FlMA67gORyvhQtNZoeM8)&#x20;
* [MutiverseX](/networks/active-networks/multiversx)&#x20;
* [Neutron](broken://pages/W4vOXvZdwCJ2F6aGs0Kp)&#x20;
* [Noble](/networks/active-networks/noble)&#x20;
* [Persistence](broken://pages/OvrhSQAEI8EBtThMwUui)&#x20;
* [Polkadot](/networks/active-networks/polkadot)&#x20;
* [Polygon](/networks/active-networks/polygon)&#x20;
* [Radix](broken://pages/wtL4Xm5mchaAVakv8rxS)&#x20;
* [Ronin](/networks/active-networks/ronin)&#x20;
* [Solana](/networks/active-networks/solana)&#x20;
* [Stride](broken://pages/wu8oO5EX0iXgNwnQbbZo)&#x20;
* [Sui](/networks/active-networks/sui)&#x20;
* [Tenet](broken://pages/hrzEQJ0SXcQup0NP1CIe)&#x20;
* [Tron](/networks/active-networks/tron)&#x20;
* [Zilliqa](/networks/active-networks/zilliqa)

</details>

This diverse selection ensures that stakeholders have the flexibility to engage with the blockchain of their choice within the Luganodes ecosystem.


# Active Networks


# Aptos

APT

[Aptos](https://aptoslabs.com/) is a standalone L1 blockchain aimed at realizing a secure and reliable blockchain for practical use. It leverages key components from the Diem project to create a robust and scalable blockchain, and employs the use of Move, a programming language developed by Meta that is written in Rust, to create accessible applications for a wide audience. The goal of Aptos is to become the safest and most production-ready blockchain in the world.

You can find the link to the block explorer below:

{% embed url="<https://explorer.aptoslabs.com/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/APTSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="197">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>0xff3e9c10dd3781a1e0750a75ae9e5b04133cd7e8ca18b9936ffcf3b2a2538a49</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Track Luganodes validator performance on the Aptos Dashboard [**here**](https://explorer.aptoslabs.com/validator/0xff3e9c10dd3781a1e0750a75ae9e5b04133cd7e8ca18b9936ffcf3b2a2538a49?network=mainnet).

### Staking Mechanics

<table><thead><tr><th width="229">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are generated every ~2 hours (1 epoch)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Auto-compounding happens every epoch and the rewards generated are added to the stake amount</td><td></td><td></td></tr><tr><td>Slashing</td><td>Currently slashing is not implemented in Aptos. Bad validator performance will lead to reduced rewards.</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>None. But rewards will be generated from the next epoch from the time of stake</td><td></td><td></td></tr><tr><td>Unbonding period</td><td>Users can unstake any time but will have to wait for the lockup period ~30 days (360 epochs) from the time of stake to move their funds</td><td></td><td></td></tr></tbody></table>


# Avail

AVAIL

Avail is a modular blockchain protocol spun out of Polygon, designed to provide a scalable, secure, and interoperable data availability (DA) layer for the next generation of blockchains and rollups. Leveraging advanced cryptographic techniques like KZG polynomial commitments and data availability sampling, Avail enables developers to build and deploy custom blockchains with robust data integrity, fast transaction validation, and seamless cross-chain functionality through its Nexus and Fusion layers. The Fusion layer enhances network security by allowing assets from major ecosystems such as Bitcoin and Ethereum to be staked alongside Avail’s native token. Since its inception, Avail has raised a total of $75 million from prominent investors, including Peter Thiel’s Founders Fund, Dragonfly Capital, Cyber Fund, SevenX Ventures, Figment Capital, Nomad Capital, Chapter One, Foresight Ventures, Mirana Ventures, KR1, Alliance DAO, HashKey Capital.

You can find the link to the block explorer below:

{% embed url="<https://explorer.avail.so/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="187">Type</th><th>Address</th><th data-hidden>Address</th><th data-hidden></th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td><td>archwayvaloper1eunmpgl2rspj38x26h9t8gr8226s2xd9szn3a8</td><td></td></tr><tr><td>Stash Address</td><td>5Fuedf79TqB6mMWzhu8aazzfPX1mawedb7rLuHpv6iYK2Z6c</td><td>archway1eunmpgl2rspj38x26h9t8gr8226s2xd9sx6nsw</td><td></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://avail.subscan.io/validator/5Fuedf79TqB6mMWzhu8aazzfPX1mawedb7rLuHpv6iYK2Z6c).

### Staking Mechanics

<table><thead><tr><th width="213">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>End of each era ( 24 hours )</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes ( Need to manually enable auto-compounding )</td><td></td><td></td></tr><tr><td>Slashing</td><td>Equivocation &#x26; Double Signing</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>1-2 Eras ( Upto 48 hours )</td><td></td><td></td></tr><tr><td>Unbonding Period </td><td>21 days</td><td></td><td></td></tr></tbody></table>


# Avalanche

AVAX

Avalanche is designed high-performance, low-cost financial applications. Users can easily establish custom token and digital asset ecosystems, enabling secure and cost-effective transactions. The platform's objective is to provide an open, powerful, and secure foundation for financial applications. Notably, fees on Avalanche are burned instead of directed to validators, enhancing the scarcity of AVAX. This scarcity is balanced by a minting process, ensuring the network's longevity.

You can find the link to the block explorer below:

{% embed url="<https://subnets.avax.network/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/AVAXSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="154">Type</th><th>Address</th></tr></thead><tbody><tr><td>Node ID</td><td>NodeID-C6zVv1ab5JKn2j8DDCGWGai9jgWhmpLVA</td></tr><tr><td>Beneficiary</td><td>P-avax1gjallayagh29gpmscal0t57ggw62pappvvqhv6</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://subnets.avax.network/validators/NodeID-C6zVv1ab5JKn2j8DDCGWGai9jgWhmpLVA).

### Staking Mechanics

<table><thead><tr><th width="227">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are distributed all at once at the end of the staking duration (2 weeks to 1 year)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>None</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>None</td><td></td><td></td></tr></tbody></table>


# Babylon

BABY/BTC

Babylon is a decentralized protocol that enables native bitcoin staking directly on the Bitcoin blockchain without intermediaries. The protocol implements a novel shared-security architecture that extends Bitcoin's security model to the broader decentralized ecosystem. Through its architecture, BTC holders can participate in multi-staking operations while maintaining their assets on Bitcoin, providing verifiable security guarantees to Bitcoin Supercharged Networks (BSNs).

You can find the link to the block explorer below:

{% embed url="<https://www.mintscan.io/babylon>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="196.70703125">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>bbnvaloper14axcnvrrhw8yzvvnl79ugtxxf9ws5j7ah0ftv2</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes Validator performance can be tracked [here](https://www.mintscan.io/babylon/validators/bbnvaloper14axcnvrrhw8yzvvnl79ugtxxf9ws5j7ah0ftv2).

### Staking Mechanics

<table><thead><tr><th width="227.9609375">Metrics</th><th>Details</th></tr></thead><tbody><tr><td>Reward frequency</td><td>Rewards generated every hour (~1 epoch)</td></tr><tr><td>Auto-compounding</td><td>No</td></tr><tr><td>Slashing</td><td>Double Signing</td></tr><tr><td>Stake Lockup</td><td>None. But rewards will be generated from the next epoch from the time of stake</td></tr><tr><td>Unbonding period</td><td>2 days</td></tr></tbody></table>


# Berachain

BERA

Berachain is a high-performance [EVM-Identical](https://docs.berachain.com/learn/#berachain-evm-identical-%E2%9F%A0) Layer 1 blockchain utilizing [Proof-of-Liquidity](https://docs.berachain.com/learn/#proof-of-liquidity-%F0%9F%A4%9D) (PoL) and built on top of the modular EVM-focused consensus client framework [BeaconKit](https://docs.berachain.com/learn/#beaconkit-%E2%9B%B5%E2%9C%A8).

You can find the link to the block explorer below:

{% embed url="<https://berascan.com/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.youtube.com/watch?v=B9SSm11Qv6A>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="196.70703125">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>0x960052c5509caa280218f3ecf3da7ba5bf4ec20b97e6c52700dd93515ef4e963813aa92a8731c9e137b1027dbc77102f</td></tr></tbody></table>

{% endtab %}
{% endtabs %}

### Performance

Luganodes Validator performance can be tracked [here](https://hub.berachain.com/boost/0x960052c5509caa280218f3ecf3da7ba5bf4ec20b97e6c52700dd93515ef4e963813aa92a8731c9e137b1027dbc77102f/).

### Staking Mechanics

<table><thead><tr><th width="227.9609375">Metrics</th><th>Details</th></tr></thead><tbody><tr><td>Reward frequency</td><td>Rewards received proportionally to $BGT allocated every epoch</td></tr><tr><td>Auto-compounding</td><td>Yes</td></tr><tr><td>Slashing</td><td>Delegator Stake not subject to slashing</td></tr><tr><td>Unbonding period</td><td>7 day unbonding period</td></tr></tbody></table>


# Biconomy

BICO

Biconomy has established itself as the trusted infrastructure choice for Web3, with impressive metrics that speak to our reliability:

* **70+ Million** transactions processed
* **4.5+ Million** smart accounts deployed
* **10+ Million** total users served
* **$3+ Billion** in transaction volume

It’s the only single-vendor full-stack solution on the market, offering

* Smart Account (Nexus)
* Account & Chain Abstraction SDK (AbstractJS)
* DeFi & Stablecoin API (Supertransaction API)


# bitsCruch

BCUT

bitsCrunch is an AI-powered, decentralized data analytics platform specializing in NFT and digital asset forensics, offering advanced analytics, security, and transparency across multiple blockchains. Its native token, BCUT, underpins the ecosystem by facilitating data exchange, incentivizing network participation, and enabling governance. Since its launch, bitsCrunch has attracted investments from leading industry players such as Coinbase Ventures, Animoca Brands, HashKey Capital, Shima Capital, Genblock Capital, Double Peak, Polygon Studios, Crypto.com Capital, Mapleblock Capital, MEXC, and Cypher Capital

You can find the link to the block explorer below:

{% embed url="<https://app.bitscrunch.com/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/BCUTSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="154">Type</th><th>Address</th></tr></thead><tbody><tr><td>Operator Address</td><td>0x81a8a707aa5c05977cab249acc53561db661f2cd</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://app.bitscrunch.com/profile/0x81a8a707aa5c05977cab249acc53561db661f2cd/overview).

### Staking Mechanics

<table><thead><tr><th width="227">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are distributed daily</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>28 days</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>28 days</td><td></td><td></td></tr></tbody></table>


# Canto

CANTO

Canto is a Cosmos SDK blockchain solution operating as an L1 protocol with an EVM execution layer and Tendermint Consensus. Its primary objective is to offer essential blockchain primitives as Free Public Infrastructure, including a DEX, lending market, and decentralized stablecoin. Canto is dedicated to empowering the public by fostering a DeFi ecosystem that diverges from current rent-seeking practices, aiming to restore control to the community.

You can find the link to the block explorer below:

{% embed url="<https://cantoscan.com/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="194">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>cantovaloper1erzn6327scj0hcy7u48ldpk9nm4d92x4jqqrvw</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://www.mintscan.io/canto/validators/cantovaloper1erzn6327scj0hcy7u48ldpk9nm4d92x4jqqrvw).

### Staking Mechanics

<table><thead><tr><th width="207">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every block (6 seconds)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>Offline (0.75%)</td><td></td><td></td></tr><tr><td>Slashing</td><td>Equivocation (5%)</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>14 days</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>21 days</td><td></td><td></td></tr></tbody></table>


# Canton

CC

The **Canton Network** is the union of all applications and users that are built and operated using the software **Canton**, which connects individual instances through the **Canton Protocol**.

The shared data items managed and synchronized by Canton are called **contract instances**. Every contract instance is associated with a **template** that defines the **smart contract choices** for the contract instance. These choices represent the possible update commands on the ledger, archiving a given set of contracts and creating new ones atomically. These rules are written in the **Daml** program

You can find the link to the block explorer below:

{% embed url="<https://www.cantonscan.com/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="194">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>luganodes-validator-1::12201828d1c5a32ab3ffb2764184f81636e0bc2ebe84d724e8760080b1a210c9a53f</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://www.cantonscan.com/party/luganodes-validator-1%3A%3A12201828d1c5a32ab3ffb2764184f81636e0bc2ebe84d724e8760080b1a210c9a53f).

### Staking Mechanics

<table><thead><tr><th width="207">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every 10 mins</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No Slashing</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td></td><td></td><td></td></tr></tbody></table>


# Cardano

ADA

[Cardano](https://cardano.org/) is a decentralized platform with a proof-of-stake consensus, focused on secure and scalable smart contracts. It tackles scalability and interoperability issues through a research-driven approach, subjecting its open-source blockchain to rigorous peer review by academics and programmers.

You can find the link to the block explorer below:

{% embed url="<https://explorer.cardano.org/en>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/ADASG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="105">Type</th><th>Address</th></tr></thead><tbody><tr><td>Pool ID</td><td>pool1qvudfuw9ar47up5fugs53s2g84q3c4v86z4es6uwsfzzs89rwha</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://cexplorer.io/pool/pool1qvudfuw9ar47up5fugs53s2g84q3c4v86z4es6uwsfzzs89rwha).

### Staking Mechanics

<table><thead><tr><th width="230">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Once per epoch (5 days)<br>first reward will take approximately 15 to 20 days (4 epochs)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>None</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>None</td><td></td><td></td></tr></tbody></table>


# Chainlink

LINK

Chainlink CCIP is a blockchain interoperability protocol that enables developers to build secure applications that can transfer tokens, messages (data), or both tokens and messages across chains.

Given the inherent risks of cross-chain interoperability, CCIP features defense-in-depth security and is powered by Chainlink's industry-standard oracle networks which have a proven track record of securing tens of billions of dollars and enabling over $14 trillion in onchain transaction value.

You can find the link for the block explorer below:

{% embed url="<https://ccip.chain.link/>" %}


# Chiliz

CHZ

Chiliz, the creator of Fan Tokens, has launched its own Layer 1 EVM compatible blockchain. Chiliz Chain will become the leading infrastructure for sports, attracting teams, fans, and developers, to build web3 products and experiences that bring fans and brands together.

You can find the link to the block explorer below:

{% embed url="<https://scan.chiliz.com>" %}

* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="195">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Validator Address</td><td>0x31dB81188A5cC391857624F668DDA57BA7F2B074</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="190">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Slashing</td><td>Double signing causes slashing in Chiliz</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>~7 days (7 epochs). After unstaking, users can access the staked funds after 21 days</td><td></td><td></td></tr></tbody></table>


# Concordium

CCD

Concordium aims to empower individuals and businesses to navigate Web3 confidently by providing a science-backed, environmentally responsible Layer1 blockchain that enables verifiable self-sovereign data ownership and secure transactions at low cost.

With Concordium, users can harness the power of blockchain technology responsibly while fostering trust in the digital world. This is due to our commitment to transparency, sustainability, compliance, privacy, and safety.

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/CCDSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="204">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Validator/ Baker ID</td><td>87236</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Staking Mechanics

<table><thead><tr><th width="215">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>1 day</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>21 days. After unstaking, users can access the staked funds after 21 days</td><td></td><td></td></tr></tbody></table>


# Covalent

CQT

Covalent provides the industry-leading Unified API bringing visibility to billions of Web3 data points. Developers use Covalent to build exciting multi-chain applications like crypto wallets, NFT galleries, and investor dashboard tools utilizing data from 32+ blockchains.

You can find the link to the block explorer below:

{% embed url="<https://cqtscan.com/cqtscan/>" %}

* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="199">Type</th><th>Value</th></tr></thead><tbody><tr><td>Operator Address</td><td>0x265d64b81977853F7fB644C150767BB04F44A9a7</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards can be withdrawn anytime</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Compounding needs to be done manually </td><td></td><td></td></tr><tr><td>Slashing</td><td>No slashing</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>28 days</td><td></td><td></td></tr></tbody></table>


# dYdX

DYDX

dYdX is a leading decentralized exchange (DEX) focused on advanced derivatives trading, including perpetual contracts and margin trading, built on its own high-performance dYdX Chain using the Cosmos SDK for fast and efficient transactions. Founded in 2017 by Antonio Juliano, dYdX has attracted significant investment from top-tier venture capital firms and market makers such as Andreessen Horowitz (a16z), Polychain Capital, Paradigm, Three Arrows Capital, HashKey, Electric Capital, Delphi Digital, and others, raising over $87 million across multiple funding rounds. The platform’s investors also include prominent liquidity providers like QCP Capital, CMS Holdings, CMT Digital, and Kronos Research, as well as partners like StarkWare

You can find the link to the block explorer below:

{% embed url="<https://dydx.explorers.guru/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/dYdXSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="199">Type</th><th>Value</th></tr></thead><tbody><tr><td>Operator Address</td><td>dydxvaloper1fs0t34g628xdqc8alfefnadq2x3qawt8g88mav</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://dydx.explorers.guru/validator/dydxvaloper1fs0t34g628xdqc8alfefnadq2x3qawt8g88mav).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every block ( ~1.2 seconds ). Rewards are distributed in the form of USDC and DYDX tokens. </td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Compounding needs to be done manually </td><td></td><td></td></tr><tr><td>Slashing</td><td>No slashing</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>30 days</td><td></td><td></td></tr></tbody></table>


# Eclipse

$ES

Eclipse Mainnet is Ethereum's first Solana Virtual Machine (SVM) L2. Eclipse Mainnet combines the best pieces of the modular stack:

* **Settlement: Ethereum** - Eclipse will settle to Ethereum (i.e., the enshrined validating bridge will be on Ethereum) and use ETH as its gas token.
* **Execution: Solana Virtual Machine (SVM)** - Eclipse will run the highly performant SVM as its execution environment.
* **Data Availability: Celestia** - Eclipse will post its data to Celestia for scalable data availability (DA).
* **Proving: RISC Zero** - Eclipse will use RISC Zero for ZK proofs of fraud (without intermediate state serialization!).

You can find the link to the block explorer below:

{% embed url="<https://eclipsescan.xyz/>" %}


# Eigen Layer

ETH

EigenLayer is a pioneering Ethereum-based protocol that introduces “restaking,” enabling users to reuse their staked ETH or liquid staking tokens to secure a wide range of decentralized services, known as Actively Validated Services (AVSs), thereby creating a marketplace for pooled cryptoeconomic security and reducing fragmentation across the Web3 ecosystem. Through this model, EigenLayer allows stakers to earn additional rewards by supporting multiple protocols simultaneously, while developers can leverage Ethereum’s robust security without needing to bootstrap their own validator networks. \
\
The EIGEN token underpins the ecosystem, serving as a universal work token for staking, governance, and securing tasks that require intersubjective verification, such as data availability and oracle inputs. EigenLayer was founded by Sreeram Kannan and developed by EigenLabs, and it has attracted significant investment from leading venture capital firms including Blockchain Capital, Polychain Capital, Electric Capital, Coinbase Ventures, Hack VC, and Figment Capital

You can find the link to the block explorer below:

{% embed url="<https://dashboard.eigenexplorer.com/>" %}

* [Validator Address](#validator-address)
* [Staking Guide](#staking-guide)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="202">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Validator Address</td><td>0xa3ff1491088715D140bc821A28287cB3f71B43E4</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/eigenSG/>" %}

### Performance

{% embed url="<https://app.eigenlayer.xyz/operator/0xa3ff1491088715D140bc821A28287cB3f71B43E4>" %}

### Staking Mechanics

<table><thead><tr><th>Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Dependant on AVS</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>Dependant on AVS</td><td></td><td></td></tr><tr><td>Slashing</td><td>There are two primary categories of slashing on EigenLayer:<br>- Objective: Double signing, Invalid blocks<br>- Intersubjective: Oracle Manipulation, </td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>No ( Instant Delegation )</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>7 days</td><td></td><td></td></tr></tbody></table>


# Espresso

Espresso is a global confirmation layer that provides L2 chains with fast, reliable transaction confirmations backed by BFT consensus.

Espresso confirmations can improve cross-chain composability, as they provide chains with near-instant access to reliable, credibly neutral information about what’s happening not just on their own chain, but on all chains plugged into the network. Espresso's confirmation layer can prevent sequencer equivocation, protect against reorgs, and reduce finality risk for solvers in intent-based systems. Its versatility means chains can also use it as a decentralized sequencer and low-cost data availability layer.


# Ethereum

ETH

Ethereum is the world's largest and most decentralized Layer1 blockchain. The network is used for building dApps, holding assets, transacting and communicating without being controlled by a central authority. The Ethereum vision is to build a digital future on a global scale, that is powerful enough to help all of humanity.\
\
You can find our Staking terminal [here](https://native-staking.luganodes.com).

You can find the link to the block explorer below:

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

* [Staking Guides](#staking-guide)
* [Staking Mechanics](#staking-mechanics)

### Staking Guides

{% embed url="<https://youtu.be/wibLus1_kY0?si=xxnNUmlRdessDdDF>" %}

{% embed url="<https://youtu.be/Zf8kYZdjnkU?si=DfopJF15oKGbkz_h>" %}

### Staking Mechanics

<table><thead><tr><th>Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every Epoch (~6.4 minutes)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes (only for 0x02 withdrawal addresses)</td><td></td><td></td></tr><tr><td>Penalty</td><td>Validators can lose a small amount of ETH for minor infractions not considered "slashing". The most common minor penalty is for inactivity or going offline.</td><td></td><td></td></tr><tr><td>Slashing</td><td><p>Maximum Slashing penalty for an Ethereum validator is the loss of their entire staked 32 ETH.<br><br>Reasons for Slashing include:</p><ul><li>Double proposing a block (signing two different blocks for the same slot).</li><li>Double voting (attesting to two conflicting blocks for the same slot/checkpoint).</li><li>"Surround" voting (attesting that contradicts a previous vote, effectively changing history)</li></ul></td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>fixed 256-epoch withdrawal delay is still approximately 27.3 hours + Withdrawal delay (variable)</td><td></td><td></td></tr></tbody></table>


# Flare

FLR

Flare is a Layer 1 like Ethereum, with added data acquisition functionality. Flare can therefore offer developers decentralized access to high-integrity data from other chains and the internet. This enables the creation of dapps with new use cases and monetization models. It also allows these dapps to serve multiple chains through a single deployment.

You can find the link to the block explorer below:

{% embed url="<https://flarescan.com>" %}

* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="125">Type</th><th>Address</th></tr></thead><tbody><tr><td>Node ID</td><td>NodeID-MWNqxgXd8itY143jaNyq8aMYTeV1RXJgS</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="215">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every Epoch (3.5 days)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>2 weeks</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>None</td><td></td><td></td></tr></tbody></table>


# Hyperliquid

HYPE

Hyperliquid is a performant blockchain built with the vision of a fully onchain open financial system. Liquidity, user applications, and trading activity synergize on a unified platform that will ultimately house all of finance.

Hyperliquid is a layer one blockchain (L1) written and optimized from first principles.

Hyperliquid uses a custom consensus algorithm called HyperBFT inspired by Hotstuff and its successors. Both the algorithm and networking stack are optimized from the ground up to support the unique demands of the L1.

You can find the link to the block explorer below:

{% embed url="<https://app.hyperliquid.xyz/explorer>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://youtu.be/LZhz74ajekI?si=9xt36_EccgwY3bT->" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="193.61328125">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator address</td><td>0x48f1da3e3ec2814fbb3dcf57125001089b067402</td></tr><tr><td></td><td></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="215">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Accrued every minute and distributed to stakers every day.</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No automatic slashing but validators can vote to jail peers</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>1 day</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>7 days</td><td></td><td></td></tr></tbody></table>


# IOTA

IOTA

The IOTA ecosystem enables programmability in both Layer 1 and Layer 2 using Move and EVM/Solidity smart contracts respectively.

The IOTA Mainnet is the L1 "production" network of IOTA. The IOTA Mainnet's tokens have a real-world value, so we recommend that you use the IOTA Testnet or Devnet to develop your application.

IOTA uses a delegated proof-of-stake (DPoS) consensus mechanism to validate on-chain transaction blocks. Validators must secure a certain amount of IOTA tokens to participate in the network, where they actively run the Mysticeti protocol to finalize transactions. This approach incentivizes honest behavior, enhances security, and ensures an efficient and scalable blockchain while avoiding the high energy demands of Proof-of-Work (PoW) systems, which rely on computationally intensive mining.<br>

You can find the link to the block explorer below:

{% embed url="<https://explorer.evm.iota.org/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://youtu.be/3BPiCT0RZ1c?si=qaYtg27jqf0bBU2->" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="193.61328125">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator address</td><td></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="215">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>End of each epoch</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Penalty</td><td>Validators that receive a low score can be penalized with slashed stake rewards</td><td></td><td></td></tr><tr><td>Slashing</td><td>The validator set actively monitor's itself and if a validator is clearly non-performant, then the other validators score that validator with a 0 and slash its rewards.</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>No lockup</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>No unbonding period</td><td></td><td></td></tr></tbody></table>


# Jito

JTO

Jito is the liquid staking service for Solana that distributes MEV (maximum extractable value) rewards to holders. The Jito Stake Pool enables users to stake their Solana tokens in exchange for a liquid stake pool token (JitoSOL). The JitoSOL token provides liquidity while earning a combination of staking rewards and MEV rewards.

Jito's liquid staking token is unique in two ways:

* JitoSOL provides additional rewards to users from MEV transactions happening on Solana
* Jito exclusively stakes with validators that run software designed to improve network performance. The improvements from the introduction of an auction mechanism so network congestion is less likely.

Jito (Re)staking is liquid staking infrastructure on Solana. It allows external networks to build staking protocol on Solana and enables users to (re)stake JitoSOL and other SPL tokens across these networks, simultaneously. (Re)staked assets provide economic security to these networks and earn rewards, creating opportunities for additional yield beyond traditional staking.

You can find the link to the block explorer below:

{% embed url="<https://explorer.jito.wtf/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="172.453125">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Validator Address</td><td>LKFpfXtBkH5b7D9mo8dPcjCLZCZpmLQC9ELkbkyVdah</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

{% embed url="<https://www.jito.network/restaking/node-operators/LKFpfXtBkH5b7D9mo8dPcjCLZCZpmLQC9ELkbkyVdah/>" %}

### Staking Mechanics

<table><thead><tr><th>Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every 2-3 days ( 1 epoch)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes through VRTs</td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>4-5 days ( 2 epochs)</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>2-3 days (1 epoch)</td><td></td><td></td></tr></tbody></table>


# Grass

GRASS

Grass is a network of millions of people who are earning rewards for sharing unused internet bandwidth with the Grass network.

Your participation in the Grass network represents your contribution to building a more equitable internet and provides you with the opportunity to own a part of the Grass network. Since everyone already pays for Internet, why not put your idle connection to work?


# Kava

KAVA

Kava is a blockchain technology that operates at the foundational level, with a primary focus on expanding the capabilities and capacity of its protocol. Utilizing a unique 'co-chain' design, it combines elements from both the Ethereum and Cosmos blockchains to create a system that is compatible with up to thirty different blockchain networks within the Cosmos ecosystem. This architecture allows for enhanced scalability and growth potential.

You can find the link to the block explorer below:

{% embed url="<https://www.mintscan.io/kava>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://luganodes.medium.com/kava-how-to-stake-kava-tokens-with-luganodes-4c519d017aa8>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="202">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Operator Address</td><td>kavavaloper1zw8ce44kdqzfu0r2t9qwr75gqdcarclf9fj9lt</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://www.mintscan.io/kava/validators/kavavaloper1zw8ce44kdqzfu0r2t9qwr75gqdcarclf9fj9lt).

### Staking Mechanics

<table><thead><tr><th width="217">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are generated every ~6 seconds (1 block)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Compounding needs to be done manually </td><td></td><td></td></tr><tr><td>Slashing</td><td>Validator attesting two different blocks will be slashed and will be penalised 5% of their stake. They will be kicked from the active validator set too</td><td></td><td></td></tr><tr><td>Stake Activation</td><td>Almost instant. Rewards are generated after 1 block (~6 seconds) from the time of stake</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>21 days. After unstaking, users can access the staked funds after 21 days</td><td></td><td></td></tr></tbody></table>


# Layerzero

ZRO

LayerZero is an omnichain messaging protocol — a permissionless, open framework designed to securely move information between blockchains. It empowers any application to bring its own security, execution, and cross-chain interaction, providing a predictable and adaptable foundation for decentralized applications living on multiple networks.


# Lumera

LUME

Lumera Protocol is a next-generation blockchain built for the age of decentralized AI, autonomous agents, and permanent data storage. Formerly known as Pastel Network, Lumera isn’t just another Layer 1 — it’s a purpose-built, high-performance foundation for the future of Web3 services.

At its core, Lumera combines **scalable infrastructure** with **programmable economic incentives**, making it possible for developers, validators, and everyday users to participate in a self-sustaining ecosystem that powers AI-driven applications, censorship-resistant storage, and secure cross-chain interoperability.

You can find the link to the block explorer below:

{% embed url="<https://portal.testnet.lumera.io/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="189">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>lumeravaloper1w5nnj4kmehqzz390czu82mnyqjdwtyt89ru5lz</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://explorer.nodestake.org/lumera/staking/lumeravaloper1w5nnj4kmehqzz390czu82mnyqjdwtyt89ru5lz).

### Staking Mechanics

<table><thead><tr><th width="209">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Dynamic rate based on stake</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>Yes </td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes (Downtime, Double Signing, Severe Misconduct)</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>-</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>-</td><td></td><td></td></tr></tbody></table>


# Monad

MONAD

Monad is a high-performance Ethereum-compatible L1. Monad materially advances the efficient frontier in the balance between decentralization and scalability.

Monad introduces optimizations in five major areas, resulting in an Ethereum-compatible Layer-1 blockchain with 10,000 tps of throughput, 400ms block frequency, and 800ms finality.You can find the link to the block explorer below:

You can find the link to the block explorer below:

{% embed url="<https://testnet.monadexplorer.com/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Testnet" %}

<table><thead><tr><th width="200.7578125">Type</th><th width="458.203125">Address</th></tr></thead><tbody><tr><td>Validator Name</td><td>Public Key</td></tr><tr><td>Luganodes</td><td>0xb6d111462b53cddf89a0621a1f81c6266171487a2a1bd4d1fa127828c6b229b3fb8e8f28eb46c7e8ce46e0695b7c27c8</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Track Luganodes validator performance [here](https://www.gmonads.com/validators).

### Staking Mechanics

<table><thead><tr><th width="194.80859375">Metrics</th><th>Details</th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Reward produced on block production by validator</td></tr><tr><td>Auto-compounding</td><td>Yes</td></tr><tr><td>Slashing</td><td>Yes for validator misbehavior</td></tr><tr><td>Stake Lockup</td><td>-</td></tr><tr><td>Unbonding period</td><td>1-epoch</td></tr></tbody></table>


# MultiversX

EGLD

MultiversX is a high-throughput blockchain that aims to power the metaverse frontier. The Multiversx network is the first to present a viable solution where all the three aspects of sharding - state, network and transactions - have been implemented at once. Combined with its “Adaptive” component, this novel architecture allows for dynamic network configuration to maintain a high level of security while scaling with demand.

You can find the link to the block explorer below:

{% embed url="<https://explorer.multiversx.com>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/EGLDSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="189">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqp9llllls5wmsa9</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://explorer.multiversx.com/providers/erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqp9llllls5wmsa9).

### Staking Mechanics

<table><thead><tr><th width="209">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every Epoch (24 hours)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>Yes (low node rating)</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>10 days</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>10 days</td><td></td><td></td></tr></tbody></table>


# Namada

NAM

Namada is a privacy-focused Layer 1 blockchain protocol developed by the Anoma Foundation, designed to enable confidential, asset-agnostic transactions across multiple networks. Leveraging advanced cryptographic techniques such as zero-knowledge proofs and multi-asset shielded pools, Namada allows users to transfer both fungible and non-fungible assets with a high degree of privacy and security, while supporting interoperability through features like IBC and a trustless Ethereum bridge. Its architecture is built for scalability, decentralization, and seamless cross-chain interactions, making it suitable for private DeFi, secure voting, and privacy-preserving identity solutions. Namada has attracted significant investment, with the Anoma Foundation raising $25 million in a round led by CMCC Global and previous backing from Polychain Capital, Electric Capital, Delphi Digital, Coinbase Ventures, Maven 11, Figment

You can find the link to the block explorer below:

{% embed url="<https://namada.explorers.guru/>" %}

* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="191">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Address</td><td>tnam1qx7apjd6puv09zenlgcjg5q9l74y6ax4sqvyhp6y</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="209">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every Epoch ( 6 hours )</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Penalty</td><td>The slashing penalty is proportional to the cube of the validator’s voting power, and increases if multiple validators misbehave within the same window. <br><br>If a third or more of total bonded NAM is involved in a slashable offense, 100% of the stake associated with those validators can be slashed. The minimum slashing rate for double-signing is 0.1%</td><td></td><td></td></tr><tr><td>Slashing</td><td>Employs cubic slashing mechanism for equivocation and producing invalid blocks. No slashing for downtime</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>2 epochs ( 12 hour warmup period )</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>56 epochs ( 14 days ) </td><td></td><td></td></tr></tbody></table>


# Near

NEAR

NEAR Protocol is a highly scalable, developer-friendly Layer-1 blockchain designed to power decentralized applications (dApps) with a focus on usability, speed, and interoperability. Leveraging innovations such as Nightshade sharding, chain abstraction, and its Blockchain Operating System (BOS), NEAR achieves high throughput—over 100,000 transactions per second—and near-instant finality, while enabling seamless cross-chain interactions and AI integration for next-generation Web3 experiences. The protocol employs a Thresholded Proof of Stake (TPoS) consensus mechanism, making it both energy-efficient and secure. Founded in 2017, NEAR has attracted significant investment from leading venture capital firms including Andreessen Horowitz (a16z), Pantera Capital, Electric Capital, Coinbase Ventures, and Dragonfly Capital, positioning it as a major player in the blockchain ecosystem.

You can find the link to the block explorer below:

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

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/NEARSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="189">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator ID</td><td>@luganodes.pool.near</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://nearblocks.io/address/luganodes.pool.near).

### Staking Mechanics

<table><thead><tr><th width="209">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every Epoch ( ~12 hours )</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>Yes</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>3-4 epochs ( 36-48 hours )</td><td></td><td></td></tr></tbody></table>


# Noble

NOBLE

Noble is an appchain purpose-built for native asset issuance in Cosmos and the boundless Inter-Blockchain Communication (IBC) ecosystem. Dozens of appchains will be able to access USDC issued on Noble via an integration leveraging IBC that is simple, safe and seamless.

* [Validator Address](/networks/active-networks/noble#validator-address)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="213">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>noblevaloper1sayrgdn28wsprrf2xm34kjaxe29uy9jkanv60s</td></tr></tbody></table>
{% endtab %}
{% endtabs %}


# Polkadot

DOT

Polkadot is a layer-0 protocol and multichain network founded by Dr. Gavin Wood, co-founder and former CTO of Ethereum. Polkadot provides security, scalability, and interoperability to a diverse ecosystem of use-case specific layer-1 blockchains and their dapps. Polkadot offers open governance, seamless upgradeability, energy efficiency, secure cross-chain interoperability, and more.

You can find the link to the block explorer below:

{% embed url="<https://explorer.polkascan.io>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/DOTSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="200">Type</th><th>Address</th></tr></thead><tbody><tr><td>Stash Address</td><td>1vTaLKEyj2Wn9xEkUGixBkVXJAd4pzDgXzz9CuVjhVqhHRQ</td></tr><tr><td>Controller Address</td><td>145wCKDUDhtZEFJPDc9izV7VMLjCCkvVKdChj71Vv8MwsfZ5</td></tr><tr><td>Reward Address</td><td>1vTaLKEyj2Wn9xEkUGixBkVXJAd4pzDgXzz9CuVjhVqhHRQ</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="227">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>once every era (24 hours)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No (But can be done manually by validator or by a script)</td><td></td><td></td></tr><tr><td>Penalty</td><td>Yes if validator stops earning rewards for every block or era<br>If offline for a prolonged period the network will automatically "chill" the validator.<br>Chilling removes the validator from the active validator set and disqualifies them from the next election</td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes with upto 100% penalty (equivocation or downtime)</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>Yes</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>28 eras (28 days)</td><td></td><td></td></tr></tbody></table>


# Polygon

MATIC

Polygon is a Layer 2 scaling solution for Ethereum that aims to improve scalability and usability without sacrificing decentralization. To achieve this, Polygon employs the Plasma framework and the More Viable Plasma (MoreVP) consensus algorithm to ensure the security and integrity of its network. Polygon is interoperable with Ethereum, allowing users to move their assets between the two networks seamlessly and aims to provide a more user-friendly and efficient blockchain platform for developers and users.

You can find the link to the block explorer below:

{% embed url="<https://polygonscan.com>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/MATICSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="195">Type</th><th>Address</th></tr></thead><tbody><tr><td>Owner Address</td><td>0xd961ef39c0d4f2b5369dd708876b4d7b423643e5</td></tr><tr><td>Signer Address</td><td>0x9ead03f7136fc6b4bdb0780b00a1c14ae5a8b6d0</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://staking.polygon.technology/validators/18).

### Staking Mechanics

<table><thead><tr><th width="220">Metrics</th><th></th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are earned every ~34 minutes (1 checkpoint)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No ( Manual Compounding available)</td><td></td><td></td></tr><tr><td>Slashing</td><td>No, but Validators can be jailed for inactivity which removes validator from active set causing validator to stop earning rewards</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>None. But rewards will be generated from the next checkpoint from the time of stake</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>During unbonding, the staked amount is locked up for 3-4 days (80-82 checkpoints)</td><td></td><td></td></tr></tbody></table>


# Ronin

RON

Developed by Sky Mavis, Ronin is an Ethereum-linked chain on which Axie Infinity operates. Ronin is a scaling solution intended to address issues that occur during times of high network congestion, such as slow transaction confirmations and high transaction fees.

You can find the link to the block explorer below:

{% embed url="<https://legacy-explorer.roninchain.com>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/RONINSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="196">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Address</td><td>ronin:6aaabf51c5f6d2d93212cf7dad73d67afa0148d0</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://app.roninchain.com/validator/0x6aaabf51c5f6d2d93212cf7dad73d67afa0148d0).

### Staking Mechanics

<table><thead><tr><th width="225">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>End of every day</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>Yes</td><td></td><td></td></tr><tr><td>Slashing</td><td>Equivocation (250,000 RON)</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>3 days</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>7 days</td><td></td><td></td></tr></tbody></table>


# River

TOWNS

The River/Towns protocol is a decentralized, end-to-end encrypted messaging infrastructure built on the EVM-compatible River Protocol, which operates as a Layer 2 blockchain leveraging decentralized nodes and smart contracts deployed on Base. Towns enables permissionless group chats, allowing communities to create, own, and manage digital spaces with customizable governance, privacy, and monetization features. The project is led by Ben Rubin, founder of Houseparty and Meerkat, and has attracted significant investment, raising $25.5 million in a Series A round led by Andreessen Horowitz (a16z), with additional backing from Benchmark and Framework Ventures.

You can find the link to the block explorer below:

{% embed url="<https://explorer.towns.com/>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="196">Type</th><th>Address</th></tr></thead><tbody><tr><td>Operator Address 1</td><td>0xdE42f8Fa9B9f856A8D0C3e92e25905BD8bC44545</td></tr><tr><td>Operator Address 2</td><td>0x4051199467518D05d3d5E8A220d05edA68a73A4B</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes node performance can be tracked [here](https://alpha-1.river.lgns.net/debug/multi).

### Staking Mechanics

<table><thead><tr><th width="225">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Bi-weekly</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No ( Need to redelegate rewards manually )</td><td></td><td></td></tr><tr><td>Penalty</td><td>No slashing penalties, however River has an extendable reputation system which can impact a node’s participation or rewards.</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>No ( Instant Delegation )</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>60 day</td><td></td><td></td></tr></tbody></table>


# Saga

SAGA

Saga (SAGA) is a Layer-1 blockchain protocol designed to revolutionize Web3 development by enabling developers to easily deploy dedicated, scalable, and interoperable blockchains known as “Chainlets.” Each Chainlet operates as a parallel, application-specific chain secured by the same validator set as the Saga mainnet, providing infinite horizontal scalability, predictable transaction costs, and seamless interoperability with other blockchain ecosystems. Saga’s architecture simplifies the deployment of decentralized applications, particularly in high-demand sectors like gaming and entertainment, by automating chain creation and supporting multiple virtual machines. Since its founding in 2021, Saga has raised over $13.5 million from prominent investors including Maven 11 Capital, LongHash Ventures, Hypersphere Ventures, Figment Capital, Polygon Studios, and Samsung Next

You can find the link to the block explorer below:

{% embed url="<https://www.mintscan.io/saga>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/SAGASG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="197">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Validator Address</td><td>sagavaloper1qara34gyn54s9693rntr7gxj4a34te6gxkx97m</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://www.mintscan.io/saga/validators/sagavaloper1qara34gyn54s9693rntr7gxj4a34te6gxkx97m).

## Staking Mechanics

<table><thead><tr><th width="224">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every block ( 5.57 seconds )</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Users need to manually redelegate their rewards or through Restake.app</td><td></td><td></td></tr><tr><td>Penalty</td><td>Downtime: If a validator fails to sign at least 50% of blocks within a window of 17,280 blocks, a slashing penalty of 0.01% is applied, and the validator is jailed for 10 minutes<br><br>Double Signing: If a validator signs conflicting blocks at the same height, a slashing penalty of 5% is imposed</td><td></td><td></td></tr><tr><td>Slashing</td><td>Slashing enabled for downtime and double signing </td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>None ( Instant delegation )</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>21 days from time of unstake </td><td></td><td></td></tr></tbody></table>


# Solana

SOL

Solana is a PoS blockchain that uses a new, efficient consensus algorithm called Proof-of-History to achieve scalability and security. Solana's vision is to enable decentralized applications to scale to millions of users. In contrast to other scaling solutions, Solana aims to scale censorship resistance and increase transaction throughput by an order of magnitude with highly-performant nodes that require a lot of storage and ultra-low latency.

You can find the link to the block explorer below:

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

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/SOLSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="197">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Validator Identity</td><td>6WgdYhhGE53WrZ7ywJA15hBVkw7CRbQ8yDBBTwmBtAHN</td></tr><tr><td>Vote Key</td><td>6aow5rTURdbhbeMDrFrbP2GR5vZjMEhktEy87iH1VGPs</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://www.validators.app/validators/6WgdYhhGE53WrZ7ywJA15hBVkw7CRbQ8yDBBTwmBtAHN?locale=en\&network=mainnet).

## Staking Mechanics

<table><thead><tr><th width="224">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are generated every epoch (~2-3 days)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Auto-compounded every epoch and the reward is added to the stake amount </td><td></td><td></td></tr><tr><td>Slashing</td><td>Does not have a fully automatic, programmatic slashing mechanism.Social slashing can be done manually by the Solana community</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>Yes SOL is locked when Staking</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>1 epoch ( ~2-3 days)</td><td></td><td></td></tr></tbody></table>


# Sui

SUI

Sui is a dPoS Layer 1 blockchain and smart contract platform that prioritizes speed, privacy, and security for digital asset ownership. Built with an object-centric model using the Move programming language, Sui enables parallel execution, rapid finality, and on-chain asset diversity. Its scalable processing and storage allow for fast and cost-effective transactions, supporting a wide range of applications. Sui aims to make digital asset ownership accessible to everyone.

You can find the link to the block explorer below:

{% embed url="<https://suiscan.xyz/mainnet/home>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/SUISG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="190">Type</th><th>Address</th><th data-hidden>Address</th><th data-hidden></th></tr></thead><tbody><tr><td>Account Address</td><td>0x7e254f0f55e24b8a6995567241618f750d0d94f2cf49b36703869779d2ee4327</td><td></td><td></td></tr><tr><td>Staking Pool ID</td><td>0xb32d97e2bbbd8a4e1d826d69124f69cd12d1ef73c550768f5b43025f73ab70e2</td><td></td><td></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://suiscan.xyz/mainnet/validator/0x7e254f0f55e24b8a6995567241618f750d0d94f2cf49b36703869779d2ee4327/delegators).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>End of every epoch (24 hours)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>1 epoch (24 hours)</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>No</td><td></td><td></td></tr></tbody></table>


# Somnia

SOMI

Somnia is a high-performance, cost-efficient EVM-compatible Layer 1 blockchain capable of processing over 1,000,000 transactions per second (TPS) with sub-second finality. It is suitable for serving millions of users and building real-time mass-consumer applications like games, social applications, metaverses, and more, all fully on-chain.

You can find the link to the block explorer below:

{% embed url="<https://explorer.somnia.network/>" %}

* [Validator Address](#validator-address)
* [Peformance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="First Tab" %}

<table><thead><tr><th width="197.47265625">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Name</td><td>Validator Address</td></tr><tr><td>Luganodes</td><td>0x773DfB1512494Ed8Bc6CEcc9Fbd596cCe9E29cf0</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://explorer.somnia.network/address/0x773DfB1512494Ed8Bc6CEcc9Fbd596cCe9E29cf0).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>End of every epoch</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>-</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>-</td><td></td><td></td></tr></tbody></table>


# SSV

SSV

ssv.network is a fully decentralized, open-source ETH staking network, based on Secret Shared Validator (SSV) technology.

SSV is also known as DVT, or Distributed Validator Technology, as it provides an open and simple infrastructure for splitting and distributing a validator key into multiple KeyShares, for the purpose of running an Ethereum validator across multiple non-trusting nodes.

Running an Ethereum validator on ssv.network achieves active-active redundancy, introduces new levels of validator key security, and benefits the Ethereum network, staking pools, staking services and solo stakers.

You can find the link to the block explorer below:

{% embed url="<https://explorer.ssv.network/mainnet/overview>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="First Tab" %}

<table><thead><tr><th width="197.47265625">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Name</td><td>Validator Address</td></tr><tr><td>Luganodes</td><td>0x5f241267040426B30308D0A72e10FA182Ad7caC6</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://ssvscan.io/validators/).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>based on its obligation to the bApp</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes</td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes </td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>32 ETH</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>-</td><td></td><td></td></tr></tbody></table>


# Starknet

STRK

Starknet is a coordinated system, with each element in its protocol playing a specific yet interconnected role.

As with other blockchains, everything starts with an account. On Starknet, accounts are smart contracts, a model which is known as native account abstraction. This allows for flexible authorization logic like multisig, session keys, or passkey-based authentication — all without changes to the protocol itself.

You can find links to the block explorers below:

{% embed url="<https://docs.starknet.io/learn/cheatsheets/integrations#analytics-and-monitoring>" %}

* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="First Tab" %}

<table><thead><tr><th width="197.47265625">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Name</td><td>Pool Contract Address</td></tr><tr><td>Luganodes</td><td>0x0792e1c9893d4b5685d5b7c87dd5d8c5a2f038293ef6354783be7a7fca154efa</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://starkscan.co/validator/0x0226bdb0501a92f5980e865124d99bf2bba33de9556c2961cc6818ed13c0dff9).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every Epoch</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>-</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>21 days on unstaking</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>-</td><td></td><td></td></tr></tbody></table>


# Story Protocol

IP

Story is a purpose-built layer 1 blockchain designed specifically for intellectual property.\
You can register your IP on-chain and add usage terms to it in seconds, massively lowering the barrier to the currently complex & antiquated legal system for IP.

By making IP programmable on the blockchain, it becomes this transparent & decentralized global IP repository where AI agents (or any other software) and humans alike can transact on & monetize IP with a simple API call.

You can find links to the block explorers below:

{% embed url="<https://www.storyscan.io/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://youtu.be/c8COmDjCwRE?si=Cn-8j_p5LZDpEcxn>" %}

### Validator Address

{% tabs %}
{% tab title="First Tab" %}

<table><thead><tr><th width="197.47265625">Type</th><th>Address</th></tr></thead><tbody><tr><td>Validator Name</td><td>Pool Contract Address</td></tr><tr><td>Luganodes</td><td>0xa21DB8C1a286E0CF74AC0bcD6e273f799C77d4D0</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://staking.story.foundation/validators/0xa21db8c1a286e0cf74ac0bcd6e273f799c77d4d0).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Processed through a queue system (32 rewards per block)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Rewards are automatically distributed when they exceed 8 IP threshold</td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes for double signing and high downtime</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>Varies based on stake</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>Varies based on stake</td><td></td><td></td></tr></tbody></table>


# Symbiotic

SYMBIOTIC

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. Through its flexible architecture, stake providers can maximize their returns while networks can obtain the security guarantees they need.

You can find link to the dashboard below:

{% embed url="<https://app.symbiotic.fi/dashboard/positions>" %}

* [Operator Address](#operator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Operator Address

{% tabs %}
{% tab title="First Tab" %}

<table><thead><tr><th width="197.47265625">Type</th><th>Address</th></tr></thead><tbody><tr><td>Operator Name</td><td>OperatorAddress</td></tr><tr><td>Luganodes</td><td>0xAC128Aa884c64cbE6Afecf5c006D51C2bb1Bf819</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes operator performance can be tracked [here](https://app.symbiotic.fi/operator/0xAC128Aa884c64cbE6Afecf5c006D51C2bb1Bf819).

### Staking Mechanics

<table><thead><tr><th width="216">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Based on the network</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>-</td><td></td><td></td></tr><tr><td>Slashing</td><td>Optional to each vault</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>-</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>-</td><td></td><td></td></tr></tbody></table>


# Treehouse

TREE

Treehouse is a decentralized application that introduces Treehouse Assets (*tAssets)* and Decentralized Offered Rates (*DOR*), new primitives that enable fixed income products in digital assets.

Users who deposit ETH or liquid staking tokens (LST) into the protocol receive *tETH* and contribute to the convergence of fragmented on-chain ETH rates.

*tETH* also enhances the cryptoeconomic security of DOR, a consensus mechanism for benchmark rate setting.


# Tron

TRX

Tron is a layer-1 network that actively works towards creating a decentralized internet by addressing the issue of data ownership and enabling users to freely create and share content on a distributed ledger. Tron is dedicated to promoting decentralization of the internet through the use of blockchain technology and decentralized applications.

You can find the link to the block explorer below:

{% embed url="<https://tronscan.org>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/TRONSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="188">Type</th><th>Address</th><th data-hidden>Address</th><th data-hidden></th></tr></thead><tbody><tr><td>Validator Address</td><td>TGyrSc9ZmTdbYziuk1SKEmdtCdETafewJ9</td><td></td><td></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

Luganodes validator performance can be tracked [here](https://tronscan.org/#/address/TGyrSc9ZmTdbYziuk1SKEmdtCdETafewJ9).

### Staking Mechanics

<table><thead><tr><th width="206">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every epoch (6 hours)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>Stake can be unstaked after 3 days</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>None</td><td></td><td></td></tr></tbody></table>


# Ton

TON

The Open Network (TON) is a decentralized and open internet platform made up of several components. These include: TON Blockchain, TON DNS, TON Storage, and TON Sites. TON Blockchain is the core protocol that connects TON's underlying infrastructure together to form the greater TON Ecosystem.

You can find the link to the block explorer below:

{% embed url="<https://tonscan.org/>" %}

* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="199">Type</th><th>Value</th></tr></thead><tbody><tr><td>Operator Address</td><td>Uf9jigC9BikUxJv4cmXArzA6WcslCUsB-BmZgTFEqkCq_TyZ</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="196">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Multiple times a day, following the completion of the network's validation process( ~18 hours) .</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Yes, Depending on Validator and Staking Pool</td><td></td><td></td></tr><tr><td>Slashing</td><td>Yes for Misbehavior and Inactivity (Penalty varies)</td><td></td><td></td></tr><tr><td>Stake Activation</td><td>Almost instant. Rewards are generated after the completion of one validation period  ( 18 hours ) from the time of stake</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>Funds can be claimed after 1 validation cycle ( 36 hours ) post withdrawal request</td><td></td><td></td></tr></tbody></table>


# Vanar

VANRY

Vanar Chain is a high-performance, eco-friendly Layer-1 blockchain designed for mainstream adoption across AI, gaming, PayFi, and real-world asset (RWA) sectors, with a particular focus on the entertainment industry. Built on the Go Ethereum (GETH) codebase, it offers full EVM compatibility, fast and low-cost transactions, and advanced features like AI-driven asset management, cross-chain interoperability, and real-time energy consumption tracking. Vanar’s hybrid consensus mechanism combines Delegated Proof of Stake (dPoS), Proof of Authority (PoA), and Proof of Reputation (PoR) to ensure both scalability and robust, community-driven governance. The platform was co-founded by Jawad Ashraf and Gary Bracey, leveraging decades of experience in technology and gaming. Vanar Chain has attracted investment from prominent venture funds including Hashed Fund, NGC Ventures, LD Capital, Woodstock Fund, and Twin Apex Capital

You can find the link to the block explorer below:

{% embed url="<https://explorer.vanarchain.com/>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/vanar-staking-guide/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="199">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Contract Address</td><td>0x1Dcfe8dCb80fCeC43B1881c2100950AEa21E6762</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="196">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Every block ( 3 seconds )</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>No ( Need to claims reward and redelegate )</td><td></td><td></td></tr><tr><td>Penalty</td><td>No</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Lockup</td><td>21 days</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>21 days from unstake </td><td></td><td></td></tr></tbody></table>


# Walrus

WAL

Walrus is a decentralized storage protocol built on the Sui blockchain, designed to provide fast, affordable, and programmable data storage for Web3 and AI applications. Originally developed by Mysten Labs, Walrus enables applications to manage large data files (blobs) through Move-based smart contracts, supporting both on-chain and off-chain storage needs. The Walrus Foundation recently completed a $140 million funding round led by Standard Crypto, with participation from major investors including a16z crypto, Electric Capital, Franklin Templeton Digital Assets, Creditcoin, Lvna Capital, Protagonist, Karatage, RW3 Ventures, Comma3 Ventures, and The Raptor Group

You can find the link to the block explorer below:

{% embed url="<https://walruscan.com/mainnet/home>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Performance](#performance)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/walrus-staking-guide/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="199">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Node ID</td><td>0xeba0781d0568135bec544fe65a6dd1dfcf933200cf37c5d5cbb18ce9d86cc100</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Performance

You can track the performance of Luganodes validator [here](https://walruscan.com/mainnet/operator/0xeba0781d0568135bec544fe65a6dd1dfcf933200cf37c5d5cbb18ce9d86cc100).

### Staking Mechanics

<table><thead><tr><th width="196">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>End of every epoch ( 24 hours )</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Automatic</td><td></td><td></td></tr><tr><td>Slashing</td><td>No</td><td></td><td></td></tr><tr><td>Stake Activation</td><td>1 epoch ( 24 hours )</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>2 epochs ( 48 hours )</td><td></td><td></td></tr></tbody></table>


# WalletConnect

WCT

The WalletConnect Network is the onchain UX ecosystem that makes web3 work by facilitating users’ use of any wallet across any app and platform. As a chain-agnostic infrastructure, it operates across ecosystems from EVM and its L2s, to Solana, Cosmos, Polkadot, Bitcoin and more. The Network has played a crucial role in installing many of web3’s UX standards, fostering today’s composable and interoperable web3 ecosystem.


# Zilliqa

ZIL

Zilliqa is a scalable smart contract platform that aims to tackle the congestion issue plaguing the blockchain industry. Zilliqa utilises a unique sharded architecture to achieve parallel processing of transactions while maintaining a large number of public nodes. Hence, Zilliqa is a blockchain capable of reaching high throughput and processing more complex computations while remaining decentralised and secure.

You can find the link to the block explorer below:

{% embed url="<https://viewblock.io/zilliqa>" %}

* [Staking Guide](#staking-guide)
* [Validator Address](#validator-address)
* [Staking Mechanics](#staking-mechanics)

### Staking Guide

{% embed url="<https://www.luganodes.com/blog/ZILSG/>" %}

### Validator Address

{% tabs %}
{% tab title="Mainnet" %}

<table><thead><tr><th width="199">Type</th><th>Value</th></tr></thead><tbody><tr><td>Validator Name</td><td>Luganodes</td></tr><tr><td>Operator Address</td><td>zil1nzvefz7sd930kkgn6vdhtn9324z30ur3ckkayl</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Staking Mechanics

<table><thead><tr><th width="196">Metrics</th><th>Details</th><th data-hidden>Details</th><th data-hidden></th></tr></thead><tbody><tr><td>Reward Frequency</td><td>Rewards are generated every 18.33 hours (1 cycle)</td><td></td><td></td></tr><tr><td>Auto-compounding</td><td>Compounding needs to be done manually </td><td></td><td></td></tr><tr><td>Slashing</td><td>The protocol doesn't have any slashing</td><td></td><td></td></tr><tr><td>Stake Activation</td><td>Almost instant. Rewards are generated after in the next cycle  (~18.33 hours) from the time of stake</td><td></td><td></td></tr><tr><td>Unbonding Period</td><td>14 days. After unstaking, users can access the staked funds after 14 days (30,800 blocks)</td><td></td><td></td></tr></tbody></table>


# Overview

Stake on Luganodes public validators

Luganodes' Staking APIs simplify and streamline the integration of non-custodial staking functionalities for digital assets. By abstracting network-specific complexities behind an accessible API, staking Proof of Stake assets becomes a very simple procedure. This leads to API interactions being consistent and straightforward across multiple networks and action types.

#### Why use a Staking API? 🛠️ <a href="#why-use-a-staking-api" id="why-use-a-staking-api"></a>

* Using a Staking API eliminates the need for extensive research and engineering efforts for several involved procedures such as handling provisioning requests, keystore maintenance, and managing exit flows.
* Developers can leverage our powerful Staking APIs' flows, actions, inputs, and payloads and reduce the time-to-market by a great margin.

With a focus on institutional staking, Luganode Staking APIs aim to provide practical solutions with increased operational speed and user satisfaction.Explore our Staking APIs and discover how you can start staking your digital assets with us today!


# Ethereum

World's most reliable PoS network

ETH holders can activate validator software by staking at least 32 ETH. By doing this, they take on the role of a validator and assume responsibilities surrounding data storage, transaction processing, and adding blocks to the blockchain. The validators contribute to Ethereum's security, all while earning additional ETH as rewards.

### Why Stake ETH? <a href="#why-stake-eth" id="why-stake-eth"></a>

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><p><strong>Earn Rewards</strong></p><p></p><p>Rewards are earned by validators who contribute to the network's consensus by processing transactions into blocks and verifying the work of other validators.</p></td><td></td><td></td></tr><tr><td><p><strong>Better Security</strong></p><p></p><p>The network gets stronger against attacks as more ETH is staked, as it then requires more ETH to control a majority of the network.</p></td><td></td><td></td></tr><tr><td><p><strong>More sustainable</strong></p><p></p><p>Stakers don't need to do energy-intensive proof-of-work computations to participate in securing the network meaning staking nodes can run on relatively modest hardware using very little energy.</p></td><td></td><td></td></tr></tbody></table>


# Staking Guide

Simplifying Non-Custodial Staking

* [Pectra Compatibility](#pectra-compatibility)
* [Staking using the Batch Contract](#staking-eth-using-the-batch-contract)
* [Staking without the Batch Contract](#staking-eth-without-the-batch-contract)
* [Staking without batch contract (using raw deposit data)](#staking-without-batch-contract-using-raw-deposit-data)
* [Consolidation and Switching](#consolidation-and-switching)
* [Exiting an Ethereum Validator](#exiting-an-ethereum-validator)

### Pectra Compatibility

Our node APIs support both 0x01 type and 0x02 type validators depending on your needs. You can choose to stake either 0x02 type validators or 0x01 type validators through our [Luganodes’ Node Provisioning APIs](/apis/ethereum/node-provisioning-apis) by setting the `compounding` parameter to `true` or `false` while calling the [Provision Request API](/apis/ethereum/node-provisioning-apis#provision-request). \
\
Additonally, clients can set the `amountPerValidator` based on their requirements and it is set to 32 when `compounding` is set to `false`.

### **Staking ETH using the Batch Contract**

The ETH Staking contract currently supports only one deposit transaction at a time. Clients looking to stake large amounts of ETH would have to make many transactions in multiples of 32 ETH ( for 0x01 type validators ) or any value from 32 - 2048 ETH ( for 0x02 type validators ). This can be simplified by using a Batch contract which can club 100 deposits into a single transaction for the user.

Use [Luganodes’ Node Provisioning APIs ](/apis/ethereum/node-provisioning-apis)to stake ETH. The steps are as follows:

1. Sign up using the [Signup API](/apis/ethereum/authentication#sign-up) with your organisation details to receive your API key.
2. Initiate the provision of nodes by calling the [Provision Request API](/apis/ethereum/node-provisioning-apis#provision-request) with `batch` parameter as `true`. The API triggers the creation of nodes by Luganodes in the background. Allow some time (\~4 mins for 100 validators) for the creation of deposit details required for transaction signing before calling the next API
3. Retrieve the unsigned transaction object `depositInput`, by calling the [Get Validator Objects API](/apis/ethereum/node-provisioning-apis#get-validator-objects). Use `depositInput` as transaction data to execute the deposit transaction on the Batch Contract address mentioned below

<table data-header-hidden><thead><tr><th width="293"></th><th>Chain</th></tr></thead><tbody><tr><td>Batch Contract Address (Hoodi)</td><td>0xCdf86Bf3E4B2D8777F1e6C70D6C694936c3459A6</td></tr><tr><td>Batch Contract Address (Mainnet)</td><td>0x33c10a5518a881ABfe318758646bB8C7cE613704</td></tr></tbody></table>

{% hint style="info" %}
The batch contract used is a forked version of Kiln's [contract](https://github.com/kilnfi/vyper_batch_deposit) that has been audited by Runtime Verification Inc.
{% endhint %}

4. Post deposit, allow approximately 13 minutes for the protocol to verify details and queue your validators for activation (the activation time itself will depend on the number of validators awaiting activation in the network)
5. Use the Get User Validator and Provision ID API to check your validators’ status at any point in this process.

Refer to the sequence diagram below for a detailed guide on batch contract staking:

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2F3bUeHVDxXmsIBzpwJ7GV%2Fimage%20(11).png?alt=media&amp;token=933934a6-7319-4be6-bdb5-188bbe5ced31" alt=""><figcaption></figcaption></figure>

### **Staking ETH without the Batch Contract**

Clients can stake their ETH without using the batch contract and directly interacting with the Beacon deposit contract

Use [Luganodes’ Node Provisioning APIs](/apis/ethereum/node-provisioning-apis) to stake ETH. The steps are as follows:

1. Sign up using the [Signup API](/apis/ethereum/authentication#sign-up) with your organisation details to receive your API key.
2. Initiate the provision of nodes by calling the [Provision Request API](/apis/ethereum/node-provisioning-apis#provision-request) with `batch` parameter as `false`. The API triggers the creation of nodes by Luganodes in the background. Allow some time (\~4 mins for 100 validators) to create the deposit details required for transaction signing before calling the next API.
3. Retrieve unsigned transaction objects, specifically `depositInput` in the `result` array by calling the [Get Validator Objects API](/apis/ethereum/node-provisioning-apis#get-validator-objects). Use `depositInput` as transaction data to execute the deposit transaction on the Beacon deposit contract mentioned below. Each transaction should be made individually based on the number of validators being set up (e.g., Setting up 100 validators would require 100 transactions to be signed).

<table data-header-hidden><thead><tr><th width="336"></th><th>Chain</th></tr></thead><tbody><tr><td>Beacon Deposit Contract (Mainnet)</td><td>0x00000000219ab540356cBB839Cbe05303d7705Fa</td></tr><tr><td>Beacon Deposit Contract (Hoodi)</td><td>0x00000000219ab540356cBB839Cbe05303d7705Fa</td></tr></tbody></table>

4. Post deposit, allow approximately 13 minutes for the protocol to verify details and queue your validators for activation (the activation time will depend on the number of validators awaiting activation in the network).
5. Use the Get  Validator and Provision ID API to check your validators’ status at any point in this process.

Refer to the sequence diagram below for a detailed guide on non-batched contract staking:

<figure><img src="https://4131623064-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgIdQ17drgQjNoGZlBpKg%2Fuploads%2FCpkR65qZTTLqgBJNSMPE%2Fimage%20(10).png?alt=media&amp;token=b6b71fc1-38ec-4acc-b1ba-c748cb747df5" alt=""><figcaption></figcaption></figure>

### [Staking without batch contract (using raw deposit data)](#staking-eth-using-raw-deposit-data)&#x20;

Users can get the raw deposit data using the Get Deposit Details API. They can use this data to initiate a deposit transaction on the Beacon deposit contract. The steps are as follows

1. Sign up using the [Signup API](/apis/ethereum/authentication#sign-up) with your organisation details to receive your API key.
2. Initiate the provision of nodes by calling the [Provision Request API](/apis/ethereum/node-provisioning-apis#provision-request) with `batch=false` (batch will have to be false here as deposit data will have to be shared separately for individual validators). The API triggers the creation of nodes by Luganodes in the background. Allow some time (\~4 mins for 100 validators) for the creation of deposit details required for transaction signing before calling the next API
3. Call the Deposit Details API to generate the raw deposit data which would include the following: `signature`, `deposit message root`, `deposit data root`, `fork version`. These would be essential to generate the input required for the deposit transaction.&#x20;
4. Post deposit, allow approximately 15-24 hours for the protocol to verify details and queue your validators for activation (the activation time itself will depend on the number of validators awaiting activation in the network)
5. Use the Get Validator and Provision ID API to check your validators’ status at any point in this process.

### **Consolidation and Switching**

Pectra EIP 7251 enables consolidation of stake of multiple validators into a single validator. This operation requires the client to sign an unsigned transaction with the validator withdrawal address and can be performed one validator at a time. Similarly, converting 0x01 withdrawal credentials to 0x02 credentials requires an unsigned transaction to be signed with the withdrawal address.&#x20;

Check out the [Consolidate API](/apis/ethereum/consolidation-and-switch#consolidation-request) and [Switch API](/apis/ethereum/consolidation-and-switch#switch-request), below are the contract addresses listed.

<table data-header-hidden><thead><tr><th width="336"></th><th>Chain</th></tr></thead><tbody><tr><td>Consolidation Contract (Mainnet)</td><td>To be added</td></tr><tr><td>Consolidation Contract (Hoodi)</td><td>0x0000bbddc7ce488642fb579f8b00f3a590007251v<br><br>NOTE: An audited version of the contract will be available soon</td></tr></tbody></table>

### **Exiting an Ethereum Validator**

You can choose to perform exits by declaring an intent to exit or by performing the exit with your validator withdrawal address.  You can perform partial withdrawals via the execution layer by signing and broadcasting an unsigned transaction.

### Via Intent

1. A signed challenge must be created that contains the validators' information signed by the withdrawal key or the controller key. The script to generate this signed challenge can be found here.
2. Call the Exit API with a signed challenge to initiate the validator exit. Refer to the [Exit API documentation](/apis/ethereum/exits).
3. After exiting, use the Get Validator and Provision ID API to check the status of your validators.

### Via Withdrawal Address

1. Partial withdrawals are triggered via the execution layer through the validators withdrawal address. This withdrawal is only possible for validators with 0x02 type withdrawal credentials.
2. Call the Partial Exit API to receive an unsigned transaction which needs to be signed with your validator withdrawal address and broadcasted to the network. Refer to the [Partial Exit API documentation.](/apis/ethereum/exits#partial-exit-request)

<table data-header-hidden><thead><tr><th width="336"></th><th>Chain</th></tr></thead><tbody><tr><td>EL Exit Contract (Mainnet)</td><td>To be added</td></tr><tr><td>EL Exit Contract (Hoodi)</td><td>0x00000961ef480eb55e80d19ad83579a64c007002<br><br>NOTE: An audited version of the contract will be available soon</td></tr></tbody></table>

2. After exiting, use the Get Validator and Provision ID API to check the status of your validators


# Authentication

Sign up and log in through our APIs to seamlessly register your organisation.

* [Supported Environments](#supported-environments)
* [Re issue API Key](#re-issue-api-key)

### Supported Environments

Luganodes supports the following environments on ETH, as defined below

<table data-header-hidden><thead><tr><th width="356">Base URL</th><th>ETH Network</th></tr></thead><tbody><tr><td><a href="https://holesky.eth-staking.lgns.net/api
">https://testnet.eth-staking.lgns.net</a></td><td>Hoodi Testnet</td></tr><tr><td><a href="https://mainnet.eth-staking.lgns.net/api">https://mainnet.eth-staking.lgns.net</a></td><td>Ethereum Mainnet </td></tr></tbody></table>

## Re-issue API Key

<mark style="color:green;">`POST`</mark> `/api/regenerate-api-key`

Re-issue a new API key for your account. This invalidates your previous API key.

#### Request Body

| Name                                       | Type   | Description   |
| ------------------------------------------ | ------ | ------------- |
| email<mark style="color:red;">\*</mark>    | String | Email of user |
| password<mark style="color:red;">\*</mark> | String | Password      |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "result": {
    "user": {
      "apiKey": "isqMH8hfQB4IOf7CqPwEdQdQIP6Af6Ux3BWQJP6auF4="
    }
  }
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location -g '{{url}}/api/regenerate-api-key' \
--data-raw '{
    "email": "test@luganodes.com",
    "password": "gJHKLL47JihNs9"
}'
```


# Node Provisioning APIs

Provisioning APIs for Ethereum nodes creation and staking delegation

### What are the Node Provisioning APIs?

1. [**Provision Request API:**](#provisioning-request)\
   The client calls this API to initiate a request which creates the transaction objects that the client needs to sign.
2. [**Get Validator Objects API:**](#get-validator-objects)\
   The client calls this API to retrieve the transaction objects used to stake with the Beacon deposit contract.
3. [Add Stake API:](#add-stake-request)

   The client calls this API add more stake to an existing validator by retrieving the transaction objects used to stake with the Beacon deposit contract.
4. [**Get Deposit Details API:**](#get-deposit-details)

   The client invokes this API to fetch deposit data, which can subsequently be utilized for staking with the Beacon deposit contract.
5. [**Get Validator and Provision API:**](#get-validator-and-provision-ids)

   The client calls this API to receive the validator objects which were created along with their respective provision IDs.&#x20;
6. [**Get Validator Count API:**](#get-validator-count)

   The client invokes this API to get the number of validators by their validator status.

In essence, the Node Provisioning APIs allow clients to spin up new Ethereum nodes via REST APIs. These APIs can be used to generate and receive the transaction objects which must be signed using the Beacon deposit contract. A detailed account of the APIs involved is provided in the following section.

## API Reference

* [Supported Environments](#supported-environments)&#x20;
* [Provision Request](#provisioning-request)
  * [Sample Request](#sample-request)
  * [Types](#types)
    * [Attributes Object](#attributes-object)
    * [Provision Response Object](#provision-response-object)
* [Get Validator Objects](#get-validator-objects)
  * [Sample Request](#sample-request-1)
  * [Types](#types-1)
    * [Paginated Response Object](#paginated-response-object)
    * [Validator Result Object](#validator-result-object)
    * [Provision Status Enum](#provision-status-enum)
    * [Validator Status Enum](#validator-status-enum)
* [Add Stake ](#add-stake-request)
  * [Sample Request](#sample-request-2)
  * [Types](#types-2)
    * [Add Stake Response Object](#id-200-ok-add-stake-response-object)
* [Get Deposit Details](#get-deposit-details)
  * [Sample Request](#sample-request-2)
  * [Types](#types-2)
    * [Paginated Response Object](#paginated-response-object-1)
    * [Deposit Details Object](#deposit-details-object)
* [Get Validator and Provision ID](#get-validator-and-provision-ids)
  * [Sample Request](#sample-request-2)
  * [Types](#types-2)
    * [Paginated Response Object](#paginated-response-object-1)
    * [Validator Result Object](#validator-result-object-1)
* [Get Validator Count](#get-validator-count)
  * [Sample Request](#sample-request-4)
  * [Types](#types-4)
    * [Result Object](#result-object)&#x20;
    * [Status Object](#status-object)

### Supported Environments

Luganodes supports the following environments on ETH, as defined below

<table data-header-hidden><thead><tr><th width="356">Base URL</th><th>ETH Network</th></tr></thead><tbody><tr><td><a href="https://holesky.eth-staking.lgns.net/api
">https://testnet.eth-staking.lgns.net</a></td><td>Hoodi Testnet</td></tr><tr><td><a href="https://mainnet.eth-staking.lgns.net/api">https://mainnet.eth-staking.lgns.net</a></td><td>Ethereum Mainnet </td></tr></tbody></table>

## Provisioning Request

<mark style="color:green;">`POST`</mark> `/api/provision`

Submits a provision request to our secure node systems to generate the required files based on the withdrawal address and the number of validators sent in the request.

The response will contain a UUID which can be used to track the provision request.

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Request Body

| Name                                         | Type   | Description                             |
| -------------------------------------------- | ------ | --------------------------------------- |
| attributes<mark style="color:red;">\*</mark> | Object | [Attributes Object](#attributes-object) |

{% tabs %}
{% tab title="200: OK Provision Response Object" %}

```json
{
    "result": {
        "created": "2024-02-15T05:19:18.942Z",
        "status": "CREATED",
        "provisionId": "f1575191-0b13-4c6c-ae7b-61adfbea0d98",
        "validatorsCount": 3,
        "withdrawalAddress": "0xa08c6C9e3d0E28E0E9Ef17cE67899e8E06501dD2",
        "controllerAddress": "0x918D92fc2cA24379ba1EEa1dd1CA385Fc5C8df7c", //or null
        "feeRecipient": "0x2A0e48522876DbD8B414E938cbE4e05FD6A23811" //or null
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
A maximum of 100 validators can be requested in a single provision request. To provision more nodes, a new provision request must be sent.
{% endhint %}

#### **Sample Request**

```bash
curl --location '{{url}}/api/provision' \
--header 'api-key: ee908371-d13b-43dd-ae33-b854dade5e9d' \
--data '{
    "attributes": {
        "withdrawalAddress": "0xa08c6C9e3d0E28E0E9Ef17cE67899e8E06501dD2",
        "controllerAddress": "0x918D92fc2cA24379ba1EEa1dd1CA385Fc5C8df7c", //optional
        "feeRecipient": "0x2A0e48522876DbD8B414E938cbE4e05FD6A23811", //optional
        "validatorsCount": 3,
        "batch":true
        "compounding":true, //optional 
        "amountPerValidator":33 //optional 
    }
}'
```

#### **Types**

#### **Attributes Object**

<table><thead><tr><th width="204.33333333333331">Property</th><th width="480">Description</th><th>Type</th></tr></thead><tbody><tr><td>withdrawalAddress<mark style="color:red;">*</mark></td><td>Ethereum wallet address which will be used to create withdrawal credentials for the validator</td><td>String</td></tr><tr><td>controllerAddress</td><td>Address that can be used to sign the exit message. This field is optional</td><td>String</td></tr><tr><td>feeRecipient</td><td>Fee Recipient address of the validator that receive EL rewards. This field is optional</td><td>String</td></tr><tr><td>validatorsCount<mark style="color:red;">*</mark></td><td>Number of validators required</td><td>Number</td></tr><tr><td>batch<mark style="color:red;">*</mark></td><td><code>true</code> will return transaction objects for a batch deposit of all validators<br><code>false</code> will return individual transaction objects for each validators</td><td>Boolean</td></tr><tr><td>compounding</td><td><p><code>true</code> will return transaction objects for 0x02 type withdrawal credentials</p><p><br><code>false</code> will return transactions objects for 0x01 type withdrawal credentials<br><br>NOTE: 0x02 type validators can accommodate stake between 32 - 2048 ETH and are eligible for partial withdrawals.</p></td><td>Boolean</td></tr><tr><td>amountPerValidator</td><td>Stake amount that can be set for each validator with 0x02 type withdrawal credentials.<br><br>Default is 32 ETH</td><td>Number</td></tr></tbody></table>

#### Provision Response Object

<table><thead><tr><th width="194.33333333333331">Property</th><th width="469">Description</th><th>Type</th></tr></thead><tbody><tr><td>provisionId</td><td>Unique identifier of provisioning request</td><td>String</td></tr><tr><td>withdrawalAddress</td><td>Withdrawal address specified by user</td><td>String</td></tr><tr><td>status</td><td>status = "CREATED" will be sent as an acknowledgement</td><td>String</td></tr><tr><td>created</td><td>Timestamp of the creation of the provision request</td><td>String</td></tr><tr><td>validatorsCount</td><td>Number of validators</td><td>Number</td></tr><tr><td>controllerAddress</td><td>Address that can be used to sign the exit message</td><td>String</td></tr><tr><td>feeRecipient</td><td>Fee Recipient address of the validator that receive EL rewards</td><td>String</td></tr></tbody></table>

{% hint style="info" %}
If user is unable to sign exit transactions with their withdrawal address, we have added provisions to give signing privileges to controller address
{% endhint %}

## Get Validator Objects

<mark style="color:blue;">`GET`</mark> `/api/validators`

Retrieve the transaction objects that require signing by sending the UUID received in the Provisioning Request API.

#### Query Parameters

| Name                                          | Type   | Description                           |
| --------------------------------------------- | ------ | ------------------------------------- |
| provisionId<mark style="color:red;">\*</mark> | String | provisioning\_request\_uuid:YOUR UUID |
| page                                          | Number | page number to be fetched             |
| per\_page                                     | Number | Number of results per page            |

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

{% tabs %}
{% tab title="200: OK Batch Contract Response" %}

```javascript
{
  "batch": true,
  "depositInput": "0xc82655b70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000006083651cfd972c2170c85754cdcbf5b0ffe31ad96a37835a695d533b951cf2189aa86e4d8b3b4c84e59d0376570e41d31baa3ae8f0d1716cd13ef9874633b42157a43d95fb661457c7b85ba344709458e020491d852264e65c23f39d6d0374057e0000000000000000000000000000000000000000000000000000000000000020010000000000000000000000f345a81af5b23ae1fd0d08f97af1ac05ffad825c00000000000000000000000000000000000000000000000000000000000000c08bd5db0506969f1040e1f0bd0609eaf2d927a500cddf2298cfe8bb56112bd46bcf525f24fe9523fc99e0695f3076a40e01f3f95b6af3c3da0971b68cf3083a204819f55d803fa751d3c1e7c7cf220af12afda0f8bcc138c2dad69eee3ec2885c93bb41fc4e793ea1acb34034181d473c6f48c0591955fbf8d178701469b5f1b543c29a5a5eb4b58470ff44822a977a46010730e3869215ae7ddcb1b0efa4f6cc94705b24cd4c44932c92cd689a310bcd28c131704e98c9ded92bd5d02101ea870000000000000000000000000000000000000000000000000000000000000002e238a9ddbe247c643233a004fb0eae0d9682ee367580549ea0912880201c13f2c30fef3c554b82e5399bff17b31104e60be991af835b236a41c949d436d6c69e",
  "withdrawalAddress": "0xF345A81Af5b23Ae1fD0D08f97AF1aC05fFAd825c",
  "withdrawal_credentials": "0x010000000000000000000000a08c6c9e3d0e28e0e9ef17ce67899e8e06501dd2",
  "validatorsCount": 2,
  "clientId": "0c14fc15-9562-4fbe-bf02-f86e56a57d83",
  "provisionId": "321e7857-f81c-4d0c-9750-17a84d631aed",
  "provisionStatus": "CREATED",
  "results": [
    {
      "validatorIndex": null,
      "validatorAddress": "0x83651cfd972c2170c85754cdcbf5b0ffe31ad96a37835a695d533b951cf2189aa86e4d8b3b4c84e59d0376570e41d31b",
      "amount": 32000000000,
      "created": "2024-01-24T11:37:40.202Z",
      "status": "CREATED",
      "depositInput": null
    },
    {
      "validatorIndex": null,
      "validatorAddress": "0xaa3ae8f0d1716cd13ef9874633b42157a43d95fb661457c7b85ba344709458e020491d852264e65c23f39d6d0374057e",
      "amount": 32000000000,
      "created": "2024-01-24T11:37:40.202Z",
      "status": "CREATED",
      "depositInput": null
    }
  ],
  "page": null,
  "per_page": null,
  "total": 2,
  "pages": null
}
```

{% endtab %}

{% tab title="200: OK Non-Batch Contract Response" %}

```javascript
{
  "batch": false,
  "depositInput": null,
  "withdrawalAddress": "0xF345A81Af5b23Ae1fD0D08f97AF1aC05fFAd825c",
  "withdrawal_credentials": "0x010000000000000000000000a08c6c9e3d0e28e0e9ef17ce67899e8e06501dd2",
  "validatorsCount": 2,
  "clientId": "0c14fc15-9562-4fbe-bf02-f86e56a57d83",
  "provisionId": "b8b3fee5-dcdd-48f9-b706-a5d5a4e8ca87",
  "provisionStatus": "CREATED",
  "results": [
    {
      "validatorIndex": null,
      "validatorAddress": "0xb98a5ce144b937c578c76fd29b6e4cd8931a64409be40d07c2c155ed246d80d7be811c2c2a82f38614939df34bf5e389",
      "amount": 32000000000,
      "created": "2024-01-24T11:47:38.493Z",
      "status": "CREATED",
      "depositInput": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120f26b4af336055faad90f23008dee3762b4c31832f87dc8768911939145554f5e0000000000000000000000000000000000000000000000000000000000000030b98a5ce144b937c578c76fd29b6e4cd8931a64409be40d07c2c155ed246d80d7be811c2c2a82f38614939df34bf5e389000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000000000000000000f345a81af5b23ae1fd0d08f97af1ac05ffad825c00000000000000000000000000000000000000000000000000000000000000609772ef64086dd85016a0cdb924d7bef185d2b5406d656bfef23def9bf79057b5ba425b0dc662085338d66ff3c485b53f16a670b32a03172754db5c02cf38e2b7b6a713aa9bd02995c6b67f4d50eaf536bac3411ba199343d0d01fc267a5f756b"
    },
    {
      "validatorIndex": null,
      "validatorAddress": "0x8b085da6c957e3494d72f54f593031c8087ec10a2ae969693c1bc18e61d4d2073e54d70ffdec997260998f6359c2cf47",
      "amount": 32000000000,
      "created": "2024-01-24T11:47:38.493Z",
      "status": "CREATED",
      "depositInput": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120147bbc9232026fc3617044feef15f28a499e24aa02f572c00b8ca5b592fc81d800000000000000000000000000000000000000000000000000000000000000308b085da6c957e3494d72f54f593031c8087ec10a2ae969693c1bc18e61d4d2073e54d70ffdec997260998f6359c2cf47000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000000000000000000f345a81af5b23ae1fd0d08f97af1ac05ffad825c00000000000000000000000000000000000000000000000000000000000000609132e6942a666d11257f110697e3b563bba66e0a0400be618de95ef8a6dcee4d0e462a5db4071076164fa7a8120e4bd60566fd1f0e9373a21138ba9f9b5cc86866d06ef618fa502c7b60630dfeddf926e6819022196be242b8894361d7f5979d"
    }
  ],
  "page": null,
  "per_page": null,
  "total": 2,
  "pages": null
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Validators are provisioned asynchronously, and the automation script processes provision requests, generating the required files. Therefore, an empty array response is received until the script execution is completed.
{% endhint %}

#### Sample Request

{% code overflow="wrap" %}

```bash
curl --location '{{url}}/api/validators?per_page=10&page=1&provisionId=cd127302-570d-4b38-ba19-26ccf3a5dd2e' \
--header 'api-key: rNmE773fXgApKKAw$2btnNC9p5BdILMsDxxodrepgoU='
```

{% endcode %}

#### Types

#### Paginated Response Object

<table><thead><tr><th width="191.33333333333331">Field</th><th width="447">Description</th><th>Type</th></tr></thead><tbody><tr><td>batch</td><td>Batch Deposit</td><td>Boolean</td></tr><tr><td>depositInput</td><td>Data for executing the unsigned deposit transaction on the Beacon Deposit contract. Returns <code>null</code> for non-batch contract staking.</td><td>String</td></tr><tr><td>withdrawalAddress</td><td>Withdrawal address as specified by user</td><td>String</td></tr><tr><td>withdrawal_credentials</td><td>Withdrawal credential is derived from the withdrawal address that's used for deposit to beacon deposit contract</td><td>String</td></tr><tr><td>validatorsCount</td><td>Number of validators created</td><td>Number</td></tr><tr><td>clientId</td><td>Partner identifier associated with the API key</td><td>String</td></tr><tr><td>provisionId</td><td>Unique identifier of provisioning request</td><td>String</td></tr><tr><td>provisionStatus</td><td><a href="#provision-status-enum">Status of provision request</a></td><td>String</td></tr><tr><td>result</td><td>Array of <a href="#validator-result-object">validator objects</a></td><td>Array</td></tr><tr><td>page</td><td>Page number of fetched results</td><td>Number</td></tr><tr><td>per_page</td><td>Number of results per page</td><td>Number</td></tr><tr><td>pages</td><td>Total number of pages</td><td>Number</td></tr><tr><td>total</td><td>Number of results in total</td><td>Number</td></tr></tbody></table>

#### Validator Result Object

<table><thead><tr><th width="172.33333333333331">Field</th><th width="449">Description</th><th>Type</th></tr></thead><tbody><tr><td>amount</td><td>amount of ETH to be deposited </td><td>Number</td></tr><tr><td>validatorIndex</td><td>Index of validator on Ethereum chain</td><td>Number</td></tr><tr><td>status</td><td><a href="#validator-status-enum">Validator Status</a></td><td>String</td></tr><tr><td>validatorAddress</td><td>Validator public key</td><td>String</td></tr><tr><td>created</td><td>Delegation object creation time</td><td>String</td></tr><tr><td>depositInput </td><td>Unsigned deposit object for executing the transaction on the Beacon deposit contract. This field is applicable for non-batch contract staking.</td><td>String</td></tr></tbody></table>

#### Validator Status Enum

<table><thead><tr><th width="174">Field</th><th>Description</th></tr></thead><tbody><tr><td>CREATED</td><td>Validator was provisioned through Luganodes API</td></tr><tr><td>DEPOSITED</td><td>The deposit is waiting to be seen by the ETH chain</td></tr><tr><td>PENDING</td><td>Validator is in the queue waiting to go live</td></tr><tr><td>ACTIVE</td><td>Validator is participating and earning rewards</td></tr><tr><td>EXIT_REQUESTED</td><td>Exit has been requested by the client to the validator node</td></tr><tr><td>EXIT_SENT</td><td>Exit transaction for the validator is issued to the beacon chain</td></tr><tr><td>EXITED</td><td>Validator has exited from the network</td></tr><tr><td>UNKNOWN</td><td>Error while fetching the status of validator</td></tr></tbody></table>

#### Provision Status Enum

<table><thead><tr><th width="174">Field</th><th>Description</th></tr></thead><tbody><tr><td>IN_PROGRESS</td><td>Provision request is in progress</td></tr><tr><td>CREATED</td><td>Provision request successfully created</td></tr><tr><td>FAILED</td><td>Provision request failed</td></tr></tbody></table>

## Add Stake Request

<mark style="color:green;">`POST`</mark> `/validators/add-stake`

Submits a request to generate the transaction objects required to stake with the beacon deposit contract. This request allows users to add more stake to only active validators having 0x02 type withdrawal credentials. If validator does not have 0x02 type withdrawal credentials, it can be switched through the [Switch API](/apis/ethereum/consolidation-and-switch#switch-request).<br>

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Request Body

| Name                                     | Type   | Description                 |
| ---------------------------------------- | ------ | --------------------------- |
| pubKey<mark style="color:red;">\*</mark> | String | Public address of validator |
| amount<mark style="color:red;">\*</mark> | Number | Amount to be staked         |

{% tabs %}
{% tab title="200: OK Add Stake Response Object" %}

```json
{
    "validatorAddress": "0x81d90c9600a4fc1f69dfe4b4e3e708abb162b2122f2ef56ea79b48708c809005cc105b8e554856ce16a5c597dbfe1770",
    "addStakeAmount": 33000000000,
    "depositInput": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120a7d807a1cac3d595c52f7b56aa5c17883e405ed1d654929dce97754ecef25170000000000000000000000000000000000000000000000000000000000000003081d90c9600a4fc1f69dfe4b4e3e708abb162b2122f2ef56ea79b48708c809005cc105b8e554856ce16a5c597dbfe17700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200200000000000000000000008c24b68141552e0844354b0b638031918caafaeb0000000000000000000000000000000000000000000000000000000000000060906721ab6235bc3d9f4291fe35faf9e579c1de843b3c421ff2fbc0e7eaccd80d7389969970b5ca69f43ecd644df9107d0995880a9bf7028f2f31b425cff23a735f7d29f1488443ba96d579d6db8371527757a73030b2d1f6e6832cfbea231c03"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Add stake operations can only be performed on active validators and cannot exceed a balance of 2048 ETH.  Additionally. this operation can only be performed on 0x02 type validators.
{% endhint %}

#### **Sample Request**

```bash
curl --location '{{url}}/api/validators/add-stake' \
--header 'api-key: ee908371-d13b-43dd-ae33-b854dade5o9d' \
--data '{
    "pubKey":"0x81d90c9600a4fc1f69dfe4b4e3e708abb162b2122f2ef56ea79b48708c809005cc105b8e554856ce16a5c597dbfe1770",
    "amount":33
}'
```

### **Types**

#### Add Stake Response Object

<table><thead><tr><th width="216.13020833333331">Property</th><th width="469">Description</th><th>Type</th></tr></thead><tbody><tr><td>validatorAddress</td><td>Public address of validator</td><td>String</td></tr><tr><td>addStakeAmount</td><td>Amount which needs to be staked </td><td>Object</td></tr><tr><td>depositInput</td><td>Unsigned deposit object for executing the transaction on the Beacon deposit contract.</td><td>String</td></tr></tbody></table>

## Get Deposit Details&#x20;

<mark style="color:blue;">`GET`</mark> `/api/deposit-details`

Retrieve the deposit data details that are required to staking in the Ethereum staking contract by sending the UUID received in the Provisioning Request API.

#### Query Parameters

| Name                                          | Type   | Description                           |
| --------------------------------------------- | ------ | ------------------------------------- |
| provisionId<mark style="color:red;">\*</mark> | String | provisioning\_request\_uuid:YOUR UUID |
| page                                          | Number | page number to be fetched             |
| per\_page                                     | Number | Number of results per page            |

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

{% tabs %}
{% tab title="200: OK Response with deposit details " %}

```javascript
{
  "batch": false,
  "withdrawal_credentials": "0x010000000000000000000000a08c6c9e3d0e28e0e9ef17ce67899e8e06501dd2",
  "controllerAddress": "0x918D92fc2cA24379ba1EEa1dd1CA385Fc5C8df7c",
  "feeRecipient": "0x2A0e48522876DbD8B414E938cbE4e05FD6A23811",
  "validatorsCount": 2,
  "clientId": "1e40716f-b684-4dc7-a5a3-ba573a2a05de",
  "provisionId": "566afafa-4154-436e-a0aa-941de7e9bc53",
  "results": [
    {
      "validatorIndex": null,
      "validatorAddress": "0xb032c4194075e73126626e4d6a24a2f01db41f7cfc45e34a48a3f4dc38c52db790ef8818ea5b227277fa3747d312694e",
      "amount": 32000000000,
      "created": "2024-02-15T10:13:24.110Z",
      "status": "CREATED",
      "signature": "0x8fb4ce023e81d1113ee8f5cc962b248352c3ef9be0768e1262b5d0ec5c6d10ed59de826777cba411a2956c083885b05c18f574959c18f3b3ba7c1ca78420f1ee2f81195ff2441a517c36eedff25af86088e65057c57a91a0b4fbe51a8f448bbe",
      "deposit_data_root": "0x2bb2748126b0545b98001e36336952710a792a07fcd99f2462cf3c5c946394f4",
      "deposit_message_root": "0xaa28abd59101232a2eec07c97dfd38b7a0166f767202e56dc45dd99591388610",
      "fork_version": "0x00001020"
    },
    {
      "validatorIndex": null,
      "validatorAddress": "0x99f5759a47651b49b4a3ac6e718ba5e08a01d48c1ff6419bf561659e76c481f9fe93fb4b48dcad13a8ed21058c3d8a33",
      "amount": 32000000000,
      "created": "2024-02-15T10:13:24.110Z",
      "status": "CREATED",
      "signature": "0xafe703147da666044cc276e1cbae2543cf83578e814e692e7aab2cb9ed58679005c31fd7330a7bd8bf379d8ae326467b18f2515f053cc77cb3cbecc479c1cd00ad23054c71a1a40b4e7e2e555c7249628909176b2219bd5bf26aab70c948e490",
      "deposit_data_root": "0x123a26e89fcae9286fedd4ffe0caba245cfbe4f4a98a70c7016919bc77a76495",
      "deposit_message_root": "0x1f563a358f970e2d182d25f1b94f182b97b20cb912d457120ef06eb60a9f6f5b",
      "fork_version": "0x00001020"
    }
  ],
  "page": 1,
  "per_page": 10,
  "total": 2,
  "pages": 1
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
The validator index will be set to `null` until the validator gets activated on the Ethereum network.
{% endhint %}

### Sample Request

```bash
curl --location '{{url}}/api/deposit-details?page=1&per_page=10&provisionId=cd127302-570d-4b38-ba19-26ccf3a5dd2e' \
--header 'api-key: moSAd1Rk/dVJSjm/baRSq7RIfZW5c1PS0PngJL04nHs='
```

#### Types

#### Paginated Response Object

<table><thead><tr><th width="191.33333333333331">Field</th><th width="447">Description</th><th>Type</th></tr></thead><tbody><tr><td>batch</td><td>Batch Deposit. <code>batch</code> is set to <code>false</code> in this API</td><td>Boolean</td></tr><tr><td>withdrawal_credentials</td><td>Withdrawal credential is derived from the withdrawal address that's used for deposit to beacon deposit contract</td><td>String</td></tr><tr><td>controllerAddress</td><td>Address that can be used to sign the exit message</td><td>String</td></tr><tr><td>feeRecipient</td><td>fee Recipient address of the validator that receive EL rewards</td><td>String</td></tr><tr><td>validatorsCount</td><td>Number of validators created</td><td>Number</td></tr><tr><td>clientId</td><td>Partner identifier associated with the API key</td><td>String</td></tr><tr><td>provisionId</td><td>Unique identifier of provisioning request</td><td>String</td></tr><tr><td>result</td><td>Array of <a href="#deposit-details-object">deposit details objects</a></td><td>Array</td></tr><tr><td>page</td><td>Page number of fetched results</td><td>Number</td></tr><tr><td>per_page</td><td>Number of results per page</td><td>Number</td></tr><tr><td>pages</td><td>Total number of pages</td><td>Number</td></tr><tr><td>total</td><td>Number of results in total</td><td>Number</td></tr></tbody></table>

#### Deposit Details Object

<table><thead><tr><th width="216.33333333333331">Field</th><th width="449">Description</th><th>Type</th></tr></thead><tbody><tr><td>validatorIndex</td><td>Index of validator in associated provisioning request</td><td>Number</td></tr><tr><td>validatorAddress</td><td>Validator public key</td><td>String</td></tr><tr><td>amount</td><td>32 ETH </td><td>Number</td></tr><tr><td>created</td><td>Delegation object creation time</td><td>String</td></tr><tr><td>status</td><td><a href="#validator-status-enum">Validator Status</a></td><td>String</td></tr><tr><td>signature</td><td>Validator signature</td><td> String</td></tr><tr><td>deposit_data_root</td><td>Hash of the deposit data</td><td>String</td></tr><tr><td>deposit_message_root</td><td>Hash of the Merkle tree’s root</td><td>String</td></tr><tr><td>fork_version</td><td>The version of Ethereum fork</td><td>String</td></tr></tbody></table>

## Get Validator and Provision IDs

<mark style="color:blue;">`GET`</mark> `/api/users`

Fetch the provision IDs of validators associated with a client API key.

#### Query Parameters

| Name              | Type   | Description                             |
| ----------------- | ------ | --------------------------------------- |
| withdrawalAddress | String | withdrawal address as specified by user |
| page              | Number | page number to be fetched               |
| per\_page         | Number | Number of results per page              |

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API key provided by Luganodes |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "clientId": "5eccab77-2e4a-4b93-98d7-f179567bcd7e",
  "result": [
    {
      "validatorAddress": "0xb3db9b4688155a52d752ff58d97a80b860e56136d94b97c5e088561085f55cb1c389eb46b5eb2d42c873d608441f561f",
      "provisionId": "a4be819b-5035-4219-b4b7-838c972bc753",
      "withdrawalAddress": "0xa08c6C9e3d0E28E0E9Ef17cE67899e8E06501dD2",
      "withdrawal_credentials": "0x010000000000000000000000a08c6c9e3d0e28e0e9ef17ce67899e8e06501dd2",
      "controllerAddress": "0x918D92fc2cA24379ba1EEa1dd1CA385Fc5C8df7c",
      "feeRecipient": "0x2A0e48522876DbD8B414E938cbE4e05FD6A23811",
      "status": "CREATED",
      "createdAt": "2024-02-15T10:28:59.551Z",
      "validatorIndex": 0
    },
    {
      "validatorAddress": "0xadf01960b6accc2367f7532ec74719028907208c916e7be22b0bb0fe755df4a0e7e247969b964c4f7e5bd23a895c02e3",
      "provisionId": "a4be819b-5035-4219-b4b7-838c972bc753",
      "withdrawalAddress": "0xa08c6C9e3d0E28E0E9Ef17cE67899e8E06501dD2",
      "withdrawal_credentials": "0x010000000000000000000000a08c6c9e3d0e28e0e9ef17ce67899e8e06501dd2",
      "controllerAddress": "0x918D92fc2cA24379ba1EEa1dd1CA385Fc5C8df7c",
      "feeRecipient": "0x2A0e48522876DbD8B414E938cbE4e05FD6A23811",
      "status": "CREATED",
      "createdAt": "2024-02-15T10:28:59.551Z",
      "validatorIndex": 0
    }
  ]
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location --globoff '{{url}}/api/users?page=1&per_page=10' \
--header 'api-key: ee908371-d13b-43dd-ae33-b854dade5e9d'
```

#### Types

#### Paginated Response Object

<table><thead><tr><th width="143.33333333333331">Field</th><th width="447">Description</th><th>Type</th></tr></thead><tbody><tr><td>clientID</td><td>Partner identifier associated with api key</td><td>String</td></tr><tr><td>result</td><td>Array of <a href="#validator-result-object-1">Validator Objects</a></td><td>Array</td></tr><tr><td>page</td><td>Page of fetched results</td><td>Number</td></tr><tr><td>per_page</td><td>Number of results per page</td><td>Number</td></tr><tr><td>pages</td><td>Total number of pages</td><td>Number</td></tr><tr><td>total</td><td>Number of results in total</td><td>Number</td></tr></tbody></table>

#### Validator Result Object

<table><thead><tr><th width="198.33333333333331">Field</th><th width="447">Description</th><th>Type</th></tr></thead><tbody><tr><td>validatorAddress</td><td>Validator Public Key</td><td>String</td></tr><tr><td>withdrawalAddress</td><td>Withdrawal address as specified by user</td><td>String</td></tr><tr><td>controllerAddress</td><td>Address that can be used to sign the exit message</td><td>String</td></tr><tr><td>feeRecipient</td><td>fee Recipient address of the validator that receive EL rewards</td><td>String</td></tr><tr><td>provisionId</td><td>Unique identifier of provisioning request</td><td>String</td></tr><tr><td>created-at</td><td>Timestamp of the creation of the provision request</td><td>String</td></tr><tr><td>status</td><td><a href="#validator-status-enum">Validator Status</a></td><td>String</td></tr><tr><td>validatorIndex</td><td>Index of Validator on Ethereum chain. "0" if not deposited on chain. </td><td>Number</td></tr></tbody></table>

&#x20;

## Get Validator Count

<mark style="color:blue;">`GET`</mark> `/api/validators/count`

Returns the number of validators by their status.&#x20;

#### Query Parameters

| Name              | Type   | Description                             |
| ----------------- | ------ | --------------------------------------- |
| withdrawalAddress | String | withdrawal address as specified by user |
| page              | Number | page number to be fetched               |
| per\_page         | Number | Number of results per page              |

**Headers**

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API key provided by Luganodes |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "result": {
      "total": 100,
      "by_status": {
        "pending_initialized": 1,
        "pending_queued": 1,
        "active_ongoing": 0,
        "active_slashed": 0,
        "exited_unslashed": 0,
        "exited_slashed": 0,
        "withdrawal_possible": 94,
        "withdrawal_done": 1,
    }
  }
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location --globoff '{{url}}/api/validators/count' \
--header 'api-key: ee908371-d13b-43dd-ae33-b854dade5e9d'
```

#### Types

#### Result Object

<table><thead><tr><th width="143.33333333333331">Field</th><th width="447">Description</th><th>Type</th></tr></thead><tbody><tr><td>total</td><td>Total number of validators provisioned</td><td>Number</td></tr><tr><td>by_status</td><td>Array of validator count by status</td><td>Array</td></tr></tbody></table>

#### Status Object

<table><thead><tr><th width="201.33333333333331">Field</th><th width="447">Description</th><th>Type</th></tr></thead><tbody><tr><td>pending_initialized</td><td>First deposit is processed, but not enough funds are available to get validator into activation queue</td><td>Number</td></tr><tr><td>pending_queued</td><td>Validator is waiting to get activated, has enough funds while in the queue</td><td>Number</td></tr><tr><td>active_ongoing</td><td>Validator is currently active and has not initiated any exit</td><td>Number</td></tr><tr><td>active_slashed</td><td>Validator is still active but has a slashed status and is scheduled to exit</td><td>Number</td></tr><tr><td>exited_unslashed</td><td>Validator has reached exit epoch, currently not attesting and not slashed</td><td>Number</td></tr><tr><td>exited_slashed</td><td>Validator has reached exit epoch and was slashed</td><td>Number</td></tr><tr><td>withdrawal_possible</td><td>After validator has exited, the staked balance can be withdrawn </td><td>Number</td></tr><tr><td>withdrawal_done</td><td>Withdrawal has been processed </td><td>Number</td></tr></tbody></table>


# Data APIs

Data APIs for Ethereum

## Get Validator List

<mark style="color:blue;">`GET`</mark> `/api/validators/list`

Retrieves a list of validators optionally filtered by withdrawal address, or list of pubkeys. Returns an array of validator objects detailing balances, lifecycle, and validator info.

#### Header:

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Params:

| Parameter Name        | Description                                                  | Type    |
| --------------------- | ------------------------------------------------------------ | ------- |
| page                  | Page number                                                  | integer |
| per\_page             | <p>Number of results per page<br>(Default: 10, Max: 100)</p> | integer |
| withdrawal\_addresses | Filter validators by withdrawal addresses                    | array   |
| pubkeys               | Filter validators by an array of pubkeys                     | array   |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "results": [
    {
      "validator": {
        "fee_recipient": "0xaaa112...",
        "network": "HOODI",
        "pubkey": "0xaaa113...",
        "beacon_status": "active_ongoing",
        "withdrawal_address": "0xaaa114...",
        "withdrawal_credentials": "0x020000...",
        "index": 118324,
        "balances": {
          "current_staked": "32000000000"
        },
        "lifecycle": {
          "status_history": [
            { "status": "CREATED", "time": "2025-10-17T18:17:11Z" },
            { "status": "DEPOSITED", "time": "2025-10-17T20:51:36Z" },
            { "status": "PENDING", "time": "2025-10-18T13:29:36Z" },
            { "status": "ACTIVE", "time": "2025-10-19T06:27:12Z" },
            { "status": "EXIT_REQUESTED", "time": "2025-10-20T17:26:24Z" },
            { "status": "EXITED", "time": "2025-10-21T21:10:24Z" },
            { "status": "WITHDRAWAL_DONE", "time": "2025-10-23T06:08:00Z" }
          ]
        }
      }
    }
  ],
  "page": 1,
  "per_page": 10,
  "total": 1,
  "pages": 1
}

```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
The status history tracks the states the validator has transitioned through. An 'ACTIVE' validator will not include a 'WITHDRAWAL\_DONE' status in its history.
{% endhint %}

#### **Sample Request**

```bash
curl --location '{{url}}/api/validators/list?page=1&per_page=5&withdrawal_addresses=["address1","address2"]&pubkeys=["pubkey1","pubkey2"]' \
--header 'api-key: --your-api-key--'
```

#### Response Body

<table><thead><tr><th>Field Name</th><th width="249">Description</th><th>Type</th></tr></thead><tbody><tr><td>results</td><td>Array of validator objects</td><td>array</td></tr><tr><td>page</td><td>Current page</td><td>integer</td></tr><tr><td>per_page</td><td>Entries per page</td><td>integer</td></tr><tr><td>total</td><td>Total number of entries</td><td>integer</td></tr><tr><td>pages</td><td>Total number of pages</td><td>integer</td></tr></tbody></table>

#### Types:

#### Validator Object

| Field Path                          | Description                                       | Type          |
| ----------------------------------- | ------------------------------------------------- | ------------- |
| validator.fee\_recipient            | Address set for receiving rewards                 | string        |
| validator.network                   | The blockchain network (e.g., "HOODI", "MAINNET") | string        |
| validator.pubkey                    | Validator public key                              | string        |
| validator.beacon\_status            | Current Beacon Status of the validator            | string (enum) |
| validator.withdrawal\_address       | Withdrawal address                                | string        |
| validator.withdrawal\_credentials   | Withdrawal credentials                            | string        |
| validator.index                     | Validator Index                                   | integer       |
| validator.balances.current\_staked  | Validator’s current stake in Gwei                 | string        |
| validator.lifecycle.status\_history | Array of status objects with time stamps          | array         |

#### Status History

| Field Name | Description               | Type             |
| ---------- | ------------------------- | ---------------- |
| status     | Validator status string   | string (enum)    |
| time       | Timestamp of status entry | string (ISO8601) |

#### Validator Status History Enum

| Status           | Description                                     |
| ---------------- | ----------------------------------------------- |
| CREATED          | Validator was provisioned through Luganodes API |
| DEPOSITED        | Deposit waiting to be seen by the blockchain    |
| PENDING          | Validator is in the queue waiting to go live    |
| ACTIVE           | Validator is participating and earning rewards  |
| EXIT\_REQUESTED  | Exit has been requested by the client           |
| EXITED           | Validator has exited from the network           |
| WITHDRAWAL\_DONE | Withdrawal was successfully completed           |

#### Beacon Status Enum

| Status               | Description                                                                                              |
| -------------------- | -------------------------------------------------------------------------------------------------------- |
| pending\_initialized | Validator is recognized but hasn’t met the deposit requirements                                          |
| pending\_queued      | Validator has met deposit requirements and is waiting in the activation queue to become active           |
| active\_ongoing      | Validator is actively participating in block and attestation duties on the Beacon Chain                  |
| active\_exiting      | Validator has requested to exit (via voluntary exit) and is waiting for the exit to process              |
| active\_slashed      | Validator has been slashed for protocol violations but is still active until forced exit completes       |
| exited\_unslashed    | Validator has successfully exited without being slashed and is no longer participating                   |
| exited\_slashed      | Validator has exited after being slashed for misconduct. No longer participates and may lose stake       |
| withdrawal\_possible | All withdrawals are now available; validator can move funds from the beacon chain to the execution layer |
| withdrawal\_done     | Validator’s funds have been fully withdrawn                                                              |

## Rewards Overview

<mark style="color:blue;">`GET`</mark> `/api/rewards/overview`

Retrieves staking rewards overview data and staking APY statistics.

#### Header

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "network": "MAINNET",
  "provider": "Luganodes",
  "total_active_stake": "30421572100000",
  "total_cl_rewards": "381412000",
  "total_el_rewards": "119607000",
  "apy_7d": 3.16,
  "apy_30d": 3.09,
  "apy_365d": 3.27
}
```

{% endtab %}
{% endtabs %}

#### Sample request

```bash
curl --location '{{url}}/api/rewards/overview' \
--header 'api-key: --your-api-key--'
```

#### Response Body

| Field Name           | Description                                       | Type   |
| -------------------- | ------------------------------------------------- | ------ |
| network              | The blockchain network (e.g., "HOODI", "MAINNET") | string |
| provider             | Name of staking provider                          | string |
| total\_active\_stake | Total ETH actively staked in Gwei                 | string |
| total\_cl\_rewards   | Total consensus layer rewards in Gwei             | string |
| total\_el\_rewards   | Total execution layer rewards in Gwei             | string |
| apy\_7d              | Annualized % yield across past 7 days (%)         | number |
| apy\_30d             | Annualized % yield across past 30 days (%)        | number |
| apy\_365d            | Annualized % yield across past 365 days (%)       | number |

## Rewards: Epoch Wise

<mark style="color:blue;">`GET`</mark> `/api/rewards/epoch`

Retrieves staking rewards for a range of epochs specified by start\_epoch and end\_epoch query parameters. Returns aggregated rewards and detailed validator reward breakdown per epoch.

#### Header

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Params

| Parameter Name                                 | Description                                        | Type    |
| ---------------------------------------------- | -------------------------------------------------- | ------- |
| start\_epoch<mark style="color:red;">\*</mark> | Epoch number to start query range                  | integer |
| end\_epoch<mark style="color:red;">\*</mark>   | Epoch number to end query range                    | integer |
| page                                           | Page number                                        | integer |
| per\_page                                      | Number of results per page (Default: 10, Max: 100) | integer |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "start_epoch": 990011,
  "end_epoch": 990014,
  "total_cl_rewards": "16000000",
  "total_el_rewards": "32000000",
  "interval_summary": [
    {
      "epoch": 990011,
      "timestamp": "2025-10-20T06:08:00Z",
      "validators": [
        {
          "pubkey": "0xd85f01ef...",
          "index": 84312,
          "cl_reward": "31000000",
          "el_reward": "8000000"
        },
        {
          "pubkey": "0xab77a17c...",
          "index": 84313,
          "cl_reward": "29000000",
          "el_reward": "6000000"
        }
      ]
    }
  ],
  "page": 1,
  "per_page": 100,
  "total": 1,
  "pages": 1
}

```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/api/rewards/epoch?start_epoch=990011&end_epoch=990014' \
--header 'api-key: --your-api-key--'
```

#### Response Body

<table><thead><tr><th>Field Name</th><th width="249">Description</th><th>Type</th></tr></thead><tbody><tr><td>start_epoch</td><td>Starting epoch for rewards interval</td><td>integer</td></tr><tr><td>end_epoch</td><td>Ending epoch for rewards interval</td><td>integer</td></tr><tr><td>total_cl_rewards</td><td>Total consensus layer rewards earned in Gwei</td><td>string</td></tr><tr><td>total_el_rewards</td><td>Total execution layer rewards earned in Gwei</td><td>string</td></tr><tr><td>interval_summary</td><td>Array of per-epoch reward summary objects</td><td>array</td></tr><tr><td>page</td><td>Current page</td><td>integer</td></tr><tr><td>per_page</td><td>Entries per page</td><td>integer</td></tr><tr><td>total</td><td>Total number of entries</td><td>integer</td></tr><tr><td>pages</td><td>Total number of pages</td><td>integer</td></tr></tbody></table>

#### Interval Summary Table

| Field Name | Description                         | Type             |
| ---------- | ----------------------------------- | ---------------- |
| epoch      | Epoch number                        | integer          |
| timestamp  | UTC timestamp of the epoch          | string(ISO 8601) |
| validators | Array of validator reward breakdown | array            |

#### Validator Reward Object

| Field Name | Description                                        | Type    |
| ---------- | -------------------------------------------------- | ------- |
| pubkey     | Validator public key                               | string  |
| cl\_reward | Consensus layer reward earned by validator in Gwei | string  |
| el\_reward | Execution layer reward earned by validator in Gwei | string  |
| index      | Validator index                                    | integer |

## Rewards: Date Wise

<mark style="color:blue;">`GET`</mark> `/api/rewards/date`

Retrieves staking rewards aggregated by date intervals. Supports aggregation intervals: 1d, 7d, 30d, filtered by start\_date and end\_date parameters.

#### Header

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Params

| Parameter Name                                | Description                                                  | Type    |
| --------------------------------------------- | ------------------------------------------------------------ | ------- |
| start\_date<mark style="color:red;">\*</mark> | Start date of reward aggregation period (format: YYYY-MM-DD) | string  |
| end\_date<mark style="color:red;">\*</mark>   | End date of reward aggregation period (format: YYYY-MM-DD)   | string  |
| interval\*                                    | Aggregation frequency: "1d", "7d", or "30d"                  | string  |
| page                                          | Page number                                                  | integer |
| per\_page                                     | Number of results per page (Default: 10, Max: 100)           | integer |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "start_date": "2025-10-20T00:00:00Z",
  "end_date": "2025-10-22T00:00:00Z",
  "total_cl_rewards": "402000000",
  "total_el_rewards": "93000000",
  "interval_summary": [
    {
      "date": "2025-10-20",
      "validators": [
        {
          "pubkey": "0xd85f01ef...",
          "index": 84312,
          "cl_reward": "21000000",
          "el_reward": "4000000"
        },
        {
          "pubkey": "0xab77a17c...",
          "index": 84313,
          "cl_reward": "19000000",
          "el_reward": "3000000"
        }
      ]
    }
  ],
  "page": 1,
  "per_page": 100,
  "total": 1,
  "pages": 1
}

```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/api/rewards/date?start_date=2025-10-02&end_date=2025-10-04&interval=1d' \
--header 'api-key: --your-api-key--'
```

#### Response Body

| Field Name         | Description                                                  | Type    |
| ------------------ | ------------------------------------------------------------ | ------- |
| start\_date        | Start date/time of aggregation window (ISO 8601)             | string  |
| end\_date          | End date/time of aggregation window (ISO 8601)               | string  |
| total\_cl\_rewards | Total consensus layer rewards in aggregation window in Gwei  | string  |
| total\_el\_rewards | Total execution layer rewards in aggregation window in Gwei  | string  |
| interval\_summary  | Array of intervals (daily, weekly, monthly) reward summaries | array   |
| page               | Current page                                                 | integer |
| per\_page          | Entries per page                                             | integer |
| total              | Total number of entries                                      | integer |
| pages              | Total number of pages                                        | integer |

#### Interval Summary Table

| Field Name | Description                                        | Type   |
| ---------- | -------------------------------------------------- | ------ |
| date       | Date representing the interval (YYYY-MM-DD)        | string |
| validators | Array of validator reward objects for the interval | array  |

#### Validator Reward Object

| Field Name | Description                                        | Type    |
| ---------- | -------------------------------------------------- | ------- |
| pubkey     | Validator public key                               | string  |
| cl\_reward | Consensus layer reward earned by validator in Gwei | string  |
| el\_reward | Execution layer reward earned by validator in Gwei | string  |
| index      | Validator index                                    | integer |

## Transactions

<mark style="color:blue;">`GET`</mark> `/api/transactions`

Retrieves a list of transactions filtered optionally by validator pubkeys.

***

#### Header

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Params

| Parameter Name | Description                                        | Type    |
| -------------- | -------------------------------------------------- | ------- |
| pubkeys        | Filter transactions by validator pubkeys (array)   | array   |
| page           | Page number                                        | integer |
| per\_page      | Number of results per page (Default: 10, Max: 100) | integer |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "results": [
    {
      "transactionHash": "0xaaa...",
      "blockNumber": 662122,
      "blockTimestamp": 1750689480,
      "data": "0xaaa...",
      "fee": "102894",
      "from": "0xaaa...",
      "layer": "EXECUTION_LAYER",
      "type": "CONSOLIDATE",
      "pubkey": null,
      "sourcePubkey": "0xaaa...",
      "targetPubkey": "0xaaa...",
      "amount": null,
      "withdrawalAddress": "0xaaa...",
      "withdrawalCredentials": null,
      "to": "0xaaa..."
    },
    {
      "transactionHash": "0xbbb...",
      "blockNumber": 594779,
      "blockTimestamp": 1749816804,
      "data": "0xaaa...",
      "fee": "86157",
      "from": "0xaaa...",
      "layer": "EXECUTION_LAYER",
      "type": "PARTIAL_EXIT",
      "pubkey": "0xaaa...",
      "sourcePubkey": null,
      "targetPubkey": null,
      "amount": "10000000000",
      "withdrawalAddress": null,
      "withdrawalCredentials": null,
      "to": "0xaaa..."
    },
    {
      "transactionHash": "0xccc...",
      "blockNumber": 594641,
      "blockTimestamp": 1749815040,
      "data": "0xaaa...",
      "fee": "89400",
      "from": "0xaaa...",
      "layer": "EXECUTION_LAYER",
      "type": "PARTIAL_EXIT",
      "pubkey": "0xaaa...",
      "sourcePubkey": null,
      "targetPubkey": null,
      "amount": "120000000",
      "withdrawalAddress": null,
      "withdrawalCredentials": null,
      "to": "0xaaa..."
    },
    {
      "transactionHash": "0xddd...",
      "blockNumber": 2025644,
      "blockTimestamp": 1768336188,
      "data": "0xaaa...",
      "fee": "138609",
      "from": "0xaaa...",
      "layer": "EXECUTION_LAYER",
      "type": "FULL_WITHDRAWAL",
      "pubkey": "0xaaa...",
      "sourcePubkey": null,
      "targetPubkey": null,
      "amount": null,
      "withdrawalAddress": null,
      "withdrawalCredentials": null,
      "to": "0xaaa..."
    }
  ],
  "page": 1,
  "per_page": 10,
  "total": 6,
  "pages": 1
}

```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/api/transactions?pubkeys=["0xabc123","0xdef456"]&page=1&per_page=10' \
--header 'api-key: --your-api-key--'
```

#### Response Body

| Field Name | Description                  | Type    |
| ---------- | ---------------------------- | ------- |
| results    | Array of transaction objects | array   |
| page       | Current page                 | integer |
| per\_page  | Entries per page             | integer |
| total      | Total number of entries      | integer |
| pages      | Total number of pages        | integer |

#### Transaction Object

| Field Name            | Description                                            | Type          |
| --------------------- | ------------------------------------------------------ | ------------- |
| transactionHash       | Unique transaction hash                                | string        |
| blockNumber           | Block number for the transaction                       | integer       |
| blockTimestamp        | Timestamp of the block (Unix timestamp)                | integer       |
| data                  | Transaction data                                       | string        |
| fee                   | Transaction fee in gwei                                | string        |
| from                  | Sender address                                         | string        |
| layer                 | Layer that the transaction was done on                 | string (enum) |
| type                  | Type of transaction                                    | string (enum) |
| pubkey                | Validator pubkey                                       | string        |
| sourcePubkey          | Consolidation/Switch source validator pubkey           | string        |
| targetPubkey          | Consolidation/Switch target validator pubkey           | string        |
| amount                | Amount in Gwei                                         | string        |
| withdrawalAddress     | Execution-layer withdrawal address for this validator  | string        |
| withdrawalCredentials | Consensus-layer withdrawal credentials (32‑byte value) | string        |
| to                    | Recipient address                                      | string        |

#### Transaction Types

| Enum Value       | Description                                                        |
| ---------------- | ------------------------------------------------------------------ |
| DEPOSIT          | Initial or subsequent deposit of ETH to validator staking contract |
| PARTIAL\_EXIT    | Partial withdrawal of funds from the validator                     |
| FULL\_WITHDRAWAL | Full withdrawal of all funds from the validator                    |
| CONSOLIDATE      | Consolidation of two validators into a single 0x02 validator       |
| SWITCH           | Upgrade of validator withdrawal credentials to 0x02                |

#### Transaction Layers

| Enum Value       | Description                                        |
| ---------------- | -------------------------------------------------- |
| EXECUTION\_LAYER | Transaction was done on the Execution Layer, or EL |
| CONSENSUS\_LAYER | Transaction was done on the Consensus Layer, or CL |


# Consolidation & Switch

Simplify your validator operations

### What is Consolidation and Switching ?

Pectra EIP 7251 enables consolidation of stake from multiple validators into a single validator with a maximum effective balance of 2048 ETH. This operations moves stake from multiple validators into a single validator without having to exit the validators from the network.&#x20;

Switching operations are performed to convert validators with 0x01 type withdrawal credentials to 0x02 type withdrawal credentials in order to be eligible for auto-compounding and partial withdrawals.&#x20;

## API Reference

* [Consolidation Request](#consolidation-request)
  * [Sample Request](#sample-request)
  * [Types](#types)
    * [Consolidate Response Object](#consolidate-response-object)
* [Switch Request](#switch-request)
  * [Sample Request](#sample-request-1)
  * [Types](#types-1)
    * [Switch Response Object](#switch-response-object)

## Consolidation Request

<mark style="color:green;">`POST`</mark> `/validators/consolidate`

Submits a consolidate request to generate an unsigned transaction. This transaction needs to be signed by the validator withdrawal address and broadcasted to the network to trigger consolidation.<br>

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Request Body

| Name                                           | Type   | Description                        |
| ---------------------------------------------- | ------ | ---------------------------------- |
| sourcePubKey<mark style="color:red;">\*</mark> | String | Public address of source validator |
| targetPubKey<mark style="color:red;">\*</mark> | String | Public address of target validator |

{% tabs %}
{% tab title="200: OK Consolidate Response Object" %}

```json
{
    "message": "Consolidation request transaction created successfully",
    "consolidationRequestTrx": {
        "to": "0x0000bbddc7ce488642fb579f8b00f3a590007251",
        "data": "0x9838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f973b5a2635ef8d420a0c5d23341c638dd11a500aefa8f7d9fc1f726edbf8163f4e0b727f47faa57b91af50c13e863f13142",
        "value": 1,
        "nonce": 54,
        "gasLimit": 100000,
        "maxFeePerGas": "2297448015",
        "maxPriorityFeePerGas": "84044341",
        "type": 2,
        "chainId": "560048"
    },
    "unsignedTx": "0x02f87883088bb0368405026a358488f0464f830186a08001b8609838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f973b5a2635ef8d420a0c5d23341c638dd11a500aefa8f7d9fc1f726edbf8163f4e0b727f47faa57b91af50c13e863f13142c0"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Consolidation operations can be performed for one source and one target validator at a time.  If you want to perform batch operations, you can use our [CLI](/tools-and-services/ethereum/pectra-cli).
{% endhint %}

#### **Sample Request**

```bash
curl --location '{{url}}/api/validators/consolidate' \
--header 'api-key: 7f9c2b4a1e6d4c8fb3a9d0e5c2f18a47c91b6d3a2f0e8c4b9a5d1e7f2=' \
--data '{
    "sourcePubKey": "0x9838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f973",
    "targetPubKey": "0xb5a2635ef8d420a0c5d23341c638dd11a500aefa8f7d9fc1f726edbf8163f4e0b727f47faa57b91af50c13e863f13142"
}'
```

#### **Types**

#### Consolidate Response Object

<table><thead><tr><th width="216.13020833333331">Property</th><th width="469">Description</th><th>Type</th></tr></thead><tbody><tr><td>message</td><td>Transaction generation status</td><td>String</td></tr><tr><td>consolidationRequestTrx</td><td>Transaction Object</td><td>Object</td></tr><tr><td>unsignedTx</td><td>Unsigned transaction object which needs to be signed wiith the validator withdrawal address</td><td>String</td></tr></tbody></table>

## Switch Request

<mark style="color:green;">`POST`</mark> `/validators/switch`

Submits a switch request to generate an unsigned transaction which needs to be signed with the validators withdrawal address and broadcasted to the network. This operation will convert your validators 0x01 withdrawal credentials to 0x02 type.<br>

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Request Body

| Name                                     | Type   | Description                  |
| ---------------------------------------- | ------ | ---------------------------- |
| pubKey<mark style="color:red;">\*</mark> | String | Public address of  validator |

{% tabs %}
{% tab title="200: OK Switch Response Object" %}

```json
{
    "message": "Validator switch request txn created successfully",
    "switchRequestTrx": {
        "to": "0x0000bbddc7ce488642fb579f8b00f3a590007251",
        "data": "0x9838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f9739838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f973",
        "value": "11",
        "nonce": 60,
        "gasLimit": 100000,
        "maxFeePerGas": "2267675245",
        "maxPriorityFeePerGas": "87740461",
        "type": 2,
        "chainId": "560048"
    },
    "unsignedTx": "0x02f88c83088bb03c84053ad02d848729fa6d830186a0940000bbddc7ce488642fb579f8b00f3a5900072510bb8609838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f9739838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f973c0"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Switch operations can be performed for one validator at a time.  If you want to perform batch operations, you can use our [CLI](/tools-and-services/ethereum/pectra-cli).
{% endhint %}

#### **Sample Request**

```bash
curl --location '{{url}}/api/validators/switch' \
--header 'api-key: 7f9c2b4a1e6d4c8fb3a9d0e5c2f18a47c91b6d3a2f0e8c4b9a5d1e7f2=' \
--data '{
    "pubKey": "0x9838f66ccbe1dcd40b31e619c8fdd6aa3ce1e4f8c5ba0eb04776202612d4898f9967de72983711297b1af0868c73f973"
}'
```

#### **Types**

#### Switch Response Object

<table><thead><tr><th width="216.13020833333331">Property</th><th width="469">Description</th><th>Type</th></tr></thead><tbody><tr><td>message</td><td>Transaction generation status</td><td>String</td></tr><tr><td>switchRequestTrx</td><td>Transaction Object</td><td>Object</td></tr><tr><td>unsignedTx</td><td>Unsigned transaction object which needs to be signed wiith the validator withdrawal address</td><td>String</td></tr></tbody></table>


# Exits

Learn how to initiate the validator unstaking process

* [Via Intent](#via-intent)
  * [How voluntary exiting works ](#how-voluntary-exiting-works)
  * [Request Luganodes to submit exits](#request-luganodes-to-submit-exits)
  * [Generate an exit message](#generate-exit-message)
* [Via Wtihdrawal Address](#via-wtihdrawal-address)
  * [Parital Exit Request](#partial-exit-request)
    * [Sample Request](#sample-request-1)
    * [Types](#types-1)
      * [Parital Exit Response Object](#partial-exit-response-object)

### Via Intent

### How voluntary exiting works

To initiate unstaking, validators are required to perform a `SignedVoluntaryExit` transaction, where the transaction is signed using Luganodes' validator keys.&#x20;

Exiting validators must submit a signed challenge with relevant validator information. Thereafter, the `createAndSignChallenge` function generates the necessary signature for the exit API request, relying on validator indexes (found in the Get Delegation object response) and the withdrawal address.

We have created a script to perform the aforementioned operations with ease.

#### Script to create a Signed Challenge

{% hint style="info" %}
**Note:** `controllerAddress` can be used alternatively to the `withdrawalAddress` in the script below
{% endhint %}

```javascript
// Install ethers package using a package manager (eg. NPM, YARN)
import {
  BaseWallet,
  SigningKey,
  hashMessage,
  hexlify,
  toUtf8Bytes,
} from 'ethers';

const createAndSignChallenge = async (
  validatorIndexes,
  privateKeyOfWithdrawalAdd,
  withdrawalAddress,
) => {
  const wallet = new BaseWallet(new SigningKey(privateKeyOfWithdrawalAdd));

  // challenge that needs to be signed
  const challenge = JSON.stringify(
    {
      intentToExit:
        'I am signing this message and requesting that Luganodes exit the following validators from the network',
      validatorIndexes, // REQUIRED: list of validator indexes
      date: Date.now().toString(), // optional, timestamp this was signed
      address: withdrawalAddress, // REQUIRED: the signing address
    },
    null,
    2,
  );
  const sign = wallet.signMessageSync(hashMessage(challenge));

  console.log('signature: ', sign);

  // packedChallenge
  const packedChallenge = hexlify(
    toUtf8Bytes(
      '\u0019Ethereum Signed Message:\n' +
        challenge.length.toString() +
        challenge,
    ),
  );
  console.log('packed_challenge', packedChallenge);
};

  
await createAndSignChallenge(
    validatorIndexes, //[0, 2]
    privateKeyOfWithdrawalAdd, 
    withdrawalAddress, 
  );
```

## Request Luganodes to submit exits

<mark style="color:green;">`POST`</mark> `/api/exit`

Request Luganodes to exit a set of validators for a given withdrawal address. The list of validators comes from a challenge that must be signed with the withdrawal address. See the above code snippet for constructing the body for this method.

**NOTE:** If the challenge and signature check out, this submits the voluntary exits and will initiate the process for exiting validators. This method does not return the voluntary exits.

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Parameters

| Name                                  | Type   | Description                                                            |
| ------------------------------------- | ------ | ---------------------------------------------------------------------- |
| key<mark style="color:red;">\*</mark> | String | The public address of the withdrawal key or the controller key to exit |

#### Request Body

| Name                                        | Type   | Description                                     |
| ------------------------------------------- | ------ | ----------------------------------------------- |
| challenge<mark style="color:red;">\*</mark> | String | The packed challenge formed using above snippet |
| signature<mark style="color:red;">\*</mark> | String | The packed signature formed using above snippet |

{% tabs %}
{% tab title="200: OK Success" %}

```json
{
  "message": "exit request is under processing for these validators",
  "validators": [
    {
      "pubKey": "0xa8b4286511612eccb9f5834f278300fd389d5490d2c53c7674826959a1e2113e8dad87cdc357da16f9461473d82bff73",
      "validatorIndex": 1123,
      "provisionId": "a62c7c43-faf7-4fd8-908e-1791c6d8c257"
    }
  ]
}
```

{% endtab %}

{% tab title="400: Bad Request " %}

```json
{
    "success": false,
    "status": 400,
    "message": "validators are already in one of the exit states"
}
```

{% endtab %}
{% endtabs %}

```json
// Example request body

{
    "signature":"0xba56185cea6b6f1bd9fc7bda51656a2136e19958d79718ff13c99cec82d36a9f5280784717a0579c5a7294a3778e7d0a00039b5a51d4e85cae25ebc14130dd691c",
    "challenge":"0x19457468657265756d205369676e6564204d6573736167653a0a3234347b0a202022696e74656e74546f45786974223a20224920616d207369676e696e672074686973206d65737361676520616e642072657175657374696e672074686174205374616b656420657869742074686520666f6c6c6f77696e672076616c696461746f72732066726f6d20746865206e6574776f726b222c0a20202276616c696461746f72496e6465786573223a205b0a20202020300a20205d2c0a20202264617465223a202231363838373137333039383136222c0a20202261646472657373223a2022307861303863364339653364304532384530453945663137634536373839396538453036353031644432220a7d"
}
```

## Generate Exit Message&#x20;

<mark style="color:green;">`POST`</mark> `/api/exit/message`&#x20;

Request Luganodes to generate an exit message for a set of validators for a given withdrawal address. This message can be broadcasted over the network through an RPC call. The list of validators comes from a challenge that must be signed with the withdrawal address.&#x20;

**NOTE:**  This method requires the exit message to be broadcasted through an RPC call. If RPC response is "null", then the exit message has been successfully broadcasted.&#x20;

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Parameters

| Name                                  | Type   | Description                                                            |
| ------------------------------------- | ------ | ---------------------------------------------------------------------- |
| key<mark style="color:red;">\*</mark> | String | The public address of the withdrawal key or the controller key to exit |

#### Request Body

| Name                                        | Type   | Description                                     |
| ------------------------------------------- | ------ | ----------------------------------------------- |
| challenge<mark style="color:red;">\*</mark> | String | The packed challenge formed using above snippet |
| signature<mark style="color:red;">\*</mark> | String | The packed signature formed using above snippet |

{% tabs %}
{% tab title="200: OK Success" %}

```json
{
    "message": "Exit message(s) created",
    "result": {
        "validatorIndexes": [
            1792413
        ],
        "exitMessages": [
            {
                "message": {
                    "epoch": 0,
                    "validator_index": 1792413
                },
                "signature": "0x90415852edac40501f8c233149cf2c92d1604124c9cbb9b91b4beac0fac5a0d8376b75f0a3a6b7faede07af0dce1edf705bcdf3f9d1d8a124ca73d089ec777a3c15a033c4c8c13ffd9390da0cb1c511f881f0753e6afc724b922d33a76de2d6b"
            }
        ]
    },
    "page": 1,
    "per_page": 100,
    "total": 1,
    "pages": 1
}
```

{% endtab %}
{% endtabs %}

```json
// Example request body

{
    "signature":"0xba56185cea6b6f1bd9fc7bda51656a2136e19958d79718ff13c99cec82d36a9f5280784717a0579c5a7294a3778e7d0a00039b5a51d4e85cae25ebc14130dd691c",
    "challenge":"0x19457468657265756d205369676e6564204d6573736167653a0a3234347b0a202022696e74656e74546f45786974223a20224920616d207369676e696e672074686973206d65737361676520616e642072657175657374696e672074686174205374616b656420657869742074686520666f6c6c6f77696e672076616c696461746f72732066726f6d20746865206e6574776f726b222c0a20202276616c696461746f72496e6465786573223a205b0a20202020300a20205d2c0a20202264617465223a202231363838373137333039383136222c0a20202261646472657373223a2022307861303863364339653364304532384530453945663137634536373839396538453036353031644432220a7d"
}
```

### Via Withdrawal Address

## Partial Exit Request&#x20;

<mark style="color:green;">`POST`</mark> `/api/exit/partial`&#x20;

Client can call this API to generate an unsigned transaction to perform partial withdrawals. This unsigned transaction needs to be signed by the validator withdrawal address and broadcasted to the network.

#### Headers

| Name                                      | Type   | Description                   |
| ----------------------------------------- | ------ | ----------------------------- |
| api-key<mark style="color:red;">\*</mark> | String | API Key provided by Luganodes |

#### Query Parameters

| Name                                  | Type   | Description                                                            |
| ------------------------------------- | ------ | ---------------------------------------------------------------------- |
| key<mark style="color:red;">\*</mark> | String | The public address of the withdrawal key or the controller key to exit |

#### Request Body

| Name                                               | Type   | Description                     |
| -------------------------------------------------- | ------ | ------------------------------- |
| validatorPubKey<mark style="color:red;">\*</mark>  | String | Public address of validator     |
| amountToWithdraw<mark style="color:red;">\*</mark> | Number | Amount of stake to be withdrawn |

{% tabs %}
{% tab title="200: OK Partial Exit Response" %}

```json

    "message": "Partial exit transaction created",
    "result": {
        "validatorPubKey": "0x8e44dac3019bc8128a86b16c5e7012a4dc763718dc9a31e3b2df6c18bb72b7cf5a08cabd03fea42c9f1aa9d2f234c1f8",
        "amountToWithdraw": "1",
        "withdrawalAddress": "0x8C24B68141552e0844354B0b638031918CAAFaeB",
        "unsignedTx": "0x02f85083088bb0368403b0be13848360bf63830186a08001b8388e44dac3019bc8128a86b16c5e7012a4dc763718dc9a31e3b2df6c18bb72b7cf5a08cabd03fea42c9f1aa9d2f234c1f8000000003b9aca00c0",
        "partialExitRequestTrx": {
            "data": "0x8e44dac3019bc8128a86b16c5e7012a4dc763718dc9a31e3b2df6c18bb72b7cf5a08cabd03fea42c9f1aa9d2f234c1f8000000003b9aca00",
            "value": 1,
            "nonce": 54,
            "gasLimit": 100000,
            "maxFeePerGas": "2204155747",
            "maxPriorityFeePerGas": "61914643",
            "type": 2,
            "chainId": "560048"
        }
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Partial exit operations can be performed for one validator at a time. If you want to perform batch operations, you can use our [CLI](/tools-and-services/ethereum/pectra-cli).
{% endhint %}

```json
// Example request body

{
    "validatorPubKey": "0x8e44dac3019bc8128a86b16c5e7012a4dc763718dc9a31e3b2df6c18bb72b7cf5a08cabd03fea42c9f1aa9d2f234c1f8",
    "amountToWithdraw": "1"
}
```

### Types

### Partial Exit Response Object

<table><thead><tr><th width="216.13020833333331">Property</th><th width="469">Description</th><th>Type</th></tr></thead><tbody><tr><td>message</td><td>Transaction generation status</td><td>String</td></tr><tr><td>result</td><td>Result Object</td><td>Object</td></tr></tbody></table>

### Result Object

<table><thead><tr><th width="216.13020833333331">Property</th><th width="469">Description</th><th>Type</th></tr></thead><tbody><tr><td>validatorPubKey</td><td>Public address of validator</td><td>String</td></tr><tr><td>amountToWithdraw</td><td>Amount of stake to be withdrawn<br><br>NOTE: Amount resulting in the validator's balance below 32 ETH is not allowed.</td><td>Object</td></tr><tr><td>unsignedTx</td><td>Unsigned transaction object which needs to be signed wiith the validator withdrawal address</td><td>String</td></tr><tr><td>withdrawalAddress</td><td>Withdrawal Address of validator</td><td>String</td></tr><tr><td>partialRequestTrx</td><td>Transaction Object</td><td>Object</td></tr></tbody></table>


# FAQs

Easy answers to difficult questions

## Pectra Upgrade

<details>

<summary>How much ETH can be staked ?</summary>

* You can stake a minimum of 32 ETH and a maximum of 2048 ETH per validator.&#x20;
* Additionally, clients can use our APIs to distribute stake across validators through our updated node provisioning APIs.

</details>

<details>

<summary>How long does it take for a validator to become live?</summary>

Previously, there was a 16-24hr waiting period for deposits to be processed on the beacon chain. This delay has been reduced considerably to \~13 minutes.

</details>

<details>

<summary>What will happen to my validators after Pectra ?<br></summary>

* Existing validators have the option to continue earning rewards with their 0x01 withdrawal addresses. They also have the option to convert their 0x01 addresses to 0x02 type withdrawals addresses in order to auto-compound their rewards and be eligible for partial exits.
* Validators also have the option to consolidate their stake into a single validator upto 2048 ETH. Consolidation can be only done for one source and target validator.&#x20;

</details>

<details>

<summary>What will happen to my rewards after Pectra ?<br></summary>

* Validators will still continue earning rewards if they do not decide to consolidate or switch their withdrawal addresses.&#x20;
* However, validators will need to switch their withdrawal addresses to 0x02 type if they want to auto-compound their rewards.&#x20;

</details>

<details>

<summary>Are there any changes to Withdrawals ?</summary>

* Previously, withdrawals required validator keys for exit message generation. Post Pectra, withdrawals can be triggered through the execution layer by the withdrawal address. This is only applicable to validators with 0x02 type withdrawal credentials.
* Reward sweep will only happen at the new maximum effective balance of 2048 ETH, hence clients will have the perform partial withdrawals from the stake balance in order to withdraw rewards.

</details>

<details>

<summary>Will validators earn more rewards if they consolidate their rewards ?</summary>

Yes, there is a minor increase in rewards due to auto-compounding. However, the probability of being chosen as a block proposer remains the same and will be based on the effective balance of the validator. \
\
Ex: 10 validators with 32 ETH will have the same probability of producing blocks as 1 validators with 320 ETH.

</details>

<details>

<summary>Are there any changes to slashing in the Pectra Upgrade?</summary>

* The penalty for a slashed validator will decrease from 1/32 of the validator’s balance to 1/4096. For a validator with 32 ETH as the effective balance, the immediate penalty for slashing will drop significantly, from approximately 1 ETH to 0.008 ETH.&#x20;
* Attestation penalty increases linearly with the effective balances.
* The formula for correlation penality remains the same as mentioned [here](#how-much-are-the-slashing-penalties). However, correlation penalties were calculated using integer-based thresholds, meaning smaller-scale network-wide slashing events often resulted in no penalty for validators. Post-Pectra, floating-point precision ensures that every slashed validator incurs a correlation penalty, which scales linearly with the extent of network-wide slashing.

</details>

<details>

<summary>How long does it take to consolidate my validators?</summary>

When consolidation is triggered, source validator enters the exit queue. You can check exit queue durations [here](#how-long-does-it-take-to-exit-a-validator). \
\
A surplus of the exit churn ( 256 ETH ) is used to process consolidation requests and number of consolidation requests are restricted to 2 per block.&#x20;

</details>

<details>

<summary>Will I earn rewards when I consolidate my validators?</summary>

When consolidation is triggered, source validator starts enters the exit queue and will continue to earn rewards until it has exited from the network. Target validator will acquire stake of source validator once source validator has exited from the network. <br>

</details>

## Staking/Deposit

<details>

<summary><strong>How much ETH can be staked?</strong></summary>

* You can stake a minimum of 32 ETH and a maximum of 2048 ETH.
* Users also have the option to stake with classic configuration ( 32 ETH per validator )
* A maximum of 100 validators (or 3200 ETH) can be staked in a single request. You can stake more with multiple requests and there’s no limit.

</details>

<details>

<summary>How can you stake Ethereum with Luganodes?</summary>

You can choose to enable staking either by utilizing Luganodes APIs (recommended) or by directly staking through the Ethereum launchpad at <https://launchpad.ethereum.org/en/>.

For comprehensive details about the APIs, please consult the API documentation available [here](broken://pages/LMCyKIUSmQcDgTxLie7C).

</details>

<details>

<summary>Is staking with Luganodes non-custodial?</summary>

Yes, staking with Luganodes is completely non-custodial. Lugaondes doesnt maintain the custody of your funds or the private key of the withdrawal address<br>

</details>

<details>

<summary>How long does it take for a validator to become live and start earning rewards?</summary>

&#x20;The activation time for a validator depends on two factors:

1. **Deposit Time:** It takes approximately 13 minutes for the ETH to be confirmed on the beacon chain. In this duration, 65 blocks are added to the network (which ensures that the transaction was not missed in any potential reorgs) and 2 epochs occur which help with the verification of the deposit details.
2. **Entry Queue:** Depending on the total number of deposits, validators wait in a queue. With approximately 57,600 ETH activated per day (subject to change based on network conditions), the wait time is calculated based on the stake in the queue. For instance, if 192,000 ETH is in in the queue, it will take about 3.33 days (192000/57600) for the stake to go live. <br>

For real-time wait time information, please contact our team. We shall reach out to you promptly.

</details>

<details>

<summary>What is the withdrawal address?</summary>

A withdrawal address is the address which will receive the staked ETH and all the rewards after the unstaking process. To initiate the unstaking process, and to access the rewards, the client must ensure that they have the private key for the withdrawal address. It's important to note that Luganodes does not have any access or exposure to the client's withdrawal private key.

</details>

<details>

<summary>Can the withdrawal address be changed after depositing the ETH in the ETH Staking contract?</summary>

It cannot be changed if the withdrawal address was already set.

</details>

## Rewards

<details>

<summary>What is the staking APR?</summary>

On an average, Ethereum provides an APR of 3.43%.

</details>

<details>

<summary>How are the total rewards calculated?</summary>

Total staking rewards consist of consensus layer rewards and execution layer rewards

1. **Consensus layer rewards:** Rewards received by validators for proposing and attesting to the consensus rules of the Ethereum protocol.
2. **Execution layer rewards:** Priority Fees received by validators for processing transactions on the Ethereum network. It will also include any MEV rewards (if applicable).

Total staking rewards equals the sum of Consensus Layer Rewards and Execution layer rewards.

</details>

<details>

<summary><strong>How are the rewards distributed?</strong></summary>

1. **Consensus Layer Rewards Distribution (aka Partial Withdrawals)**:&#x20;
   1. **For validators with 0x01 withdrawal credentials:** Periodic processing of these rewards occurs, and they are sent to the withdrawal address through an automated withdrawal process facilitated by the Ethereum protocol. This sweep happens once your stake hits the maximum effective balance ceiling of 32 ETH. This process typically takes approximately 5-10 days.&#x20;
   2. **For validators with 0x02 withdrawal credentials:** Similarly to validators with 0x01 withdrawal credentials, validator sweep will happen if the effective balance exceeds 2048 ETH. However, a partial exit can always be initiated through our [partial exit API.](/apis/ethereum/exits#partial-exit-request)
2. **Execution Layer Rewards (Priority Fee) Distribution**: The reward from the Execution Layer is credited to the validator immediately after the block is proposed. Subsequently, the validator can distribute these rewards to the client's withdrawal address at regular time intervals.

</details>

<details>

<summary>Are my rewards compounded?</summary>

Compounding is possible if you switch your 0x01 withdrawal credentials to 0x02 type withdrawal credentials through our [switch API.](/apis/ethereum/consolidation-and-switch#switch-request)

</details>

<details>

<summary>Can I choose multiple wallets to receive my ETH rewards?</summary>

No, only your withdrawal address can receive the ETH rewards.

</details>

<details>

<summary>Does Luganodes run any MEV relays?</summary>

Yes

</details>

## Exit Node/Full Withdrawals

<details>

<summary>How can you exit a node/withdraw your stake?</summary>

**Via Intent:**

1. **Create Signed Challenge:** The client creates a signed challenge with validator information and withdrawal address.
2. **Send Challenge & Signature:** Send the challenge and its signature through the Voluntary Exit API request.
3. **Luganodes Initiates Exit:** Luganodes broadcasts a voluntary exit request to the beacon chain, triggering the exit process for the specified validators.

For detailed information on the Voluntary Exit API, refer to the documentation [here](broken://pages/YVeb704HVYlYRDjPdZz1).\
\
**Via Wtihdrawal Address**

1. **Generate unsigned transaction:** Call the Partial Exit API to receive an unsigned transaction which needs to be signed with your validator withdrawal address and broadcasted to the network.&#x20;

For detailed information on the Partial Exit API, Refer to the [Partial Exit API documentation.](/apis/ethereum/exits#partial-exit-request)

</details>

<details>

<summary>How long does it take to exit a validator?</summary>

The total time taken to exit a validator is the summation of the different factors

1. **Exit queue (min 5 epochs, or 32 mins):** This will increase based on the no. of exit requests at a given instance (since only limited exits can happen in each epoch).
2. **Minimum validator withdrawability delay** (rate limited by the Ethereum protocol): 256 epochs (27.3 hours)
3. **Automatic withdrawal process/Validator Sweep:** (5-10 days)

</details>

<details>

<summary>Where do the staked ETH and pending rewards go after exiting?</summary>

All of them go to the withdrawal address of the client.

</details>

## Miscellaneous

<details>

<summary>Do I maintain custody of my ETH tokens?</summary>

Yes, you maintain the custody of your ETH tokens since only you have access to the withdrawal address. Luganodes ETH staking is non-custodial and does not manage/have access to the withdrawal wallet’s credentials.

</details>

<details>

<summary>How do you get slashed?</summary>

There are 3 ways in which a validator can get slashed:

* By proposing and signing two different blocks for the same slot.
* By attesting to a block that "surrounds" another one (effectively changing history).
* "Double voting" by attesting to two candidates for the same block.

Despite the differences in these slashing scenarios, they are all addressed and handled in the same manner.

</details>

<details>

<summary>How much are the slashing penalties?</summary>

In the event of slashing, there are three penalties imposed, as outlined below:

1. **Initial Penalty:**
   * A penalty equivalent to 1/4096 of the effective balance is immediately slashed.
2. **Attestation Penalties:**
   * The validator will have a penalty for missing attestations during the slashing period. For an APR of 3.00%, the corresponding inactivity penalty would be around 0.0598 ETH for each 32 ETH validator. With the Pectra upgrade, these penalties increase proportionally with the validator's effective balance and would result in a penalty of approximately 3.828 ETH for a validator holding 2,048 ETH.<br>
3. **Correlation Penalty:**

   * **Description:** This is a variable penalty occurring at the halfway point of the withdrawable period. The penalty is determined by the correlation formula:

   `Correlation Penalty = (3 * S * B) / T`

   **S:** Sum of effective balances of all slashed validators in the network (over the last 36 days)

   **B:** Effective balance of the affected validator

   **T:** Total balance of all staked accounts in the protocol (over the last 36 days)

</details>

<details>

<summary>How does Luganodes prevent slashing?</summary>

Double signing Protection, External Signing Authority (Remote Signer), Local anti-slashing database.

</details>

<details>

<summary>What is an epoch?</summary>

A period of 32 slots (slot is the time taken to create a single block), each slot being 12 seconds, totalling \~6.4 minutes.

</details>

<details>

<summary>Does my stake include the gas fee?</summary>

Gas fees are the fees paid for executing transactions on the Ethereum blockchain. When staking 32 ETH, you will have to pay the gas fees separately for the transaction to go through. Before staking, ensure that you have enough ETH in your sending wallet to cover both the staking amount, and the gas fees.&#x20;

</details>

<details>

<summary>What clients does Luganodes run?</summary>

1. **Consensus Client**: Prysm
2. **Execution Client:** Geth

</details>

<details>

<summary>What geographies do the Luganodes ETH validators run in?</summary>

France, Lithuania, Frankfurt

</details>


# Staking APIs v1


# Authentication

Sign up and log in through our APIs to seamlessly register your organisation

* [Sign up](#sign-up)
* [Generate new API Key](#generate-api-key)

## API URL

| URL                                                                                                    | Environment |
| ------------------------------------------------------------------------------------------------------ | ----------- |
| [https://staking.luganodes.com/](https://staking.luganodes.com/sui/api/rewards/daily?page=1\&limit=50) | Mainet      |

{% hint style="info" %}
For ETH, please follow a seperate authentication guide [here](/apis/ethereum/authentication)
{% endhint %}

## Sign up&#x20;

<mark style="color:green;">`POST`</mark> `/api/public/register`

Create an account for your organization with Luganodes. Please contact <hello@luganodes.com> in order to approve your organization and receive an API key

#### Request Body

| Name                                               | Type   | Description                             |
| -------------------------------------------------- | ------ | --------------------------------------- |
| orgName<mark style="color:red;">\*</mark>          | String | Organization Name                       |
| email<mark style="color:red;">\*</mark>            | String | Organization email                      |
| password<mark style="color:red;">\*</mark>         | String | Password for organization account       |
| allowedAddresses<mark style="color:red;">\*</mark> | Object | Object containing whitelisted addresses |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "success": true,
    "pendingUser": {
        "id": "685268e0eee306e885c6ee88",
        "orgName": "Test Organization",
        "email": "test@gmail.com",
        "allowedAddresses": {
            "ethereum": [
                "0x742d35Cc6634C0532925a3b8D03C29f33da7A0d1"
            ],
            "bitcoin": [
                "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
            ]
        },
        "createdAt": "2025-06-18T07:21:04.525Z"
    },
    "message": "User registration submitted successfully. Awaiting admin approval."
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/api/public/register' \
--header 'Content-Type: application/json' \
--data-raw '{
  "orgName": "Test Organization",
  "email": "testuser@example.com",
  "password": "TestPass123!@#",
  "allowedAddresses": {
    "ethereum": ["0x742d35C36634C0532925a3b8D03C29f33da7A0d1"],
    "bitcoin": ["1A1zP1eP5aGefi2DMPTfTL5SLmv7DivfNa"]
  }
}'
```

#### Response Object

<table><thead><tr><th width="166.33333333333331">Property</th><th width="480">Description</th><th>Type</th></tr></thead><tbody><tr><td>success</td><td>API response status</td><td>Boolean</td></tr><tr><td>message</td><td>Request response message</td><td>String</td></tr><tr><td>pendingUser</td><td>Object containing api key</td><td>Object</td></tr></tbody></table>

#### Pending User Object

<table><thead><tr><th width="166.33333333333331">Property</th><th width="270.51171875">Description</th><th>Type</th></tr></thead><tbody><tr><td>id</td><td>Organization ID</td><td>String</td></tr><tr><td>orgName</td><td>Organization Name</td><td>String</td></tr><tr><td>email</td><td>Organization email</td><td>String</td></tr><tr><td>createdAt</td><td>Time of account creation</td><td>String</td></tr><tr><td>allowedAddress</td><td>Object</td><td>Object containing allowed address for chains - ethereum, bitcoin, sui, polygon, solana</td></tr></tbody></table>

## Generate API key&#x20;

<mark style="color:green;">`POST`</mark> `/api/public/generate-api-key`

Send a request to generate a new API key. Your current API key will be revoked.

#### Headers

| Name                                        | Type   | Description                          |
| ------------------------------------------- | ------ | ------------------------------------ |
| x-api-key<mark style="color:red;">\*</mark> | String | API Key associated with organization |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "success": true,
    "apiKey": "newapikey",
    "message": "New API key generated successfully. Previous API key has been revoked."
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location --request POST '{{url}}/api/public/generate-api-key' \
--header 'Content-Type: application/json' \
--header 'x-api-key: sampleapikey'
```

#### Response Object

<table><thead><tr><th width="166.33333333333331">Property</th><th width="480">Description</th><th>Type</th></tr></thead><tbody><tr><td>success</td><td>API response status</td><td>Boolean</td></tr><tr><td>message</td><td>Request response message</td><td>String</td></tr><tr><td>apiKey</td><td>New API key </td><td>String</td></tr></tbody></table>

###


# Sui

Sui is a decentralized Layer 1 blockchain launched in 2023 by Mysten Labs, a team of former Meta engineers who worked on the Diem project. It is designed for high speed, scalability, and low-cost transactions, capable of processing up to around 300,000 transactions per second through parallel transaction execution. Sui uses a unique object-centric data model and the Move programming language, which allows for more granular and flexible transaction processing, making it ideal for applications like decentralized finance (DeFi), gaming, and NFTs. Its native token, SUI, is used for transaction fees, staking, and governance


# Rewards

Track historical staking rewards

### Supported Environments

Luganodes supports the following environments on SUI, as defined below

<table data-header-hidden><thead><tr><th width="356">Base URL</th><th>ETH Network</th></tr></thead><tbody><tr><td><a href="https://staking.luganodes.com/solana">https://staking.luganodes.com/sui</a></td><td>Sui Mainnet </td></tr></tbody></table>

## Rewards &#x20;

<mark style="color:green;">`POST`</mark> `/api/rewards`

Track historical rewards of a stake account on per epoch basis.

#### Request Header

| Name                                        | Type   | Description          |
| ------------------------------------------- | ------ | -------------------- |
| x-api-key<mark style="color:red;">\*</mark> | String | Organization API key |

#### Request Body

| Name                                                      | Type   | Description              |
| --------------------------------------------------------- | ------ | ------------------------ |
| stake\_account\_address<mark style="color:red;">\*</mark> | String | Address of stake account |
| start\_date<mark style="color:red;">\*</mark>             | String | Start of date range      |
| end\_date<mark style="color:red;">\*</mark>               | String | End of date range        |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "success": true,
    "data": {
        "rewards": [
            {
                "epochReward": 0,
                "principal": "1414110821855614",
                "totalRewards": "0",
                "date": "2025-05-01",
                "epoch": 750
            },
            {
                "epochReward": 81278415666,
                "principal": "1414110821855614",
                "totalRewards": "81278415666",
                "date": "2025-05-02",
                "epoch": 751
            },
            {
                "epochReward": 81244492499,
                "principal": "1414110821855614",
                "totalRewards": "162522908165",
                "date": "2025-05-03",
                "epoch": 752
            },
            {
                "epochReward": 81118056271,
                "principal": "1414110821855614",
                "totalRewards": "243640964436",
                "date": "2025-05-04",
                "epoch": 753
            },
            {
                "epochReward": 81063596846,
                "principal": "1414110821855614",
                "totalRewards": "324704561282",
                "date": "2025-05-05",
                "epoch": 754
            },
            {
                "epochReward": 81175684959,
                "principal": "1414110821855614",
                "totalRewards": "405880246241",
                "date": "2025-05-06",
                "epoch": 755
            },
            {
                "epochReward": 81383158062,
                "principal": "1414110821855614",
                "totalRewards": "487263404303",
                "date": "2025-05-07",
                "epoch": 756
            },
            {
                "epochReward": 82003947586,
                "principal": "1414110821855614",
                "totalRewards": "569267351889",
                "date": "2025-05-08",
                "epoch": 757
            },
            {
                "epochReward": 81765312613,
                "principal": "1414110821855614",
                "totalRewards": "651032664502",
                "date": "2025-05-09",
                "epoch": 758
            },
            {
                "epochReward": 81260733186,
                "principal": "1414110821855614",
                "totalRewards": "732293397688",
                "date": "2025-05-10",
                "epoch": 759
            },
            {
                "epochReward": 81413419568,
                "principal": "1414110821855614",
                "totalRewards": "813706817256",
                "date": "2025-05-11",
                "epoch": 760
            },
            {
                "epochReward": 81670008987,
                "principal": "1414110821855614",
                "totalRewards": "895376826243",
                "date": "2025-05-12",
                "epoch": 761
            },
            {
                "epochReward": 81439015181,
                "principal": "1414110821855614",
                "totalRewards": "976815841424",
                "date": "2025-05-13",
                "epoch": 762
            },
            {
                "epochReward": 81651720261,
                "principal": "1414110821855614",
                "totalRewards": "1058467561685",
                "date": "2025-05-14",
                "epoch": 763
            }
        ],
        "pagination": {
            "currentPage": 1,
            "totalPages": 1,
            "totalRewards": 40,
            "hasNextPage": false,
            "hasPrevPage": false
        }
    }
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/sui/api/rewards/daily?page=1&limit=50' \
--header 'Content-Type: application/json' \
--header 'x-api-key: apikey' \
--data '{
    "stake_account_address": "0x8b0a21a9ea44e76a1b5c04e33a9b99f79fb947c5e621a1f3d5d178fb979784fe",
    "start_date": "2025-05-01",
    "end_date": "2025-06-09"
}'
```

#### Rewards Response Object

<table><thead><tr><th width="166.33333333333331">Property</th><th width="480">Description</th><th>Type</th></tr></thead><tbody><tr><td>epochReward</td><td>Reward earned at end of epoch</td><td>Number</td></tr><tr><td>principal</td><td>Initial stake amount</td><td>Number</td></tr><tr><td>totalRewards</td><td>Total rewards since time of stake</td><td>Number</td></tr><tr><td>date</td><td>Epoch date </td><td>String</td></tr><tr><td>epoch</td><td>Epoch number</td><td>Number</td></tr></tbody></table>


# Polygon

Polygon is a leading Ethereum Layer 2 scaling solution that has evolved into a modular, interoperable ecosystem designed to enhance Ethereum’s scalability, security, and user experience. In 2025, Polygon completed its major upgrade to Polygon 2.0, transforming into a Zero-Knowledge (ZK) Layer 2 network that drastically reduces transaction costs to around $0.001 and boosts throughput to 100,000 transactions per second, making it highly suitable for DeFi, gaming, and NFT applications.\
The platform supports a network of sovereign blockchains that operate as a unified, scalable chain, leveraging technologies like zkEVM, Polygon PoS, and the AggLayer interoperability framework.


# Rewards

Track staking rewards

### Supported Environments

Luganodes supports the following environments on Polygon, as defined below

<table data-header-hidden><thead><tr><th width="356">Base URL</th><th>ETH Network</th></tr></thead><tbody><tr><td><a href="https://staking.luganodes.com/solana">https://staking.luganodes.com/polygon</a></td><td>Polygon Mainnet </td></tr></tbody></table>

## Pending Rewards &#x20;

<mark style="color:green;">`POST`</mark> `/api/pending-rewards`

Track pending rewards of an account staked with Luganodes.

#### Request Header

| Name                                        | Type   | Description          |
| ------------------------------------------- | ------ | -------------------- |
| x-api-key<mark style="color:red;">\*</mark> | String | Organization API key |

#### Request Body

| Name                                                      | Type   | Description              |
| --------------------------------------------------------- | ------ | ------------------------ |
| stake\_account\_address<mark style="color:red;">\*</mark> | String | Address of stake account |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "data": {
        "pending_rewards": 54502823.65455097
    }
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/polygon/api/pending-rewards' \
--header 'Content-Type: application/json' \
--header 'x-api-key: Organization API key' \
--data '{
    "stake_account_address": "0xcf6Ace29C8Ed34d8233eA9B6B8ae059D2Eaa445"
}'
```

#### Response Object

<table><thead><tr><th width="166.33333333333331">Property</th><th width="480">Description</th><th>Type</th></tr></thead><tbody><tr><td>pending_rewards</td><td>Rewards which are yet to be claimed by stake account</td><td>Number</td></tr></tbody></table>

## APR  &#x20;

<mark style="color:blue;">`GET`</mark> `/api/apr`

Track Annual Percentage Return ( APR ) of Luganodes.

#### Request Header

| Name                                        | Type   | Description          |
| ------------------------------------------- | ------ | -------------------- |
| x-api-key<mark style="color:red;">\*</mark> | String | Organization API key |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "data": {
        "apr_1d": "3.416564",
        "apr_30d": "3.525256",
        "apr_7d": "3.373653"
    }
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```bash
curl --location '{{url}}/api/apr' \
--header 'x-api-key: Organization API key' 
```

#### Response Object

<table><thead><tr><th width="166.33333333333331">Property</th><th width="480">Description</th><th>Type</th></tr></thead><tbody><tr><td>apr_1d</td><td>Annual percentage return for the past 1 day</td><td>Number</td></tr><tr><td>apr_7d</td><td>Annual percentage return for the past 7 days</td><td>Number</td></tr><tr><td>apr_30d</td><td>Annual percentage return for the past 30 days</td><td>Number</td></tr></tbody></table>


# Staking APIs v2

## API URL

| URL                                                                                                                | Environment |
| ------------------------------------------------------------------------------------------------------------------ | ----------- |
| [https://api.luganodes.com/staking](<https://api.luganodes.com/staking/health&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;>) | Mainnet     |

{% hint style="info" %}
For ETH, please follow a separate authentication guide [here](/apis/ethereum/authentication)
{% endhint %}

***




---

[Next Page](/llms-full.txt/1)

