समाचार·4 min का पठन·Solingo द्वारा

Solidity 0.8.28 Release — New Features और Breaking Changes

Solidity 0.8.28 transient storage, improved error messages, और कई breaking changes के साथ आया है। Upgrade करने से पहले हर developer को यह जानना ज़रूरी है।

# Solidity 0.8.28 Release — New Features और Breaking Changes

Solidity team ने February 2026 में version 0.8.28 release किया, जो powerful नई features और कुछ breaking changes लाता है। अगर आप अभी भी 0.8.26 या पहले version पर हैं, तो upgrade करने से पहले यह जानना ज़रूरी है।

New Features

1. Transient Storage (TSTORE/TLOAD)

सबसे बड़ा addition transient keyword के through transient storage के लिए native support है। यह EIP-1153 (Cancun upgrade) में introduce हुए TSTORE और TLOAD opcodes को map करता है।

Transient storage क्या है?

Transient storage केवल transaction की duration के लिए exist करता है। यह SSTORE से सस्ता है क्योंकि यह disk पर persist नहीं करता।

Gas savings:

  • TSTORE: 100 gas (vs cold SSTORE के लिए 20,000)
  • TLOAD: 100 gas (vs cold SLOAD के लिए 2,100)

Use case: Reentrancy guards

// OLD: Write करने में ~20k gas, read करने में ~2.1k लगती है

contract OldReentrancyGuard {

bool private _locked;

modifier nonReentrant() {

require(!_locked, "Reentrant call");

_locked = true;

_;

_locked = false;

}

}

// NEW: केवल 100 gas per read/write

contract NewReentrancyGuard {

bool private transient _locked;

modifier nonReentrant() {

require(!_locked, "Reentrant call");

_locked = true;

_;

_locked = false;

}

}

Savings: हर protected function call पर ~39,900 gas।

अन्य use cases:

  • Flash loan state tracking
  • Temporary allowances
  • Atomic swap coordination
  • Cross-contract call context

Limitations:

  • Transaction end होने के बाद access नहीं किया जा सकता
  • view/pure functions में available नहीं
  • Contracts के बीच inheritance नहीं (हर एक isolated transient storage रखता है)

2. Improved Error Messages

Compiler error messages अब significantly clearer हैं, विशेष रूप से type mismatches और inheritance issues के लिए।

Before (0.8.26):

TypeError: Member "value" not found or not visible after argument-dependent lookup in address.

After (0.8.28):

TypeError: Member "value" not found in address.

Did you mean to use "address.balance"?

Suggestions: balance, call, delegatecall

यह अकेला ही Solidity सीखने वाले beginners के लिए debugging के घंटे बचाएगा।

3. Custom Errors in Require Statements

अब आप require के साथ custom errors use कर सकते हैं:

error InsufficientBalance(uint256 available, uint256 required);

function withdraw(uint256 amount) external {

// OLD syntax (अभी भी काम करता है)

require(balance >= amount, "Insufficient balance");

// NEW syntax with custom error

require(balance >= amount, InsufficientBalance(balance, amount));

balance -= amount;

}

यह आपको require syntax की simplicity के साथ custom errors की gas savings देता है।

4. Inline Assembly Improvements

नई inline assembly features:

  • Raw bytecode inject करने के लिए verbatim blocks
  • Yul variables के लिए improved type checking
  • Invalid opcodes के लिए better error messages
function getChainId() external view returns (uint256 id) {

assembly {

id := chainid()

}

}

Breaking Changes

1. Stricter Type Conversion Rules

address और address payable के बीच implicit conversions अब अधिक restricted हैं।

// यह अब compile नहीं होता

address payable recipient = msg.sender; // ERROR

// आपको explicitly cast करना होगा

address payable recipient = payable(msg.sender); // OK

2. Function Visibility in Interfaces

Interfaces में functions को अब explicitly external mark करना होगा। public visibility अब allowed नहीं है।

// OLD (0.8.26) — काम करता था लेकिन deprecated था

interface IERC20 {

function transfer(address to, uint256 amount) public returns (bool);

}

// NEW (0.8.28) — required

interface IERC20 {

function transfer(address to, uint256 amount) external returns (bool);

}

3. Deprecated now Keyword Removed

now keyword (block.timestamp के लिए alias) पूरी तरह से remove कर दिया गया है। इसके बजाय block.timestamp use करें।

// यह अब compile नहीं होता

uint256 deadline = now + 1 days; // ERROR

// इसके बजाय यह use करें

uint256 deadline = block.timestamp + 1 days; // OK

Migration Guide

Step 1: Update Compiler Version

hardhat.config.ts या foundry.toml में:

// Hardhat

solidity: {

version: "0.8.28",

settings: {

optimizer: { enabled: true, runs: 200 }

}

}

# Foundry

[profile.default]

solc_version = "0.8.28"

Step 2: Fix Breaking Changes

Compiler run करें और errors को एक-एक करके fix करें:

npx hardhat compile

# या

forge build

Common fixes:

  • now को block.timestamp से replace करें
  • Address conversions के लिए payable(...) casts add करें
  • Interfaces में public को external में change करें

Step 3: Adopt New Features

Optimization opportunities देखें:

  • Storage-based reentrancy guards को transient storage से replace करें
  • Better error handling के लिए require में custom errors use करें
  • Temporary state variables को transient में refactor करें

Step 4: Test Thoroughly

अपना पूरा test suite run करें:

npx hardhat test

# या

forge test -vvv

विशेष ध्यान दें:

  • Reentrancy guards behavior
  • Gas usage (transient storage costs reduce करना चाहिए)
  • Tests में error message clarity

क्या आपको Upgrade करना चाहिए?

Upgrade करें अगर:

  • आप reentrancy guards पर 99% gas savings चाहते हैं
  • आपके पास temporary state variables हैं (transient के लिए prime candidate)
  • आप नया project start कर रहे हैं

Wait करें अगर:

  • आप mainnet पर deploy करने वाले हैं (पहले testnet पर 0.8.28 test करें)
  • आपके पास complex assembly code है (thoroughly test करें)
  • आपका codebase बहुत बड़ा है (migration effort तुरंत worth नहीं हो सकता)

Resources

Conclusion

Solidity 0.8.28 developer experience और gas optimization पर focused एक solid upgrade है। Transient storage अकेले ही अधिकांश projects के लिए upgrade करना worth बनाता है। Breaking changes minimal हैं और fix करना आसान है।

आज ही transient storage के साथ experiment करना शुरू करें — यह एक powerful primitive है जो आगे हम smart contracts कैसे लिखते हैं उसे shape करेगा।

Practice में लगाने के लिए तैयार हैं?

Solingo पर interactive exercises के साथ इन concepts को apply करें।

मुफ्त में शुरू करें