Skip to content

chore: Add integration test for arithmetic overflow checks#2631

Merged
davidsemakula merged 4 commits intomasterfrom
semakula/test-overflow-safety
Sep 12, 2025
Merged

chore: Add integration test for arithmetic overflow checks#2631
davidsemakula merged 4 commits intomasterfrom
semakula/test-overflow-safety

Conversation

@davidsemakula
Copy link
Collaborator

@davidsemakula davidsemakula commented Sep 11, 2025

Summary

Follow up to use-ink/cargo-contract#2116

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

Description

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 changed the title tests: Add integration test for arithmetic overflow checks chore: Add integration test for arithmetic overflow checks Sep 11, 2025
@davidsemakula davidsemakula force-pushed the semakula/test-overflow-safety branch from 93e8be5 to 459fee4 Compare September 11, 2025 12:21
@davidsemakula davidsemakula marked this pull request as ready for review September 11, 2025 12:22
@github-actions
Copy link

🦑 📈 ink! Example Contracts ‒ Changes Report 📉 🦑

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.85 19.85 0 0%
call-builder-return-value 9.134 9.134 0 0%
complex-storage-structures 4.845 4.845 0 0%
conditional-compilation 1.712 1.712 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.64 7.64 0 0%
contract-terminate 1.549 1.549 0 0%
contract-transfer 3.302 3.302 0 0%
cross-contract-calls 8.718 8.718 0 0%
cross-contract-calls/other-contract 1.76 1.76 0 0%
custom-allocator 3.265 3.265 0 0%
custom-environment 3.394 3.394 0 0%
debugging-strategies 4.433 4.433 0 0%
dns 10.418 10.418 0 0%
e2e-call-runtime 2.272 2.272 0 0%
e2e-runtime-only-backend 2.829 2.829 0 0%
erc1155 20.938 20.938 0 0%
erc20 10.892 10.892 0 0%
erc721 12.841 12.841 0 0%
events 8.871 8.871 0 0%
flipper 1.76 1.76 0 0%
fuzz-testing 1.746 1.746 0 0%
incrementer 1.28 1.28 0 0%
lang-err/call-builder 8.474 8.474 0 0%
lang-err/call-builder-delegate 3.525 3.525 0 0%
lang-err/constructors-return-value 2.41 2.41 0 0%
lang-err/contract-ref 7.007 7.007 0 0%
lang-err/integration-flipper 2.045 2.045 0 0%
lazyvec 5.697 5.697 0 0%
mapping 10.629 10.629 0 0%
mother 16.419 16.419 0 0%
multi-contract-caller 11.922 11.922 0 0%
multi-contract-caller/accumulator 1.127 1.127 0 0%
multi-contract-caller/adder 3.166 3.166 0 0%
multi-contract-caller/subber 3.17 3.17 0 0%
multisig 27.451 27.451 0 0%
own-code-hash 3.064 3.064 0 0%
payment-channel 7.96 7.96 0 0%
solidity-abi/events 12.253 12.253 0 0%
solidity-abi/fallible-setter 2.696 2.696 0 0%
solidity-abi/sol-cross-contract 6.677 6.677 0 0%
solidity-abi/sol-cross-contract/other-contract-sol 2.575 2.575 0 0%
solidity-abi/sol-encoding 2.511 2.511 0 0%
solidity-abi/solidity-calls-flipper 8.965 8.965 0 0%
solidity-abi/trait-dyn-cross-contract-calls 6.039 6.039 0 0%
solidity-abi/trait-dyn-cross-contract-calls/contracts/incrementer 2.353 2.353 0 0%
solidity-abi/trait-flipper 2.246 2.246 0 0%
sr25519-verification 0.851 0.851 0 0%
static-buffer 2.741 2.741 0 0%
storage-types 16.95 16.95 0 0%
system-precompile 10.629 10.629 0 0%
trait-dyn-cross-contract-calls 3.96 3.96 0 0%
trait-dyn-cross-contract-calls/contracts/incrementer 1.784 1.784 0 0%
trait-erc20 11.219 11.219 0 0%
trait-flipper 1.713 1.713 0 0%
trait-incrementer 1.85 1.85 0 0%
upgradeable-contracts/delegator 6.432 6.432 0 0%
upgradeable-contracts/delegator/delegatee 2.85 2.85 0 0%
upgradeable-contracts/delegator/delegatee2 2.85 2.85 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.876 1.876 0 0%
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.887 1.887 0 0%
upgradeable-contracts/set-code-hash/updated-incrementer 1.662 1.662 0 0%
wildcard-selector 2.952 2.952 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 - 19850 kb : a1, 0, 19850 pr default abi - 19850 kb : a1, 0, 19850 pr sol abi - 19850 kb : a2, 0, 19850 pr all abi - 19850 kb : a3, 0, 19850 #nbsp; : a4, 0, 0 section call-builder-return-value : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 9134 kb : a1, 0, 9134 pr default abi - 9134 kb : a1, 0, 9134 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 - 4845 kb : a1, 0, 4845 pr default abi - 4845 kb : a1, 0, 4845 pr sol abi - 7851 kb : a2, 0, 7851 pr all abi - 9482 kb : a3, 0, 9482 #nbsp; : a4, 0, 0 section conditional-compilation : 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 - 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 - 2717 kb : a2, 0, 2717 pr all abi - 3409 kb : a3, 0, 3409 #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 - 2668 kb : a2, 0, 2668 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 - 6908 kb : a3, 0, 6908 #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 - 7640 kb : a1, 0, 7640 pr default abi - 7640 kb : a1, 0, 7640 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 - 1549 kb : a1, 0, 1549 pr default abi - 1549 kb : a1, 0, 1549 pr sol abi - 1516 kb : a2, 0, 1516 pr all abi - 1644 kb : a3, 0, 1644 #nbsp; : a4, 0, 0 section contract-transfer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3302 kb : a1, 0, 3302 pr default abi - 3302 kb : a1, 0, 3302 pr sol abi - 3291 kb : a2, 0, 3291 pr all abi - 4351 kb : a3, 0, 4351 #nbsp; : a4, 0, 0 section cross-contract-calls : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 8718 kb : a1, 0, 8718 pr default abi - 8718 kb : a1, 0, 8718 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 - 1760 kb : a1, 0, 1760 pr default abi - 1760 kb : a1, 0, 1760 pr sol abi - 2360 kb : a2, 0, 2360 pr all abi - 2785 kb : a3, 0, 2785 #nbsp; : a4, 0, 0 section custom-allocator : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3265 kb : a1, 0, 3265 pr default abi - 3265 kb : a1, 0, 3265 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 - 3394 kb : a1, 0, 3394 pr default abi - 3394 kb : a1, 0, 3394 pr sol abi - 1738 kb : a2, 0, 1738 pr all abi - 3845 kb : a3, 0, 3845 #nbsp; : a4, 0, 0 section debugging-strategies : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 4433 kb : a1, 0, 4433 pr default abi - 4433 kb : a1, 0, 4433 pr sol abi - 5145 kb : a2, 0, 5145 pr all abi - 5819 kb : a3, 0, 5819 #nbsp; : a4, 0, 0 section dns : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 10418 kb : a1, 0, 10418 pr default abi - 10418 kb : a1, 0, 10418 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 - 2272 kb : a1, 0, 2272 pr default abi - 2272 kb : a1, 0, 2272 pr sol abi - 2874 kb : a2, 0, 2874 pr all abi - 3505 kb : a3, 0, 3505 #nbsp; : a4, 0, 0 section e2e-runtime-only-backend : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2829 kb : a1, 0, 2829 pr default abi - 2829 kb : a1, 0, 2829 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 - 20938 kb : a1, 0, 20938 pr default abi - 20938 kb : a1, 0, 20938 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 - 10892 kb : a1, 0, 10892 pr default abi - 10892 kb : a1, 0, 10892 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 - 12841 kb : a1, 0, 12841 pr default abi - 12841 kb : a1, 0, 12841 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 - 8871 kb : a1, 0, 8871 pr default abi - 8871 kb : a1, 0, 8871 pr sol abi - 12909 kb : a2, 0, 12909 pr all abi - 19179 kb : a3, 0, 19179 #nbsp; : a4, 0, 0 section flipper : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1760 kb : a1, 0, 1760 pr default abi - 1760 kb : a1, 0, 1760 pr sol abi - 2360 kb : a2, 0, 2360 pr all abi - 2785 kb : a3, 0, 2785 #nbsp; : a4, 0, 0 section fuzz-testing : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1746 kb : a1, 0, 1746 pr default abi - 1746 kb : a1, 0, 1746 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 - 8474 kb : a1, 0, 8474 pr default abi - 8474 kb : a1, 0, 8474 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 - 3525 kb : a1, 0, 3525 pr default abi - 3525 kb : a1, 0, 3525 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 - 2410 kb : a1, 0, 2410 pr default abi - 2410 kb : a1, 0, 2410 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 - 7007 kb : a1, 0, 7007 pr default abi - 7007 kb : a1, 0, 7007 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 - 2045 kb : a1, 0, 2045 pr default abi - 2045 kb : a1, 0, 2045 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 - 5697 kb : a1, 0, 5697 pr default abi - 5697 kb : a1, 0, 5697 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 - 10629 kb : a1, 0, 10629 pr default abi - 10629 kb : a1, 0, 10629 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 - 16419 kb : a1, 0, 16419 pr default abi - 16419 kb : a1, 0, 16419 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 - 11922 kb : a1, 0, 11922 pr default abi - 11922 kb : a1, 0, 11922 pr sol abi - 16283 kb : a2, 0, 16283 pr all abi - 13134 kb : a3, 0, 13134 #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 - 2240 kb : a2, 0, 2240 pr all abi - 2789 kb : a3, 0, 2789 #nbsp; : a4, 0, 0 section multi-contract-caller/adder : 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 - 5063 kb : a2, 0, 5063 pr all abi - 3444 kb : a3, 0, 3444 #nbsp; : a4, 0, 0 section multi-contract-caller/subber : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3170 kb : a1, 0, 3170 pr default abi - 3170 kb : a1, 0, 3170 pr sol abi - 5068 kb : a2, 0, 5068 pr all abi - 3461 kb : a3, 0, 3461 #nbsp; : a4, 0, 0 section multisig : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 27451 kb : a1, 0, 27451 pr default abi - 27451 kb : a1, 0, 27451 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 - 3064 kb : a1, 0, 3064 pr default abi - 3064 kb : a1, 0, 3064 pr sol abi - 2970 kb : a2, 0, 2970 pr all abi - 3621 kb : a3, 0, 3621 #nbsp; : a4, 0, 0 section payment-channel : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 7960 kb : a1, 0, 7960 pr default abi - 7960 kb : a1, 0, 7960 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section solidity-abi/events : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 12253 kb : a1, 0, 12253 pr default abi - 12253 kb : a1, 0, 12253 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 - 2696 kb : a1, 0, 2696 pr default abi - 2696 kb : a1, 0, 2696 pr sol abi - 2696 kb : a2, 0, 2696 pr all abi - 3197 kb : a3, 0, 3197 #nbsp; : a4, 0, 0 section solidity-abi/sol-cross-contract : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 6677 kb : a1, 0, 6677 pr default abi - 6677 kb : a1, 0, 6677 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 - 2575 kb : a1, 0, 2575 pr default abi - 2575 kb : a1, 0, 2575 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 - 2511 kb : a1, 0, 2511 pr default abi - 2511 kb : a1, 0, 2511 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 - 8965 kb : a1, 0, 8965 pr default abi - 8965 kb : a1, 0, 8965 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 - 6039 kb : a1, 0, 6039 pr default abi - 6039 kb : a1, 0, 6039 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 - 2353 kb : a1, 0, 2353 pr default abi - 2353 kb : a1, 0, 2353 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 - 2246 kb : a1, 0, 2246 pr default abi - 2246 kb : a1, 0, 2246 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 - 2741 kb : a1, 0, 2741 pr default abi - 2741 kb : a1, 0, 2741 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 - 16950 kb : a1, 0, 16950 pr default abi - 16950 kb : a1, 0, 16950 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 - 10629 kb : a1, 0, 10629 pr default abi - 10629 kb : a1, 0, 10629 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 - 3960 kb : a1, 0, 3960 pr default abi - 3960 kb : a1, 0, 3960 pr sol abi - 6039 kb : a2, 0, 6039 pr all abi - 4770 kb : a3, 0, 4770 #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 - 1784 kb : a1, 0, 1784 pr default abi - 1784 kb : a1, 0, 1784 pr sol abi - 2353 kb : a2, 0, 2353 pr all abi - 2781 kb : a3, 0, 2781 #nbsp; : a4, 0, 0 section trait-erc20 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 11219 kb : a1, 0, 11219 pr default abi - 11219 kb : a1, 0, 11219 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 - 1713 kb : a1, 0, 1713 pr default abi - 1713 kb : a1, 0, 1713 pr sol abi - 2246 kb : a2, 0, 2246 pr all abi - 2600 kb : a3, 0, 2600 #nbsp; : a4, 0, 0 section trait-incrementer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1850 kb : a1, 0, 1850 pr default abi - 1850 kb : a1, 0, 1850 pr sol abi - 2517 kb : a2, 0, 2517 pr all abi - 3036 kb : a3, 0, 3036 #nbsp; : a4, 0, 0 section upgradeable-contracts/delegator : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 6432 kb : a1, 0, 6432 pr default abi - 6432 kb : a1, 0, 6432 pr sol abi - 9624 kb : a2, 0, 9624 pr all abi - 11568 kb : a3, 0, 11568 #nbsp; : a4, 0, 0 section upgradeable-contracts/delegator/delegatee : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2850 kb : a1, 0, 2850 pr default abi - 2850 kb : a1, 0, 2850 pr sol abi - 2699 kb : a2, 0, 2699 pr all abi - 3466 kb : a3, 0, 3466 #nbsp; : a4, 0, 0 section upgradeable-contracts/delegator/delegatee2 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2850 kb : a1, 0, 2850 pr default abi - 2850 kb : a1, 0, 2850 pr sol abi - 2699 kb : a2, 0, 2699 pr all abi - 3467 kb : a3, 0, 3467 #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 - 2398 kb : a2, 0, 2398 pr all abi - 2987 kb : a3, 0, 2987 #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 - 2398 kb : a2, 0, 2398 pr all abi - 2987 kb : a3, 0, 2987 #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 - 1876 kb : a1, 0, 1876 pr default abi - 1876 kb : a1, 0, 1876 pr sol abi - 2615 kb : a2, 0, 2615 pr all abi - 2583 kb : a3, 0, 2583 #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 - 1887 kb : a1, 0, 1887 pr default abi - 1887 kb : a1, 0, 1887 pr sol abi - 2946 kb : a2, 0, 2946 pr all abi - 3431 kb : a3, 0, 3431 #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 - 2382 kb : a2, 0, 2382 pr all abi - 2927 kb : a3, 0, 2927 #nbsp; : a4, 0, 0 section wildcard-selector : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2952 kb : a1, 0, 2952 pr default abi - 2952 kb : a1, 0, 2952 pr sol abi - 4801 kb : a2, 0, 4801 pr all abi - 5222 kb : a3, 0, 5222 #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.85 19.85 0 0%
complex-storage-structures 4.845 7.851 3.006 62% 📈
contract-invocation 8.192 11.267 3.075 38% 📈
contract-invocation/contract1 2.068 2.717 0.649 31% 📈
contract-invocation/contract2 1.983 2.668 0.685 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.549 1.516 -0.033 -1% 📉
contract-transfer 3.302 3.291 -0.011 0% 📉
cross-contract-calls/other-contract 1.76 2.36 0.6 34% 📈
custom-environment 3.394 1.738 -1.656 -48% 📉
debugging-strategies 4.433 5.145 0.712 16% 📈
e2e-call-runtime 2.272 2.874 0.602 26% 📈
events 8.871 12.909 4.038 46% 📈
flipper 1.76 2.36 0.6 34% 📈
multi-contract-caller 11.922 16.283 4.361 37% 📈
multi-contract-caller/accumulator 1.127 2.24 1.113 99% 📈
multi-contract-caller/adder 3.166 5.063 1.897 60% 📈
multi-contract-caller/subber 3.17 5.068 1.898 60% 📈
overflow-safety 1.308 2.621 1.313 100% 📈
own-code-hash 3.064 2.97 -0.094 -2% 📉
solidity-abi/fallible-setter 2.696 2.696 0 0%
sr25519-verification 0.851 0.776 -0.075 -8% 📉
trait-dyn-cross-contract-calls 3.96 6.039 2.079 52% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.784 2.353 0.569 32% 📈
trait-flipper 1.713 2.246 0.533 31% 📈
trait-incrementer 1.85 2.517 0.667 36% 📈
upgradeable-contracts/delegator 6.432 9.624 3.192 50% 📈
upgradeable-contracts/delegator/delegatee 2.85 2.699 -0.151 -4% 📉
upgradeable-contracts/delegator/delegatee2 2.85 2.699 -0.151 -4% 📉
upgradeable-contracts/set-code-hash 1.71 2.398 0.688 40% 📈
upgradeable-contracts/set-code-hash-migration 1.71 2.398 0.688 40% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.876 2.615 0.739 39% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.887 2.946 1.059 56% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.662 2.382 0.72 43% 📈
wildcard-selector 2.952 4.801 1.849 63% 📈
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.85 19.85 0 0%
complex-storage-structures 4.845 9.482 4.637 96% 📈
contract-invocation 8.192 12.599 4.407 54% 📈
contract-invocation/contract1 2.068 3.409 1.341 65% 📈
contract-invocation/contract2 1.983 3.301 1.318 66% 📈
contract-invocation/virtual_contract 4.538 6.908 2.37 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.549 1.644 0.095 6% 📈
contract-transfer 3.302 4.351 1.049 32% 📈
cross-contract-calls/other-contract 1.76 2.785 1.025 58% 📈
custom-environment 3.394 3.845 0.451 13% 📈
debugging-strategies 4.433 5.819 1.386 31% 📈
e2e-call-runtime 2.272 3.505 1.233 54% 📈
events 8.871 19.179 10.308 116% 📈
flipper 1.76 2.785 1.025 58% 📈
multi-contract-caller 11.922 13.134 1.212 10% 📈
multi-contract-caller/accumulator 1.127 2.789 1.662 147% 📈
multi-contract-caller/adder 3.166 3.444 0.278 9% 📈
multi-contract-caller/subber 3.17 3.461 0.291 9% 📈
overflow-safety 1.308 3.113 1.805 138% 📈
own-code-hash 3.064 3.621 0.557 18% 📈
solidity-abi/fallible-setter 2.696 3.197 0.501 19% 📈
sr25519-verification 0.851 0.979 0.128 15% 📈
trait-dyn-cross-contract-calls 3.96 4.77 0.81 20% 📈
trait-dyn-cross-contract-calls/contracts/incrementer 1.784 2.781 0.997 56% 📈
trait-flipper 1.713 2.6 0.887 52% 📈
trait-incrementer 1.85 3.036 1.186 64% 📈
upgradeable-contracts/delegator 6.432 11.568 5.136 80% 📈
upgradeable-contracts/delegator/delegatee 2.85 3.466 0.616 22% 📈
upgradeable-contracts/delegator/delegatee2 2.85 3.467 0.617 22% 📈
upgradeable-contracts/set-code-hash 1.71 2.987 1.277 75% 📈
upgradeable-contracts/set-code-hash-migration 1.71 2.987 1.277 75% 📈
upgradeable-contracts/set-code-hash-migration/migration 1.876 2.583 0.707 38% 📈
upgradeable-contracts/set-code-hash-migration/updated-incrementer 1.887 3.431 1.544 82% 📈
upgradeable-contracts/set-code-hash/updated-incrementer 1.662 2.927 1.265 76% 📈
wildcard-selector 2.952 5.222 2.27 77% 📈

Link to the run | Last update: Thu Sep 11 15:49:03 CEST 2025

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!

fn sub_with_overflow_panics() {
let overflow_safety = OverflowSafety::new();
overflow_safety.sub(u8::MIN, 1u8);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

The elegance of these short unit tests will disappear once we remove the off-chain testing env.

It should be possible to retain the should_panic + message matching with the sandbox env though.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yeah.
But I guess in this particular case, even vanilla unit tests would suffice for the off-chain stuff.

@davidsemakula davidsemakula merged commit d2bffe3 into master Sep 12, 2025
35 checks passed
@davidsemakula davidsemakula deleted the semakula/test-overflow-safety branch September 12, 2025 06:34
@cmichi cmichi mentioned this pull request Sep 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants