> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usdh.money/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify on-chain

> The contract addresses, who holds which power, and how to check it all yourself.

**You should not have to take anyone's word for what can be checked.** Everything below can be read on Etherscan, a free public website for reading Ethereum. You don't need a wallet or an account.

## Addresses

All three contracts are on Ethereum. Make sure you're looking at the right address before you rely on anything you read.

| Contract | Address |
| - | - |
| USDh | `0xbcFC42391e55484129191eDfcC766a2c6F9eb503` |
| sUSDh | `0x0a2F67c696B3845DaceEf73fa7982FEA77e678C2` |
| Timelock | `0x9461fFd88eC07884338C7a2dB648D4d82F0a98D3` |

> [!NOTE]
>
> **How to read a contract on Etherscan.** Open the contract, press **Contract**, then **Read as Proxy**. You see a list of questions you can ask it. Press one to get the answer, live from the blockchain.

## How much USDh exists

Open the USDh contract. **Total supply** is every USDh in existence. **Transfers** shows every one made, sent or given back.

## What one sUSDh is worth

Open the sUSDh contract, then **Read as Proxy**:

| Ask | What it tells you | Example |
| - | - | - |
| `pps` | What one sUSDh is worth in USDh, with 18 decimals | `1019156000000000000` means 1.019156 USDh |
| `currentYieldRate` | The reward rate in force, and any end date or cap | `700` would mean 7.00% a year |
| `maxApyBps` | The highest rate the contract accepts | `2500` means 25% |
| `coolDownPeriod` | The exit wait, in seconds | `86400` seconds is one day |

## Whether a change is coming

Every change must be scheduled on the timelock at least 48 hours before it can run.

* On the timelock's **Events** tab, a **CallScheduled** line is a change waiting to happen.
* Under **Read Contract**, `getMinDelay` returns `172800`: 48 hours, in seconds.

## Who can do what

| Power | Held by | Speed |
| - | - | - |
| Change the code, the rate cap or other settings | The timelock | After 48 hours' public notice |
| Pause everything, freeze one address, switch off a stablecoin that lost its peg | An emergency wallet that needs several signatures | At once |
| Set or pause the sUSDh reward rate | A staking protocol wallet that needs several signatures, overseen by Publius Foundation for now. Not the USDh issuer | At once, within the cap |
| Make new USDh | Only against dollars or USDC that came in, from approved Mint User wallets | At once, within a daily limit |

No wallet can take or move your balance. Emergency powers can only stop things.

## Not checked yet

* **The reserves.** They are held off the blockchain and listed on the Transparency page in the [app](https://app.usdh.money/). Monthly reports by an independent firm are planned.
* **The code.** An independent audit of the USDh and sUSDh contracts is planned, and so is a public bug bounty. Both will be listed here.

The contracts are built on OpenZeppelin, open-source code used across Ethereum.

*Last updated: Nov 10, 2026*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.