Nullifier Set Sync 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 Nullifier Set Sync Tool enables developers and operators to synchronize nullifier sets from shielded privacy pools to off-chain services. It reads shielded pool contract state, user address, wallet balance, nullifier set state, nullifier count, nullifier range, latest nullifier index, and sync batch size. The tool supports syncNullifiers for range-based synchronization, batchSyncNullifiers for specific nullifier indices, and commitNullifierSet for committing the entire set to an off-chain service. It reads gas price, block timestamp, chain ID, transaction nonce, approval state, and contract owner state before execution.
HOW TO USE
Connect your wallet, select the target network, and enter the shielded pool contract address. Set the sync batch size (number of nullifiers to sync per batch). Optionally specify a start index and end index to define the sync range—leave the end index blank to sync up to the latest nullifier. Enter the off-chain sync endpoint address (for reference). The tool will fetch the pool state, display the total nullifier count and latest index, and show the sync range. Once confirmed, it submits the appropriate sync transaction—syncNullifiers for range-based syncing, batchSyncNullifiers for specific nullifiers, or commitNullifierSet for a full set commit.
TECHNICAL MECHANISM
Unlike generic data sync tools, this executor is purpose-built for shielded pool nullifier synchronization. It first reads the pool's owner() and isActive() to ensure the contract is operational. The tool fetches nullifierCount() and latestNullifierIndex() to determine the current state and validate the sync range. It validates the start and end indices to ensure the range is valid (end > start, end ≤ total count). The tool selects the optimal sync method: syncNullifiers for range-based syncing with a specified endpoint, batchSyncNullifiers for syncing specific nullifier indices (using getNullifier() to fetch each), or commitNullifierSet for committing the entire set with a Merkle root. The sync endpoint address is passed as a parameter to the contract, which emits events for off-chain services to listen to. Gas costs are calculated using receipt.effectiveGasPrice for accurate post-EIP-1559 fee accounting, and the tool displays progress for batch operations.
WHAT IT CANNOT SEE
This tool cannot verify that the synced nullifier data is complete or that the off-chain service correctly processes the nullifiers. It cannot detect if nullifiers were omitted from the sync or if the sync process was interrupted. It also cannot guarantee that the synced state is consistent with the on-chain state. The tool cannot verify that the off-chain service is operational or that it has received the sync data. It also cannot detect if the nullifier set has changed during the sync process.
PLEASE NOTE
This tool supports EVM-compatible chains. Syncing nullifiers is a privileged operation—ensure you have the necessary permissions. The sync endpoint must be configured in the contract and listening for events. Range-based syncs can be gas-intensive; adjust batch size accordingly. The pool contract must implement the sync functions expected by this tool. This tool does not sync other pool state—only nullifiers. For full privacy maintenance, ensure nullifiers are synced before running withdrawal operations.