Skip to content

Conversation

cmichi
Copy link
Collaborator

@cmichi cmichi commented Sep 5, 2025

  • Implements basic pre-compile support for the Storage pre-compile + some more functions of the System pre-compile
  • Bumps subxt to 0.44
  • Syncs with latest polkadot-sdk (but on a branch that contains my (unmerged) work on pre-compiles)
  • Removes the unstable-hostfn feature for many functions and examples

I ran into issues with our E2E tests now sometimes throwing "Priority too low" when multiple tests using the same account as as a signer are run in parallel. Couldn't figure out a proper way too fix it yet. I hotfixed it now by changing the accounts in the tests to different ones in each. That's how e.g. the changes in integration-tests/public/contract-storage/e2e_tests.rs came to be.

Relevant Polkadot SDK PRs:

I would like to refactor the Solidity stuff into its own crate or module. Would also like to add more tests for these encoding functions. In the interest of moving on quickly I've created the PR as is now though.

@cmichi cmichi marked this pull request as ready for review September 5, 2025 22:35
Copy link

github-actions bot commented Sep 6, 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.592 19.568 -0.024 0% 📉
call-builder-return-value 8.926 9.074 0.148 2% 📈
combined-extension 2.559 0.866 -1.693 -65% 📉
complex-storage-structures 4.626 4.843 0.217 5% 📈
conditional-compilation 1.494 1.711 0.217 15% 📈
contract-invocation 7.975 8.192 0.217 3% 📈
contract-invocation/contract1 1.851 2.068 0.217 12% 📈
contract-invocation/contract2 1.766 1.983 0.217 12% 📈
contract-invocation/virtual_contract 4.314 4.538 0.224 5% 📈
contract-invocation/virtual_contract_ver1 1.723 1.94 0.217 13% 📈
contract-invocation/virtual_contract_ver2 1.735 1.953 0.218 13% 📈
contract-storage 6.646 7.53 0.884 13% 📈
contract-terminate 1.315 1.532 0.217 17% 📈
contract-transfer 2.875 3.289 0.414 14% 📈
cross-contract-calls 8.489 8.706 0.217 3% 📈
cross-contract-calls/other-contract 1.542 1.759 0.217 14% 📈
custom-allocator 2.996 3.214 0.218 7% 📈
custom-environment 3.249 3.379 0.13 4% 📈
debugging-strategies 4.197 4.414 0.217 5% 📈
dns 9.171 10.371 1.2 13% 📈
e2e-call-runtime 1.723 2.255 0.532 31% 📈
e2e-runtime-only-backend 2.275 2.813 0.538 24% 📈
erc1155 20.418 20.896 0.478 2% 📈
erc20 10.746 10.887 0.141 1% 📈
erc721 12.166 12.792 0.626 5% 📈
events 8.749 8.875 0.126 1% 📈
flipper 1.542 1.759 0.217 14% 📈
fuzz-testing 1.528 1.745 0.217 14% 📈
incrementer 1.28 1.28 0 0%
lang-err/call-builder 8.254 8.47 0.216 3% 📈
lang-err/call-builder-delegate 3.291 3.508 0.217 7% 📈
lang-err/constructors-return-value 2.174 2.391 0.217 10% 📈
lang-err/contract-ref 6.799 7.003 0.204 3% 📈
lang-err/integration-flipper 1.826 2.044 0.218 12% 📈
lazyvec 4.877 5.643 0.766 16% 📈
mapping 9.419 10.538 1.119 12% 📈
mother 15.763 16.35 0.587 4% 📈
multi-contract-caller 11.68 11.892 0.212 2% 📈
multi-contract-caller/accumulator 1.127 1.127 0 0%
multi-contract-caller/adder 2.944 3.161 0.217 7% 📈
multi-contract-caller/subber 2.948 3.166 0.218 7% 📈
multisig 25.897 27.374 1.477 6% 📈
own-code-hash 2.591 3.059 0.468 18% 📈
payment-channel 7.826 7.951 0.125 2% 📈
psp22-extension 7.392 2.616 -4.776 -64% 📉
rand-extension 4.223 1.844 -2.379 -55% 📉
runtime-call-contract 1.545 1.762 0.217 14% 📈
solidity-abi/events 12.458 12.061 -0.397 -2% 📉
solidity-abi/fallible-setter 2.465 2.679 0.214 9% 📈
solidity-abi/sol-cross-contract 6.458 6.674 0.216 3% 📈
solidity-abi/sol-cross-contract/other-contract-sol 2.344 2.559 0.215 9% 📈
solidity-abi/sol-encoding 2.28 2.495 0.215 9% 📈
solidity-abi/solidity-calls-flipper 8.754 8.969 0.215 2% 📈
solidity-abi/trait-dyn-cross-contract-calls 5.807 6.023 0.216 4% 📈
solidity-abi/trait-dyn-cross-contract-calls/contracts/incrementer 2.12 2.337 0.217 10% 📈
solidity-abi/trait-flipper 2.028 2.245 0.217 11% 📈
sr25519-verification 0.851 0.851 0 0%
static-buffer 2.516 2.733 0.217 9% 📈
storage-types 17.027 16.953 -0.074 0% 📉
trait-dyn-cross-contract-calls 3.738 3.955 0.217 6% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.571 1.783 0.212 13% 📈
trait-erc20 11.079 11.227 0.148 1% 📈
trait-flipper 1.495 1.712 0.217 15% 📈
trait-incrementer 1.631 1.848 0.217 13% 📈
upgradeable-contracts/delegator 6.211 6.428 0.217 3% 📈
upgradeable-contracts/delegator/delegatee 2.629 2.846 0.217 8% 📈
upgradeable-contracts/delegator/delegatee2 2.629 2.846 0.217 8% 📈
upgradeable-contracts/set-code-hash 1.494 1.71 0.216 14% 📈
upgradeable-contracts/set-code-hash-migration 1.494 1.71 0.216 14% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.657 1.875 0.218 13% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.668 1.885 0.217 13% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.446 1.662 0.216 15% 📈
wildcard-selector 2.738 2.955 0.217 8% 📈
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 - 19592 kb       : a1, 0, 19592
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 - 8926 kb       : a1, 0, 8926
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  
combined-extension : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2559 kb       : a1, 0, 2559
pr default abi - 866 kb      : a1, 0, 866
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 - 4626 kb       : a1, 0, 4626
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 - 1494 kb       : a1, 0, 1494
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 - 7975 kb       : a1, 0, 7975
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 - 1851 kb       : a1, 0, 1851
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 - 1766 kb       : a1, 0, 1766
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 - 4314 kb       : a1, 0, 4314
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 - 1723 kb       : a1, 0, 1723
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 - 1735 kb       : a1, 0, 1735
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 - 6646 kb       : a1, 0, 6646
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 - 1315 kb       : a1, 0, 1315
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 - 2875 kb       : a1, 0, 2875
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 - 8489 kb       : a1, 0, 8489
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 - 1542 kb       : a1, 0, 1542
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 - 2996 kb       : a1, 0, 2996
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 - 3249 kb       : a1, 0, 3249
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 - 4197 kb       : a1, 0, 4197
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 - 9171 kb       : a1, 0, 9171
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 - 1723 kb       : a1, 0, 1723
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 - 2275 kb       : a1, 0, 2275
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 - 20418 kb       : a1, 0, 20418
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 - 10746 kb       : a1, 0, 10746
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 - 12166 kb       : a1, 0, 12166
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 - 8749 kb       : a1, 0, 8749
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 - 1542 kb       : a1, 0, 1542
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 - 1528 kb       : a1, 0, 1528
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 - 8254 kb       : a1, 0, 8254
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 - 3291 kb       : a1, 0, 3291
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 - 2174 kb       : a1, 0, 2174
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 - 6799 kb       : a1, 0, 6799
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 - 1826 kb       : a1, 0, 1826
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 - 4877 kb       : a1, 0, 4877
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 - 9419 kb       : a1, 0, 9419
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 - 15763 kb       : a1, 0, 15763
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 - 11680 kb       : a1, 0, 11680
pr default abi - 11892 kb      : a1, 0, 11892
pr sol abi - 16282 kb      : a2, 0, 16282
pr all abi - 0 kb     : a3, 0, 0
#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 - 2944 kb       : a1, 0, 2944
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 - 2948 kb       : a1, 0, 2948
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 - 25897 kb       : a1, 0, 25897
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 - 2591 kb       : a1, 0, 2591
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 - 7826 kb       : a1, 0, 7826
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  
psp22-extension : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 7392 kb       : a1, 0, 7392
pr default abi - 2616 kb      : a1, 0, 2616
pr sol abi - 0 kb      : a2, 0, 0
pr all abi - 0 kb     : a3, 0, 0
#nbsp; : a4, 0, 0

section  
rand-extension : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 4223 kb       : a1, 0, 4223
pr default abi - 1844 kb      : a1, 0, 1844
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 - 1545 kb       : a1, 0, 1545
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 - 12458 kb       : a1, 0, 12458
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 - 2465 kb       : a1, 0, 2465
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 - 6458 kb       : a1, 0, 6458
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 - 2344 kb       : a1, 0, 2344
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 - 2280 kb       : a1, 0, 2280
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 - 8754 kb       : a1, 0, 8754
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 - 5807 kb       : a1, 0, 5807
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 - 2120 kb       : a1, 0, 2120
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 - 2028 kb       : a1, 0, 2028
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 - 2516 kb       : a1, 0, 2516
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 - 17027 kb       : a1, 0, 17027
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  
trait-dyn-cross-contract-calls : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 3738 kb       : a1, 0, 3738
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 - 1571 kb       : a1, 0, 1571
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 - 11079 kb       : a1, 0, 11079
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 - 1495 kb       : a1, 0, 1495
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 - 1631 kb       : a1, 0, 1631
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 - 6211 kb       : a1, 0, 6211
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 - 2629 kb       : a1, 0, 2629
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 - 2629 kb       : a1, 0, 2629
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 - 1494 kb       : a1, 0, 1494
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 - 1494 kb       : a1, 0, 1494
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 - 1657 kb       : a1, 0, 1657
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 - 1668 kb       : a1, 0, 1668
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 - 1446 kb       : a1, 0, 1446
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 - 2738 kb       : a1, 0, 2738
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.282 4.39 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/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: Mon Sep 8 00:22:12 CEST 2025

Copy link
Collaborator

@davidsemakula davidsemakula left a comment

Choose a reason for hiding this comment

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

LGTM!

See comment and CI failure.

I would like to refactor the Solidity stuff into its own crate or module. Would also like to add more tests for these encoding functions.

For params encoding, we can do unit tests that compare against ink_primitives::sol::encode_sequence

@cmichi cmichi merged commit e104aef into master Sep 7, 2025
16 checks passed
@cmichi cmichi deleted the cmichi-precompile-support-sep-2 branch September 7, 2025 21:20
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