Skip to main content

DS Token Testnet Faucet

The faucet distributes testnet DS tokens to supported wallets on Ethereum Sepolia. It is completely open access, but it is not a minting contract.

What you get

Each faucet request delivers a predefined amount of testnet DS tokens to your wallet. These tokens are the same DS tokens used by VaultRegistrar, so they can be used immediately for integration testing.

How it works

  1. Navigate to the Sandbox Faucet page
  2. Use Ethereum Sepolia
  3. Connect your wallet or enter a recipient address
  4. Submit the request
  5. Receive a transaction confirmation with a block explorer link

Key points

  • No sign-up required — Connect your wallet and request tokens immediately
  • Per-wallet cooldown — Each wallet can request tokens once per 24-hour period on Sepolia
  • Auto-registration — If your wallet is not yet registered as an investor in the DS Protocol, the faucet auto-registers it during the first request
  • Allowance model — The faucet uses transferFrom against a funded provider wallet; it does not mint DS
  • Sepolia-only — The current sandbox deployment supports Ethereum Sepolia only

Faucet contract interface

Source: bc-securitize-faucet-sc · ABI mirror: src/config/faucet-abi.ts

Views

function dripAmount() external view returns (uint256);
function cooldownPeriod() external view returns (uint256);
function totalDrips() external view returns (uint256);
function getAvailableAllowance() external view returns (uint256);
function getRemainingCooldown(address recipient) external view returns (uint256);
function token() external view returns (address);
function providerWallet() external view returns (address);
function lastClaimTime(address recipient) external view returns (uint256);

State-changing

function requestTokens(address recipient) external;

Events

event TokensRequested(address indexed recipient, uint256 amount);
event WalletAutoRegistered(address indexed wallet, string investorId);

Custom errors

error CooldownNotElapsed(address recipient, uint256 nextClaimTime);
error InsufficientAllowance(uint256 available, uint256 required);
error InvalidAddress();
error DripAmountMustBePositive();
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);

Next steps