3. Prerequisites
3. Prerequisites
What you need in place before starting work in the ONE RAMP console.
3.1 ONE RAMP Console Sign-up
Token contract deployment and the settings required for user Mint/Burn are all done in the console.
- Configure the token name and icon used in your application (dApp)
- Configure the in-game currency (game assets) shown in the dApp during Mint/Burn
Procedure → 4-1. Account and Project
3.2 Wallet
You need a wallet for two purposes.
Owner (Admin) Wallet
Used in the ONE RAMP Console for project management, game token issuance, and contract deployment.
Supported wallets
- ONEpocket
- MetaMask — if used, you must add the ONE Chain Mainnet and Testnet networks manually. → 3.6
Custody requirements
- The wallet must run only on a company-managed, dedicated device. This wallet holds contract ownership.
- MetaMask + a hardware wallet (Ledger, etc.) is recommended.
- If a hardware wallet is not available, install MetaMask on a separate company-managed mobile device and manage the key there.
- Gas
- Contract deployment — about 1 $ONE or less
- Token contract ↔ project linking — the Owner address must hold at least 0.5 $ONE
Do not use personal devices or personal accounts.
Fee Wallet
The wallet that receives the fee charged when users mint tokens.
- Your game backend sends the fee rate in the request body when calling
initialize. intent.burn_fee_bpsis fixed at0. No fee is charged on Burn.- Policy requires at least 10%, and a NEXUS wallet address is required.
- Collected fees are returned to users through the Rewards program.
- Example:
mint_fee_bps: 1000→ when a user mints 1 token, the user receives 0.9 and the fee wallet receives 0.1
The fee wallet address to register may differ depending on your contract terms. Confirm with NEXUS before proceeding.
3.3 Validator Key
Used to verify that a user's Mint/Burn request is a legitimate transaction created by your backend server.
- The generated address must be registered in the ONE RAMP console. → 4-3.2
How to generate
- Generate a private key and address with the Key Generator tool provided by NEXUS.
- Download —
https://github.com/to-nexus/key-generator/releases/tag/v1.0.2 - The same URL is shown on step 1 of the RAMP contract deployment wizard. → 4-2.2
- Download —
- A private key and address generated in MetaMask or ONEpocket can also be used.
Register only the address in the console.
Store the generated private key securely and use it only on your game backend server.
If it leaks, anyone can sign arbitrary Mint/Burn operations. Never expose it in clients, repositories, logs, or messengers. → 5. Endpoint Specification
3.4 Integration API
The interfaces required between the RAMP platform and your game server in order to implement Mint/Burn inside your application (dApp).
Important To integrate Mint/Burn with ONE RAMP from a dApp, your game server must implement three endpoints that follow the interface specification.
| Item | Description |
|---|---|
| Game currency lookup API | RAMP backend ↔ your server integration is required to look up the currency data needed during token issuance. |
| Validator API | RAMP backend ↔ your server integration is required to handle ECDSA signature requests. The private key needed for the ECDSA signature can be generated with the provided tool. |
| Result API (Webhook) | Blockchain transaction results are sent as a Webhook request from the RAMP backend to your server, so you need a receiving API to handle them. |
Specification → 5. Endpoint Specification
3.5 Firewall Allowlist
Communication between the ONE RAMP platform and your server requires a firewall allowlist entry.
- Used to display the user's game currency in RAMP F/E
- Required for RAMP B/E ↔ your server communication
If your environment restricts inbound traffic, request allowlisting of RAMP B/E source IPs in advance.
3.6 Network Information
| Testnet | Mainnet | |
|---|---|---|
| Network Name | ONE-Testnet | ONE-Mainnet |
| RPC URL | https://testnet.onechain.nexus:22001/ | https://mainnet.onechain.nexus:22001/ |
| Chain ID | 612044 | 612055 |
| Symbol | tONE | ONE |
| Block Explorer URL | https://explorer.onechain.nexus/612044 | https://explorer.onechain.nexus/612055 |
- Get Testnet coins from the TESTNET Faucet. → 1.5
Adding networks when using MetaMask
ONEpocket has the ONE Chain networks built in, so no extra work is needed. Only when using MetaMask do you register the networks manually with the steps below.
Path — Settings (bottom right) → Networks → Add Network → Custom tab → enter the values from the table above
3.7 Server Requirements
What you need in order to implement the endpoints in 3.4.
- Three HTTPS endpoints → 5. Endpoint Specification
- HMAC-SHA256 verification logic — confirms request integrity
- ECDSA (secp256k1) signing logic — for example with
ethers - Game asset deduction and restoration — atomicity via DB transactions
- Idempotency — a unique key on
uuid - Secret management — Validator private key and HMAC Secret
3.8 Designing Game Asset IDs
The identifier used for assets throughout Mint and Burn. This is not a value you register in the console — you define it and use the same value in both the API and your game backend server.
- Examples —
item_gold,item_gem
The values in these three places must match exactly.
| Location | Field | Description |
|---|---|---|
initialize request | intent.materials[].id · intent.outputs[].id | Assets consumed on Mint · assets granted on Burn |
Get Assets response | data.v1.assets[].id | The user's asset balance list |
| Game backend server | Internal asset identifier | The actual target of deduction and granting |
intent.from[].idandintent.to[].idinValidate OrderandHandle Order Resultuse the same values.- Specification → 5. Endpoint Specification
Operating principles
- Manage them as asset-related environment variables or constants on the game server (do not scatter hardcoded values)
- Make sure the server code and the
initializecall site reference the same constants - Changing an ID after it has shipped breaks in-flight requests and history lookups — finalize it up front.
If the values do not match, the user's balance shows as 0 in RAMP F/E, or the request is rejected. This is the most common problem early in an integration.
Updated 4 days ago