{"date":"2026-10-10","note":"reserve_usdg is USDG held by the token contract and supply_usdf the USDF in circulation, both read at `block` on the official RPC; custody is USDF held by the gateway's hot and cold wallets at the same block; owed is what the ledger says the gateway owes (account balances, unsettled spend, pending withdrawals, unmatched deposits, open x402 USDF) at the moment of the read. A reading that shows a shortfall is taken a second time after a pause and the second reading is the one signed. Amounts are base units (6 decimals). The ledger figure is the operator's; the chain figures anyone can re-read.","owed":"482864","usdg":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","block":"84564023","ratio":"1.000000","token":"0x4A35a5eC2A50A4d2957B2F2366E017f526cAB318","object":"reserve_attestation","signer":"0xE19B4CaEB29409f2F6AFc10Edc98542c5d122B7a","custody":"482864","chain_id":4663,"block_hash":"0x4ab3cdb566e93bd05782eea728d9e7e732c640e613a89f3ec80eaa25121d395c","custody_hot":"482864","supply_usdf":"5412214","custody_cold":"0","fully_backed":true,"reserve_usdg":"5412214","block_timestamp":"2026-10-10T00:03:12.000Z","custody_covers_owed":true,"signature":"0xda32493e9d19970f3c9fc0944c520178400175fe3cb68ce2c702104c844d6df736d22661e78c1694cd2bb8fd7c705d0ad17a83cbd1249f0d177f7b00c94b49531b","keccak256":"0xac49cb4576ca7c2256c4f2810e1b048e476f60ed520b812d6a9e580622861f71","scheme":"eip191-personal_sign(keccak256(canonical-json))","canonical":"{\"block\":\"84564023\",\"block_hash\":\"0x4ab3cdb566e93bd05782eea728d9e7e732c640e613a89f3ec80eaa25121d395c\",\"block_timestamp\":\"2026-10-10T00:03:12.000Z\",\"chain_id\":4663,\"custody\":\"482864\",\"custody_cold\":\"0\",\"custody_covers_owed\":true,\"custody_hot\":\"482864\",\"date\":\"2026-10-10\",\"fully_backed\":true,\"note\":\"reserve_usdg is USDG held by the token contract and supply_usdf the USDF in circulation, both read at `block` on the official RPC; custody is USDF held by the gateway's hot and cold wallets at the same block; owed is what the ledger says the gateway owes (account balances, unsettled spend, pending withdrawals, unmatched deposits, open x402 USDF) at the moment of the read. A reading that shows a shortfall is taken a second time after a pause and the second reading is the one signed. Amounts are base units (6 decimals). The ledger figure is the operator's; the chain figures anyone can re-read.\",\"object\":\"reserve_attestation\",\"owed\":\"482864\",\"ratio\":\"1.000000\",\"reserve_usdg\":\"5412214\",\"signer\":\"0xE19B4CaEB29409f2F6AFc10Edc98542c5d122B7a\",\"supply_usdf\":\"5412214\",\"token\":\"0x4A35a5eC2A50A4d2957B2F2366E017f526cAB318\",\"usdg\":\"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168\"}","stored_at":"2026-10-10T00:03:13.625536+00:00","verify":"body is canonical JSON (keys sorted, no whitespace); digest = keccak256 of its UTF-8 bytes; signature = EIP-191 personal_sign over the 32-byte digest (ecdsa over keccak256(\"\\x19Ethereum Signed Message:\\n32\" || digest)). Recover with viem recoverMessageAddress({ message: { raw: digest }, signature }) or ethers verifyMessage(getBytes(digest), signature) and compare with the published signer.","urls":{"latest":"https://api.usdf.fi/v1/reserve/attestations/latest","this":"https://api.usdf.fi/v1/reserve/attestations/2026-10-10","signer":"https://api.usdf.fi/v1/catalog/signer","live":"https://api.usdf.fi/v1/reserve"}}