Bird
Raised Fist0
Blockchain / Solidityprogramming~10 mins

Why logic controls execution in Blockchain / Solidity - Visual Breakdown

Choose your learning style10 modes available
Concept Flow - Why logic controls execution
Start Transaction
↓
Evaluate Condition
↓
Execute
↓
Update State
↓
End Transaction
This flow shows how logic (conditions) decide which parts of blockchain code run, controlling state changes.
Execution Sample
Blockchain / Solidity
if (balance >= amount) {
  balance -= amount;
  recipient += amount;
} else {
  revert("Insufficient funds");
}
This code checks if balance is enough before sending funds; logic controls if transfer happens or reverts.
Execution Table
StepCondition (balance >= amount)Action TakenBalanceRecipientOutput
1100 >= 50Yes branch executed1000None
2Balance updated: 100 - 50balance = 50500None
3Recipient updated: 0 + 50recipient = 505050None
4EndTransaction successful5050None
5If balance was less, revert calledNo branch executed1000Error: Insufficient funds
💡 Execution stops after updating balances or reverting due to insufficient funds.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
balance100505050
recipient005050
Key Moments - 2 Insights
Why does the code skip updating balances if the condition is false?
Because the condition controls which branch runs; if false, the else branch runs which reverts instead of updating balances (see execution_table row 5).
What happens if the condition is true?
The code inside the if block runs, updating balances step-by-step (rows 2 and 3), showing logic controls execution flow.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the balance after step 2?
A0
B100
C50
D150
💡 Hint
Check the 'Balance' column at step 2 in the execution_table.
At which step does the recipient's balance increase?
AStep 3
BStep 1
CStep 2
DStep 5
💡 Hint
Look at the 'Recipient' column changes in the execution_table.
If balance was 30 and amount 50, what action would be taken?
AUpdate balances
BRevert transaction
CDo nothing
DAdd amount to balance
💡 Hint
Refer to execution_table row 5 where condition is false and revert is called.
Concept Snapshot
Logic controls execution by deciding which code runs.
If conditions are true, code inside runs and changes state.
If false, alternate code runs or transaction reverts.
This ensures blockchain state updates only when rules allow.
Without logic, all code would run blindly, causing errors.
Full Transcript
In blockchain programming, logic controls which parts of code execute during a transaction. For example, checking if a balance is enough before sending funds ensures only valid transfers happen. The flow starts with evaluating a condition. If true, the code updates balances step-by-step. If false, it reverts the transaction to prevent errors. Variables like balance and recipient change only when logic allows. This control flow is essential to keep blockchain state correct and secure.

Practice

(1/5)
1. Why is logic important in blockchain programming?
easy
A. It creates new cryptocurrencies automatically
B. It stores data permanently on the blockchain
C. It controls which parts of the code run based on conditions
D. It speeds up the blockchain network

Solution

  1. Step 1: Understand the role of logic in code

    Logic decides which code runs by checking conditions, like a traffic light controlling cars.
  2. Step 2: Apply this to blockchain context

    In blockchain, logic ensures only allowed actions happen, protecting assets and data.
  3. Final Answer:

    It controls which parts of the code run based on conditions -> Option C
  4. Quick Check:

    Logic controls execution = D [OK]
Hint: Logic decides code flow by conditions, like a gatekeeper [OK]
Common Mistakes:
  • Confusing logic with data storage
  • Thinking logic speeds network
  • Assuming logic creates cryptocurrencies
2. Which of the following is the correct syntax for an if statement in Solidity (blockchain language)?
easy
A. if (balance > 0) { sendFunds(); }
B. if balance > 0 then sendFunds()
C. if balance > 0 { sendFunds(); }
D. if (balance > 0) sendFunds;

Solution

  1. Step 1: Recall Solidity if statement syntax

    Solidity uses C-style syntax: condition in parentheses, code block in braces.
  2. Step 2: Check each option

    if (balance > 0) { sendFunds(); } matches correct syntax with parentheses and braces; others miss parentheses, braces, or semicolon.
  3. Final Answer:

    if (balance > 0) { sendFunds(); } -> Option A
  4. Quick Check:

    Solidity if syntax = C [OK]
Hint: If statements need parentheses and braces in Solidity [OK]
Common Mistakes:
  • Omitting parentheses around condition
  • Missing braces for code block
  • Leaving out semicolons
3. What will be the output of this Solidity function when amount = 50?
function checkAmount(uint amount) public pure returns (string memory) {
  if (amount > 100) {
    return "High";
  } else if (amount > 20) {
    return "Medium";
  } else {
    return "Low";
  }
}
medium
A. "High"
B. Compilation error
C. "Low"
D. "Medium"

Solution

  1. Step 1: Evaluate the if conditions with amount = 50

    50 > 100 is false, so skip first if; 50 > 20 is true, so return "Medium".
  2. Step 2: Confirm no errors in code

    Code syntax is correct, so no compilation error.
  3. Final Answer:

    "Medium" -> Option D
  4. Quick Check:

    50 > 20 = true, output = "Medium" [OK]
Hint: Check conditions top to bottom; first true runs [OK]
Common Mistakes:
  • Choosing "High" because 50 is large
  • Ignoring else if condition order
  • Thinking code has syntax errors
4. Identify the error in this Solidity code snippet:
function transfer(uint amount) public {
  if amount > balance {
    revert("Insufficient balance");
  }
  balance -= amount;
}
medium
A. Missing parentheses around the if condition
B. Using revert instead of throw
C. balance should be a local variable
D. Missing semicolon after revert statement

Solution

  1. Step 1: Check if statement syntax

    In Solidity, conditions must be inside parentheses: if (condition) {...}
  2. Step 2: Verify other parts

    Using revert is correct for errors; semicolon is present; balance can be state variable.
  3. Final Answer:

    Missing parentheses around the if condition -> Option A
  4. Quick Check:

    If condition needs parentheses = A [OK]
Hint: If conditions always need parentheses in Solidity [OK]
Common Mistakes:
  • Thinking revert is wrong
  • Assuming balance must be local
  • Missing that parentheses are required
5. You want to write a Solidity function that only allows transfers if the sender is the owner and the amount is less than the balance. Which logic correctly controls execution?
hard
A. if (msg.sender == owner || amount < balance) { transfer(amount); } else { revert("Not allowed"); }
B. if (msg.sender == owner && amount < balance) { transfer(amount); } else { revert("Not allowed"); }
C. if (msg.sender != owner && amount > balance) { transfer(amount); } else { revert("Not allowed"); }
D. if (msg.sender != owner || amount > balance) { transfer(amount); } else { revert("Not allowed"); }

Solution

  1. Step 1: Understand the required conditions

    Both conditions must be true: sender is owner AND amount less than balance.
  2. Step 2: Check each option's logic

    if (msg.sender == owner && amount < balance) { transfer(amount); } else { revert("Not allowed"); } uses && (AND) correctly; B uses || (OR) which allows wrong cases; C and D use negations incorrectly.
  3. Final Answer:

    if (msg.sender == owner && amount < balance) { transfer(amount); } else { revert("Not allowed"); } -> Option B
  4. Quick Check:

    Use AND for both conditions true = A [OK]
Hint: Use AND (&&) to require all conditions true [OK]
Common Mistakes:
  • Using OR (||) instead of AND (&&)
  • Negating conditions incorrectly
  • Allowing transfers when conditions fail
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard