# Optymalizacja gazu w Solidity: jak Yul może zmniejszyć koszty Twoich kontraktów, ale ... ![gas](https://hackmd.io/_uploads/SJ4gmJEHgx.jpg) Czy zastanawiałeś się, dlaczego nawet proste kontrakty w Solidity potrafią zużywać zaskakująco dużo gazu? W świecie zdecentralizowanych aplikacji (dApps), każda nadmiarowa operacja kosztuje. Na szczęście, kompilator Solidity oferuje narzędzie, które może znacząco zredukować te koszty — tryb Intermediate Representation (IR), znany szerzej jako **Yul**. --- ## Dlaczego czytelny kod nie zawsze oznacza tani kod? Solidity daje poczucie przewidywalności, ale za tą przejrzystością czasem kryją się niepotrzebne koszty. **Przykład:** Masz kontrakt `Counter` z publiczną zmienną `number`, ustawianą w konstruktorze. Potem tworzysz kontrakt `Timmy`, który dziedziczy po `Counter` i ustawia `number` na 22. Odczytując wartość po wdrożeniu, faktycznie dostajesz `Timmy.number == 22`. Wszystko działa zgodnie z oczekiwaniami… ale w tle kontrakt zużywa więcej gazu, niż byś chciał. ``` // SPDX-License-Identifier: MIT pragma solidity ^0.8.30; contract Counter { uint256 public number; constructor(uint256 starting Number) { number = startingNumber; } } contract Timmy is Counter { uint256 timmyNumber = 22; constructor() Counter(timmyNumber) {} } ``` --- ## Tryb kompilacji przez Intermediate Representation (IR), czyli Yul **Yul** to niskopoziomowy język pośredni, którego używa kompilator Solidity w trybie optymalizacji IR. Włączenie tego trybu pozwala kompilatorowi generować bardziej zoptymalizowany kod bajtowy. ### Jak go włączyć? Wystarczy: - Ustawić `viaIR: true` w konfiguracji kompilatora (np. `solc`, `foundry.toml`) - Przekompilować kontrakt i porównać zużycie gazu **Przykład konfiguracji dla Foundry:** ```toml [profile.default] via_ir = true ``` Włąsnie w tym miejscu otrzymujemy to mityczne ALE, bo oto nie zawsze kompilator języka Yul zrobi to co od niego oczekujemy, to akurat jest problemem w zwiazku z czym warto **wszytko dobrze testować.** Błąd ten kompilacji udokumentował [Patrick Collins tu link do jego filmu, gdzie pokazuje, jak to działa. ](https://www.youtube.com/watch?v=95An3N45lLY) A tu link do człowiek, który to odkrył: https://x.com/real_philogy/status/1939651713339658673 --- 📲 **Znajdź mnie w sieci:** 🔴 [YouTube](https://www.youtube.com/@devPepson)  | [Telegram](https://web.telegram.org/k/#@xmasnft4you)  | [Twitter/X](https://x.com/devPepson)  | [GitHub](https://github.com/panpepson)  | [wWw](https://trochymiak.net) 🌐