Skip to content

Radius Network

Radius is a high-performance, EVM-compatible settlement engine built for the machine-to-machine economy. It offers sub-second finality, stablecoin-native transactions (RUSD), and extremely low fees (~$0.000093 per transfer) — making micropayments and real-time API metering economically viable.

SBC provides full account abstraction support on both Radius mainnet and testnet, with low, predictable gas fees on both networks.

Why Radius?

FeatureRadiusBase
Gas CostLow, predictable (~$0.000093/transfer)Standard gas fees
Currency SymbolRUSD (18 decimals)ETH
EntryPointCustom deploymentCanonical v0.7
Smart AccountSimpleAccountKernel

Mainnet

Network Configuration

// Radius mainnet configuration
const radiusMainnet = {
  id: 723,
  name: 'Radius Network',
  nativeCurrency: {
    name: 'RUSD',
    symbol: 'RUSD',
    decimals: 18
  },
  rpcUrls: {
    default: {
      http: ['https://rpc.radiustech.xyz']
    }
  },
  blockExplorers: {
    default: {
      name: 'Radius Explorer',
      url: 'https://network.radiustech.xyz'
    }
  }
}

Deployed Contracts

ContractAddressDescription
EntryPoint0xfA15FF1e8e3a66737fb161e4f9Fa8935daD7B04FCustom ERC-4337 v0.7 EntryPoint
SimpleAccountFactory0x7d8fB3E53d345601a02C3214e314f28668510b03Smart account factory
SignatureVerifyingPaymaster0xD969454b59F4BC2CF19dC37A37aC10eF6495CD8DGas sponsorship contract
SBC0x33ad9e4bd16b69b5bfded37d8b5d9ff9aba014fbDefault stablecoin on Radius
PimlicoEntryPointSimulations0x9c69EC9BcB58b9214e14A1966fc03FE004d50c52Gas estimation helper

Testnet

Network Configuration

// Radius testnet configuration
const radiusTestnet = {
  id: 72344,
  name: 'Radius Testnet',
  nativeCurrency: {
    name: 'RUSD',
    symbol: 'RUSD',
    decimals: 18
  },
  rpcUrls: {
    default: {
      http: ['https://rpc.testnet.radiustech.xyz']
    }
  },
  blockExplorers: {
    default: {
      name: 'Radius Explorer',
      url: 'https://testnet.radiustech.xyz'
    }
  },
  testnet: true
}

Deployed Contracts

ContractAddressDescription
EntryPoint0xfA15FF1e8e3a66737fb161e4f9Fa8935daD7B04FCustom ERC-4337 v0.7 EntryPoint
Paymaster (Proxy)0xeAe0528eCfa059D96421268dc8FaeC7DcAf5b9F0Gas sponsorship contract
Paymaster (Impl)0xd2f8F112A3855Df8A7eDa1Ebe4887a521802458FPaymaster implementation
SBC0x33ad9e4bd16b69b5bfded37d8b5d9ff9aba014fbDefault stablecoin on Radius
PimlicoEntryPointSimulations0xcE77355CD450f1272841cF4aD10a93E65466041CGas estimation helper

Getting Test Tokens

The Radius faucet is available at https://testnet.radiustech.xyz/wallet. You'll need test tokens to interact with contracts on Radius.

Key Differences from Base

EntryPoint

Radius uses a custom EntryPoint deployment instead of the canonical v0.7 address:

// Base (canonical)
const baseEntryPoint = '0x0000000071727De22E5E9d8BAf0edAc6f37da032'
 
// Radius (custom — same address on mainnet and testnet)
const radiusEntryPoint = '0xfA15FF1e8e3a66737fb161e4f9Fa8935daD7B04F'

Smart Account Implementation

  • Base: Uses Kernel smart account (ZeroDev)
  • Radius: Uses SimpleAccount (more lightweight)
// The SBC AppKit automatically handles this difference
// No code changes needed when switching chains

Gas

// Radius: Low, predictable gas fees
await sendUserOperation({
  to: recipient,
  value: '1000000000000000000',
  data: '0x'
})
// Fixed gas price (~$0.000093 per transfer)

Why the Custom EntryPoint?

Radius uses a custom EntryPoint deployment for:

  1. Architectural Sovereignty: Full control over EntryPoint behavior and upgrades
  2. Faster Iterations: Not tied to canonical EntryPoint upgrade cycles
  3. Cost Optimization: Optimized gas usage across the network

Note: When deploying to Radius, always use the custom EntryPoint address for the network you're targeting. The canonical EntryPoint will not work.

Important Caveats

Legacy Transactions Only (No EIP-1559)

Radius does not support EIP-1559 transactions. All transactions must use legacy (type 0) format with gasPrice instead of maxFeePerGas/maxPriorityFeePerGas.

When constructing UserOperations, maxPriorityFeePerGas must equal maxFeePerGas. Setting them to different values will cause the transaction to be rejected:

Error: maxPriorityFeePerGas must equal maxFeePerGas on chains that don't support EIP-1559

Note: The SBC AppKit (@stablecoin.xyz/core v1.6.1+) handles this automatically.

Block Production Speed and getLogs Limits

Radius produces blocks extremely fast (~1600 blocks/sec). This can cause eth_getLogs calls to quickly exceed the RPC's block range limit (~500,000 blocks). Polling for transaction receipts using getLogs with a growing block range will fail within seconds. Bounded queries are almost always needed.

The SBC AppKit works around this by using the bundler's pimlico_getUserOperationStatus endpoint for receipt polling on Radius chains.

RUSD Balance vs eth_getBalance

On Radius, eth_getBalance returns an inflated value that includes the potential SBC-to-RUSD conversion via the Turnstile mechanism. To check actual RUSD balance, use the rad_getBalanceRaw RPC method:

cast rpc rad_getBalanceRaw <address> --rpc-url https://rpc.radiustech.xyz

CREATE2 Deployment Limitation

The deterministic CREATE2 deployer (0x4e59b44847b379578588920cA78FbF26c0B4956C) fails on Radius when deploying contracts with large bytecode. Use direct deployment (cast send --create) instead. Contract addresses will not be deterministic but can be configured explicitly.

Bundler Configuration

When running an ERC-4337 bundler (e.g., Alto) on Radius, enable legacy transaction mode:

{
  "legacy-transactions": true,
  "entrypoint-simulation-contract-v7": "<deployed-address>"
}

Next Steps

External Resources