Yashotantra Academy logo
← Vyper theorytheory 0/50 · 0%
level 1
Curious · 0 XP
streak
0d
perfect
0
badges
0

100 XP to Apprentice

Security patterns · medium

35. Auditing checklist for Vyper contracts

What to look for before shipping.

1 min read3 questionsup to 50 XPtopic 35/50

Read in another language

AI translates the explanation and quiz text while preserving code and answer scoring.

Even with Vyper's built-in safety nets, a careful review still matters. Check: access control on every state-changing external function, checks-effects-interactions ordering around external calls, correct use of `@nonreentrant`, bounded loop lengths, and that `DynArray`/array capacities can't be exceeded by an attacker-controlled input.

@external
@nonreentrant("lock")
def withdraw():
    amount: uint256 = self.balances[msg.sender]
    self.balances[msg.sender] = 0      # effect before interaction
    send(msg.sender, amount)           # interaction last

Also verify constructor arguments are validated (no zero addresses where a real one is required), and that immutables are set before any code path could read them uninitialised.

How to study this topic

  1. 1. Read the explanation once end to end, skipping the code.
  2. 2. Re-read the code snippets and say out loud what each line does.
  3. 3. Answer the quiz without scrolling back — that is the real check.
  4. 4. Read every explanation, even for the answers you got right.

Scoring

  • · Up to 30 XP from quiz accuracy.
  • · +15 XP for a perfect first attempt.
  • · +5 XP while a 3-day streak is running.
  • · 75% or higher marks the topic complete.

Check your understanding

  1. 1. What ordering pattern protects against reentrancy alongside the guard?

  2. 2. What should you verify about DynArray usage?

  3. 3. What should be validated in constructor arguments?

Badges

First light
Pass your first topic
Sharp shooter
3 perfect first-try quizzes
On a roll
Study 3 days in a row
Week warrior
Study 7 days in a row
Grinder
Earn 500 XP
Deep diver
Earn 1500 XP