Add #[ink::contract_ref] attribute#2648
Conversation
#[ink::interface] macro#[ink::interface] attribute b87271c to 429b6d9 Compare 🦑 📈 ink! Example Contracts ‒ Changes Report 📉 🦑These are the results when building the Show overviewUsing the ABI denoted in the contract manifest.
Show diagramgantt dateFormat x axisFormat x section ./integration-tests/all-abi/events : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 19839 kb : a1, 0, 19839 pr default abi - 19839 kb : a1, 0, 19839 pr sol abi - 19839 kb : a2, 0, 19839 pr all abi - 19839 kb : a3, 0, 19839 #nbsp; : a4, 0, 0 section ./integration-tests/internal/call-builder-return-value : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 9162 kb : a1, 0, 9162 pr default abi - 9162 kb : a1, 0, 9162 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/e2e-runtime-only-backend : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2202 kb : a1, 0, 2202 pr default abi - 2202 kb : a1, 0, 2202 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/lang-err/call-builder : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 8478 kb : a1, 0, 8478 pr default abi - 8478 kb : a1, 0, 8478 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/lang-err/call-builder-delegate : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3600 kb : a1, 0, 3600 pr default abi - 3600 kb : a1, 0, 3600 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/lang-err/constructors-return-value : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2442 kb : a1, 0, 2442 pr default abi - 2442 kb : a1, 0, 2442 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/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 ./integration-tests/internal/lang-err/integration-flipper : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2059 kb : a1, 0, 2059 pr default abi - 2059 kb : a1, 0, 2059 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/mapping : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 10621 kb : a1, 0, 10621 pr default abi - 10621 kb : a1, 0, 10621 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/mother : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 16506 kb : a1, 0, 16506 pr default abi - 16506 kb : a1, 0, 16506 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/overflow-safety : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1310 kb : a1, 0, 1310 pr default abi - 1310 kb : a1, 0, 1310 pr sol abi - 2619 kb : a2, 0, 2619 pr all abi - 3112 kb : a3, 0, 3112 #nbsp; : a4, 0, 0 section ./integration-tests/internal/sr25519-verification : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 853 kb : a1, 0, 853 pr default abi - 853 kb : a1, 0, 853 pr sol abi - 777 kb : a2, 0, 777 pr all abi - 980 kb : a3, 0, 980 #nbsp; : a4, 0, 0 section ./integration-tests/internal/static-buffer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2760 kb : a1, 0, 2760 pr default abi - 2760 kb : a1, 0, 2760 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/storage-types : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 16779 kb : a1, 0, 16779 pr default abi - 16779 kb : a1, 0, 16779 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/internal/system-precompile : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 10621 kb : a1, 0, 10621 pr default abi - 10621 kb : a1, 0, 10621 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/bytes : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 5252 kb : a1, 0, 5252 pr default abi - 5252 kb : a1, 0, 5252 pr sol abi - 5252 kb : a2, 0, 5252 pr all abi - 8705 kb : a3, 0, 8705 #nbsp; : a4, 0, 0 section ./integration-tests/public/complex-storage-structures : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 4858 kb : a1, 0, 4858 pr default abi - 4858 kb : a1, 0, 4858 pr sol abi - 7851 kb : a2, 0, 7851 pr all abi - 9493 kb : a3, 0, 9493 #nbsp; : a4, 0, 0 section ./integration-tests/public/conditional-compilation : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1727 kb : a1, 0, 1727 pr default abi - 1727 kb : a1, 0, 1727 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-invocation : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 8293 kb : a1, 0, 8293 pr default abi - 8293 kb : a1, 0, 8293 pr sol abi - 11267 kb : a2, 0, 11267 pr all abi - 12698 kb : a3, 0, 12698 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-invocation/contract1 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2081 kb : a1, 0, 2081 pr default abi - 2081 kb : a1, 0, 2081 pr sol abi - 2719 kb : a2, 0, 2719 pr all abi - 3425 kb : a3, 0, 3425 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-invocation/contract2 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1996 kb : a1, 0, 1996 pr default abi - 1996 kb : a1, 0, 1996 pr sol abi - 2671 kb : a2, 0, 2671 pr all abi - 3315 kb : a3, 0, 3315 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-invocation/virtual_contract : 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 - 7367 kb : a2, 0, 7367 pr all abi - 7000 kb : a3, 0, 7000 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-invocation/virtual_contract_ver1 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1954 kb : a1, 0, 1954 pr default abi - 1954 kb : a1, 0, 1954 pr sol abi - 2431 kb : a2, 0, 2431 pr all abi - 2821 kb : a3, 0, 2821 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-invocation/virtual_contract_ver2 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1966 kb : a1, 0, 1966 pr default abi - 1966 kb : a1, 0, 1966 pr sol abi - 2443 kb : a2, 0, 2443 pr all abi - 2848 kb : a3, 0, 2848 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-storage : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 7630 kb : a1, 0, 7630 pr default abi - 7630 kb : a1, 0, 7630 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-terminate : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1551 kb : a1, 0, 1551 pr default abi - 1551 kb : a1, 0, 1551 pr sol abi - 1517 kb : a2, 0, 1517 pr all abi - 1646 kb : a3, 0, 1646 #nbsp; : a4, 0, 0 section ./integration-tests/public/contract-transfer : 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 - 0 kb : a2, 0, 0 pr all abi - 3120 kb : a3, 0, 3120 #nbsp; : a4, 0, 0 section ./integration-tests/public/cross-contract-calls : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 8719 kb : a1, 0, 8719 pr default abi - 8719 kb : a1, 0, 8719 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/cross-contract-calls/other-contract : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1775 kb : a1, 0, 1775 pr default abi - 1775 kb : a1, 0, 1775 pr sol abi - 2358 kb : a2, 0, 2358 pr all abi - 2797 kb : a3, 0, 2797 #nbsp; : a4, 0, 0 section ./integration-tests/public/custom-allocator : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3275 kb : a1, 0, 3275 pr default abi - 3275 kb : a1, 0, 3275 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/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 ./integration-tests/public/debugging-strategies : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 4445 kb : a1, 0, 4445 pr default abi - 4445 kb : a1, 0, 4445 pr sol abi - 5143 kb : a2, 0, 5143 pr all abi - 5829 kb : a3, 0, 5829 #nbsp; : a4, 0, 0 section ./integration-tests/public/dns : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 10423 kb : a1, 0, 10423 pr default abi - 10423 kb : a1, 0, 10423 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/e2e-call-runtime : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1563 kb : a1, 0, 1563 pr default abi - 1563 kb : a1, 0, 1563 pr sol abi - 1905 kb : a2, 0, 1905 pr all abi - 2365 kb : a3, 0, 2365 #nbsp; : a4, 0, 0 section ./integration-tests/public/erc1155 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 20979 kb : a1, 0, 20979 pr default abi - 20979 kb : a1, 0, 20979 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/erc20 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 10897 kb : a1, 0, 10897 pr default abi - 10897 kb : a1, 0, 10897 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/erc721 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 12863 kb : a1, 0, 12863 pr default abi - 12863 kb : a1, 0, 12863 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/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 - 12911 kb : a2, 0, 12911 pr all abi - 19182 kb : a3, 0, 19182 #nbsp; : a4, 0, 0 section ./integration-tests/public/fallible-setter : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2972 kb : a1, 0, 2972 pr default abi - 2972 kb : a1, 0, 2972 pr sol abi - 2972 kb : a2, 0, 2972 pr all abi - 3514 kb : a3, 0, 3514 #nbsp; : a4, 0, 0 section ./integration-tests/public/flipper : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1775 kb : a1, 0, 1775 pr default abi - 1775 kb : a1, 0, 1775 pr sol abi - 2358 kb : a2, 0, 2358 pr all abi - 2797 kb : a3, 0, 2797 #nbsp; : a4, 0, 0 section ./integration-tests/public/fuzz-testing : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1762 kb : a1, 0, 1762 pr default abi - 1762 kb : a1, 0, 1762 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/incrementer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1288 kb : a1, 0, 1288 pr default abi - 1288 kb : a1, 0, 1288 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/lazyvec : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 5726 kb : a1, 0, 5726 pr default abi - 5726 kb : a1, 0, 5726 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/multi-contract-caller : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 11926 kb : a1, 0, 11926 pr default abi - 11926 kb : a1, 0, 11926 pr sol abi - 16282 kb : a2, 0, 16282 pr all abi - 13139 kb : a3, 0, 13139 #nbsp; : a4, 0, 0 section ./integration-tests/public/multi-contract-caller/accumulator : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1134 kb : a1, 0, 1134 pr default abi - 1134 kb : a1, 0, 1134 pr sol abi - 2236 kb : a2, 0, 2236 pr all abi - 2794 kb : a3, 0, 2794 #nbsp; : a4, 0, 0 section ./integration-tests/public/multi-contract-caller/adder : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3169 kb : a1, 0, 3169 pr default abi - 3169 kb : a1, 0, 3169 pr sol abi - 5060 kb : a2, 0, 5060 pr all abi - 3442 kb : a3, 0, 3442 #nbsp; : a4, 0, 0 section ./integration-tests/public/multi-contract-caller/subber : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3173 kb : a1, 0, 3173 pr default abi - 3173 kb : a1, 0, 3173 pr sol abi - 5066 kb : a2, 0, 5066 pr all abi - 3455 kb : a3, 0, 3455 #nbsp; : a4, 0, 0 section ./integration-tests/public/multisig : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 27517 kb : a1, 0, 27517 pr default abi - 27517 kb : a1, 0, 27517 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/own-code-hash : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 3065 kb : a1, 0, 3065 pr default abi - 3065 kb : a1, 0, 3065 pr sol abi - 2973 kb : a2, 0, 2973 pr all abi - 3621 kb : a3, 0, 3621 #nbsp; : a4, 0, 0 section ./integration-tests/public/payment-channel : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 7995 kb : a1, 0, 7995 pr default abi - 7995 kb : a1, 0, 7995 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/runtime-call-contract : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1778 kb : a1, 0, 1778 pr default abi - 1778 kb : a1, 0, 1778 pr sol abi - 2358 kb : a2, 0, 2358 pr all abi - 2801 kb : a3, 0, 2801 #nbsp; : a4, 0, 0 section ./integration-tests/public/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 - 6037 kb : a2, 0, 6037 pr all abi - 4769 kb : a3, 0, 4769 #nbsp; : a4, 0, 0 section ./integration-tests/public/trait-dyn-cross-contract-calls/contracts/incrementer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1799 kb : a1, 0, 1799 pr default abi - 1799 kb : a1, 0, 1799 pr sol abi - 2353 kb : a2, 0, 2353 pr all abi - 2794 kb : a3, 0, 2794 #nbsp; : a4, 0, 0 section ./integration-tests/public/trait-erc20 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 11224 kb : a1, 0, 11224 pr default abi - 11224 kb : a1, 0, 11224 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/public/trait-flipper : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1728 kb : a1, 0, 1728 pr default abi - 1728 kb : a1, 0, 1728 pr sol abi - 2245 kb : a2, 0, 2245 pr all abi - 2611 kb : a3, 0, 2611 #nbsp; : a4, 0, 0 section ./integration-tests/public/trait-incrementer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1870 kb : a1, 0, 1870 pr default abi - 1870 kb : a1, 0, 1870 pr sol abi - 2522 kb : a2, 0, 2522 pr all abi - 3048 kb : a3, 0, 3048 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/delegator : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 6452 kb : a1, 0, 6452 pr default abi - 6452 kb : a1, 0, 6452 pr sol abi - 9624 kb : a2, 0, 9624 pr all abi - 11588 kb : a3, 0, 11588 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/delegator/delegatee : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2849 kb : a1, 0, 2849 pr default abi - 2849 kb : a1, 0, 2849 pr sol abi - 2698 kb : a2, 0, 2698 pr all abi - 3466 kb : a3, 0, 3466 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/delegator/delegatee2 : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2849 kb : a1, 0, 2849 pr default abi - 2849 kb : a1, 0, 2849 pr sol abi - 2698 kb : a2, 0, 2698 pr all abi - 3464 kb : a3, 0, 3464 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/set-code-hash : 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 - 2397 kb : a2, 0, 2397 pr all abi - 2999 kb : a3, 0, 2999 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/set-code-hash-migration : 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 - 2397 kb : a2, 0, 2397 pr all abi - 2999 kb : a3, 0, 2999 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/set-code-hash-migration/migration : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1877 kb : a1, 0, 1877 pr default abi - 1877 kb : a1, 0, 1877 pr sol abi - 2616 kb : a2, 0, 2616 pr all abi - 2584 kb : a3, 0, 2584 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/set-code-hash-migration/updated-incrementer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1901 kb : a1, 0, 1901 pr default abi - 1901 kb : a1, 0, 1901 pr sol abi - 2946 kb : a2, 0, 2946 pr all abi - 3443 kb : a3, 0, 3443 #nbsp; : a4, 0, 0 section ./integration-tests/public/upgradeable-contracts/set-code-hash/updated-incrementer : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 1675 kb : a1, 0, 1675 pr default abi - 1675 kb : a1, 0, 1675 pr sol abi - 2381 kb : a2, 0, 2381 pr all abi - 2938 kb : a3, 0, 2938 #nbsp; : a4, 0, 0 section ./integration-tests/public/wildcard-selector : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2948 kb : a1, 0, 2948 pr default abi - 2948 kb : a1, 0, 2948 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 5211 kb : a3, 0, 5211 #nbsp; : a4, 0, 0 section ./integration-tests/solidity-abi/events : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 12246 kb : a1, 0, 12246 pr default abi - 12246 kb : a1, 0, 12246 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/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 ./integration-tests/solidity-abi/sol-cross-contract/other-contract-sol : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2574 kb : a1, 0, 2574 pr default abi - 2574 kb : a1, 0, 2574 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/solidity-abi/sol-encoding : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2510 kb : a1, 0, 2510 pr default abi - 2510 kb : a1, 0, 2510 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/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 ./integration-tests/solidity-abi/trait-dyn-cross-contract-calls : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 6037 kb : a1, 0, 6037 pr default abi - 6037 kb : a1, 0, 6037 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 section ./integration-tests/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 ./integration-tests/solidity-abi/trait-flipper : a5, 0, 0 v5 default abi - 0 kb : a1, 0, 0 master default abi - 2245 kb : a1, 0, 2245 pr default abi - 2245 kb : a1, 0, 2245 pr sol abi - 0 kb : a2, 0, 0 pr all abi - 0 kb : a3, 0, 0 #nbsp; : a4, 0, 0 Show contract sizes: ink! vs Solidity ABIThe following table shows how the contract sizes on this branch change when choosing the Solidity ABI instead of the ink! ABI.
Show contract sizes: ink! vs all ABIThe following table shows how the contract sizes on this branch change when choosing the all ABI instead of the ink! ABI.
Link to the run | Last update: Mon Sep 22 17:54:13 CEST 2025 |
429b6d9 to 2a63a00 Compare 2a63a00 to b4881eb Compare
cmichi left a comment
There was a problem hiding this comment.
Nice, David! Looks all good to me, just some tiny remarks for the comments.
| #[ink(message)] | ||
| #[allow(non_snake_case)] | ||
| fn hashBlake256(&self, data: ink::sol::DynBytes) -> ink::sol::FixedBytes<32>; | ||
| } |
There was a problem hiding this comment.
Oh that's a nice example!
At the moment all pallet-revive precompiles are mapped onto "native" ink_env functions. But Parity will be adding more precompiles and at one point it will make sense for us to have a crate ink_precompiles that just provides the #[ink::Interface]'s to those.
| Also thanks for the concise description of this PR, this is really helpful as context! |
Co-authored-by: Michael Müller <mich@elmueller.net>
Co-authored-by: Michael Müller <mich@elmueller.net>
Co-authored-by: Michael Müller <mich@elmueller.net>
#[ink::interface] attribute#[ink::contract_ref] attribute macro #[ink::contract_ref] attribute macro#[ink::contract_ref] attribute
Summary
Closes #_
cargo-contractorpallet-revive?Description
Motivation
Currently, you can generate a contract reference for an on-chain ("callee") contract by:
#[ink::trait_definition]that matches the interface of the "callee" contractink::contract_ref!declarative macro to generate a contract reference for this traitWhile the
#[ink::trait_definition]abstraction is mainly designed for defining interfaces for the root contract to implement, this dual use for also dynamically defining the interface of an on-chain/"callee" contract for the root contract to interact with has previously not been too "problematic" because:#[ink::trait_definition]technical limitations (i.e. due to technical implementation details, not design considerations), like the inability to have methods with default implementations, made ink! trait definitions coincidentally very similar to what would be required for an abstraction for dynamically declaring the interface of an on-chain/"callee" contractWith multiple ABI support in ink! v6, and the general ambition to lift current ink! trait definition limitations (in order to improve the ergonomics of defining shared behavior for authors of ink! contracts and especially libraries), it makes sense to start separating the user-level abstractions for these 2 "interface definition" use cases i.e.
#[ink::trait_definition]for interfaces defining shared behavior to be implemented (or reused/inherited) by the root contract, where the ABI can be inferred from the root contract and methods with bodies/default implementation are supportedDesign
This PR adds an
#[ink::contract_ref]attribute macro that's conceptually equivalent to the combination of#[ink::trait_definition]andink::contract_ref!usage described above i.e. a trait marked with the#[ink::contract_ref]attribute macro essentially generates a contract reference for the trait.Additionally, the
ink::contract_ref!declarative macro is renamed toink::contract_ref_from_path!because all macros share the same namespace in Rust (irrespective of kind), and theink::contract_refname is now taken by the new#[ink::contract_ref]attribute macro.More concretely, the following examples are roughly equivalent:
Implementation
With the current implementation, the new
#[ink::contract_ref]attribute macro heavily reuses the IR (Intermediate Representation) and codegen of the#[ink::trait_definition]attribute macro, with the difference being that it accepts different config attribute arguments i.e.#[ink::contract_ref]accepts 2 optional arguments:abi: either "ink" or "sol", defaulting to the default ABI of the root contract if none is providedenv: a path to an item implementing theEnvironmenttrait, defaulting toink::env::DefaultEnvironmentif none is provided#[ink::trait_definition]accepts optionalnamespaceandkeep_attrarguments as described hereThis reuse of
#[ink::trait_definition]IR in particular means that at the moment, IR parsing/validation errors for trait items (i.e. everything except the "header arguments") will mention "ink! trait definition" (instead of "ink! contract reference"), but this is just an implementation "shortcut" that will be fixed in future PRs.Lastly, while the 2 code examples above are presented as equivalent, for an "ink" ABI root contract, only the
#[ink::contract_ref]example actually works. This is because the#[ink::trait_definition]in the second example (which is what generates the call and message builders used by the contract reference) is not aware of the ABI override that theink::contract_ref_from_path!(previouslyink::contract_ref!) tries to later apply and so codegen only generates call builders following the calling conventions of the root contract's ABI (which would be "ink" in that case).Misc
Follow ups/ related TODOs
#[ink::contract_ref]attribute docs ink-docs#498)Checklist before requesting a review
CHANGELOG.md