Skip to content

Sync with polkadot-sdk + migrate to Blake2x256 + storage deposit limit fixes#2589

Merged
cmichi merged 29 commits intomasterfrom
cmichi-sync-with-latest-polkadot-sdk-aug-7
Aug 26, 2025
Merged

Sync with polkadot-sdk + migrate to Blake2x256 + storage deposit limit fixes#2589
cmichi merged 29 commits intomasterfrom
cmichi-sync-with-latest-polkadot-sdk-aug-7

Conversation

@cmichi
Copy link
Copy Markdown
Collaborator

@cmichi cmichi commented Aug 13, 2025

The PR fixes our CI. It also:

  • Synchronizes with polkadot-sdk/c40b36c3a7c208f9a6837b80812473af3d9ba7f7. There are some changes required for that.
  • Migrates blake2_256 to use the new pallet-revive pre-compile.

Note:
We currently require users to juggle two different types when dealing with anything value. That's not our choice, but rather we just expose to the user which types pallet-revive wants.

  • Balance is used when e.g. communicating with a node via the E2E API or setting storage deposit limits.
  • U256 is used e.g. when the contract queries its own value or in a contract call trace.

This is unfortunate, as it requires applying the pallet-revive Config::NativeToEthRatio multiplication factor for converting between both types. We could just decide on one type (U256 as it allows for a bigger number range) and do the conversion in the background. I'm on the fence though as it could lead to user confusion when they e.g. view the contract balance on a third party interface or use a frontend library that doesn't do this.

The other thing worth mentioning is that I'll provide some abstractions around calling pre-compiles in a follow-up PR.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Aug 14, 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
call-builder-return-value 8.926 8.926 0 0%
combined-extension 2.559 2.559 0 0%
complex-storage-structures 4.626 4.626 0 0%
conditional-compilation 1.494 1.494 0 0%
contract-invocation 7.975 7.975 0 0%
contract-invocation/contract1 1.851 1.851 0 0%
contract-invocation/contract2 1.766 1.766 0 0%
contract-invocation/virtual_contract 4.314 4.314 0 0%
contract-invocation/virtual_contract_ver1 1.723 1.723 0 0%
contract-invocation/virtual_contract_ver2 1.735 1.735 0 0%
contract-storage 6.646 6.646 0 0%
contract-terminate 1.315 1.315 0 0%
contract-transfer 2.876 2.876 0 0%
cross-contract-calls 8.489 8.49 0.001 0% 📈
cross-contract-calls/other-contract 1.542 1.542 0 0%
custom-allocator 2.962 2.996 0.034 1% 📈
custom-environment 2.031 4.16 2.129 105% 📈
debugging-strategies 4.197 4.197 0 0%
dns 7.712 9.855 2.143 28% 📈
e2e-call-runtime 1.723 1.725 0.002 0% 📈
e2e-runtime-only-backend 2.275 2.275 0 0%
erc1155 19.444 21.537 2.093 11% 📈
erc20 9.404 11.498 2.094 22% 📈
erc721 10.558 12.575 2.017 19% 📈
events 6.365 9.237 2.872 45% 📈
flipper 1.542 1.542 0 0%
fuzz-testing 1.528 1.528 0 0%
incrementer 1.28 1.28 0 0%
lang-err/call-builder 8.254 8.253 -0.001 0% 📉
lang-err/call-builder-delegate 3.291 3.291 0 0%
lang-err/constructors-return-value 2.174 2.174 0 0%
lang-err/contract-ref 6.799 6.799 0 0%
lang-err/integration-flipper 1.826 1.826 0 0%
lazyvec 4.878 4.877 -0.001 0% 📉
mapping 9.419 9.42 0.001 0% 📈
mother 13.652 15.767 2.115 15% 📈
multi-contract-caller 11.677 11.673 -0.004 0% 📉
multi-contract-caller/accumulator 1.127 1.127 0 0%
multi-contract-caller/adder 2.944 2.946 0.002 0% 📈
multi-contract-caller/subber 2.948 2.951 0.003 0% 📈
multisig 24.07 26.197 2.127 9% 📈
own-code-hash 2.591 2.591 0 0%
payment-channel 10.796 9.361 -1.435 -12% 📉
psp22-extension 7.392 7.392 0 0%
rand-extension 3.491 5.617 2.126 61% 📈
runtime-call-contract 1.545 1.545 0 0%
solidity-abi/events 9.437 11.594 2.157 23% 📈
solidity-abi/fallible-setter 2.644 2.644 0 0%
solidity-abi/sol-cross-contract 6.583 6.583 0 0%
solidity-abi/sol-cross-contract/other-contract-sol 2.569 2.569 0 0%
solidity-abi/sol-encoding 2.504 2.505 0.001 0% 📈
solidity-abi/solidity-calls-flipper 8.878 8.878 0 0%
solidity-abi/trait-dyn-cross-contract-calls 6.067 6.067 0 0%
solidity-abi/trait-dyn-cross-contract-calls/contracts/incrementer 2.451 2.449 -0.002 0% 📉
solidity-abi/trait-flipper 2.248 2.248 0 0%
sr25519-verification 0.851 0.851 0 0%
static-buffer 2.517 2.516 -0.001 0% 📉
storage-types 17.027 17.028 0.001 0% 📈
trait-dyn-cross-contract-calls 3.738 3.738 0 0%
trait-dyn-cross-contract-calls/contracts/incrementer 1.571 1.571 0 0%
trait-erc20 9.628 11.729 2.101 22% 📈
trait-flipper 1.495 1.495 0 0%
trait-incrementer 1.631 1.631 0 0%
upgradeable-contracts/delegator 6.211 6.211 0 0%
upgradeable-contracts/delegator/delegatee 2.629 2.629 0 0%
upgradeable-contracts/delegator/delegatee2 2.629 2.629 0 0%
upgradeable-contracts/set-code-hash 1.494 1.494 0 0%
upgradeable-contracts/set-code-hash-migration 1.494 1.494 0 0%
upgradeable-contracts/set-code-hash-migration/migration 1.657 1.657 0 0%
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.668 1.668 0 0%
upgradeable-contracts/set-code-hash/updated-incrementer 1.446 1.446 0 0%
wildcard-selector 2.738 2.738 0 0%
Show diagram
gantt
   dateFormat x
   axisFormat x
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 - 8926 kb      : a1, 0, 8926
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 - 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  
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 - 4626 kb      : a1, 0, 4626
pr sol abi - 7966 kb      : a2, 0, 7966
pr all abi - 9592 kb     : a3, 0, 9592
#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 - 1494 kb      : a1, 0, 1494
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 - 7975 kb      : a1, 0, 7975
pr sol abi - 11123 kb      : a2, 0, 11123
pr all abi - 12536 kb     : a3, 0, 12536
#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 - 1851 kb      : a1, 0, 1851
pr sol abi - 2519 kb      : a2, 0, 2519
pr all abi - 3212 kb     : a3, 0, 3212
#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 - 1766 kb      : a1, 0, 1766
pr sol abi - 2470 kb      : a2, 0, 2470
pr all abi - 3103 kb     : a3, 0, 3103
#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 - 4314 kb      : a1, 0, 4314
pr sol abi - 7277 kb      : a2, 0, 7277
pr all abi - 6918 kb     : a3, 0, 6918
#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 - 1723 kb      : a1, 0, 1723
pr sol abi - 2532 kb      : a2, 0, 2532
pr all abi - 2914 kb     : a3, 0, 2914
#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 - 1735 kb      : a1, 0, 1735
pr sol abi - 2545 kb      : a2, 0, 2545
pr all abi - 2942 kb     : a3, 0, 2942
#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 - 6646 kb      : a1, 0, 6646
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 - 1315 kb      : a1, 0, 1315
pr sol abi - 1401 kb      : a2, 0, 1401
pr all abi - 1530 kb     : a3, 0, 1530
#nbsp; : a4, 0, 0

section  
contract-transfer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2876 kb       : a1, 0, 2876
pr default abi - 2876 kb      : a1, 0, 2876
pr sol abi - 2875 kb      : a2, 0, 2875
pr all abi - 3930 kb     : a3, 0, 3930
#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 - 8490 kb      : a1, 0, 8490
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 - 1542 kb      : a1, 0, 1542
pr sol abi - 2354 kb      : a2, 0, 2354
pr all abi - 2780 kb     : a3, 0, 2780
#nbsp; : a4, 0, 0

section  
custom-allocator : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2962 kb       : a1, 0, 2962
pr default abi - 2996 kb      : a1, 0, 2996
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 - 2031 kb       : a1, 0, 2031
pr default abi - 4160 kb      : a1, 0, 4160
pr sol abi - 4457 kb      : a2, 0, 4457
pr all abi - 4629 kb     : a3, 0, 4629
#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 - 4197 kb      : a1, 0, 4197
pr sol abi - 5146 kb      : a2, 0, 5146
pr all abi - 5640 kb     : a3, 0, 5640
#nbsp; : a4, 0, 0

section  
dns : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 7712 kb       : a1, 0, 7712
pr default abi - 9855 kb      : a1, 0, 9855
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 - 1725 kb      : a1, 0, 1725
pr sol abi - 2480 kb      : a2, 0, 2480
pr all abi - 3140 kb     : a3, 0, 3140
#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 - 2275 kb      : a1, 0, 2275
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 - 19444 kb       : a1, 0, 19444
pr default abi - 21537 kb      : a1, 0, 21537
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 - 9404 kb       : a1, 0, 9404
pr default abi - 11498 kb      : a1, 0, 11498
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 - 10558 kb       : a1, 0, 10558
pr default abi - 12575 kb      : a1, 0, 12575
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 - 6365 kb       : a1, 0, 6365
pr default abi - 9237 kb      : a1, 0, 9237
pr sol abi - 14356 kb      : a2, 0, 14356
pr all abi - 15287 kb     : a3, 0, 15287
#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 - 1542 kb      : a1, 0, 1542
pr sol abi - 2353 kb      : a2, 0, 2353
pr all abi - 2778 kb     : a3, 0, 2778
#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 - 1528 kb      : a1, 0, 1528
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 - 8253 kb      : a1, 0, 8253
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 - 3291 kb      : a1, 0, 3291
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 - 2174 kb      : a1, 0, 2174
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 - 6799 kb      : a1, 0, 6799
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 - 1826 kb      : a1, 0, 1826
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 - 4878 kb       : a1, 0, 4878
pr default abi - 4877 kb      : a1, 0, 4877
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 - 9420 kb      : a1, 0, 9420
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 - 13652 kb       : a1, 0, 13652
pr default abi - 15767 kb      : a1, 0, 15767
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 - 11677 kb       : a1, 0, 11677
pr default abi - 11673 kb      : a1, 0, 11673
pr sol abi - 16272 kb      : a2, 0, 16272
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 - 2318 kb      : a2, 0, 2318
pr all abi - 2867 kb     : a3, 0, 2867
#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 - 2946 kb      : a1, 0, 2946
pr sol abi - 4972 kb      : a2, 0, 4972
pr all abi - 3262 kb     : a3, 0, 3262
#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 - 2951 kb      : a1, 0, 2951
pr sol abi - 4980 kb      : a2, 0, 4980
pr all abi - 3281 kb     : a3, 0, 3281
#nbsp; : a4, 0, 0

section  
multisig : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 24070 kb       : a1, 0, 24070
pr default abi - 26197 kb      : a1, 0, 26197
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 - 2591 kb      : a1, 0, 2591
pr sol abi - 2463 kb      : a2, 0, 2463
pr all abi - 3161 kb     : a3, 0, 3161
#nbsp; : a4, 0, 0

section  
payment-channel : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 10796 kb       : a1, 0, 10796
pr default abi - 9361 kb      : a1, 0, 9361
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 - 7392 kb      : a1, 0, 7392
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 - 3491 kb       : a1, 0, 3491
pr default abi - 5617 kb      : a1, 0, 5617
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 - 1545 kb      : a1, 0, 1545
pr sol abi - 2353 kb      : a2, 0, 2353
pr all abi - 2783 kb     : a3, 0, 2783
#nbsp; : a4, 0, 0

section  
solidity-abi/events : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 9437 kb       : a1, 0, 9437
pr default abi - 11594 kb      : a1, 0, 11594
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 - 2644 kb       : a1, 0, 2644
pr default abi - 2644 kb      : a1, 0, 2644
pr sol abi - 2644 kb      : a2, 0, 2644
pr all abi - 3156 kb     : a3, 0, 3156
#nbsp; : a4, 0, 0

section  
solidity-abi/sol-cross-contract : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 6583 kb       : a1, 0, 6583
pr default abi - 6583 kb      : a1, 0, 6583
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 - 2569 kb       : a1, 0, 2569
pr default abi - 2569 kb      : a1, 0, 2569
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 - 2504 kb       : a1, 0, 2504
pr default abi - 2505 kb      : a1, 0, 2505
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 - 8878 kb       : a1, 0, 8878
pr default abi - 8878 kb      : a1, 0, 8878
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 - 6067 kb       : a1, 0, 6067
pr default abi - 6067 kb      : a1, 0, 6067
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 - 2451 kb       : a1, 0, 2451
pr default abi - 2449 kb      : a1, 0, 2449
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 - 2248 kb       : a1, 0, 2248
pr default abi - 2248 kb      : a1, 0, 2248
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 - 925 kb      : a2, 0, 925
pr all abi - 1131 kb     : a3, 0, 1131
#nbsp; : a4, 0, 0

section  
static-buffer : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 2517 kb       : a1, 0, 2517
pr default abi - 2516 kb      : a1, 0, 2516
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 - 17028 kb      : a1, 0, 17028
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 - 3738 kb      : a1, 0, 3738
pr sol abi - 6067 kb      : a2, 0, 6067
pr all abi - 4772 kb     : a3, 0, 4772
#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 - 1571 kb      : a1, 0, 1571
pr sol abi - 2451 kb      : a2, 0, 2451
pr all abi - 2879 kb     : a3, 0, 2879
#nbsp; : a4, 0, 0

section  
trait-erc20 : a5, 0, 0
v5 default abi - 0 kb       : a1, 0, 0
master default abi - 9628 kb       : a1, 0, 9628
pr default abi - 11729 kb      : a1, 0, 11729
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 - 1495 kb      : a1, 0, 1495
pr sol abi - 2248 kb      : a2, 0, 2248
pr all abi - 2601 kb     : a3, 0, 2601
#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 - 1631 kb      : a1, 0, 1631
pr sol abi - 2613 kb      : a2, 0, 2613
pr all abi - 3132 kb     : a3, 0, 3132
#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 - 6211 kb      : a1, 0, 6211
pr sol abi - 9451 kb      : a2, 0, 9451
pr all abi - 11396 kb     : a3, 0, 11396
#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 - 2629 kb      : a1, 0, 2629
pr sol abi - 2491 kb      : a2, 0, 2491
pr all abi - 3308 kb     : a3, 0, 3308
#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 - 2629 kb      : a1, 0, 2629
pr sol abi - 2491 kb      : a2, 0, 2491
pr all abi - 3308 kb     : a3, 0, 3308
#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 - 1494 kb      : a1, 0, 1494
pr sol abi - 2487 kb      : a2, 0, 2487
pr all abi - 3076 kb     : a3, 0, 3076
#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 - 1494 kb      : a1, 0, 1494
pr sol abi - 2487 kb      : a2, 0, 2487
pr all abi - 3076 kb     : a3, 0, 3076
#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 - 1657 kb      : a1, 0, 1657
pr sol abi - 2495 kb      : a2, 0, 2495
pr all abi - 2460 kb     : a3, 0, 2460
#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 - 1668 kb      : a1, 0, 1668
pr sol abi - 3004 kb      : a2, 0, 3004
pr all abi - 3489 kb     : a3, 0, 3489
#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 - 1446 kb      : a1, 0, 1446
pr sol abi - 2431 kb      : a2, 0, 2431
pr all abi - 2977 kb     : a3, 0, 2977
#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 - 2738 kb      : a1, 0, 2738
pr sol abi - 4794 kb      : a2, 0, 4794
pr all abi - 5209 kb     : a3, 0, 5209
#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
complex-storage-structures 4.626 7.966 3.34 72% 📈
contract-invocation 7.975 11.123 3.148 39% 📈
contract-invocation/contract1 1.851 2.519 0.668 36% 📈
contract-invocation/contract2 1.766 2.47 0.704 40% 📈
contract-invocation/virtual_contract 4.314 7.277 2.963 69% 📈
contract-invocation/virtual_contract_ver1 1.723 2.532 0.809 47% 📈
contract-invocation/virtual_contract_ver2 1.735 2.545 0.81 47% 📈
contract-terminate 1.315 1.401 0.086 7% 📈
contract-transfer 2.876 2.875 -0.001 0% 📉
cross-contract-calls/other-contract 1.542 2.354 0.812 53% 📈
custom-environment 4.16 4.457 0.297 7% 📈
debugging-strategies 4.197 5.146 0.949 23% 📈
e2e-call-runtime 1.725 2.48 0.755 44% 📈
events 9.237 14.356 5.119 55% 📈
flipper 1.542 2.353 0.811 53% 📈
multi-contract-caller 11.673 16.272 4.599 39% 📈
multi-contract-caller/accumulator 1.127 2.318 1.191 106% 📈
multi-contract-caller/adder 2.946 4.972 2.026 69% 📈
multi-contract-caller/subber 2.951 4.98 2.029 69% 📈
own-code-hash 2.591 2.463 -0.128 -4% 📉
runtime-call-contract 1.545 2.353 0.808 52% 📈
solidity-abi/fallible-setter 2.644 2.644 0 0%
sr25519-verification 0.851 0.925 0.074 9% 📈
trait-dyn-cross-contract-calls 3.738 6.067 2.329 62% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.571 2.451 0.88 56% 📈
trait-flipper 1.495 2.248 0.753 50% 📈
trait-incrementer 1.631 2.613 0.982 60% 📈
upgradeable-contracts/delegator 6.211 9.451 3.24 52% 📈
upgradeable-contracts/delegator/delegatee 2.629 2.491 -0.138 -4% 📉
upgradeable-contracts/delegator/delegatee2 2.629 2.491 -0.138 -4% 📉
upgradeable-contracts/set-code-hash 1.494 2.487 0.993 66% 📈
upgradeable-contracts/set-code-hash-migration 1.494 2.487 0.993 66% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.657 2.495 0.838 51% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.668 3.004 1.336 80% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.446 2.431 0.985 68% 📈
wildcard-selector 2.738 4.794 2.056 75% 📈
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
complex-storage-structures 4.626 9.592 4.966 107% 📈
contract-invocation 7.975 12.536 4.561 57% 📈
contract-invocation/contract1 1.851 3.212 1.361 74% 📈
contract-invocation/contract2 1.766 3.103 1.337 76% 📈
contract-invocation/virtual_contract 4.314 6.918 2.604 60% 📈
contract-invocation/virtual_contract_ver1 1.723 2.914 1.191 69% 📈
contract-invocation/virtual_contract_ver2 1.735 2.942 1.207 70% 📈
contract-terminate 1.315 1.53 0.215 16% 📈
contract-transfer 2.876 3.93 1.054 37% 📈
cross-contract-calls/other-contract 1.542 2.78 1.238 80% 📈
custom-environment 4.16 4.629 0.469 11% 📈
debugging-strategies 4.197 5.64 1.443 34% 📈
e2e-call-runtime 1.725 3.14 1.415 82% 📈
events 9.237 15.287 6.05 65% 📈
flipper 1.542 2.778 1.236 80% 📈
multi-contract-caller/accumulator 1.127 2.867 1.74 154% 📈
multi-contract-caller/adder 2.946 3.262 0.316 11% 📈
multi-contract-caller/subber 2.951 3.281 0.33 11% 📈
own-code-hash 2.591 3.161 0.57 22% 📈
runtime-call-contract 1.545 2.783 1.238 80% 📈
solidity-abi/fallible-setter 2.644 3.156 0.512 19% 📈
sr25519-verification 0.851 1.131 0.28 33% 📈
trait-dyn-cross-contract-calls 3.738 4.772 1.034 28% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.571 2.879 1.308 83% 📈
trait-flipper 1.495 2.601 1.106 74% 📈
trait-incrementer 1.631 3.132 1.501 92% 📈
upgradeable-contracts/delegator 6.211 11.396 5.185 83% 📈
upgradeable-contracts/delegator/delegatee 2.629 3.308 0.679 26% 📈
upgradeable-contracts/delegator/delegatee2 2.629 3.308 0.679 26% 📈
upgradeable-contracts/set-code-hash 1.494 3.076 1.582 106% 📈
upgradeable-contracts/set-code-hash-migration 1.494 3.076 1.582 106% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.657 2.46 0.803 48% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.668 3.489 1.821 109% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.446 2.977 1.531 106% 📈
wildcard-selector 2.738 5.209 2.471 90% 📈

Link to the run | Last update: Tue Aug 26 20:45:12 CEST 2025

@cmichi cmichi marked this pull request as ready for review August 23, 2025 14:03
Copy link
Copy Markdown
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.

Looks great overall!
A few suggestions and potential fixes noted below though.

@davidsemakula
Copy link
Copy Markdown
Collaborator

We could just decide on one type (U256 as it allows for a bigger number range) and do the conversion in the background.

One thing that speaks for the opposite direction (i.e. Balance as the one type), is that converting from Balance to U256 is presumably infallible, while U256 to Balance is a fallible conversion.

But yeah, it's a bit of a mess really.

Copy link
Copy Markdown
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!
Great to finally have a stable Blake2x256!

One suggestion below though.

@cmichi cmichi merged commit 68098cc into master Aug 26, 2025
2 checks passed
@cmichi cmichi deleted the cmichi-sync-with-latest-polkadot-sdk-aug-7 branch August 26, 2025 17:34
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