# v4.1.0

> A strict address parser, HyperCore pre-hook wiring and order book reads, and the feeds behind Morpho oracles in the oracle mapping.

Source: https://ipor.io/developer-news/sdk-cli-v4-1-0  
Published: 2026-11-03  
SDK/CLI v4.1.0

v4.1 adds a public address parser, HyperCore helpers for pre-hooks, order and price scales and the best bid and ask, and Morpho oracle feeds in the oracle mapping. It applies to Python code and CLI users on 4.0.

## New

### 1. Checksum address parser

**Now:** `parse_checksum_address` turns 20 raw bytes, or hex with a `0x` or `0X` prefix in any case, into a `ChecksumAddress`. It applies the same strict validation as the other parsers.

**Usage:** `parse_checksum_address(value)`. The role parsers `parse_plasma_vault_address`, `parse_fuse_address` and `parse_access_manager_address` build on it.

### 2. HyperCore pre-hook wiring (preview)

**Now:** `HyperCorePreHookWiring` in `ipor_fusion.hypercore` holds the capital-flow and pending-action pre-hook addresses. Its `set_pre_hook_implementations` builds the `setPreHookImplementations` call that installs them on the vault’s eight entry points.

**Usage:** `HyperCorePreHookWiring(...).set_pre_hook_implementations(vault)`. One address for both hooks is rejected. The selectors are public as `HYPERCORE_CAPITAL_FLOW_SELECTORS` and `HYPERCORE_PENDING_ACTION_SELECTORS`.

### 3. HyperCore order and price scales (preview)

**Now:** `ipor_fusion.hypercore` exports the fixed-point scales HyperCore integers use: `ORDER_DECIMALS` (8) for `sz` and `limit_px` of `HyperCoreOrderFuse.enter`, and `PERP_MAX_DECIMALS` (6) with `perp_px_decimals(sz_decimals)` for a perp’s `mark_px` and `oracle_px`. `USD6_DECIMALS` is exported from the same module.

**Usage:** the constants and `perp_px_decimals` are imported from `ipor_fusion.hypercore`.

### 4. HyperCore best bid and ask (preview)

**Now:** `HyperCoreReader.bbo(asset)` reads the `0x80E` precompile and returns `HyperCoreBbo(bid, ask)`. An empty side of the book reads as `None`.

**Usage:** `bbo` takes the action asset an order takes. This differs from the read index the other perp reads take.

### 5. Morpho oracle feeds in the oracle mapping

**Before:** a Morpho collateral feed reported only the oracle’s address and price. The freshness of the collateral/loan rate could not be read.

**Now:** `source_detail.oracle_feeds` lists the feeds behind the oracle (`BASE_FEED_1/2`, `QUOTE_FEED_1/2`) with their role, address, description and `latestRoundData` round. Unused slots are skipped. The field is `null` when the oracle does not expose these getters.

**Usage:** `fusion vault oracle-mapping --json`, typed as `MorphoOracleFeedJson`. Values are raw, with no staleness judgment.

### 6. TAC support in the vault tooling

**Before:** chain 239 (TAC) raised `UnsupportedChainError`.

**Now:** TAC is back in `SUPPORTED_CHAIN_IDS`.

**Usage:** `fusion vault info`, `validate`, `role-accounts` and `oracle-mapping` accept chain 239.

---

Upgrade with `pip install -U ipor-fusion`. Full changelog: [v4.1.0 on GitHub](https://github.com/IPOR-Labs/ipor-fusion.py/releases/tag/v4.1.0).

_These notes describe changes to the IPOR Fusion SDK. They are not operational or financial advice. Operators are responsible for testing changes against their own vaults and configuration before use._
