What an address
actually locks.
▸ /reference — the five standard locks
▸ /faq
What is a locking script?
Every Bitcoin output carries a small program (the scriptPubKey) that states the conditions for spending it. An address is just a compact, checksummed encoding of one of these programs. Coins are not "in" an address; they are locked by its script.
Why do addresses not contain public keys?
Most templates lock to a hash of the key or script rather than the thing itself. That keeps addresses short, and the actual key is only revealed at spend time. Taproot flips this: the address encodes a (tweaked) public key directly.
What makes Taproot spends more private?
A key-path spend reveals only a signature, whether the output was a simple wallet or a complex multi-condition contract. Script alternatives live in a Merkle tree and only the branch actually used is ever revealed.
Can I derive the address from a script, or vice versa?
Yes, both directions are mechanical: address decodes to a hash or program, which slots into a fixed template. This page does address → script; the Script disassembler decodes any raw script hex, standard or not.