-
Who pays for the network fees?
The user pays Base network fees on deposit (included in the
txSendercallback). For withdrawals, the transaction is submitted directly and the user’s wallet also covers gas.
After you integrate with the SDK, no additional fee infrastructure is needed. - What’s the minimum deposit and withdrawal amount? Both are 0.001 ETH. Attempting to deposit or withdraw below this threshold will throw an error.
- Is there testnet support? Not currently. Please test on Base mainnet. Amounts as small as 0.001 ETH work fine for testing.
-
Does the client ever send the private key or encryption key to the relayer?
No. The signature derived from
signMessagenever leaves the client. All key derivation and UTXO decryption happens locally in the browser or Node.js process. -
What
keyBasePathshould I use?- Next.js frontend: Place
circuit2.zkeyinpublic/and passkeyBasePath: '/circuit'. - Node.js backend: Pass the path relative to your working directory, e.g.,
keyBasePath: './circuits/transaction'.
- Next.js frontend: Place
-
Why does
withdraw()succeed but the recipient receives less than the requested amount? Fees (flat fee + 0.35% rate fee) are deducted fromwithdrawAmountInput. The recipient receiveswithdrawAmountInput - fees. See Withdraw for the exact fee formula. -
Why does
getBalance()take a while? It scans all historicNewCommitmentevents from the contract and attempts to decrypt each one locally. Performance scales with the total number of deposits ever made to the pool. Caching is built into the SDK to speed up repeated calls. -
Can I use the Base SDK in a Node.js script without a browser wallet?
Yes. Create an
ethers.Walletfrom your private key, callsigner.signMessage(SIGN_PRIVACY_MESSAGE)to get the signature, and implementtxSenderusingsigner.sendTransaction(). See the Backend Integration page for a full example. -
Can I clear the local event cache?
Yes. Call
clearCache()exported fromprivacycash-evmto reset the cached UTXO event data.
