DEVOXPAD
Documentation

FAQ

Short answers to the questions that come up most.

General

Why does totalSupply show zero?

Because the token is private. Publishing an aggregate would leak what the encryption protects, so PrivateERC20 returns zero deliberately. It is a signal, not a bug.

Can anyone see how much I hold?

No. Your balance is a ciphertext in contract storage and only your AES key turns it into a number. What is visible is that a transfer or a swap occurred, and its size when it went through a public pool.

Is trading on DevoxSwap private?

The swap itself is public by construction: an AMM has to expose reserves and price to work. Privacy protects what you hold, not the act of trading it in a public pool.

Do you ever see my messages?

No. Bodies are ciphertext on chain and the key that decrypts them is derived and cached in your browser. The server reads routing metadata only.

Trading

Why does selling need two transactions?

An ERC-20 spender has to be approved before it can pull tokens. COTI's PrivateERC20 also refuses to overwrite a non-zero allowance with another non-zero value, so the interface resets to zero first when needed.

Why did my transaction run out of gas?

MPC operations are far more expensive than ordinary storage writes. A private buy costs roughly 720k gas, a sell about 1.46M, and a factory launch close to 4M. The interface sets generous explicit limits for this reason.

What happens to the curve after graduation?

It freezes. buy and sell revert, the reserve has already moved into the pair, and the LP shares sit in the curve contract, which has no function that can move them.

Building on it

The pending block tag breaks my deploy

COTI's RPC rejects the pending block tag on eth_estimateGas, which is what hardhat-ethers reaches for by default. Estimate against latest over the raw provider and pass an explicit gasLimit, which makes ethers skip its own estimation.

ethers says my call is ambiguous

PrivateERC20 overloads balanceOf and approve for public and encrypted amounts. Name the signature you want.

await erc["balanceOf(address)"](user);
await erc["approve(address,uint256)"](spender, amount);

Where do I get the current addresses?

From the master table, config/devoxpad.mainnet.json or config/devoxpad.testnet.json, served at /api/config. Add ?network=testnet to ask for the other one. The deploy script rewrites whichever it deployed to, so neither drifts from what is actually on chain.

FAQ · DEVOXPAD