当前位置: 首页 > article >正文

Bitcoin---Script Language;脚本类型

文章目录

  • 概要
  • 脚本类型

概要

比特币客户端的软件通过执行交易中包含的脚本(Script)来验证交易的有效性,这些脚本是用类似 Forth 的脚本语言编写的。脚本的特点是易于使用、简洁和基于堆栈的执行引擎,但它是图灵不完备的。比特币的脚本语言有不到 200 条被称为操作码的指令,旨在支持许多加密函数。比特币节点执行这些脚本指令以在堆栈执行引擎中执行哈希和数字签名验证等操作。

脚本类型

比特币内的交易验证依赖于两种类型的脚本:

  • 锁定脚本(Locking Script):锁定脚本被写入交易输出中,用于指定将来使用该输出所必须满足的条件。脚本程序中的锁定脚本用“scriptPubKey”表示。
  • 解锁脚本(Unlocking Script):解锁脚本被写入交易输入中,用于满足此输入中引用的输出UTXO的锁定脚本所施加的条件。大多数情况下,解锁脚本包含由锁定脚本中地址对应的私钥生成的数字签名。脚本程序中的解锁脚本用“scriptSig”表示。

当比特币客户端软件验证交易的有效性时,每个输入中的解锁脚本都会与此输入引用的 UTXO 中的锁定脚本一起执行,以查看其是否满足支出条件。如果比特币客户端软件完整地执行了脚本,没有错误地在堆栈顶部返回错误,则交易被视为有效。交易输出的类型可以根据其锁定脚本指定的支出条件进行分类。重要交易输出的类型包括 Pay-to-PublicKeyHash (P2PKH)、Pay-to-ScriptHash (P2SH)、数据记录输出 (OP_RETURN)、Pay-to-Witness-PublicKey (P2WPK) 和 Pay-to-Taproot (P2TR)。

在后面的文章中,我们将讨论这些类型的交易输出,特别关注 P2TR,它被广泛用于实现比特币第 1 层和第 2 层协议。


http://www.kler.cn/a/411673.html

相关文章:

  • || 与 ??的区别
  • 五种创建k8s的configMap的方式及configmap使用
  • Golang面经
  • 【Nginx】核心概念与安装配置解释
  • scala模式匹配
  • C++设计模式之组合模式中适用缓存机制提高遍历与查找速度
  • Python设计模式详解之15 ——迭代器模式
  • 异常检测 | 高斯分布拟合算法异常数据检测(Matlab)
  • JavaScript面向对象
  • <项目代码>YOLOv8 航拍行人识别<目标检测>
  • 准备学习boost::fiber库
  • RabbitMQ代码实战2
  • Leetcode322.零钱兑换(HOT100)
  • 训练的decoder模型文本长度不一致,一般设置为多大合适,需要覆盖最长的文本长度么
  • Spring集成RabbitMQ
  • 【spark-spring boot】学习笔记
  • IDEA某个Impl下的引入的文件红色
  • mp4视频流推送的学习
  • IDEA插件CamelCase,快速转变命名格式
  • 《硬件架构的艺术》笔记(八):消抖技术
  • css:转换
  • SQL优化笔记--explain看执行计划--主要还是看用了哪些索引,所以你是否失效--分库分表的注意事项(未完)
  • C#中面试的常见问题008
  • 列表代码思路
  • 前端技术选型之uniapp
  • MySQL中char和varchar的区别详解