Skip to content

Conversation

davidsemakula
Copy link
Collaborator

@davidsemakula davidsemakula commented Sep 5, 2025

Summary

Closes #_

  • [y] y/n | Does it introduce breaking changes?
  • [n] y/n | Is it dependent on a specific version of cargo-contract or pallet-revive?

Description

  • CallBuilder and CreateBuilder utilities:
    • ink::env::call::build_call and ink::env::call::build_create: Uses "default" ABI for the current ABI mode, i.e. ink! ABI is used if ABI mode is "ink" or "all", and Solidity ABI is used if ABI mode is "sol"
    • ink::env::call::build_call_ink and ink::env::call::build_create_ink: Always uses ink! ABI
    • ink::env::call::build_call_sol and ink::env::call::build_create_sol: Always uses Solidity ABI
  • Contract references: Using a contract named Contract as an example:
    • ContractRef: Uses "default" ABI for the current ABI mode, i.e. ink! ABI is used if ABI mode is "ink" or "all", and Solidity ABI is used if ABI mode is "sol"
    • ContractRefInk: Always uses ink! ABI
    • ContractRefSol: Always uses Solidity ABI
    • NOTE: All the above a type aliases to a ContractRefFor<Abi> struct that's generic over an ABI marker type (i.e. ink::abi::Ink or ink::abi::Sol), that simply provide a concrete type for the Abi generic param type
  • Event emission via ink::EnvAccess (i.e. emission via Self::env() and self.env())
    • ink::EnvAccess::emit_event (i.e. Self::env().emit_event and self.env().emit_event): In "ink" or "sol" ABI mode, emits an event using the respective ABI, however, in "all" ABI mode, events are emitted for both the ink! ABI and Solidity ABI for each call to this function
    • ink::EnvAccess::emit_event_ink (i.e. Self::env().emit_event_ink and self.env().emit_event_ink): Always uses ink! ABI
    • ink::EnvAccess::emit_event_sol (i.e. Self::env().emit_event_sol and self.env().emit_event_sol): Always uses Solidity ABI

Follow ups/ related TODOs

  • Update ink! docs

Checklist before requesting a review

  • I have added an entry to CHANGELOG.md
  • I have commented on my code, particularly in hard-to-understand areas
  • I have added tests that prove my fix is effective or that my feature works
  • Any dependent changes have been merged and published in downstream modules

@davidsemakula davidsemakula marked this pull request as ready for review September 5, 2025 18:57
@davidsemakula davidsemakula self-assigned this Sep 5, 2025
@davidsemakula davidsemakula force-pushed the semakula/multi-abi-interfaces branch from 162a7a8 to 3f57e35 Compare September 5, 2025 20:34
Copy link

github-actions bot commented Sep 5, 2025

🦑 📈 ink! Example Contracts ‒ Changes Report 📉 🦑

⚠️ The ink! master is ahead of your branch, this might skew the comparison data below. ⚠️
These are the results when building the integration-tests/* contracts from this branch and comparing them to ink! master:

Show overview

Using the ABI denoted in the contract manifest.

Contract Upstream Size (kB) PR Size (kB) Diff (kB) Diff (%) Change
all-abi/events 19.568 19.568 0 0%
call-builder-return-value 9.074 9.074 0 0%
complex-storage-structures 4.843 4.843 0 0%
conditional-compilation 1.711 1.711 0 0%
contract-invocation 8.192 8.192 0 0%
contract-invocation/contract1 2.068 2.068 0 0%
contract-invocation/contract2 1.983 1.983 0 0%
contract-invocation/virtual_contract 4.538 4.538 0 0%
contract-invocation/virtual_contract_ver1 1.94 1.94 0 0%
contract-invocation/virtual_contract_ver2 1.953 1.953 0 0%
contract-storage 7.53 7.53 0 0%
contract-terminate 1.532 1.532 0 0%
contract-transfer 3.289 3.289 0 0%
cross-contract-calls 8.706 8.706 0 0%
cross-contract-calls/other-contract 1.759 1.759 0 0%
custom-allocator 3.214 3.214 0 0%
custom-environment 3.379 3.379 0 0%
debugging-strategies 4.414 4.414 0 0%
dns 10.371 10.371 0 0%
e2e-call-runtime 2.255 2.255 0 0%
e2e-runtime-only-backend 2.813 2.813 0 0%
erc1155 20.896 20.896 0 0%
erc20 10.887 10.887 0 0%
erc721 12.792 12.792 0 0%
events 8.875 8.875 0 0%
flipper 1.759 1.759 0 0%
fuzz-testing 1.745 1.745 0 0%
incrementer 1.28 1.28 0 0%
lang-err/call-builder 8.47 8.47 0 0%
lang-err/call-builder-delegate 3.508 3.508 0 0%
lang-err/constructors-return-value 2.391 2.391 0 0%
lang-err/contract-ref 7.003 7.003 0 0%
lang-err/integration-flipper 2.044 2.044 0 0%
lazyvec 5.643 5.643 0 0%
mapping 10.538 10.538 0 0%
mother 16.35 16.35 0 0%
multi-contract-caller 11.892 11.892 0 0%
multi-contract-caller/accumulator 1.127 1.127 0 0%
multi-contract-caller/adder 3.161 3.161 0 0%
multi-contract-caller/subber 3.166 3.166 0 0%
multisig 27.374 27.374 0 0%
own-code-hash 3.059 3.059 0 0%
payment-channel 7.951 7.951 0 0%
runtime-call-contract 1.762 1.762 0 0%
solidity-abi/events 12.061 12.061 0 0%
solidity-abi/fallible-setter 2.679 2.679 0 0%
solidity-abi/sol-cross-contract 6.674 6.674 0 0%
solidity-abi/sol-cross-contract/other-contract-sol 2.559 2.559 0 0%
solidity-abi/sol-encoding 2.495 2.495 0 0%
solidity-abi/solidity-calls-flipper 8.969 8.969 0 0%
solidity-abi/trait-dyn-cross-contract-calls 6.023 6.023 0 0%
solidity-abi/trait-dyn-cross-contract-calls/contracts/incrementer 2.337 2.337 0 0%
solidity-abi/trait-flipper 2.245 2.245 0 0%
sr25519-verification 0.851 0.851 0 0%
static-buffer 2.733 2.733 0 0%
storage-types 16.953 16.953 0 0%
system-precompile 10.538 10.538 0 0%
trait-dyn-cross-contract-calls 3.955 3.955 0 0%
trait-dyn-cross-contract-calls/contracts/incrementer 1.783 1.783 0 0%
trait-erc20 11.227 11.227 0 0%
trait-flipper 1.712 1.712 0 0%
trait-incrementer 1.848 1.848 0 0%
upgradeable-contracts/delegator 6.428 6.428 0 0%
upgradeable-contracts/delegator/delegatee 2.846 2.846 0 0%
upgradeable-contracts/delegator/delegatee2 2.846 2.846 0 0%
upgradeable-contracts/set-code-hash 1.71 1.71 0 0%
upgradeable-contracts/set-code-hash-migration 1.71 1.71 0 0%
upgradeable-contracts/set-code-hash-migration/migration 1.875 1.875 0 0%
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.885 1.885 0 0%
upgradeable-contracts/set-code-hash/updated-incrementer 1.662 1.662 0 0%
wildcard-selector 2.955 2.955 0 0%
Show diagram
gantt
   dateFormat x
   axisFormat x
section  
all-abi/events : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 19568 kb       : a1, 0, 19568
pr default abi - 19568 kb      : a1, 0, 19568
pr sol abi - 19568 kb      : a2, 0, 19568
pr all abi - 19568 kb     : a3, 0, 19568
#nbsp; : a4, 0, 0

section  
call-builder-return-value : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 9074 kb       : a1, 0, 9074
pr default abi - 9074 kb      : a1, 0, 9074
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
complex-storage-structures : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 4843 kb       : a1, 0, 4843
pr default abi - 4843 kb      : a1, 0, 4843
pr sol abi - 7833 kb      : a2, 0, 7833
pr all abi - 9464 kb     : a3, 0, 9464
#nbsp; : a4, 0, 0

section  
conditional-compilation : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1711 kb       : a1, 0, 1711
pr default abi - 1711 kb      : a1, 0, 1711
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
contract-invocation : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 8192 kb       : a1, 0, 8192
pr default abi - 8192 kb      : a1, 0, 8192
pr sol abi - 11267 kb      : a2, 0, 11267
pr all abi - 12599 kb     : a3, 0, 12599
#nbsp; : a4, 0, 0

section  
contract-invocation/contract1 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2068 kb       : a1, 0, 2068
pr default abi - 2068 kb      : a1, 0, 2068
pr sol abi - 2718 kb      : a2, 0, 2718
pr all abi - 3410 kb     : a3, 0, 3410
#nbsp; : a4, 0, 0

section  
contract-invocation/contract2 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1983 kb       : a1, 0, 1983
pr default abi - 1983 kb      : a1, 0, 1983
pr sol abi - 2669 kb      : a2, 0, 2669
pr all abi - 3301 kb     : a3, 0, 3301
#nbsp; : a4, 0, 0

section  
contract-invocation/virtual_contract : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 4538 kb       : a1, 0, 4538
pr default abi - 4538 kb      : a1, 0, 4538
pr sol abi - 7366 kb      : a2, 0, 7366
pr all abi - 6910 kb     : a3, 0, 6910
#nbsp; : a4, 0, 0

section  
contract-invocation/virtual_contract_ver1 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1940 kb       : a1, 0, 1940
pr default abi - 1940 kb      : a1, 0, 1940
pr sol abi - 2431 kb      : a2, 0, 2431
pr all abi - 2808 kb     : a3, 0, 2808
#nbsp; : a4, 0, 0

section  
contract-invocation/virtual_contract_ver2 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1953 kb       : a1, 0, 1953
pr default abi - 1953 kb      : a1, 0, 1953
pr sol abi - 2443 kb      : a2, 0, 2443
pr all abi - 2835 kb     : a3, 0, 2835
#nbsp; : a4, 0, 0

section  
contract-storage : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 7530 kb       : a1, 0, 7530
pr default abi - 7530 kb      : a1, 0, 7530
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
contract-terminate : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1532 kb       : a1, 0, 1532
pr default abi - 1532 kb      : a1, 0, 1532
pr sol abi - 1499 kb      : a2, 0, 1499
pr all abi - 1627 kb     : a3, 0, 1627
#nbsp; : a4, 0, 0

section  
contract-transfer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3289 kb       : a1, 0, 3289
pr default abi - 3289 kb      : a1, 0, 3289
pr sol abi - 3274 kb      : a2, 0, 3274
pr all abi - 4332 kb     : a3, 0, 4332
#nbsp; : a4, 0, 0

section  
cross-contract-calls : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 8706 kb       : a1, 0, 8706
pr default abi - 8706 kb      : a1, 0, 8706
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
cross-contract-calls/other-contract : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1759 kb       : a1, 0, 1759
pr default abi - 1759 kb      : a1, 0, 1759
pr sol abi - 2344 kb      : a2, 0, 2344
pr all abi - 2768 kb     : a3, 0, 2768
#nbsp; : a4, 0, 0

section  
custom-allocator : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3214 kb       : a1, 0, 3214
pr default abi - 3214 kb      : a1, 0, 3214
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
custom-environment : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3379 kb       : a1, 0, 3379
pr default abi - 3379 kb      : a1, 0, 3379
pr sol abi - 1717 kb      : a2, 0, 1717
pr all abi - 3855 kb     : a3, 0, 3855
#nbsp; : a4, 0, 0

section  
debugging-strategies : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 4414 kb       : a1, 0, 4414
pr default abi - 4414 kb      : a1, 0, 4414
pr sol abi - 5128 kb      : a2, 0, 5128
pr all abi - 5805 kb     : a3, 0, 5805
#nbsp; : a4, 0, 0

section  
dns : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 10371 kb       : a1, 0, 10371
pr default abi - 10371 kb      : a1, 0, 10371
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
e2e-call-runtime : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2255 kb       : a1, 0, 2255
pr default abi - 2255 kb      : a1, 0, 2255
pr sol abi - 2874 kb      : a2, 0, 2874
pr all abi - 3506 kb     : a3, 0, 3506
#nbsp; : a4, 0, 0

section  
e2e-runtime-only-backend : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2813 kb       : a1, 0, 2813
pr default abi - 2813 kb      : a1, 0, 2813
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
erc1155 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 20896 kb       : a1, 0, 20896
pr default abi - 20896 kb      : a1, 0, 20896
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
erc20 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 10887 kb       : a1, 0, 10887
pr default abi - 10887 kb      : a1, 0, 10887
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
erc721 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 12792 kb       : a1, 0, 12792
pr default abi - 12792 kb      : a1, 0, 12792
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
events : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 8875 kb       : a1, 0, 8875
pr default abi - 8875 kb      : a1, 0, 8875
pr sol abi - 11928 kb      : a2, 0, 11928
pr all abi - 18070 kb     : a3, 0, 18070
#nbsp; : a4, 0, 0

section  
flipper : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1759 kb       : a1, 0, 1759
pr default abi - 1759 kb      : a1, 0, 1759
pr sol abi - 2344 kb      : a2, 0, 2344
pr all abi - 2768 kb     : a3, 0, 2768
#nbsp; : a4, 0, 0

section  
fuzz-testing : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1745 kb       : a1, 0, 1745
pr default abi - 1745 kb      : a1, 0, 1745
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
incrementer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1280 kb       : a1, 0, 1280
pr default abi - 1280 kb      : a1, 0, 1280
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
lang-err/call-builder : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 8470 kb       : a1, 0, 8470
pr default abi - 8470 kb      : a1, 0, 8470
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
lang-err/call-builder-delegate : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3508 kb       : a1, 0, 3508
pr default abi - 3508 kb      : a1, 0, 3508
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
lang-err/constructors-return-value : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2391 kb       : a1, 0, 2391
pr default abi - 2391 kb      : a1, 0, 2391
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
lang-err/contract-ref : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 7003 kb       : a1, 0, 7003
pr default abi - 7003 kb      : a1, 0, 7003
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
lang-err/integration-flipper : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2044 kb       : a1, 0, 2044
pr default abi - 2044 kb      : a1, 0, 2044
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
lazyvec : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 5643 kb       : a1, 0, 5643
pr default abi - 5643 kb      : a1, 0, 5643
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
mapping : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 10538 kb       : a1, 0, 10538
pr default abi - 10538 kb      : a1, 0, 10538
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
mother : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 16350 kb       : a1, 0, 16350
pr default abi - 16350 kb      : a1, 0, 16350
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
multi-contract-caller : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 11892 kb       : a1, 0, 11892
pr default abi - 11892 kb      : a1, 0, 11892
pr sol abi - 16285 kb      : a2, 0, 16285
pr all abi - 13096 kb     : a3, 0, 13096
#nbsp; : a4, 0, 0

section  
multi-contract-caller/accumulator : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1127 kb       : a1, 0, 1127
pr default abi - 1127 kb      : a1, 0, 1127
pr sol abi - 2222 kb      : a2, 0, 2222
pr all abi - 2771 kb     : a3, 0, 2771
#nbsp; : a4, 0, 0

section  
multi-contract-caller/adder : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3161 kb       : a1, 0, 3161
pr default abi - 3161 kb      : a1, 0, 3161
pr sol abi - 5058 kb      : a2, 0, 5058
pr all abi - 3438 kb     : a3, 0, 3438
#nbsp; : a4, 0, 0

section  
multi-contract-caller/subber : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3166 kb       : a1, 0, 3166
pr default abi - 3166 kb      : a1, 0, 3166
pr sol abi - 5066 kb      : a2, 0, 5066
pr all abi - 3457 kb     : a3, 0, 3457
#nbsp; : a4, 0, 0

section  
multisig : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 27374 kb       : a1, 0, 27374
pr default abi - 27374 kb      : a1, 0, 27374
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
own-code-hash : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3059 kb       : a1, 0, 3059
pr default abi - 3059 kb      : a1, 0, 3059
pr sol abi - 2957 kb      : a2, 0, 2957
pr all abi - 3607 kb     : a3, 0, 3607
#nbsp; : a4, 0, 0

section  
payment-channel : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 7951 kb       : a1, 0, 7951
pr default abi - 7951 kb      : a1, 0, 7951
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
runtime-call-contract : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1762 kb       : a1, 0, 1762
pr default abi - 1762 kb      : a1, 0, 1762
pr sol abi - 2344 kb      : a2, 0, 2344
pr all abi - 2773 kb     : a3, 0, 2773
#nbsp; : a4, 0, 0

section  
solidity-abi/events : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 12061 kb       : a1, 0, 12061
pr default abi - 12061 kb      : a1, 0, 12061
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/fallible-setter : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2679 kb       : a1, 0, 2679
pr default abi - 2679 kb      : a1, 0, 2679
pr sol abi - 2679 kb      : a2, 0, 2679
pr all abi - 3179 kb     : a3, 0, 3179
#nbsp; : a4, 0, 0

section  
solidity-abi/sol-cross-contract : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 6674 kb       : a1, 0, 6674
pr default abi - 6674 kb      : a1, 0, 6674
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/sol-cross-contract/other-contract-sol : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2559 kb       : a1, 0, 2559
pr default abi - 2559 kb      : a1, 0, 2559
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/sol-encoding : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2495 kb       : a1, 0, 2495
pr default abi - 2495 kb      : a1, 0, 2495
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/solidity-calls-flipper : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 8969 kb       : a1, 0, 8969
pr default abi - 8969 kb      : a1, 0, 8969
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/trait-dyn-cross-contract-calls : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 6023 kb       : a1, 0, 6023
pr default abi - 6023 kb      : a1, 0, 6023
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/trait-dyn-cross-contract-calls/contracts/incrementer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2337 kb       : a1, 0, 2337
pr default abi - 2337 kb      : a1, 0, 2337
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
solidity-abi/trait-flipper : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2245 kb       : a1, 0, 2245
pr default abi - 2245 kb      : a1, 0, 2245
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
sr25519-verification : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 851 kb       : a1, 0, 851
pr default abi - 851 kb      : a1, 0, 851
pr sol abi - 776 kb      : a2, 0, 776
pr all abi - 979 kb     : a3, 0, 979
#nbsp; : a4, 0, 0

section  
static-buffer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2733 kb       : a1, 0, 2733
pr default abi - 2733 kb      : a1, 0, 2733
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
storage-types : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 16953 kb       : a1, 0, 16953
pr default abi - 16953 kb      : a1, 0, 16953
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
system-precompile : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 10538 kb       : a1, 0, 10538
pr default abi - 10538 kb      : a1, 0, 10538
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
trait-dyn-cross-contract-calls : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3955 kb       : a1, 0, 3955
pr default abi - 3955 kb      : a1, 0, 3955
pr sol abi - 6023 kb      : a2, 0, 6023
pr all abi - 4755 kb     : a3, 0, 4755
#nbsp; : a4, 0, 0

section  
trait-dyn-cross-contract-calls/contracts/incrementer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1783 kb       : a1, 0, 1783
pr default abi - 1783 kb      : a1, 0, 1783
pr sol abi - 2337 kb      : a2, 0, 2337
pr all abi - 2764 kb     : a3, 0, 2764
#nbsp; : a4, 0, 0

section  
trait-erc20 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 11227 kb       : a1, 0, 11227
pr default abi - 11227 kb      : a1, 0, 11227
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
trait-flipper : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1712 kb       : a1, 0, 1712
pr default abi - 1712 kb      : a1, 0, 1712
pr sol abi - 2245 kb      : a2, 0, 2245
pr all abi - 2597 kb     : a3, 0, 2597
#nbsp; : a4, 0, 0

section  
trait-incrementer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1848 kb       : a1, 0, 1848
pr default abi - 1848 kb      : a1, 0, 1848
pr sol abi - 2501 kb      : a2, 0, 2501
pr all abi - 3019 kb     : a3, 0, 3019
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/delegator : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 6428 kb       : a1, 0, 6428
pr default abi - 6428 kb      : a1, 0, 6428
pr sol abi - 9586 kb      : a2, 0, 9586
pr all abi - 11529 kb     : a3, 0, 11529
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/delegator/delegatee : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2846 kb       : a1, 0, 2846
pr default abi - 2846 kb      : a1, 0, 2846
pr sol abi - 2685 kb      : a2, 0, 2685
pr all abi - 3451 kb     : a3, 0, 3451
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/delegator/delegatee2 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2846 kb       : a1, 0, 2846
pr default abi - 2846 kb      : a1, 0, 2846
pr sol abi - 2685 kb      : a2, 0, 2685
pr all abi - 3451 kb     : a3, 0, 3451
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/set-code-hash : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1710 kb       : a1, 0, 1710
pr default abi - 1710 kb      : a1, 0, 1710
pr sol abi - 2380 kb      : a2, 0, 2380
pr all abi - 2969 kb     : a3, 0, 2969
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/set-code-hash-migration : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1710 kb       : a1, 0, 1710
pr default abi - 1710 kb      : a1, 0, 1710
pr sol abi - 2380 kb      : a2, 0, 2380
pr all abi - 2969 kb     : a3, 0, 2969
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/set-code-hash-migration/migration : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1875 kb       : a1, 0, 1875
pr default abi - 1875 kb      : a1, 0, 1875
pr sol abi - 2612 kb      : a2, 0, 2612
pr all abi - 2580 kb     : a3, 0, 2580
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/set-code-hash-migration/updated-incrementer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1885 kb       : a1, 0, 1885
pr default abi - 1885 kb      : a1, 0, 1885
pr sol abi - 2930 kb      : a2, 0, 2930
pr all abi - 3414 kb     : a3, 0, 3414
#nbsp; : a4, 0, 0

section  
upgradeable-contracts/set-code-hash/updated-incrementer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 1662 kb       : a1, 0, 1662
pr default abi - 1662 kb      : a1, 0, 1662
pr sol abi - 2364 kb      : a2, 0, 2364
pr all abi - 2909 kb     : a3, 0, 2909
#nbsp; : a4, 0, 0

section  
wildcard-selector : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2955 kb       : a1, 0, 2955
pr default abi - 2955 kb      : a1, 0, 2955
pr sol abi - 4752 kb      : a2, 0, 4752
pr all abi - 5167 kb     : a3, 0, 5167
#nbsp; : a4, 0, 0

Loading
Show contract sizes: ink! vs Solidity ABI

The following table shows how the contract sizes on this branch change when choosing the Solidity ABI instead of the ink! ABI.

Contract Upstream Size (kB) PR Size (kB) Diff (kB) Diff (%) Change
all-abi/events 19.568 19.568 0 0%
complex-storage-structures 4.843 7.833 2.99 62% 📈
contract-invocation 8.192 11.267 3.075 38% 📈
contract-invocation/contract1 2.068 2.718 0.65 31% 📈
contract-invocation/contract2 1.983 2.669 0.686 35% 📈
contract-invocation/virtual_contract 4.538 7.366 2.828 62% 📈
contract-invocation/virtual_contract_ver1 1.94 2.431 0.491 25% 📈
contract-invocation/virtual_contract_ver2 1.953 2.443 0.49 25% 📈
contract-terminate 1.532 1.499 -0.033 -1% 📉
contract-transfer 3.289 3.274 -0.015 0% 📉
cross-contract-calls/other-contract 1.759 2.344 0.585 33% 📈
custom-environment 3.379 1.717 -1.662 -48% 📉
debugging-strategies 4.414 5.128 0.714 16% 📈
e2e-call-runtime 2.255 2.874 0.619 27% 📈
events 8.875 11.928 3.053 34% 📈
flipper 1.759 2.344 0.585 33% 📈
multi-contract-caller 11.892 16.285 4.393 37% 📈
multi-contract-caller/accumulator 1.127 2.222 1.095 97% 📈
multi-contract-caller/adder 3.161 5.058 1.897 60% 📈
multi-contract-caller/subber 3.166 5.066 1.9 60% 📈
own-code-hash 3.059 2.957 -0.102 -2% 📉
runtime-call-contract 1.762 2.344 0.582 33% 📈
solidity-abi/fallible-setter 2.679 2.679 0 0%
sr25519-verification 0.851 0.776 -0.075 -8% 📉
trait-dyn-cross-contract-calls 3.955 6.023 2.068 52% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.783 2.337 0.554 31% 📈
trait-flipper 1.712 2.245 0.533 31% 📈
trait-incrementer 1.848 2.501 0.653 35% 📈
upgradeable-contracts/delegator 6.428 9.586 3.158 49% 📈
upgradeable-contracts/delegator/delegatee 2.846 2.685 -0.161 -5% 📉
upgradeable-contracts/delegator/delegatee2 2.846 2.685 -0.161 -5% 📉
upgradeable-contracts/set-code-hash 1.71 2.38 0.67 39% 📈
upgradeable-contracts/set-code-hash-migration 1.71 2.38 0.67 39% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.875 2.612 0.737 39% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.885 2.93 1.045 55% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.662 2.364 0.702 42% 📈
wildcard-selector 2.955 4.752 1.797 61% 📈
Show contract sizes: ink! vs all ABI

The following table shows how the contract sizes on this branch change when choosing the all ABI instead of the ink! ABI.

Contract Upstream Size (kB) PR Size (kB) Diff (kB) Diff (%) Change
all-abi/events 19.568 19.568 0 0%
complex-storage-structures 4.843 9.464 4.621 95% 📈
contract-invocation 8.192 12.599 4.407 54% 📈
contract-invocation/contract1 2.068 3.41 1.342 65% 📈
contract-invocation/contract2 1.983 3.301 1.318 66% 📈
contract-invocation/virtual_contract 4.538 6.91 2.372 52% 📈
contract-invocation/virtual_contract_ver1 1.94 2.808 0.868 45% 📈
contract-invocation/virtual_contract_ver2 1.953 2.835 0.882 45% 📈
contract-terminate 1.532 1.627 0.095 6% 📈
contract-transfer 3.289 4.332 1.043 32% 📈
cross-contract-calls/other-contract 1.759 2.768 1.009 57% 📈
custom-environment 3.379 3.855 0.476 14% 📈
debugging-strategies 4.414 5.805 1.391 32% 📈
e2e-call-runtime 2.255 3.506 1.251 55% 📈
events 8.875 18.07 9.195 104% 📈
flipper 1.759 2.768 1.009 57% 📈
multi-contract-caller 11.892 13.096 1.204 10% 📈
multi-contract-caller/accumulator 1.127 2.771 1.644 146% 📈
multi-contract-caller/adder 3.161 3.438 0.277 9% 📈
multi-contract-caller/subber 3.166 3.457 0.291 9% 📈
own-code-hash 3.059 3.607 0.548 18% 📈
runtime-call-contract 1.762 2.773 1.011 57% 📈
solidity-abi/fallible-setter 2.679 3.179 0.5 19% 📈
sr25519-verification 0.851 0.979 0.128 15% 📈
trait-dyn-cross-contract-calls 3.955 4.755 0.8 20% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.783 2.764 0.981 55% 📈
trait-flipper 1.712 2.597 0.885 52% 📈
trait-incrementer 1.848 3.019 1.171 63% 📈
upgradeable-contracts/delegator 6.428 11.529 5.101 79% 📈
upgradeable-contracts/delegator/delegatee 2.846 3.451 0.605 21% 📈
upgradeable-contracts/delegator/delegatee2 2.846 3.451 0.605 21% 📈
upgradeable-contracts/set-code-hash 1.71 2.969 1.259 74% 📈
upgradeable-contracts/set-code-hash-migration 1.71 2.969 1.259 74% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.875 2.58 0.705 38% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.885 3.414 1.529 81% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.662 2.909 1.247 75% 📈
wildcard-selector 2.955 5.167 2.212 75% 📈

Link to the run | Last update: Tue Sep 9 02:25:08 CEST 2025

@davidsemakula davidsemakula force-pushed the semakula/multi-abi-interfaces branch 2 times, most recently from 8537e58 to 2dfc793 Compare September 6, 2025 09:50
@davidsemakula davidsemakula force-pushed the semakula/multi-abi-interfaces branch 2 times, most recently from aa6ee4e to d3f7c15 Compare September 8, 2025 07:42
Copy link
Collaborator

@cmichi cmichi left a comment

Choose a reason for hiding this comment

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

LGTM!

Co-authored-by: Michael Müller <[email protected]>
@davidsemakula davidsemakula merged commit 5065fbc into master Sep 8, 2025
2 checks passed
@davidsemakula davidsemakula deleted the semakula/multi-abi-interfaces branch September 8, 2025 23:03
@github-project-automation github-project-automation bot moved this from In review to Done in ink! + `cargo-contract` v6 Sep 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants