Component Library
White Rabbit ships 60+ production-ready components across seven categories. Every component is a stateless, versioned executable unit with a typed input/output contract.
Component categories
| Category | Components | Description |
|---|---|---|
| HTTP & APIs | 1 | Generic HTTP requests to any REST endpoint |
| EVM (Ethereum) | 22 | Transactions, contract reads, Gnosis Safe, Uniswap, utilities |
| Bitcoin | 7 | Transactions, UTXO selection, address derivation, balance queries |
| Solana | 12 | Transactions, SPL tokens, program instructions, address derivation |
| MPC & Key Management | 8 | Threshold signing, key generation, encryption |
| Workflow Logic | 4 | FOR_EACH iteration, ARRAY_BUILDER, triggers |
| Utilities | 5 | Random values, hash functions, constants |
All components
HTTP & APIs
| Module | Description |
|---|---|
API_CALL | Make any HTTP/HTTPS request with custom headers, method, and body |
EVM (Ethereum)
| Module | Description |
|---|---|
READ_EVM_CONTRACT | Call a read-only contract function via eth_call |
DECODE_EVM_FUNCTION_RESULT | ABI-decode raw bytes returned from a contract call |
EVM_KECCAK256 | Compute keccak256 hash of a hex string |
BUILD_EVM_CALLDATA | ABI-encode a function call into calldata |
BUILD_EVM_TRANSACTION | Construct an unsigned EVM transaction (gas estimation included) |
SIGN_EVM_TRANSACTION | Combine unsigned transaction + signature into a signed tx |
BROADCAST_EVM_TRANSACTION | Broadcast a signed transaction and return the tx hash |
WAIT_FOR_EVM_TRANSACTION | Wait until a transaction is confirmed on-chain |
GET_EVM_ACCOUNT_BALANCE | Fetch native or ERC-20 token balance for an address |
GET_EVM_CHAIN_ID | Retrieve the chain ID from a JSON-RPC endpoint |
COMPUTE_EVM_ADDRESS | Derive an EVM address from a compressed public key |
ERC20_ABI_CONSTANT | Returns the standard ERC-20 ABI as a constant |
EVM_ZERO_ADDRESS_CONSTANT | Returns 0x0000000000000000000000000000000000000000 |
BUILD_EVM_GNOSIS_SAFE_DEPLOYMENT | Build a Safe deployment transaction |
GET_EVM_GNOSIS_SAFE_NONCE | Fetch current nonce from a deployed Safe |
GET_EVM_SAFE_ADDRESS | Predict the counterfactual Safe address |
IS_EVM_SAFE_DEPLOYED | Check if a Safe has been deployed |
BUILD_EVM_SAFE_SIGNATURE | Compute EIP-712 Safe transaction signature |
BUILD_EVM_SAFE_TRANSACTION | Assemble a Safe multisig transaction |
MANAGE_SAFE_OWNERS | Encode add/remove/swap owner calldata |
BUILD_EVM_MULTICALL | Bundle multiple calls into a single multicall |
BUILD_EVM_MULTICALL_ITEM | Construct a single item for a multicall batch |
GET_UNISWAP_SWAP_QUOTE | Fetch a live swap quote from Uniswap V3 |
BUILD_EVM_UNISWAP_SWAP_CALLDATA | Build calldata for a Uniswap V3 swap transaction |
GET_EVM_DERIVATION_PATH | Generate a BIP-44 derivation path for an address index |
Bitcoin
| Module | Description |
|---|---|
BROADCAST_BITCOIN_TRANSACTION | Broadcast a raw transaction to the Bitcoin network |
BUILD_BITCOIN_TRANSACTION | Build an unsigned PSBT with UTXO selection and fee estimation |
SIGN_BITCOIN_TRANSACTION | Apply signatures to a PSBT and finalize the raw transaction |
COMPUTE_BITCOIN_SIGNATURE_HASH | Compute a Bitcoin message or raw SHA-256 signature hash |
COMPUTE_BITCOIN_ADDRESS | Derive a Bitcoin address from a public key |
GET_BITCOIN_ACCOUNT_BALANCE | Fetch total UTXO balance for a Bitcoin address |
GET_BITCOIN_DERIVATION_PATH | Generate a BIP-44/49/84/86 derivation path |
Solana
| Module | Description |
|---|---|
BROADCAST_SOLANA_TRANSACTION | Broadcast a signed transaction to the Solana network |
BUILD_SOLANA_TRANSACTION | Build an unsigned Solana transaction with SOL transfer and/or instructions |
SIGN_SOLANA_TRANSACTION | Apply Ed25519 signatures to an unsigned Solana transaction |
BUILD_SOLANA_INSTRUCTION | Construct a custom program instruction |
BUILD_SOLANA_ACCOUNT_META_ITEM | Wrap a public key into an AccountMeta for program instructions |
BUILD_SOLANA_TRANSFER_INSTRUCTION | Build SOL or SPL token transfer instructions |
BUILD_SOLANA_SIGNATURE_PAIR_ITEM | Wrap a public key + signature into a SignaturePair for multi-signing |
BUILD_SOLANA_NONCE_ACCOUNT_INSTRUCTION | Build instructions to create a durable nonce account |
COMPUTE_SOLANA_ADDRESS | Derive a Solana address from an Ed25519 public key |
CONVERT_SOLANA_PUBLIC_KEY | Convert a base58 Solana public key to hex |
GET_SOLANA_ACCOUNT_BALANCE | Fetch SOL or SPL token balance for an account |
GET_SOLANA_DERIVATION_PATH | Generate a BIP-44 Solana derivation path |
MPC & Key Management
| Module | Description |
|---|---|
GENERATE_KEY_SHARE | Create a new threshold key share (SECP256k1 or ED25519) |
COMPUTE_PUBLIC_KEY | Derive the public key from a key share at a derivation path |
SIGN_WITH_KEY_SHARE | Sign a message hash using a stored key share |
IMPORT_KEY_SHARE | Import an age-encrypted wrapped key share |
EXPORT_KEY_SHARE | Export a key share encrypted to a recipient's age public key |
REWRAPPING_KEY_SHARE | Re-encrypt a key share to a new age identity |
RECOVER_PRIVATE_KEY | Reconstruct a raw private key from a key share (threshold ≥ required) |
GENERATE_AGE_ENCRYPTION | Generate a fresh age identity (public key + encrypted private key) |
GET_NODE_RECIPIENT_KEY | Fetch the MPC node's age public key for secure key wrapping |
Workflow Logic
| Module | Description |
|---|---|
FOR_EACH | Iterate over an array, executing the downstream subgraph for each item |
ARRAY_BUILDER | Collect multiple inputs into a typed array |
ON_API_CALLED | Trigger: start a workflow when an HTTP request is received |
STRING_CONSTANT | Emit a static string value as a workflow output |
Utilities
| Module | Description |
|---|---|
RANDOM_UUID | Generate a cryptographically random UUID v4 |
RANDOM_HEX | Generate a cryptographically random hex string |
RANDOM_NUMBER | Generate a cryptographically random integer |
ERC20_ABI_CONSTANT | Returns the standard ERC-20 ABI |
EVM_ZERO_ADDRESS_CONSTANT | Returns the EVM zero address |
How components work
Typed ports
Every component defines inputs and outputs with JSON Schema types. The visual builder enforces type compatibility when you wire components together. Incompatible connections show a warning.
Billing model
Components are billed in two ways:
| Type | How it's charged |
|---|---|
PER_COMPONENT | Fixed credits per execution (regardless of duration) |
PER_EXECUTION_TIME | Credits proportional to wall-clock execution time |
Check each component's billing field for the exact amount.
Dynamic variables
Some components support dynamic variables — inputs or outputs that you define at design time. This lets you pass arbitrary data between workflow components even when the static schema doesn't have a matching field.
Execution attempts
Transient failures (network errors, RPC timeouts) are automatically retried up to 3 times with exponential backoff. The executionAttempt field in run stage results shows which attempt succeeded.
Discover components via API
The full live catalog (including third-party integrations) is always available:
curl https://api.whiterabbit.app/v1/system/components \
-H "Authorization: Bearer jwt_..."
This returns the complete ComponentResponse[] with current billing amounts, schemas, and metadata.