Skip to main content

Introduction

Welcome to VelumX — the Relayer-as-a-Service (RaaS) infrastructure for gasless transactions on the Stacks blockchain.

The Problem

Traditional blockchain applications require users to hold native tokens (STX on Stacks) to pay for transaction fees. This creates real friction:
  • Onboarding barrier: New users must acquire STX before they can do anything.
  • Poor UX: Users manage multiple token types just to execute simple actions.
  • Adoption blocker: Limits DeFi growth by requiring upfront capital in the wrong asset.

The VelumX Solution

VelumX is a Relayer-as-a-Service platform. Developers integrate gasless transactions by calling velumx.sponsor(txHex) — VelumX handles all the relayer infrastructure behind that single call.

Stacks-Native

Uses Stacks’ built-in sponsored transaction capability. No smart wallets, no account abstraction.

Multi-Tenant

Every developer gets an isolated relayer address and API key. Funds never mix.

What VelumX Provides

ComponentDescription
Relayer BackendMulti-tenant key derivation, STX sponsorship, nonce management, broadcast
@velumx/sdksponsor(), estimateFee(), buildSponsoredContractCall()
DashboardAPI key management, relayer funding, usage stats, key export
Pricing OracleReal-time token→STX pricing for accurate fee estimation

What Developers Provide

  • Their own contract calls (swap, bridge, stake — anything on Stacks)
  • Optionally: their own paymaster contract for USER_PAYS fee collection
  • An API key from the VelumX Dashboard

Two Integration Paths

DEVELOPER_SPONSORS — simplest path. The developer’s relayer pays STX gas. Users pay nothing.
// Build any Stacks contract call as sponsored
const tx = await buildSponsoredContractCall({ ... });
const signed = await wallet.sign(tx);
const { txid } = await velumx.sponsor(signed);
USER_PAYS — user pays a SIP-010 token fee. Developer deploys their own paymaster contract that atomically collects the fee and executes the action.
// User pays fee in USDCx, action executes atomically
const tx = await buildSponsoredContractCall({
  contractAddress: 'SP...my-paymaster',
  functionName: 'swap-with-fee',
  functionArgs: [...]
});
const signed = await wallet.sign(tx);
const { txid } = await velumx.sponsor(signed);