Skip to main content

Cooldown and Limits

The faucet enforces rate limiting to prevent abuse while remaining open access.

Cooldown period

  • Duration: 24 hours per wallet per network
  • Scope: Each wallet address has an independent cooldown on each network
  • Check: The faucet contract exposes getRemainingCooldown(address) which returns the seconds remaining before the next request is allowed

Drip amount

Each request mints a fixed amount of testnet DS Tokens. The drip amount is configured per-network in the faucet contract and is displayed on the faucet page before you submit.

What the UI shows

StateDisplay
Ready to requestRequest button is enabled
Cooldown activeTimer showing remaining hours/minutes
Cooldown unknown"24-hour cooldown policy" informational message
Request pendingLoading spinner, button disabled

Programmatic usage

You can check the cooldown status directly on-chain:

interface IFaucet {
function getRemainingCooldown(address wallet) external view returns (uint256 seconds);
function requestTokens(address recipient) external;
}
import { createPublicClient, http } from "viem";
import { sepolia } from "viem/chains";

const client = createPublicClient({
chain: sepolia,
transport: http(),
});

const remaining = await client.readContract({
address: "0xFAUCET_ADDRESS",
abi: ["function getRemainingCooldown(address) view returns (uint256)"],
functionName: "getRemainingCooldown",
args: ["0xYOUR_WALLET"],
});

console.log(`Cooldown remaining: ${remaining} seconds`);
note

Direct calls to requestTokens() require the caller to have the appropriate permissions. The sandbox faucet UI routes requests through the BC Labs Gateway, which handles the privileged transaction submission.