> ## 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.

# Contracts

> Every USDh contract address, the code history, and notes for integrators.

All of Hamilton's contracts are on Ethereum mainnet (chain ID 1). Before you use an address, check it against this page.

## Addresses

| Contract | Address | What it is |
| - | - | - |
| USDh | [`0xbcFC42391e55484129191eDfcC766a2c6F9eb503`](https://etherscan.io/token/0xbcfc42391e55484129191edfcc766a2c6f9eb503) | The token. 6 decimals, like USDC. This address never changes |
| Timelock | [`0x9461fFd88eC07884338C7a2dB648D4d82F0a98D3`](https://etherscan.io/address/0x9461ffd88ec07884338c7a2db648d4d82f0a98d3) | Holds every admin power, with a 48-hour delay |
| Treasury | [`0x0338dA47D77f7E0901e1eC71076A3ff20ed5b530`](https://etherscan.io/address/0x0338da47d77f7e0901e1ec71076a3ff20ed5b530) | Holds the stablecoins received when USDh is minted |

The wallets that hold each power are listed on [Verify on-chain](https://docs.hamilton.xyz/trust-and-transparency/check-us-yourself.md).

## Code history

USDh sits behind an upgradeable proxy: the address you hold stays the same, while the code behind it can be replaced after 48 hours' public notice. Current code: [`0x151343FEE4A7156A0a785753d278A1457cF81cf2`](https://etherscan.io/address/0x151343fee4a7156a0a785753d278a1457cf81cf2).

* **30 June 2026:** USDh deployed. All admin powers handed to the timelock and the operating wallets the same day. The deploying account kept none.
* **13 August 2026:** the code behind USDh was replaced through the timelock.

Older Hamilton test deployments exist on the blockchain. They hold no user funds and should not be used. Any address not on this page is not current.

## Notes for integrators

* Standard ERC-20.
* Gasless approvals with EIP-2612 `permit`.
* Gasless transfers with EIP-3009 `transferWithAuthorization`, including from contract wallets (EIP-1271).
* Transfers can fail while the system is paused or an address is frozen. Handle a failed transfer gracefully.
* Read `decimals()` from the contract rather than assuming 6.

*Last updated: 9 November 2026*


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