每个输出都带有一个小的程序,即其锁定脚本。要花费它,输入会提供一个解锁部分。节点运行两者:如果程序以真结束,则花费有效。
堆栈机
脚本在堆栈上运行:项目被推入,操作从顶部取出项目并推入结果。经典的旧版支付读取:OP_DUP OP_HASH160 <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG。用通俗的话说:复制提供的公钥,对其进行哈希处理,检查它是否与输出中的公钥匹配,然后对其进行签名检查。
故意限制
脚本没有循环,也没有通用内存。每个程序都会快速结束,并且每个节点都可以预测检查它的成本。这使得它比某些其他区块链的语言表达能力差得多,也更容易理解。
- 多重签名:在一组密钥中要求几个签名。
- 哈希锁:要求揭示一个已知其哈希值的秘密,就像闪电网络所做的那样。
- 时间锁:禁止在某个日期或区块高度之前花费。