# INTMAX Nodes

## Overview

This document outlines the components of the entire system and describes their roles. These components are organized into three categories: User Interface, Contracts, and Nodes.

* **Explanation of User Interfaces**
  * Explain the interfaces through which users interact with the network. Describe the Command Line Interface (CLI) and the Intmax Web App, clarifying how users can operate the network.
* **Explanation of Smart Contracts**
  * Explain the roles of various contracts within the network.
  * This helps you understand how the network utilizes on-chain data.
* **Explanation of Nodes**
  * Explain the roles of various nodes within the network.
  * This helps you understand how the network is structured.

## Component Dependencies <a href="#component-dependencies" id="component-dependencies"></a>

#### **Conceptual diagram**

<figure><img src="/files/MS6war4sLnSB3Biu8Z1k" alt="Overview"><figcaption></figcaption></figure>

## Main Features <a href="#main-features" id="main-features"></a>

### **Batch Transfers of Multiple Tokens**

Intmax natively supports batch transfers of multiple tokens. Users can send tokens simultaneously to up to 63 different recipients without any additional costs. It's also possible to send different types of tokens to each recipient within a single batch transfer.

Transactions on the Intmax network do not reveal the recipient’s identity to external observers.

### **Deposits and Withdrawals from the Ethereum Network**

The Intmax network supports deposits and withdrawals from the Ethereum network. When funds are deposited, only the recipient knows which specific Intmax address received the funds. Similarly, when withdrawing, the Intmax address from which the funds originated remains undisclosed.

AML checks are performed upon deposits to prevent risky assets from circulating within the Intmax network.

### **Privacy Mining**

The goal of privacy mining is to expand and maintain the anonymity set of the privacy protocol. Privacy Mining allows users to earn rewards by contributing to privacy through depositing a specified amount of ETH for a designated period within the Intmax network.

## User Interface <a href="#user-interface" id="user-interface"></a>

### **Intmax Web App (Recommended)**

Intmax Web App provides a UI for users to create accounts on the Intmax network, and perform operations such as depositing, transferring, and withdrawing tokens.

It also supports privacy mining features. Intmax Web App is available as a website and a mobile application.

Please access it from the link below.

<a href="https://app.intmax.io/" class="button secondary" data-icon="sun">INTMAX Web App</a>

***

### **CLI**

A command-line interface (CLI) program necessary for users to operate the Intmax network from a terminal. The CLI program provides commands for users to create accounts on the Intmax network, and perform operations such as depositing, transferring, and withdrawing tokens.

You can access it from the source code provided here.

<a href="https://github.com/InternetMaximalism/intmax2/tree/dev/cli" class="button secondary" data-icon="square-github">CLI GitHub</a>

***

### Contracts <a href="#contracts" id="contracts"></a>

The Intmax network is a Layer-2 solution built on top of the Ethereum network. Liquidity remains on Ethereum, while block data storage utilizes the Scroll network—a type of ZK-rollup—allowing Intmax to benefit from lower costs and enhanced security. Smart contracts deployed on these two networks form the foundation of the Intmax network.

{% content-ref url="/pages/VOWk0Gxn4Omn8o4ebL84" %}
[Smart Contracts](/intmax-developers-hub/intmax-network/intmax-nodes/smart-contracts.md)
{% endcontent-ref %}

***

## NODES <a href="#nodes" id="nodes"></a>

### **Block Builder**

Builder nodes aggregate transfer requests from users, create blocks, and reflect these blocks on the network.

These nodes are **decentralized** and deployed across the network. Each node operates independently and does not need to synchronize with other builder nodes.

{% content-ref url="/pages/gHRqF2OYCVadfJQZk8uS" %}
[Block Builder](/intmax-developers-hub/intmax-network/intmax-nodes/block-builder.md)
{% endcontent-ref %}

***

### **Store Vault Server**

Backs up data that users must individually store and makes it accessible when using Intmax wallet or CLI from multiple devices. This node securely and efficiently backs up user data and manages the process of restoring it when necessary.

{% content-ref url="/pages/zOOcGPIvhhSAS7Ii51Br" %}
[Store Vault Server](/intmax-developers-hub/intmax-network/intmax-nodes/store-vault-server.md)
{% endcontent-ref %}

***

### **Deposit Relayer**

Communicates deposit requests from the Liquidity contract to the Rollup contract.

{% content-ref url="/pages/8D2OOqbqIBFB46DH8sE2" %}
[Deposit Relayer](/intmax-developers-hub/intmax-network/intmax-nodes/deposit-relayer.md)
{% endcontent-ref %}

***

### **Withdrawal Server**

This node manages the progress of accepting withdrawal/claim requests, and providing information about withdrawals and claims to authenticated users.

{% content-ref url="/pages/A5LGQNew3GFhGlbQVFJV" %}
[Withdrawal Server](/intmax-developers-hub/intmax-network/intmax-nodes/withdrawal-server.md)
{% endcontent-ref %}

***

### **Withdraw Aggregator**

Processes withdrawal requests from the Intmax network to Ethereum. This node accepts user withdrawal requests, performs necessary verifications and processes, and manages the process of reflecting these in the liquidity contract.

{% content-ref url="/pages/R59wYlkcgdLbKcNwk5zP" %}
[Withdrawal Aggregator](/intmax-developers-hub/intmax-network/intmax-nodes/withdrawal-aggregator.md)
{% endcontent-ref %}

***

### **Claim Aggregator**

This node processes requests for mining rewards generated on the Intmax network. This node performs necessary validation and processing of mining reward requests received from users and manages the process of reflecting these requests on-chain.

{% content-ref url="/pages/1DFJ2m4rDdVtkepoCAG8" %}
[Claim Aggregator](/intmax-developers-hub/intmax-network/intmax-nodes/claim-aggregator.md)
{% endcontent-ref %}

***

### **Withdraw Relayer**

Reflects withdrawal information submitted to the rollup contract in the liquidity contract.

{% content-ref url="/pages/4cGAiy8xXBmbc19S6IWJ" %}
[Withdrawal Relayer](/intmax-developers-hub/intmax-network/intmax-nodes/withdrawal-relayer.md)
{% endcontent-ref %}

***

### **Indexer**

Provides information to users for finding block builders and block validity provers. It lists currently active nodes and recommends some nodes to connect to.

{% content-ref url="/pages/ZBkrhQqNVaE1Af6k17hD" %}
[Indexer](/intmax-developers-hub/intmax-network/intmax-nodes/indexer.md)
{% endcontent-ref %}

***

### **Validity Prover**

A Validity Prover is a decentralized node on the Intmax network responsible for securely storing and providing Merkle trees and ZKPs related to Intmax blocks. These proofs verify the validity of transactions and blocks, ensuring the integrity of network operations.

{% content-ref url="/pages/dYElInY0F03zExUkCyDu" %}
[Validity Prover](/intmax-developers-hub/intmax-network/intmax-nodes/validity-prover.md)
{% endcontent-ref %}

***

### **Provers**

In the Intmax network, user balances are verified using Zero-Knowledge Proofs (ZKPs) to ensure sufficient funds and validate withdrawal conditions.

{% content-ref url="/pages/N8qWPNdBZjep8VrctcXf" %}
[Provers](/intmax-developers-hub/intmax-network/intmax-nodes/provers.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://intmax-general.gitbook.io/intmax-developers-hub/intmax-network/intmax-nodes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
