# Optymalizacja gazu w Solidity: jak Yul może zmniejszyć koszty Twoich kontraktów, ale ...

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