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

# Verify on-chain

> How to check USDh on the blockchain yourself, without trusting Hamilton.

**You should not have to take Hamilton's word for anything that can be checked.** This page shows you how to check the most important things yourself on Etherscan, a free public website for reading Ethereum. You don't need a wallet or an account.

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

All addresses are on [Contracts](https://docs.hamilton.xyz/for-developers/contract-addresses.md). Always check you are on the right address before you trust what you read.

**1. How much USDh exists**

Open the [USDh token page](https://etherscan.io/token/0xbcfc42391e55484129191edfcc766a2c6f9eb503). **Max Total Supply** is every USDh in existence. USDh is only created when money comes in, so supply only grows when it does.

On the same page, **Holders** lists every wallet holding USDh, and **Transfers** shows every mint, redemption and transfer.

**2. That nobody can quietly change the rules**

Every admin change must be scheduled through the [timelock contract](https://etherscan.io/address/0x9461ffd88ec07884338c7a2db648d4d82f0a98d3) at least 48 hours before it can run.

* On the timelock's **Events** tab, a **CallScheduled** line is a pending change. It shows what will change, on which contract, and when it can run.
* Under **Read Contract**, `getMinDelay` returns `172800`. That is 48 hours, in seconds.

If a change is scheduled that you don't like, you have at least 48 hours to act before it takes effect.

**3. Who holds which power**

Each power on the contract is a "role", held by one address.

| Role | Held by | What it can do |
| - | - | - |
| `DEFAULT_ADMIN_ROLE` | Timelock `0x9461fFd88eC07884338C7a2dB648D4d82F0a98D3` | All admin changes, after the 48-hour wait |
| Timelock proposer | Admin Safe `0x1F12A0C4A860134D1796fE32481A0a52d69c25A3` | Schedule changes, which still wait 48 hours |
| `PAUSER_ROLE` | Pauser Safe `0xa4F583baF95057Dd5876588c93198561dC45a6DC` | Pause, freeze an address, switch off a stablecoin |
| `MINTER_ROLE` | Minter Safe `0x03283b9CeaC02d13b035Fd0ad77f3058F19daF93` | Create USDh after a wire clears, within the daily limit |
| `ONBOARDING_ROLE` | Onboarding Safe `0x3b51Ac47BB3448F657DCb514FC32e1F6A688b0B6` | Add or remove Mint User wallets |

To check a row: on the USDh contract under **Read as Proxy**, read the role's name (for example `PAUSER_ROLE`) to get its ID. Paste that ID and the address into `hasRole`. `true` means that address holds the power. The account that deployed the contract holds no role at all.

**4. The current settings**

On the [USDh contract](https://etherscan.io/address/0xbcfc42391e55484129191edfcc766a2c6f9eb503), under **Read as Proxy**:

* `paused`: `false` means the system is running normally.
* `frozen`: enter any address to see if it is frozen.
* `supportedStables`: the stablecoins accepted for minting today.
* `mintCap` and `mintCapRemaining`: the 24-hour limit on wire minting, and how much is left in the current window.
* `totalStableBacking`: the stablecoins in the treasury wallet right now. This is only one part of the reserves.

**5. What backs USDh**

Reserve holdings are published by Hamilton on the Transparency page in the [Hamilton app](https://app.hamilton.xyz). They have **not been checked by an independent firm yet**. See [Reserves](https://docs.hamilton.xyz/trust-and-transparency/reserves-and-backing.md).

## What you can't check on the blockchain yet

Being clear about the limits is part of the point:

* Most of the reserves are cash and Treasury bills held off the blockchain, so Etherscan can't show them.
* No independent reserve report or contract audit has been published yet.

Both are listed on [Risks](https://docs.hamilton.xyz/trust-and-transparency/risks.md) for that reason.

*Last updated: 10 November 2026*


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