Skip to content

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants