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:
- Issuer:
https://futurepass.gen3labs.tech - Custodial signer:
https://fpsigner.gen3labs.tech - Manage Clients Console (register
client_id): https://futurepass.gen3labs.tech/manageclients
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 theTransactionBuilderpattern — 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
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)
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.
Related reading
- Asset Register · authentication — how SIWE pairs with FuturePass-backed sessions.
- Asset Register · Dev Portal — the wallet-gated tooling portal.
- Appendix B · Precompile addresses — fixed addresses + derivation.