Skip to main content

Contracts & Faucet

The following contracts are deployed on Arbitrum Sepolia. These addresses should stay aligned with smart-contract/.env and frontend/.env.local.

ContractAddressNotes
PulsarProtocol proxy0x204488318C0E75978B3c851382Aa83f3065a8f5AMain entry point for mint, redeem, swap, and KYC.
PulsarProtocol implementation0x14c54E6cade1A13c73685c239aE895A7d37DC3dfVerified UUPS implementation.
IDRX mock0x03b53A71C5517907006EAb512A31C1eD5a56Ae64Testnet stablecoin with 2 decimals.
UniswapV2Factory0x4254378E95dBD9816a1a18428A81B4E1fBe5C296Custom factory on Arbitrum Sepolia.
UniswapV2Router020xFEf655B2A0742134242711b80899d0b543A74223Router used for liquidity and swaps.
IDRXFaucet0x286954bE9b8a2B52f2A61432Fa448C5287e4dDEATestnet IDRX faucet.
WETH0x980B62Da83eFf3D4576C647993b0c1D7faf17c73External Arbitrum Sepolia dependency.

IDRX faucet

Mint testnet IDRX from the faucet

This button calls drip() on the IDRXFaucet contract. Each wallet can claim 100,000 IDRX once every 24 hours.

Open in Arbiscan
Ready to mint 100,000 testnet IDRX once every 24 hours.

Manual Foundry call:

cast send 0x286954bE9b8a2B52f2A61432Fa448C5287e4dDEA "drip()" \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY"

Network

Frontend environment mapping

The frontend expects public contract addresses through environment variables:

NEXT_PUBLIC_PULSAR_PROTOCOL_ADDRESS=0x204488318C0E75978B3c851382Aa83f3065a8f5A
NEXT_PUBLIC_IDRX_ADDRESS=0x03b53A71C5517907006EAb512A31C1eD5a56Ae64
NEXT_PUBLIC_RPC_URL=...
NEXT_PUBLIC_BACKEND_URL=...
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=...

Smart contract environment mapping

The smart contract scripts use:

PULSAR_PROTOCOL_PROXY=0x204488318C0E75978B3c851382Aa83f3065a8f5A
PULSAR_PROTOCOL_IMPL=0x14c54E6cade1A13c73685c239aE895A7d37DC3df
IDRX=0x03b53A71C5517907006EAb512A31C1eD5a56Ae64
UNISWAP_V2_FACTORY=0x4254378E95dBD9816a1a18428A81B4E1fBe5C296
UNISWAP_V2_ROUTER=0xFEf655B2A0742134242711b80899d0b543A74223
WETH=0x980B62Da83eFf3D4576C647993b0c1D7faf17c73

Verification checklist

Before a demo or review session, verify:

  • PulsarProtocol.router() equals the deployed Uniswap V2 router.
  • UniswapV2Router02.factory() equals the deployed factory.
  • PulsarProtocol.idrx() equals the mock IDRX token.
  • The frontend env points to the same protocol and IDRX addresses.
  • The faucet has enough IDRX balance.
  • At least one pStock has been minted and has a usable pool.