# v4.0.0

> A major release: typed calls, one-block vault snapshots and a preflight check before you sign. Most 3.x code needs changes.

Source: https://ipor.io/developer-news/sdk-cli-v4-0-0  
Published: 2026-10-23  
SDK/CLI v4.0.0

Most 3.x code needs changes. Read the [migration guide](https://github.com/IPOR-Labs/ipor-fusion.py/blob/v4.0.0/MIGRATION_4.md) before upgrading. Many 3.x calls fail only when the line runs, so test your reads against a real node, not only your test suite.

## Breaking changes

- **The context goes to the call.** Wrappers take only an address (`PlasmaVault(vault)`); pass the context when executing (`.call(ctx)`, `.send(ctx)`). Methods that read the chain are `read_*(ctx, ...)`.
- **Typed ids, addresses and amounts** (`ChainId`, `MarketId`, `PlasmaVaultAddress`, `Amount`, …). Raw input goes through `parse_*`.
- **One vault snapshot.** `fetch_vault_data(ctx, vault)` reads everything at one block; validation and `fusion vault info` are built from it.
- **Typed batches and simulations.** `batch.add(call)` and `VaultSimulator.observe(call)` return handles you read after `run()`; `SimulationResult.get` is removed.
- **Market limits are WAD shares** (`10**18` = 100%). 3.x documented them as asset amounts, so check limits you set with 3.x.
- **CLI and MCP JSON output changed.** `vault validate` returns one `findings` list (filter by `severity`) instead of separate warning and critical lists, and absent optional fields are left out instead of `null`.
- **Morpho amounts may change.** Share conversion now uses Morpho Blue’s exact integer math, and 3.x figures could be far off. Recheck thresholds built on them.
- **Renamed and removed:** `RWA` is now `EXTERNAL_STATE`, `MORPHO_BLUE_ADDRESS` is now `morpho_blue_address(chain_id)`, cross-chain and HyperCore names import only from `ipor_fusion.crosschain` and `ipor_fusion.hypercore`, and every SDK exception derives from `IporFusionError`. The full list is in the migration guide.

## New features

- `preflight_execute` and `fusion vault preflight` check an `execute` batch before you sign it.
- Timelocked AccessManager operations: plan, schedule, execute and cancel.
- `fetch_address_registry(chain_id)` and `fusion address` look up IPOR Fusion addresses by name.
- Contract reverts are decoded by name instead of a bare selector.
- Exact decimal conversion with `parse_amount` and `format_amount`.
- 11 chains, now including Ink and Robinhood. Python 3.11 to 3.13.
- Cross-chain and HyperCore (preview): the modules follow the official 2026-10-21 deployment only; pilot and canary deployments are no longer supported.

## Bug fixes

- Validation reports a read that fails as a warning instead of a silent zero.

Upgrade with `pip install -U ipor-fusion` after reading the migration guide. Full notes on GitHub: [v4.0.0](https://github.com/IPOR-Labs/ipor-fusion.py/releases/tag/v4.0.0).
