Shielded Pool Withdrawal Tool
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
The Shielded Pool Withdrawal Tool enables users to withdraw assets from privacy-preserving shielded pools. It reads shielded pool contract state, user address, wallet balance, and asset contract state for ERC-20, ERC-721, and ERC-1155 tokens. The tool processes withdrawal amounts, token IDs, recipient addresses, relayer addresses, fee amounts, nullifier proofs, and commitment proofs. It supports withdrawFromPool for standard withdrawals, batchWithdrawFromPool for multiple assets in one transaction, and withdrawWithProof for proof-based withdrawals. The tool reads gas price, block timestamp, chain ID, transaction nonce, approval state, contract owner state, pool size, nullifier set, and withdrawal status before execution.
HOW TO USE
Connect your wallet, select the target network, and enter the shielded pool contract address. Choose the asset type (ERC-20, ERC-721, or ERC-1155) and enter the asset contract address. For ERC-20, enter the withdrawal amount in token units; for ERC-721/1155, enter the token ID. Specify a recipient address (defaults to your wallet) and optionally a relayer address. Enter the nullifier proof (required) and commitment proof (optional). The tool will fetch pool state, check if the contract is active, and display the pool size. Once confirmed, it submits the appropriate withdrawal transaction, automatically selecting the correct method based on the provided proofs and asset type.
TECHNICAL MECHANISM
Unlike standard transfer tools, this executor interacts with shielded pools that require nullifier proofs to prevent double-spending. It first reads the pool's owner() and isActive() to ensure the contract is operational. The tool checks the pool state via poolSize() to provide context on the anonymity set. For withdrawals, the tool validates the nullifier proof against the pool's nullifier set using nullifierUsed() to ensure it hasn't been spent. The tool selects the optimal method: withdrawWithProof when both nullifier and commitment proofs are provided, withdrawFromPool for standard withdrawals, or batchWithdrawFromPool for multiple assets (ERC-1155). It handles relayer addresses to enable gasless transactions where supported. Gas costs are calculated using receipt.effectiveGasPrice for accurate post-EIP-1559 fee accounting.
WHAT IT CANNOT SEE
This tool cannot verify that the nullifier proof or withdrawal proof is correct beyond the pool contract's verification. It cannot detect if the proof was generated fraudulently or if the nullifier has already been used. It also cannot guarantee that the withdrawal is untraceable if the recipient address is re-used. The tool cannot verify that the recipient address is the intended withdrawal destination or that the relayer is trustworthy. It also cannot detect if the pool has been compromised or if the privacy guarantees have degraded.
PLEASE NOTE
This tool supports EVM-compatible chains. Withdrawing from a shielded pool is irreversible—verify all parameters carefully before signing. The pool contract must implement the withdrawal functions expected by this tool. The nullifier proof is required to prevent double-spending; ensure it is generated correctly off-chain. Using a relayer may improve privacy by obscuring the source of the withdrawal. For full privacy, avoid reusing recipient addresses or patterns. This tool does not generate proofs—for that, use the appropriate off-chain prover software.