Skip to content

FuturePass

FuturePass is the on-chain identity + proxy account model used across The Root Network and the wider Futureverse platform. It abstracts wallets behind a stable identity so users can keep one identity while rotating keys and delegating capabilities.

This page is a single entry point. Everything you might want to know about FuturePass lives on a few pages on this site — pick the right level of detail below.

Concept

A FuturePass is a unique on-chain account that acts as a proxy for one or more EOAs (externally-owned addresses). Instead of authenticating directly as your wallet, you authenticate via your FuturePass — and the FuturePass routes the call to your underlying signer.

Two practical consequences:

  • Stable identity. Your FuturePass address doesn't change when you rotate keys or change wallets.
  • Capability delegation. A FuturePass can grant another address (a "delegate") permission to act on its behalf without sharing private keys.

It is implemented on TRN as a Substrate pallet (futurepass) and an EVM precompile (FuturePass Registrar at the well-known address — see Appendix B).

Where to authenticate against (post Futureverse winddown)

Issuer is now operated by gen3labs

The FuturePass OIDC issuer + custodial signer were re-hosted by gen3labs after Futureverse went into winddown. Point your auth client at:

These are the defaults in @gen3labs/futurepass-auth — you only set the URLs explicitly if you have a non-default deployment.

Where it lives in this site

Substrate pallet
api/root/futurepass — auto-generated metadata reference (calls, events, errors, storage). Or the prose-style runtime-pallets/futurepass.
EVM precompile
runtime-precompiles/futurepass — Solidity ABI for the registrar and per-FuturePass proxy contract.
Identity / OIDC SDK
@futureverse/auth — OIDC client for FuturePass. Pairs with @futureverse/auth-react (React provider/hooks) and @futureverse/auth-ui (drop-in UI). Native: @futureverse/auth-react-native. Server: @futureverse/next-auth.
Transactions through a FuturePass
@gen3labs/futurepass-transact (community-maintained) or its identical predecessor @futureverse/transact. Both expose the TransactionBuilder pattern — a fluent API that chains domain calls with FuturePass proxying and FeeProxy fee preferences.
Wallet connectors (wagmi)
@futureverse/wagmi-connectors — wagmi connectors for Futureverse wallets, including custodial Pass.
Glossary
FuturePass — quick definition with cross-references.

Typical wiring

ts
import { FutureverseAuthProvider } from '@futureverse/auth-react';
import { TransactProvider } from '@futureverse/transact-react';

export default function App({ children }) {
  return (
    <FutureverseAuthProvider clientId="…" issuer="https://login.passonline.cloud">
      <TransactProvider chainId={7668 /* Root */}>
        {children}
      </TransactProvider>
    </FutureverseAuthProvider>
  );
}

For a worked example, see Curated examples on the official docs side, and the full @futureverse/auth-ui README.

Submitting an extrinsic via FuturePass (Substrate)

ts
import { ApiPromise, WsProvider } from '@polkadot/api';
import { typesBundle } from '@therootnetwork/api-types';

const api = await ApiPromise.create({
  provider: new WsProvider('wss://root.rootnet.live/archive/ws'),
  typesBundle,
});

const fpass = (await api.query.futurepass.holders(ownerAddress)).unwrap();
const inner = api.tx.assets.transfer(2 /* XRP */, recipient, 1_000_000n);
await api.tx.futurepass.proxyExtrinsic(fpass, inner).signAndSend(signer);

Calling the EVM precompile

The registrar is at a fixed precompile address (see Appendix B). It exposes futurepassOf(owner), create(owner), and per-FuturePass proxyCall(target, value, data). The full ABI is on the FuturePass precompile reference.

Curated independently by Codeology. Source-attributed reference for The Root Network. Not affiliated with Futureverse / TRN Labs.