主页 > imtoken安卓版下载安装 > 【学习笔记】比特币交易脚本
【学习笔记】比特币交易脚本
正如上一篇文章所述,比特币交易的输出可以“绑定”到收款人的公钥或公钥的哈希值(数字指纹)。
后面需要消费UTXO时,除非提供正确的证明和授权信息(签名),否则无法进行支付。
通过交易链比特币家园,任何人都可以验证交易的合法性。
本文记录了与比特币脚本相关的详细信息,讨论了用于验证交易的工具。
堆栈
栈(Stack)是计算机中一种简单的数据结构比特币家园,你可以把栈想象成一本杂志。
堆栈允许两种操作:
可以看到,栈中的元素是后进先出(LIFO,Last In First Out)。
基于堆栈执行的脚本
脚本可以理解为一系列动作的指令和顺序执行的数据。 脚本包含两种类型的元素:
例如,定义:
脚本从左到右执行,内容为
1个
2 3 加 5 等于
模拟脚本执行的过程。 左边的STACK表示栈的当前状态,EXECUTION POINTER表示脚本的当前位置。
最后,运行脚本的结果为 TRUE。
比特币的交易脚本正是基于栈结构执行的脚本,只是定义了更丰富的操作码。 详情请参考比特币操作码手册。
锁定脚本与解锁脚本
容易想到
这样在验证交易时,只需要将解锁脚本和锁定脚本连接起来,从左到右依次执行即可验证签名。
交易被视为有效。
比特币网络只接受有效和合法的交易。
这种设计允许任何人验证交易并获得确定性和一致的结果。
一般的,
Locking Script 是放置在输出上的密码学谜题,它指定了未来花费这个 UTXO 必须满足的条件,是交易输出的一部分。 锁定脚本通常包含公钥或公钥的哈希值,通常用scriptPubKey表示,也称为见证脚本(Witness Script),但锁定脚本有更广泛的可能性。
解锁脚本(Unlocking Script)解决或满足之前放置在这个UTXO上的加密问题或条件,解锁UTXO进行支付,属于交易输入的一部分。 解锁脚本通常包含数字签名,通常用scriptSig表示,但解锁脚本有更广泛的可能性。
通过组合不同的操作码,可以编写出更加多样化和复杂的脚本来满足不同的使用场景,这也是比特币被称为“可编程加密货币”的原因。
如果 UTXO 上的锁定脚本是
1个
2 3 加等于
应该提供什么样的解锁脚本来花费这个UTXO? 欢迎留言。 ??
总结
参考