White Rabbit provides a complete set of components for interacting with Gnosis Safe multisig wallets — from deployment to transaction execution and owner management.
Avoid public RPC endpoints
White Rabbit runs on shared infrastructure with a shared outbound IP pool. Public RPC URLs enforce rate limits per IP — under load this can cause errors across all workspaces sharing that IP. Use a private endpoint (Alchemy, Infura, QuickNode, or self-hosted). See Connecting to any chain .
BUILD_EVM_GNOSIS_SAFE_DEPLOYMENT
BUILD_EVM_GNOSIS_SAFE_DEPLOYMENT
Workflow
Component
Build the deployment transaction for a new Gnosis Safe proxy. Use GET_EVM_SAFE_ADDRESS first to predict the counterfactual address.
Config
None.
Field Type Description jsonRpcUrlstringJSON-RPC endpoint ownersstring[]Owner addresses thresholdnumberRequired confirmations (e.g. 2 for 2-of-3) saltNoncenumberNonce for CREATE2 address determinism
Outputs
Field Type Description deploymentTransactionobjectUnsigned deployment transaction
GET_EVM_SAFE_ADDRESS
GET_EVM_SAFE_ADDRESS
Workflow
Component
Predict the counterfactual address of a Safe before deploying it. Deterministic based on owners, threshold, and salt.
Config
None.
Field Type Required Description jsonRpcUrlstringYes JSON-RPC endpoint ownersstring[]Yes Owner addresses (at least 1) thresholdnumberYes Confirmation threshold (≥ 1) saltNoncestringYes CREATE2 salt as a bigint string singletonAddressstringNo Custom Safe singleton address (uses canonical default if omitted) proxyFactoryAddressstringNo Custom SafeProxyFactory address fallbackHandlerAddressstringNo Custom fallback handler address
Outputs
Field Type Description safeAddressstringPredicted Safe address (0x...) initializerCalldatastringEncoded setup() calldata used during deployment
IS_EVM_SAFE_DEPLOYED
IS_EVM_SAFE_DEPLOYED
Workflow
Component
Check if a Safe is already deployed at the given address.
Config
None.
Field Type Description jsonRpcUrlstringJSON-RPC endpoint addressstringSafe address to check
Outputs
Field Type Description deployedbooleantrue if deployed
GET_EVM_GNOSIS_SAFE_NONCE
GET_EVM_GNOSIS_SAFE_NONCE
Workflow
Component
Read the current nonce from a deployed Safe. Required for building valid Safe transactions.
Config
None.
Field Type Description jsonRpcUrlstringJSON-RPC endpoint safeAddressstringDeployed Safe address
Outputs
Field Type Description noncenumberCurrent Safe nonce
BUILD_EVM_SAFE_SIGNATURE
BUILD_EVM_SAFE_SIGNATURE
Workflow
Component
Compute the EIP-712 typed data hash for a Safe transaction. Pass the hash to SIGN_WITH_KEY_SHARE to produce a valid Safe signature.
Config
Field Type Default Description mode'hash' | 'pre-validated''hash'Signature mode. 'hash' produces an EIP-712 typed-data hash for signing. 'pre-validated' marks the owner as pre-validated (no off-chain signature needed)
Field Type Description safeAddressstringSafe address chainIdnumberChain ID (from GET_EVM_CHAIN_ID) tostringTarget address of the inner call valuenumber?ETH value (default 0) datastring?Calldata for inner call operationnumber?0 = CALL, 1 = DELEGATECALLnoncenumberCurrent Safe nonce ownerAddressstring?Signing owner address
Outputs
Field Type Description messageHashstringEIP-712 hash to sign safeTransactionHashstringSafe-domain transaction hash
BUILD_EVM_SAFE_TRANSACTION
BUILD_EVM_SAFE_TRANSACTION
Workflow
Component
Assemble the final Safe multisig transaction calldata from inner calldata and collected signatures.
Config
Field Type Default Description operation'call' | 'delegatecall''call'EVM call type. Use 'delegatecall' only for module-level operations
Field Type Required Description safeAddressstringYes Gnosis Safe proxy address innerTostringYes Target address of the inner call innerCalldatastringYes ABI-encoded calldata for the inner call innerValuestringNo ETH value for the inner call (bigint string, default "0") signaturesstring[]Yes Array of owner signatures from SIGN_WITH_KEY_SHARE
Outputs
Field Type Description calldatastringEncoded execTransaction(...) calldata — pass as calldata to BUILD_EVM_TRANSACTION tostringSafe proxy address (pass-through, use as to in BUILD_EVM_TRANSACTION) valuestringETH value (always "0" — Safe holds no ETH for meta-txs)
MANAGE_SAFE_OWNERS
MANAGE_SAFE_OWNERS
Workflow
Component
Generate the calldata to add, remove, or swap a Safe owner, or change the signing threshold.
Config
Field Type Required Description action'addOwnerWithThreshold' | 'removeOwner' | 'swapOwner' | 'changeThreshold'Yes Owner management operation to perform
Field Type Required Description safeAddressstringYes Gnosis Safe proxy address ownerstringConditional Owner to add, remove, or swap out (required for addOwner, removeOwner, swapOwner) newOwnerstringConditional Replacement owner address (required for swapOwner) prevOwnerstringConditional Predecessor address in the Safe's internal owners linked list (required for removeOwner, swapOwner) thresholdnumberConditional New signing threshold (required for addOwnerWithThreshold, changeThreshold)
Outputs
Field Type Description calldatastringEncoded owner management calldata — pipe into BUILD_EVM_SAFE_TRANSACTION as innerCalldata tostringSafe proxy address (target of the inner call) valuestringETH value (always "0")
BUILD_EVM_MULTICALL
BUILD_EVM_MULTICALL
Workflow
Component
Bundle multiple MulticallItem objects into a single batched call. Use with BUILD_EVM_MULTICALL_ITEM and ARRAY_BUILDER.
Config
None.
Field Type Description callsMulticallItem[]Array of call items (output of ARRAY_BUILDER)
Outputs
Field Type Description calldatastringEncoded multicall calldata
BUILD_EVM_MULTICALL_ITEM
BUILD_EVM_MULTICALL_ITEM
Workflow
Component
Construct a single call entry for a multicall batch.
Config
None.
Field Type Description targetstringContract address to call callDatastringABI-encoded calldata allowFailureboolean?If true, a failure won't revert the entire batch valuenumber?ETH value for this call
Outputs
Field Type Description callMulticallItemSingle item for use in BUILD_EVM_MULTICALL
Example: 2-of-3 Safe transaction
GENERATE_KEY_SHARE (×3 owners)
│
├──▶ COMPUTE_PUBLIC_KEY ──▶ COMPUTE_EVM_ADDRESS (owner 1)
├──▶ COMPUTE_PUBLIC_KEY ──▶ COMPUTE_EVM_ADDRESS (owner 2)
└──▶ COMPUTE_PUBLIC_KEY ──▶ COMPUTE_EVM_ADDRESS (owner 3)
│
▼
GET_EVM_SAFE_ADDRESS (owners[], threshold=2, saltNonce=0)
│
▼
IS_EVM_SAFE_DEPLOYED? → if not → BUILD_EVM_GNOSIS_SAFE_DEPLOYMENT
│
▼
GET_EVM_GNOSIS_SAFE_NONCE + GET_EVM_CHAIN_ID + BUILD_EVM_CALLDATA
│
▼
BUILD_EVM_SAFE_SIGNATURE (×2 owners)
│
SIGN_WITH_KEY_SHARE (×2)
│
▼
BUILD_EVM_SAFE_TRANSACTION
│
▼
BUILD_EVM_TRANSACTION → BROADCAST_EVM_TRANSACTION