校验与脚本
交易校验是基于对脚本语言的执行结果的判断。
交易校验引擎依赖于两种类型的脚本:
* unlocking script
* locking script
当一个交易被校验有效时,每个输入的unlocking script会与对应的locking script一起被执行,以判断他们是否满足给定的要求(花费条件)。
script是用来使可编程货币的校验生效的。
未花费的交易会永远记录在链上,因此它是不可变的,校验失败的交易不会影响已有的有效的交易。只有有效的校验会使得输出的结果被认为是已经“花费“了,且把对应的原UTXO(unspent transaction output)从UTXO set总移除。
交易脚本
交易脚本语言包含许多操作符,但没有循环或复杂的流程控制功能(仅有条件判断)。每一个交易会被链上所有的full node校验。
交易脚本语言是无状态的,在脚本执行前不会有前置状态,在执行后也不会保存结果状态。因此,脚本执行所需要的信息全都包含在脚本自身。同一脚本对于任何系统执行效果都是可以预知的。
locking script是实际上一个放置在输出的可花费条件:它指定欲花费通货需要满足的条件。也会称为scriptPubKey,因为它通常包含一个公钥或地址(公钥的hash)。
unlocking script是用来满足locking script种指定的要求的,unlocking script的结果会作为locking script的输入。
unclocking script是交易输入的一部分。通常他们会包含一个由私钥