Technical overview · Version 0.4 · September 2026

PRIVATUM documentation

A self-custodial wallet and open developer toolkit on Robinhood Chain. Hold, send, and swap frontier assets (USDG & native ETH) privately with 2-of-3 threshold security. Your key is split into three shards, so no single party, not even PRIVATUM, can move your funds.

Non-custodial2-of-3 thresholdRobinhood ChainTauri v2 desktopOpen TypeScript SDK
01

Executive summary

Storing crypto today forces an unacceptable compromise. Hot wallets hold your entire private key in one place, so one malware infection drains everything. Hardware wallets cost $150+, run proprietary firmware, and add real friction. Neither gives you privacy: every transaction, balance, and counterparty stays permanently exposed on a public ledger.

PRIVATUM splits the private key mathematically across three independent shards with a 2-of-3 quorum. No single device or server can spend your funds, and transactions are shielded by default. It ships on two surfaces: a cross-platform native desktop app built on Tauri v2 for macOS, Windows and Linux, and @privatumrh/robinhood-chain-sdk, an audited Viem-based TypeScript SDK that lets any developer embed 2-of-3 threshold self-custody.

Why Robinhood Chain

Robinhood Chain is a permissionless, Ethereum-compatible Layer-2 built on Arbitrum Dedicated Blockchains, with ETH as its native gas token. It targets onchain financial infrastructure and tokenized real-world assets while supporting standard EVM tooling and ERC-4337 account abstraction.

02

The problem

Every existing wallet fails on at least one of three vectors: security, cost and accessibility, or privacy.

VulnerabilityMagnitudeRoot cause
Hot-wallet drainsEntire balance lost in an instantComplete private key in one browser extension or plaintext file
Hardware friction & cost$150+ per unit, shipping delaysReliance on proprietary secure-element hardware
Seed-phrase lossIrreversible loss of assets12/24-word phrases, single backup point, no quorum recovery
Zero on-chain privacyEvery transfer and balance is publicTransparent ledger state with no default shielding
Custodial riskFrozen accounts, insolvencies, withdrawal haltsA centralized third party holds the keys
The opportunity. No existing solution combines non-custodial security, graceful multi-party recovery, and cryptographic privacy out of the box on standard consumer hardware, without asking users to manage raw keys or seed phrases.
03

What PRIVATUM does

Private send

Transfer USDG or native ETH to any .privatum handle or raw Robinhood Chain address.

Stealth receive

Share your handle publicly. Payments arrive at dynamic, unlinkable one-time addresses via ERC-5564 stealth addresses.

In-wallet swaps

Swap between supported stablecoins and tokens natively through Robinhood Chain DEX aggregation.

2-of-3 custody

The signing key is split into three independent shards. Any two must cooperate to spend; one shard alone is powerless.

Graceful recovery

Lose your machine or drive shard and the remaining two (co-signer plus passkey) restore full access.

Two surfaces only

A hardened native desktop client and an open SDK. No browser extension, no custodial web app.

04

Architecture

PRIVATUM separates core shard and cryptographic lifecycle management from chain-specific execution. Supporting a future L2 or L1 means authoring one adapter: the desktop UI and co-signing infrastructure never change.

User surfaces
  Desktop App (Tauri v2)   |   Open SDK

PRIVATUM Core
  - Shard lifecycle management (Drive / Co-signer / Passkey)
  - Threshold signature orchestration
  - Co-signer protocol & policy enforcement engine

Execution layer
  Robinhood Chain adapter (ERC-4337)  |  DEX aggregation
LayerComponentResponsibility
CoreOpen SDKShard creation, import, wallet composition, transaction signing, network submission.
CoreCo-signer serviceStores Shard B encrypted at rest; enforces spending limits and multi-factor triggers; co-signs approved transactions.
CoreDesktop clientManages local Shard A on disk or keychain, executes user commands, renders the UI via Tauri v2.
AdapterRobinhood Chain adapterImplements ERC-4337 account abstraction, validates quorum, settles threshold signatures.
IntegrationDEX aggregatorRoutes swaps across Robinhood Chain liquidity for best execution.
Architectural invariant. Shard lifecycle, quorum recovery and co-signer protocols stay uniform across environments. Only the signature scheme and transaction wrapper change per adapter.
05

The shard model

At wallet initialization three shards are generated independently in a secure key-generation ceremony. The full private key is never assembled or stored anywhere.

Shard A

Client

Encrypted local file on the desktop filesystem or OS keychain. Defends against server-side compromise: PRIVATUM cannot sign without local confirmation.

Shard B

Co-signer

PRIVATUM secure co-signer service (isolated HSM / encrypted store). Defends against a stolen laptop: possession alone cannot drain funds.

Shard C

Recovery

Passkey via WebAuthn / Secure Enclave. Defends against disk failure: B + C combine to rotate keys or recover access.

  • Compromise of 1 shard: zero attacker spend authority.
  • Loss of 1 shard: complete recovery from the remaining two.
  • Non-custodial invariant: PRIVATUM holds exactly one shard, so it never has custody of your assets.
06

How a transaction signs

  1. Build. The desktop app or SDK composes the unsigned payload and generates the signing bytes.
  2. Client signs (Shard A). The client decrypts Shard A locally using user credentials and produces the first partial signature.
  3. Co-signer signs (Shard B). The partial signature and intent go over TLS to the co-signer API, which authenticates the session, verifies policy constraints such as daily volume and velocity limits, and produces the second partial signature.
  4. Combine. The two partial signatures merge mathematically into a single valid aggregate signature.
  5. Settle. The transaction is submitted through ERC-4337 bundlers; the smart contract validates the quorum and executes.
Recovery execution. If the local shard is permanently lost, the same pipeline runs with Shard C (passkey) in place of Shard A, authorizing emergency rotation or funds migration.
07

Security model

Guarantees are enforced by cryptography and on-chain contracts, not by promises.

ThreatOutcomeDefense
Physical theft of laptopPreventedAttacker has Shard A only; the co-signer rejects requests without valid session auth and a secondary challenge.
Device malware infectionContainedCo-signer validates outbound parameters against safety policies: rate limits and anomaly detection.
PRIVATUM server breachPreventedAttacker obtains Shard B only, which cannot authorize anything alone.
Hard drive failure or lossRecoveredPasskey (Shard C) combines with Shard B to restore access.
Malicious operatorNeutralizedPRIVATUM holds exactly 1 of 3 shards and has zero unilateral authority.

Signing relies on partial threshold signature combination and never assembles the private key into memory on a single machine. Client and co-signer environments stay strictly decoupled.

08

Privacy framework

Privacy is handled in two sequential planes: making the wallet setup indistinguishable on-chain, then keeping financial activity confidential.

Plane one: invisible setup

Threshold ECDSA: the 2-of-3 scheme aggregates off-chain into a standard single ECDSA signature, so the account looks like an ordinary single-key wallet.

Blind co-signing: the co-signer validates against policy using zero-knowledge proofs, verifying limits without recording or profiling the transaction graph.

Plane two: confidential activity

Stealth addresses (ERC-5564): senders derive one-time addresses from your public meta-address, so explorers cannot correlate incoming payments.

Screened privacy pools: association-set proofs verify assets come from clean, non-illicit sources before entering or exiting pools.

Compliance. PRIVATUM is a self-custodial privacy tool, not a tumbler. Pairing threshold cryptography with provable clean provenance keeps it listable and usable on standard Robinhood Chain infrastructure.
09

Desktop application

Rather than a browser extension or web app, the primary client is a native desktop application engineered with Tauri v2.

PRIVATUM Desktop Application
  Frontend: React / Tailwind UI
  Core backend: Tauri v2 (Rust core)
    - OS keychain / hardware secure storage integration
    - Local AES-GCM encrypted Shard A management
    - Direct RPC & co-signer TLS communication
  • Attack surface reduction: immune to extension hijacking, web injection and tab snooping.
  • OS-level key storage: Shard A rests in macOS Keychain, Windows Credential Manager or Linux Secret Service.
  • Lightweight footprint: native OS webviews instead of a bundled Chromium runtime.
  • Full toolkit: send and receive USDG and native ETH, native DEX swaps, shard health monitoring and backup verification, passkey recovery setup and rotation.
10

The open SDK

@privatumrh/robinhood-chain-sdk is an open-source, Viem-native TypeScript SDK enabling developers to embed PRIVATUM 2-of-3 threshold self-custody and privacy primitives directly into applications on Robinhood Chain (Chain ID: 4663).

bun add @privatumrh/robinhood-chain-sdk viem
# or
npm install @privatumrh/robinhood-chain-sdk viem

10.1 Quick Start: Create and Register Wallet

Generate device Shard A locally and register a deterministic 2-of-3 threshold smart account with the live PRIVATUM co-signer:

import { PrivatumWallet, LocalShard } from "@privatumrh/robinhood-chain-sdk";

// 1. Generate local device key (Shard A)
const shardA = LocalShard.create("device");

// 2. Register wallet with the live PRIVATUM co-signer
const { wallet, shardC } = await PrivatumWallet.create({
  existingShardA: shardA,
});

console.log("Wallet address:", wallet.address);
console.log("Co-signer Shard B address:", wallet.shardB.address);
console.log("Recovery Shard C address:", shardC.address);
console.log("API Key for co-signing:", wallet.apiKey);

10.2 ERC-4337 Threshold Transfers (USDG & Native ETH)

Transfers are executed as ERC-4337 UserOperations. Shard A signs locally and requests a threshold co-signature from Shard B over TLS. Both 65-byte signatures are combined into a 130-byte payload verified by PrivatumAccount.sol:

import { parseEther, parseUnits } from "viem";

// Send native ETH on Robinhood Chain
const ethReceipt = await wallet.sendAsset({
  to: "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  amount: parseEther("0.05"),
  asset: "ETH",
});
console.log("ETH UserOp hash:", ethReceipt.userOpHash);

// Send USDG stablecoin (6 decimals)
const usdgReceipt = await wallet.sendAsset({
  to: "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  amount: parseUnits("25.0", 6),
  asset: "USDG",
});
console.log("USDG UserOp hash:", usdgReceipt.userOpHash);

10.3 Emergency Recovery (Shard C + TOTP 2FA)

If the user loses their primary device, Shard C combines with Co-signer Shard B through standard RFC 6238 TOTP two-factor authentication to rotate Shard A on-chain without revealing private keys:

import { PrivatumWallet, LocalShard } from "@privatumrh/robinhood-chain-sdk";

// Generate replacement device key
const newShardA = LocalShard.create("device");

// Submit recovery rotation signed by Shard C + Shard B
const receipt = await PrivatumWallet.recoverWallet({
  walletAddress: "0xYourWalletAddress",
  shardC: savedRecoveryShardC,
  totpCode: "654321",
  newShardAAddress: newShardA.address,
});
console.log("Recovery UserOp broadcast:", receipt.userOpHash);

10.4 Address Poisoning Sentinel

Prevent users from sending funds to vanity look-alike dust addresses copied from transaction history. The sentinel calculates prefix/suffix edit distances and detects spoofing attempts before Shard A signs:

import {
  checkAddressPoisoning,
  requiresAcknowledgement,
} from "@privatumrh/robinhood-chain-sdk";

const verdict = checkAddressPoisoning({
  recipient: "0x1234c0532925a3b844bc454e4438f44e1234abcd",
  history: [
    {
      type: "send",
      counterparty: "0x123488888888888888888888888888888888abcd",
      amount: "10.0",
      asset: "USDG",
    },
  ],
  ownAddresses: [wallet.address],
});

if (requiresAcknowledgement(verdict)) {
  console.warn("Security Alert:", verdict.title);
  console.warn(verdict.detail);
  console.warn("Look-alike of:", verdict.lookalikeOf);
}

10.5 In-App Spending Guardrails

Client-side financial limits protect against fat-finger errors and unauthorized drainage with 24-hour rolling velocity tracking and configurable strictness:

import {
  evaluateSpend,
  recordSpend,
  loadGuardrailConfig,
  loadSpendingHistory,
  estimateUsdValue,
} from "@privatumrh/robinhood-chain-sdk";

const config = loadGuardrailConfig(wallet.address);
const history = loadSpendingHistory(wallet.address);

const amountUsd = estimateUsdValue("150", "USDG");
const verdict = evaluateSpend(config, amountUsd, history);

if (!verdict.allowed) {
  throw new Error(`Transfer blocked by strict guardrail: ${verdict.message}`);
}

10.6 Disposable Escrow PayLinks

Generate non-interactive, single-use burner payment links that keep primary wallet addresses completely hidden from third parties:

import {
  createPayLink,
  getPayLink,
  checkAndSweepPayLink,
} from "@privatumrh/robinhood-chain-sdk";

// Create shielded paylink
const paylink = await createPayLink({
  senderWallet: wallet.address,
  amount: "50",
  asset: "USDG",
  expiryHours: 24,
  memo: "Invoice #1042",
  singleUse: true,
});

// Check and sweep funds to recipient
const sweep = await checkAndSweepPayLink(paylink.slug);
console.log("Swept:", sweep.swept, "Tx Hash:", sweep.txHash);

Published on npm as @privatumrh/robinhood-chain-sdk. Supports custom co-signer URLs, headers, and pluggable cosign callbacks.

11

Network & surfaces

PropertyRobinhood Chain mainnet
Network typePermissionless, Ethereum-compatible Layer-2
Underlying stackArbitrum Dedicated Blockchains
Native gas tokenETH
Chain ID4663
Block explorerrobinhoodchain.blockscout.com
Account abstractionERC-4337 supported
PrivatumFactory0x5308e6f5faafa7ef6fff948994bd396a982be0d0
EntryPoint v0.60x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
USDG Token0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
SurfaceDetail
Desktop applicationmacOS, Windows, Linux: Tauri v2 native client
Mobile companion appAndroid release APK (React Native + Expo)
Source repositorygithub.com/PrivatumRH/privatum
Open SDK@privatumrh/robinhood-chain-sdk on npm
Co-signer APIhttps://api.privatumrh.com
Security reportssecurity@privatumrh.com
12

Status & roadmap

CapabilityStateDetail
Co-signer serviceLiveNon-custodial, encrypted shard at rest, automated policy enforcement (api.privatumrh.com)
Desktop walletLiveNative macOS, Windows and Linux client on Tauri v2 (v0.1.13)
Android companion appLiveReact Native companion APK with QR payments and threshold smart accounts
Robinhood Chain adapterLivePrivatumFactory deployed at 0x5308e6f5faafa7ef6fff948994bd396a982be0d0
Open SDKLivePublished as @privatumrh/robinhood-chain-sdk on npm
Swaps & BridgeLiveDEX aggregation for low-slippage USDG/ETH routing plus Relay cross-chain bridging with $PRIV rebates
Disposable PayLinksLiveShielded single-use burner links with automatic escrow sweep
Security GuardrailsLiveAddress poisoning sentinel and 24-hour spend velocity limits
Gasless StakingLiveTiered monthly sponsored transaction pass powered by $PRIV staking
Threshold privacyIn progressThreshold ECDSA, blind co-signing via ZK proofs, ERC-5564 stealth addresses

Path: Robinhood Chain custody → native privacy → multichain. See the roadmap timeline for phase detail.