Solidity Contracts v3.0.0-rc.1
Pre-releaseDescription
This release candidate brings several major improvements to Solidity IBC, focused on expanding application support, improving cross-chain token transfers, and simplifying the contract APIs ahead of the final v3 release.
The main addition is ICS27GMP, the new contract calls application. This enables generalized cross-chain contract execution through IBC, expanding Solidity IBC beyond token transfers into broader cross-chain application use cases.
This release also adds IFT, a new token transfer standard implementation. IFT is intended to support more flexible interoperability burn/mint pattern and will help pave the way for future Solana connectivity.
For chains that do not yet have a dedicated light client protocol, this release introduces an attestation multisig light client. This provides a practical verification path for additional ecosystems while dedicated light clients are still under development.
On the contracts side, OpenZeppelin AccessControl has been replaced with AccessManager, giving deployments a more explicit and flexible access management model. The release also includes API-breaking cleanup and simplifications, such as removing upgradeClient.
For Cosmos EVM integrations, this release adds ICS02PrecompileWrapper, which works with the cosmos/evm ICS02 precompile. This allows Solidity contracts to access ibc-go light clients through the precompile interface.
Several dependencies and development tools have also been updated, including OpenZeppelin Contracts, Foundry-related tooling, SP1, Solhint, NatSpec linting, formatting, and static analysis.
This is a pre-release intended for testing and integration feedback before the final v3.0.0 release. For the full changelog, see the section below.
What's Changed
- feat: add contract calls application by @srdtrk in #508
- test: added shadowfork testing by @srdtrk in #534
- chore: added natlint, a natspec linter by @srdtrk in #536
- imp(ethereum): remove deneb support by @srdtrk in #530
- imp: added a reference IBC-compatible ERC20 by @srdtrk in #539
- imp: use AccessManager for access control by @srdtrk in #554
- ci: add slither static analysis by @gjermundgaraba in #634
- chore: updated nix flakes to fix foundry by @srdtrk in #674
- chore: updated solhint to v6 and linted the repo by @srdtrk in #675
- chore: lint with new forge fmt by @srdtrk in #767
- imp(contracts): remove
upgradeClientby @srdtrk in #776 - chore(contracts): lint with
forge fmtby @srdtrk in #777 - chore: 'forge fmt' with 1.4.4 by @srdtrk in #807
- feat: added precompile light client for cosmos/evm by @srdtrk in #820
- imp(ics27): reverse lookup of AccountIdentifier by @srdtrk in #859
- feat: add attestation LC by @srdtrk in #861
- chore(docs): contracts readme by @ericHgorski in #866
- feat: implement IFT token standard in Solidity by @mariuszzak in #864
- test(e2e, ift): added test cases for IFT (Cosmos ↔ Evm + Cosmos ↔ Cosmos) by @mariuszzak in #876
- fix: validate receiver address in CosmosIFTSendCallConstructor by @srdtrk in #939
- feat(attestation): add domain separation to attestation light clients by @mariuszzak in #946
- chore: migrate sp1 from v5 to v6.1 by @mariuszzak in #952
- imp(contracts/ift): added nonReentrant to IFT functions by @srdtrk in #953
- imp(contracts/ics20): add more balance validation to permit2 transfers by @srdtrk in #954
- deps: update openzeppelin-contracts to v5.5.0 by @srdtrk in #955
- feat(solana): implement SolanaIFTSendCallConstructor by @mariuszzak in #959
- chore: dependency and linting updates by @srdtrk in #1028
- imp(ift): add authority gated mint and burn functions to reference implementations by @srdtrk in #1029
New Contributors
- @MozirDmitriy made their first contribution in #586
- @VolodymyrBg made their first contribution in #620
- @MamunC0der made their first contribution in #764
- @ericHgorski made their first contribution in #866
- @dependabot[bot] made their first contribution in #886
- @aljo242 made their first contribution in #895
- @bpiv400 made their first contribution in #950
- @dianab-cl made their first contribution in #1023
Full Changelog: solidity-v2.0.0...solidity-v3.0.0-rc.1