feat(precompiles)!: remove IBC and Oracle precompiles - #326
Conversation
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 Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
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/getOraclePrecompileEthersV6Contractfinds no remaining references outside the new changeset — the onlyibc/oraclehits are historicalpackages/precompiles/CHANGELOG.mdentries (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
majorbump on@sei-js/precompilesalone 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. |
There was a problem hiding this comment.
[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.
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:precompiles/IBC_PRECOMPILE_ADDRESS,IBC_PRECOMPILE_ABIORACLE_PRECOMPILE_ADDRESS,ORACLE_PRECOMPILE_ABIethers/ETHERS_IBC_PRECOMPILE_ABI,getIbcPrecompileEthersV6ContractETHERS_ORACLE_PRECOMPILE_ABI,getOraclePrecompileEthersV6Contractviem/VIEM_IBC_PRECOMPILE_ABIVIEM_ORACLE_PRECOMPILE_ABIVersioning
This removes ten public exports, so it ships as a major (
3.0.0). Caret ranges on^2.x(including this repo's owncreate-seitemplates) 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 remainingibc/oraclematches in the repo are@sei-js/registry's IBC chain registry, which is unrelated and stays, and the historical changelog.Verification
tsc --noEmitclean, 35/35 jest tests pass, biome clean,changeset statusresolves@sei-js/precompilesto major.Made with Cursor