Skip to content

feat(precompiles)!: remove IBC and Oracle precompiles - #326

Merged
alexander-sei merged 3 commits into
mainfrom
chore/plt-977-remove-ibc-oracle-precompiles
Aug 12, 2026
Merged

feat(precompiles)!: remove IBC and Oracle precompiles#326
alexander-sei merged 3 commits into
mainfrom
chore/plt-977-remove-ibc-oracle-precompiles

Conversation

@alexander-sei

Copy link
Copy Markdown
Contributor

Closes PLT-977.

Supersedes #324 (auto-closed when its base branch was deleted after #323 merged; could not reopen after rebase). Rebased onto main.

Why

The IBC and Oracle precompiles are no longer supported on Sei (see CON-283 and CON-205), but the package still shipped a full public surface for both, pointing integrators at endpoints that will fail. Same shape of change as #279, which removed the confidential transfers precompile.

What

Deletes the six source files (precompiles/, ethers/, viem/ for each) and prunes all three barrels and both spec files. Ten exports are removed:

Entrypoint IBC Oracle
precompiles/ IBC_PRECOMPILE_ADDRESS, IBC_PRECOMPILE_ABI ORACLE_PRECOMPILE_ADDRESS, ORACLE_PRECOMPILE_ABI
ethers/ ETHERS_IBC_PRECOMPILE_ABI, getIbcPrecompileEthersV6Contract ETHERS_ORACLE_PRECOMPILE_ABI, getOraclePrecompileEthersV6Contract
viem/ VIEM_IBC_PRECOMPILE_ABI VIEM_ORACLE_PRECOMPILE_ABI

Versioning

This removes ten public exports, so it ships as a major (3.0.0). Caret ranges on ^2.x (including this repo's own create-sei templates) will not pick the removal up automatically.

Blast radius

Nothing else in the monorepo referenced these — create-sei's extension and next-template only use the bank precompile, and they pin ^2.1.2. The only remaining ibc/oracle matches in the repo are @sei-js/registry's IBC chain registry, which is unrelated and stays, and the historical changelog.

Verification

  • tsc --noEmit clean, 35/35 jest tests pass, biome clean, changeset status resolves @sei-js/precompiles to major.
  • The barrel parity test added in fix(precompiles): export solo precompile from ethers entrypoint #323 passes unchanged here: it derives precompile names from each barrel rather than hardcoding a count, so it follows the set down from 12 to 10 and would fail if a barrel got out of sync during the removal.

Made with Cursor

alexander-sei and others added 3 commits August 12, 2026 14:43
The IBC and Oracle precompiles are no longer supported on Sei, so the
package was pointing integrators at endpoints that fail. Drops the
addresses, ABIs, ethers contract factories, and viem ABIs across all
three entrypoints, following the confidential transfers removal in #279.

BREAKING CHANGE: IBC_PRECOMPILE_ADDRESS, IBC_PRECOMPILE_ABI,
ETHERS_IBC_PRECOMPILE_ABI, getIbcPrecompileEthersV6Contract,
VIEM_IBC_PRECOMPILE_ABI and the Oracle equivalents are no longer
exported.

Co-authored-by: Cursor <cursoragent@cursor.com>
Review feedback on #324. Telling consumers to inline the address and ABI
reads as a working migration, but these precompiles are unsupported
on-chain so the calls fail wherever the ABI comes from. Say that instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
Removing ten public exports is a breaking change; ship as 3.0.0 so
caret ranges on ^2.x do not pick it up automatically.

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.83%. Comparing base (b3db3e8) to head (fc1cd69).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #326      +/-   ##
==========================================
- Coverage   82.16%   81.83%   -0.34%     
==========================================
  Files          76       70       -6     
  Lines        1301     1277      -24     
  Branches      162      223      +61     
==========================================
- Hits         1069     1045      -24     
  Misses        232      232              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@seidroid seidroid Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean, self-consistent removal of the IBC and Oracle precompiles across all three barrels and both spec files, with a correct major changeset and no dangling references anywhere in the monorepo. No blockers; one sourcing question on the deprecation claim and a note that the Cursor pass produced no output.

Findings: 0 blocking | 5 non-blocking | 1 posted inline

Blockers

  • None at the file/PR level.

Non-blocking

  • The Cursor second-opinion file (cursor-review.md) is empty — that review pass produced no output, so this synthesis rests on the Codex pass (no material findings) plus my own read. Codex and I agree the removal is consistent and correctly versioned.
  • Verified independently: a repo-wide grep for IBC_PRECOMPILE/ORACLE_PRECOMPILE/getIbcPrecompileEthersV6Contract/getOraclePrecompileEthersV6Contract finds no remaining references outside the new changeset — the only ibc/oracle hits are historical packages/precompiles/CHANGELOG.md entries (correctly left alone) and @sei-js/registry's unrelated IBC chain registry. No README or typedoc config references the deleted files.
  • The barrel-parity test (src/__tests__/barrelParity.spec.ts) is unmodified and derives precompile names by regex from each barrel rather than hardcoding a count, so the PR's claim that it follows the set down from 12 to 10 — and would fail if one barrel were pruned but not another — holds. No new test is needed for this removal.
  • Changeset handling matches guideline §3: a major bump on @sei-js/precompiles alone is right for dropping ten public exports, and .changeset/config.json (fixed: [], linked: []) means no coordinated bump across the other packages is expected.
  • 1 suggestion(s)/nit(s) flagged inline on specific lines.


**Breaking:** remove the IBC and Oracle precompiles. `IBC_PRECOMPILE_ADDRESS`, `IBC_PRECOMPILE_ABI`, `ETHERS_IBC_PRECOMPILE_ABI`, `getIbcPrecompileEthersV6Contract`, `VIEM_IBC_PRECOMPILE_ABI`, `ORACLE_PRECOMPILE_ADDRESS`, `ORACLE_PRECOMPILE_ABI`, `ETHERS_ORACLE_PRECOMPILE_ABI`, `getOraclePrecompileEthersV6Contract`, and `VIEM_ORACLE_PRECOMPILE_ABI` are no longer exported.

Neither precompile is supported on Sei any more, so calls to them fail on-chain regardless of where the address and ABI come from. There is no drop-in replacement: re-declaring them locally will not restore working calls, and code still depending on them needs to move off these precompiles.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] Per the repo's convention that precompile addresses/ABIs are hand-maintained source of truth, could you add a public-facing citation for "neither precompile is supported on Sei any more"? The PR body points at CON-283 / CON-205, which downstream integrators reading this changeset can't open. A link to docs.sei.io or the sei-chain commit that removed 0x...1009 (IBC) and 0x...1008 (Oracle) would make the "calls fail on-chain" claim checkable at the point where consumers hit the breaking change. Not blocking — the removal itself is clean and follows the #279 confidential-transfers precedent.

@alexander-sei
alexander-sei merged commit c928ae9 into main Aug 12, 2026
12 checks passed
@alexander-sei
alexander-sei deleted the chore/plt-977-remove-ibc-oracle-precompiles branch August 12, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants