> For the complete documentation index, see [llms.txt](https://read.roke.to/roketo-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://read.roke.to/roketo-docs/infrastracture/r2-interchain-incentivisation/r2-how-to-apply.md).

# R2: How to Apply

## R2 Beacon: APP\_ID Registration Guide

### Overview

This guide explains how to obtain an APP\_ID for integrating your DApp with the R2 Beacon system during the pre-mainnet phase. The APP\_ID is a unique identifier required for emitting business-aware actions to the R2 Beacon network.

> **Note**: During the pre-mainnet phase, APP\_ID registration is handled manually through direct communication with the R2 team. After mainnet launch, registration will be available through a self-service platform.

### Prerequisites

Before starting the registration process, ensure you have:

* A deployment-ready code
* Documentation of your DApp's primary business actions
* Technical documentation of your action structures
* Development environment details (chains, networks, etc.)

### Quick Start

1. Prepare your technical documentation
2. Contact R2 team at <r2beacon-apply@roke.to>
3. Schedule an integration call
4. Receive your APP\_ID
5. Implement R2 Beacon integration

### Registration Process

#### 1. Documentation Preparation

Prepare the following information in a structured format:

```json
{
    "dapp_name": "Your DApp Name",
    "contract_addresses": {
        "ethereum_mainnet": "0x...",
        "polygon": "0x...",
        // Add other networks as applicable
    },
    "business_actions": [
        {
            "name": "PURCHASE_ITEM",
            "description": "User purchases an in-game item",
            "parameters": {
                "amount": "Purchase amount in native currency",
                "data": "ABI encoded: (uint256 itemId)"
            }
        }
        // Add other actions
    ],
    "technical_contact": {
        "name": "Technical Lead Name",
        "email": "tech@yourdapp.com",
        "telegram": "@techhandle"
    }
}
```

#### 2. Initial Contact

Send an email to <r2beacon-apply@roke.to> with:

* Subject line: "APP\_ID Registration Request - \[Your DApp Name]"
* Brief description of your DApp
* Prepared technical documentation
* Preferred communication method for follow-up
* Your team's availability for integration call

#### 3. Integration Call

During the scheduled call, you'll discuss:

* Your DApp's architecture
* Planned business actions
* Integration timeline
* Technical requirements
* Security considerations

#### 4. APP\_ID Assignment

After approval, you'll receive:

* Your unique APP\_ID
* Integration documentation
* Test environment access
* Support contact information

### Implementation Steps

1. Implement the R2BeaconEmitter contract:

```solidity
import {R2BeaconEmitter} from "@roketo/r2beacon/contracts/R2BeaconEmitter.sol";

contract YourDApp is R2BeaconEmitter {
    constructor(bytes32 appId) R2BeaconEmitter(appId) {}
    
    // Your DApp implementation
}
```

2. Deploy with your assigned APP\_ID:

```solidity
// Example deployment script
const APP_ID = "0x..."; // Your assigned APP_ID
const dapp = await YourDApp.deploy(APP_ID);
await dapp.deployed();
```

### Post-Registration

After receiving your APP\_ID:

1. Implement the R2BeaconEmitter interface
2. Test action emissions in the staging environment
3. Submit test transactions for verification
4. Receive approval for mainnet deployment

### Future Platform Access

> **Note**: After mainnet launch, the registration process will transition to a self-service platform at <https://roke.to>

The upcoming platform will provide:

* Automated APP\_ID generation
* Self-service registration
* Real-time action verification
* Analytics dashboard
* Integration monitoring

### Common Issues & Solutions

#### 1. Invalid APP\_ID Format

**Issue**: APP\_ID not recognized by R2 Beacon system

**Solution**: Verify APP\_ID format:

```solidity
// Correct format
bytes32 public constant APP_ID = 0x1234...;

// Incorrect format
bytes32 public constant APP_ID = "1234..."; // Will not work
```

#### 2. Registration Email Not Received

**Issue**: No response to registration request

**Solutions**:

* Check spam folder
* Verify email sent to correct address: <r2beacon-apply@roke.to>
* Visit <https://roke.to> for alternative contact methods
* Include all required documentation in initial email

#### 3. Action Emission Failures

**Issue**: Actions not appearing in R2 Beacon

**Solution**: Verify implementation:

```solidity
// Correct
_emitR2Action(
    ACTION_ID,
    amount,
    abi.encode(parameters)
);

// Incorrect
_emitR2Action(
    "ACTION_ID", // Should be bytes32
    amount,
    parameters  // Should be ABI encoded
);
```

> **Warning**: Never share your APP\_ID credentials or private keys during the registration process. The R2 team will never ask for sensitive information through email or chat.

For additional support and information, visit <https://roke.to> or contact <r2beacon-apply@roke.to>.
