Skip to content

Solidity Contracts v3.0.0

Choose a tag to compare

@dhfang dhfang released this 26 May 07:58
cff7666

Description

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 upgradeClient by @srdtrk in #776
  • chore(contracts): lint with forge fmt by @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

Full Changelog: solidity-v2.0.0...solidity-v3.0.0-rc.1