Bitcoin-script

Definitie

Bitcoin Script is een op stacks gebaseerde, Turing-onvolledige programmeertaal die wordt gebruikt om de voorwaarden te definiëren waaronder Bitcoin-transacties kunnen worden uitgegeven. Het is een eenvoudig maar krachtig scriptsysteem dat is ingebed in elke Bitcoin-transactie-output (vergrendelingsscript of scriptPubKey) en -input (ontgrendelingsscript of scriptSig), waardoor programmeerbare bestedingsvoorwaarden mogelijk zijn zonder het Bitcoin-netwerk bloot te stellen aan de risico's van een Turing-compleet smart contract-platform. Bitcoin Script maakt multi-signature wallets , tijdgebonden transacties, hash-locked contracts, betaalkanalen en atomic swaps mogelijk – allemaal zonder dat een algemene blockchain nodig is.

 Oorsprong en geschiedenis

DatumEvenementen
2008Satoshi Nakamoto ontwerpt Bitcoin Script als onderdeel van het ontwerp van de Bitcoin whitepaper.
2009Bitcoin-script geïmplementeerd in het genesisblok van Bitcoin; Pay-to-Public-Key (P2PK) is het eerste scripttype.
2012BIP 16: Pay-to-Script-Hash (P2SH) geïntroduceerd, waardoor complexe inwisselscripts mogelijk worden.
2015CHECKLOCKTIMEVERIFY (CLTV) is toegevoegd, waardoor absolute tijdvergrendelingen op transacties mogelijk zijn.
2016CHECKSEQUENCEVERIFY (CSV) is toegevoegd, waardoor relatieve tijdsloten voor betaalkanalen mogelijk zijn.
2017SegWit introduceert Pay-to-Witness-Public-Key-Hash (P2WPKH) en P2WSH.
2021De Taproot-upgrade (BIP 340/341/342) introduceert Schnorr-handtekeningen en MAST via Tapscript.
2023Bitcoin-ordinalen maken gebruik van Script om gegevens in getuigengegevens vast te leggen.
2023Het debat over de herintroductie van BIP 347 (OP_CAT) met het oog op mogelijke scriptuitbreidingen laait op.

 “Bitcoin Script is bewust beperkt – en dat is een kenmerk, geen fout. Eenvoud is veiligheid.” – Greg Maxwell, Bitcoin Core-ontwikkelaar

 Hoe het werkt

 UITVOERING VAN HET BITCOIN-TRANSACTIESCRIPT ═ ... OP_EQUALVERIFY OP_CHECKSIG (Standaard P2PKH — Pay to Public Key Hash)

ONTGRENDELINGSSCRIPT (scriptSig) — aangeleverd door spender:

UITVOERING (op basis van stack): Stack begint leeg

  1. Duw → Stapel: [sig]
  2. Duw → Stack: [sig, pubKey]
  3. OP_DUP: duplicaat bovenaan → Stapel: [sig, pubKey, pubKey]
  4. OP_HASH160: hashtop → Stapel: [sig, pubKey, pubKeyHash]
  5. Duw → Stack: [sig, pubKey, pubKeyHash, expected]
  6. OP_EQUALVERIFY: vergelijk → Stack: [sig, pubKey] (indien gelijk)
  7. OP_CHECKSIG: verifieer handtekening → Stack: [TRUE]

Resultaat: WAAR = transactie is geldig en UTXO is uitgegeven

SOORTEN SCRIPT: P2PK → Pay to Public Key (verouderd) P2PKH → Pay to Public Key Hash (meest voorkomend) P2SH → Pay to Script Hash (multi-signature, complex) P2WPKH → Native SegWit (bech32) P2TR → Pay to Taproot (meest efficiënt/privé) ═══════════════════════════════════════════════════════ 

ScripttypeAdresformaatUse CasePrivacy
P2PK(geen standaardadres)Originele Bitcoin, Satoshi-muntenLaag
P2PKH1… (Basis 58)Standaard betalingen met één handtekeningLaag
P2SH3… (Basis 58)Multisignatuur, complexe scriptsMedium
P2WPKHbc1q… (bech32)Native SegWit, lagere kostenMedium
P2WSHbc1q… (bech32)Native SegWit-scriptsMedium
P2TRbc1p… (bech32m)Taproot, Tapscript, OrdinalenHoge

 In eenvoudige bewoordingen

  1. Slot en sleutelElke Bitcoin-uitgifte heeft een vergrendeling (vergrendelingsscript) — om deze uit te geven, moet u de juiste sleutel (ontgrendelingsscript) opgeven die aan de voorwaarden voldoet.
  2. StapelmachineHet script wordt uitgevoerd door waarden op een stapel te plaatsen en bewerkingen uit te voeren — het is eenvoudig, voorspelbaar en bewust niet Turing-compleet om oneindige lussen te voorkomen.
  3. MultisignatuurvoorbeeldEen 2-van-3 multisig-script vereist 2 van de 3 aangewezen privésleutelhandtekeningen om fondsen vrij te geven — dit wordt gebruikt voor teamkasjes en beveiligde wallets.
  4. Taproot-privacyTaproot maakt complexe multi-signature transacties mogelijk. scripts voor slimme contracten Ze zien er identiek uit aan eenvoudige transacties met één handtekening op de blockchain, wat de privacy verbetert.
  5. Bewuste beperkingenIn tegenstelling tot Ethereum's Solidity heeft Bitcoin Script geen toegang tot externe gegevens, kan het geen lussen bevatten en geen andere contracten aanroepen, waardoor het voorspelbaar en veilig is.

 Voorbeelden uit de echte wereld

ScenarioScripttypeVoordeel
Wissel hot walletP2SH 2-van-3 multisigVereist 2 van de 3 sleutels om te gebruiken — beschermt tegen diefstal van één sleutel.
Lightning Network-kanaalHTLC (Hash Time-Locked Contract)Maakt directe off-chain BTC-betalingen mogelijk.
Atomische swap BTC↔LTCHTLC op beide ketensVertrouwensloze cross-chain uitwisseling zonder tussenpersoon
Tijdgebonden erfrechtCONTROLEER DE VERGRENDELINGSTIJDGeld is pas na een bepaalde datum te besteden.
Ordinalen inscriptieP2TR-getuigengegevensNFT/data-inscriptie in Taproot-getuigenis

 Voordelen

VoordeelDetail
SecurityTuring-onvolledig ontwerp voorkomt complexe aanvalsvectoren die mogelijk zijn in slimme contracten.
VoorspelbaarheidElk script wordt deterministisch uitgevoerd met beperkte rekentijd.
ExpressiviteitMaakt multisignatuur, tijdsloten en HTLC's mogelijk, voldoende voor het Lightning Network.
EfficiëntieScripts zijn compact, waardoor transactiegegevens en -kosten tot een minimum worden beperkt.
Privacy (Taproot)Complexe uitgavenvoorwaarden die niet te onderscheiden zijn van eenvoudige betalingen.

 Nadelen en risico's

RisicoDetail
Beperkte functionaliteitComplexe implementatie is niet mogelijk. zeker, orakels, oftewel willekeurige slimme contracten
ScriptcomplexiteitGeavanceerde multisignatuurscripts zijn complex om correct te implementeren.
Problemen met verouderde formatenOudere scripttypen (P2PK, P2PKH) bieden minder privacy dan moderne alternatieven.
Uitgeschakelde opcodesVerschillende krachtige opcodes (OP_CAT, OP_CHECKSIGFROMSTACK) zijn om veiligheidsredenen uitgeschakeld.
Risico's van scriptfoutenFouten in aangepaste scripts kunnen ertoe leiden dat geld permanent geblokkeerd raakt.

Tips voor risicomanagement:

  • Test aangepaste scriptimplementaties altijd eerst op het testnet voordat u ze op het mainnet implementeert.
  • Gebruik P2TR (Taproot) adressen voor optimale privacy en compatibiliteit met de toekomst.
  • Gebruik voor multi-signature wallets gevestigde implementaties (Bitcoin Core, Sparrow Wallet) in plaats van eigen scripts.
  • Bewaar inwisselbare scripts (P2SH) veilig — je hebt ze nodig om geld uit te geven.

 FAQ

V: Waarom is Bitcoin Script niet Turing-compleet?

A: Turing-volledigheid staat oneindige lussen toe, wat gevaarlijk is in een blockchain waar alle knooppunten elk script moeten uitvoeren. De opzettelijke onvolledigheid van Bitcoin Script zorgt ervoor dat scripts voorspelbaar eindigen, waardoor denial-of-service-aanvallen worden voorkomen en formele verificatie van scripts mogelijk wordt.

V: Wat is een HTLC in Bitcoin Script?

A: Een Hash Time-Locked Contract (HTLC) is een script waarmee een betaling kan worden opgeëist door een geheim (preimage) te onthullen dat na hashing een vooraf bepaalde waarde oplevert, of terugbetaald kan worden aan de afzender na een bepaalde tijd. HTLC's vormen de fundamentele bouwsteen van het Lightning Network.

V: Hoe verbetert Taproot Bitcoin Script?

A: Taproot (BIP 340/341/342) introduceert Schnorr-handtekeningen die sleutelaggregatie mogelijk maken, MAST (Merklized Abstract Syntax Trees) via Tapscript waardoor complexe scripts mogelijk zijn terwijl alleen uitgevoerde takken worden weergegeven, en zorgt ervoor dat alle Taproot-uitvoer er extern identiek uitziet — wat de privacy en efficiëntie aanzienlijk verbetert.

UPay-tip: Gebruik bij het instellen van een Bitcoin-wallet Taproot-adressen (bc1p…) voor de beste combinatie van privacy, efficiëntie en toekomstige compatibiliteit. De meeste moderne wallets, zoals Sparrow en Phoenix, ondersteunen Taproot standaard.

Disclaimer: Deze inhoud is uitsluitend bedoeld voor educatieve doeleinden en vormt geen financieel of technisch advies.

UPay — Crypto encyclopedisch maken

Nieuws & Evenementen