0
0
Blockchain / Solidityprogramming~10 mins

Packing variables for gas savings in Blockchain / Solidity - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Packing variables for gas savings
Declare variables
Check variable sizes
Group small variables
Pack into single storage slot
Deploy contract
Gas cost reduced
This flow shows how small variables are grouped and packed into one storage slot to save gas in blockchain contracts.
Execution Sample
Blockchain / Solidity
contract Example {
  uint128 a;
  uint128 b;
  uint256 c;
}
This Solidity contract declares two 128-bit variables packed into one 256-bit slot, saving gas.
Execution Table
StepVariable DeclaredSize (bits)Storage Slot UsedGas Cost Impact
1uint128 a128Slot 0 (first half)Base cost for slot
2uint128 b128Slot 0 (second half)No extra slot, saves gas
3uint256 c256Slot 1New slot, normal cost
4End--Total gas saved by packing a and b
💡 All variables declared and packed; gas savings realized by combining smaller variables into one slot.
Variable Tracker
VariableStartAfter Declaring aAfter Declaring bAfter Declaring cFinal
aundefinedstored in slot 0 (first 128 bits)stored in slot 0 (first 128 bits)stored in slot 0 (first 128 bits)stored in slot 0 (first 128 bits)
bundefinedundefinedstored in slot 0 (second 128 bits)stored in slot 0 (second 128 bits)stored in slot 0 (second 128 bits)
cundefinedundefinedundefinedstored in slot 1 (256 bits)stored in slot 1 (256 bits)
Key Moments - 2 Insights
Why do uint128 variables a and b share the same storage slot?
Because each uint128 uses 128 bits and two of them fit exactly into one 256-bit storage slot, saving gas by avoiding extra slots. See execution_table rows 1 and 2.
What happens if a variable is larger than 256 bits?
It cannot fit in one slot and will use multiple slots, increasing gas cost. This example uses uint256 max size per slot as shown in row 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, which storage slot does variable b use?
ASlot 1
BSlot 0 (second half)
CSlot 0 (first half)
DSlot 2
💡 Hint
Check execution_table row 2 under 'Storage Slot Used'
At which step does a new storage slot get used?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at execution_table rows 1-3 and see when slot changes
If variable b was uint256 instead of uint128, how would gas cost change?
AGas cost would increase, using a new slot
BGas cost would decrease
CNo change, still one slot
DVariables would pack into half a slot
💡 Hint
Refer to variable sizes and slot usage in execution_table rows 2 and 3
Concept Snapshot
Packing variables means combining smaller variables into one 256-bit storage slot.
Use types like uint128 to fit two variables per slot.
This reduces the number of storage slots used.
Fewer slots mean less gas cost on blockchain.
Always check variable sizes to pack efficiently.
Full Transcript
This visual execution shows how packing variables in blockchain contracts saves gas. We start by declaring variables a and b as uint128, each 128 bits. Since one storage slot is 256 bits, a and b share slot 0, with a in the first half and b in the second half. Variable c is uint256 and uses slot 1 alone. The execution table tracks each step, showing variable sizes, slots used, and gas cost impact. The variable tracker shows how variables occupy slots after each declaration. Key moments clarify why packing saves gas and what happens with larger variables. The quiz tests understanding of slot usage and gas cost changes. Packing variables efficiently reduces blockchain gas fees by minimizing storage slots used.