Tóm tắt
Bitcoin Script là ngôn ngữ lập trình stack-based, intentionally limited được nhúng trong mỗi Bitcoin transaction để định nghĩa điều kiện cần thỏa mãn để chi tiêu một UTXO. Không phải smart contract theo nghĩa Ethereum — không có state lưu trữ, không có loops, không có Turing-complete execution. Thiết kế này có chủ đích: đảm bảo validation của mọi node đơn giản, deterministic và không tốn tài nguyên không giới hạn. Hiểu Bitcoin Script là nền tảng để hiểu HTLC, multisig, Taproot, covenant và tất cả L2 protocol xây dựng trên Bitcoin.
1Bitcoin Script Là Gì?
Mỗi Bitcoin UTXO (Unspent Transaction Output) đi kèm với một locking script (còn gọi là scriptPubKey) — một đoạn chương trình định nghĩa điều kiện phải thỏa mãn để chi tiêu UTXO đó. Khi muốn chi tiêu, người dùng cung cấp một unlocking script (scriptSig hoặc witness) chứa dữ liệu đáp ứng điều kiện.
Bitcoin node validate transaction bằng cách chạy unlocking_script + locking_script kết hợp. Nếu stack kết thúc với giá trị TRUE (nonzero) — transaction hợp lệ, UTXO có thể chi tiêu. Toàn bộ quá trình này là deterministic và không có side effect.
2Stack-Based Execution – Cơ Chế Thực Thi
Bitcoin Script là stack machine: tất cả dữ liệu được push vào một stack (ngăn xếp LIFO), và opcodes thao tác trên stack đó. Không có variables, không có functions, không có memory ngoài stack.
Ví dụ thực thi P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
→ Stack kết thúc với TRUE → Transaction hợp lệ ✅
3Locking Script vs Unlocking Script
Điều quan trọng: locking script được set khi tạo UTXO — người gửi quyết định điều kiện chi tiêu. Người nhận có thể chi tiêu bằng cách cung cấp đúng unlocking data. Bitcoin không có khái niệm "tài khoản" — chỉ có UTXO với locking condition.
4Lịch Sử Address Bitcoin – P2PK Đến P2TR
OP_DUP OP_HASH160 <hash> OP_EQUALVERIFY OP_CHECKSIG.5Các Opcode Quan Trọng Cần Biết
| Opcode | Chức năng | Dùng trong |
|---|---|---|
OP_CHECKSIG | Verify ECDSA/Schnorr signature | P2PKH, P2TR key spend, mọi payment |
OP_CHECKMULTISIG | Verify M-of-N signatures | Multisig 2-of-3, federation peg |
OP_HASH160 | SHA256 + RIPEMD160 | P2PKH, P2SH address |
OP_SHA256 | SHA256 hash | HTLC hashlock, inscription marker |
OP_EQUALVERIFY | Kiểm tra 2 giá trị bằng nhau | Mọi hash comparison |
OP_IF / OP_ELSE / OP_ENDIF | Conditional branching | HTLC, Taproot script path |
OP_CHECKLOCKTIMEVERIFY | Require block height/time >= value | HTLC timelock, vesting |
OP_CHECKSEQUENCEVERIFY | Require relative locktime | Lightning channel, DLCs |
OP_RETURN | Provably unspendable output, embed data | Runes, OP_RETURN data |
OP_FALSE / OP_0 | Push false/zero lên stack | Ordinals inscription envelope |
6Tại Sao Bitcoin Script Không Turing-Complete?
Satoshi Nakamoto có chủ đích thiết kế Bitcoin Script không Turing-complete — không có loops, không có recursion. Đây không phải thiếu sót kỹ thuật. Lý do:
- Execution time bounded: Mọi script đều terminate trong thời gian có giới hạn. Không có infinite loop → không có DoS vector từ script validation
- Verification deterministic: Kết quả của script execution hoàn toàn deterministic — cùng một script + input luôn cho cùng kết quả, trên mọi node, mọi lần
- No state: Script không đọc hay ghi bất kỳ state nào ngoài stack — không cần storage, không có side effect
- Auditability: Script ngắn và đơn giản dễ audit bảo mật hơn smart contract Turing-complete
Ethereum chọn ngược lại: Turing-complete EVM, giải quyết vấn đề execution time bằng cách charge "gas" theo từng opcode. Cả hai đều là valid engineering trade-off — Bitcoin ưu tiên simplicity và security, Ethereum ưu tiên expressiveness.
7Bitcoin Script Là Nền Tảng Của Mọi L2 Protocol
Mọi Layer 2 protocol trên Bitcoin đều build trên Bitcoin Script:
- Lightning Network: Dùng OP_CHECKSIG (multisig funding), OP_CHECKLOCKTIMEVERIFY (HTLC timelock), OP_CSV (relative locktime cho justice tx)
- Ordinals Inscription: Dùng OP_FALSE OP_IF...OP_ENDIF trong Taproot witness để nhúng data (bài riêng về Ordinals)
- Runes: Dùng OP_RETURN để encode token operation
- BitVM: Dùng Taproot script tree với hàng nghìn leaf cho commitment
- HTLC: OP_SHA256 + OP_EQUALVERIFY (hashlock) + OP_CHECKLOCKTIMEVERIFY (timelock)
Và tất cả covenant proposals (OP_CAT, OP_CTV, OP_VAULT...) đều là đề xuất thêm opcode mới vào Script để mở rộng khả năng — cho phép L2 protocol mạnh mẽ hơn mà không thay đổi fundamental properties của Bitcoin. Đọc phân tích covenant chi tiết tại SATS.VN.
?FAQ Về Bitcoin Script
OP_CHECKMULTISIG: locking script định nghĩa M-of-N (ví dụ 2-of-3 — cần 2 trong 3 chữ ký). Unlocking script cung cấp M signatures. Node verify: nếu đủ M signatures hợp lệ từ đúng N keys → TRUE. Dùng cho: Lightning channel funding (2-of-2), Liquid federation (11-of-15), hardware wallet multi-device (2-of-3), corporate treasury.Bitcoin Script hôm nay là nền tảng — covenant opcodes sắp tới (OP_CAT, OP_CTV, OP_VAULT) sẽ mở ra khả năng mới cho L2, trustless peg và DeFi trên Bitcoin. Đọc phân tích đầy đủ tại SATS.VN.
→ Đọc Phân Tích Tổng Thể Tại SATS.VN