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
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

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
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
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
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

2 participants