Redemption display evidence
Research for the portfolio redemption-unit change, 2026-09-16. This describes unit identity and valuation, not a guaranteed executable withdrawal quote. See the implementation plan.
Pinned contract reads
Public Ethereum RPC https://ethereum-rpc.publicnode.com, block 0x18c95f3 (25,990,643). Read-only eth_call; all calls in the following table used the same explicit block. asset() selector 0x38d52e0f, decimals() selector 0x313ce567.
| Fund | Share contract | asset() result | Share decimals | Display asset |
|---|---|---|---|---|
| Fluid Lite ETH | 0xa0d3707c569ff8c87fa923d3823ec5d81c98be78 | 0xae7ab96520de3a18e5e111b5eaab095312d7fe84 | 18 | stETH |
| YO ETH | 0x3a43aec53490cb9fa922847385d82fe25d0e9de7 | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | 18 | WETH |
| IPOR Liquity Carry | 0xb9e806e8f2d94c015ffefa90cd24ecce18f1663c | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | 20 | WETH |
| Fluid Lite USD | 0x273da948aca9261043fbdb2a857bc255ecc29012 | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | 18 | USDC |
| YO USD | 0x0000000f2eb9f69274678c76222b35eec7588a65 | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | 6 | USDC |
| Yearn V3 USD | 0x696d02db93291651ed510704c9b286841d506987 | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | 6 | USDC |
| Treehouse ETH | 0xd11c452fc99cf405034ee446803b6f6c1f6d5ed8 | 0x1b6238e95bbcabee58997c99badd4154ad68ba92 | 18 | wstETH, established separately below |
The ether.fi Liquid ETH Accountant, 0x0d05d94a5f1e76c18fbeb7a13d17c8a314088198, returns WETH (0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) from base() (0x5001f3b5) at this block. The official ETH Yield Vault page links that Accountant to our fund share 0xf0bb20865277abd641a307ece5ee04e79073416c.
These calls establish current contract configuration. Historical payout-policy changes, if discovered, require explicit handling rather than pretending this observation establishes all past configurations.
earnETH direct payout quote
Additional read-only calls at the same block to the configured Mellow Oracle 0xada1f4c24603ab2fe5abd35bcd12370e98a20358 establish a direct wstETH quote:
getReport quote | Decoded priceD18 | Human quote units per earnETH | Report timestamp | Suspicious |
|---|---|---|---|---|
ETH sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee | 983102439303548442 | 1.0171879959004295 | 1789543847 | false |
wstETH 0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 | 1223077359849317151 | 0.8176097709168615 | 1789543847 | false |
getReport(stETH) reverts. The 18/18-decimal quote calculation is 1e18 / priceD18.
At that same block wstETH stEthPerToken() is 1.2441763842073688. Dividing the ETH oracle NAV by this live wrapper rate yields 0.8175593178040046 wstETH per earnETH, around 0.00617% below the direct payout quote. Thus pinning reads to the same block does not make their effective oracle vintages identical. For earnETH balance, prefer shares multiplied by the direct valid wstETH quote at the observed block; keep the existing book valuation unchanged. Review how earned-yield equivalents choose their denomination rate and document the distinction. Do not claim an indirect ETH-to-wstETH conversion is necessarily the exact quoted payout amount.
Special routes and primary documentation
- Lido Earn ETH: Lido Earn documentation explicitly identifies wstETH as the withdrawal token. The current fund registry quotes its NAV in ETH. Those are different units; the portfolio display therefore uses the direct wstETH oracle quote for balance and labels it wstETH. stETH must not be described as the documented direct payout.
- Lido Earn USD: the same Lido documentation identifies USDC withdrawal. This agrees with the existing Mellow USDC quote configuration for
0x4ce1ac8f43e0e5bd7a346a98af777bf8fbea1981. - Treehouse ETH: token accounting states denomination in wstETH; redemption process identifies wstETH as the claimed withdrawal asset. The contract's
asset()is an internal accounting token, so a genericasset()-to-ticker mapping is insufficient. The existing getter composes its conversion result with the Lido wrapper rate into ETH; display should remove that extra denomination conversion. Quoted redemption value is an estimate: final settlement and route fees can change execution proceeds. - ether.fi Liquid ETH: official withdrawal guide confirms both wETH and weETH as selectable withdrawal assets. Choose WETH as the canonical display route because it is a supported exit and agrees with the verified Accountant base. Do not imply it is the only available exit.
- Fluid Lite funds: official vault features describes ERC-4626 and redeemable receipt tokens. The pinned contract reads above establish the exact underlying token for each covered vault.
- YO funds: official core contracts documents the ERC-4626 underlying-asset redemption mechanism (including asynchronous execution). The pinned reads establish WETH and USDC for the specific Ethereum vault addresses used by creddit.
Complete display coverage
| Fund | Portfolio reader | Payout display | Book |
|---|---|---|---|
| Fluid Lite ETH | ERC-4626 | stETH | ETH |
| Lido Earn ETH | wallet | wstETH | ETH |
| YO ETH | ERC-4626 | WETH | ETH |
| ether.fi Liquid ETH | wallet | WETH (canonical among supported exits) | ETH |
| Treehouse ETH | wallet | wstETH | ETH |
| IPOR Liquity Carry | ERC-4626 | WETH | ETH |
| Fluid Lite USD | ERC-4626 | USDC | USD |
| YO USD | ERC-4626 | USDC | USD |
| Yearn V3 USD | ERC-4626 | USDC | USD |
| Lido Earn USD | wallet | USDC | USD |
Payout token decimals: stETH/WETH/wstETH 18, USDC 6. The current registry already declares these, but the implementation should verify or assert token identity and scales rather than borrowing fund share decimals. In particular, IPOR's 20 share decimals and Fluid Lite USD's 18 share decimals differ from their payout scales.