Guides
NEXUS
Guides

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.

ItemWhere it is setValue
Fee receiving addressConsole Ramp SettingsFee SettingsDefault Fee Address (per-token addresses are also possible) → 4-3.4
Fee rateinitialize API requestintent.mint_fee_bps (1000 = 10%) → 5.3
  • Your game backend sends the fee rate in the request body when calling initialize.
  • intent.burn_fee_bps is fixed at 0. 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
  • 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.

ItemDescription
Game currency lookup APIRAMP backend ↔ your server integration is required to look up the currency data needed during token issuance.
Validator APIRAMP 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

TestnetMainnet
Network NameONE-TestnetONE-Mainnet
RPC URLhttps://testnet.onechain.nexus:22001/https://mainnet.onechain.nexus:22001/
Chain ID612044612055
SymboltONEONE
Block Explorer URLhttps://explorer.onechain.nexus/612044https://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.

PathSettings (bottom right) → NetworksAdd NetworkCustom 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 endpoints5. 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.

LocationFieldDescription
initialize requestintent.materials[].id · intent.outputs[].idAssets consumed on Mint · assets granted on Burn
Get Assets responsedata.v1.assets[].idThe user's asset balance list
Game backend serverInternal asset identifierThe actual target of deduction and granting
  • intent.from[].id and intent.to[].id in Validate Order and Handle Order Result use 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 initialize call 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.