blockmindset
Lesson 4 of 512 min

Bitcoin Scripting

Bitcoin Script defines the conditions required to spend transaction outputs.

Why this matters

Script explains addresses, signatures, multisig, timelocks, hashlocks, SegWit, and Taproot.

1

The Intuition

A Bitcoin output is locked by a small program. Spending it requires providing data that makes the program succeed.

2

See it concretely

Concrete example

A safe can have rules: one key, two-of-three keys, wait until a date, or reveal a secret. Bitcoin Script is the rule card attached to the safe.

3

Tempting — but wrong

4

The precise version

Bitcoin Script is stack-based and non-Turing-complete. Outputs contain locking conditions, while inputs provide unlocking data or witness data. Validation checks whether the spending transaction satisfies the previous output's conditions. Standard scripts include pay-to-public-key-hash, multisig, timelocks, hashlocks, SegWit witness programs, and Taproot key/script paths.

spendValid \iff script(unlockingData, lockingCondition) = true

Check your understanding

What does a locking script specify?

Click to reveal answer

Why is Bitcoin Script limited?

Click to reveal answer

Before moving on
  • Define locking script and unlocking data.
  • Explain multisig, timelock, and hashlock.
  • Distinguish Bitcoin Script from Ethereum contracts.
  • Explain why limited scripting is a security design choice.
?Checkpoint

What does a Bitcoin locking script define?