当前位置:首页 > BTC入门 > 正文内容

比特币脚本语言能做什么:不是图灵完备,但能实现复杂逻辑

newbie1个月前 (06-08)BTC入门38

比特币不是以太坊,但它有自己的"程序"。

说比特币"不能编程"跟真相差了一大截——只是编程方式完全不同。比特币用一种叫Script的脚本语言,核心任务不是建复杂应用,而是验证"这笔钱该怎么花出去"

Script把你的钱锁在规则里,想花掉就得提供能解开这道锁的"钥匙"。这些规则就是比特币脚本能做的事。

各大交易所注册链接:

欧易官网

币安官网

芝麻Gate


Script是什么:为"花钱"设计的简单语言

Script是一种基于堆栈的语言,不是给普通人写复杂逻辑的,而是让节点快速验证这笔钱到底归不归你。设计原则就两条:简单、安全。

执行顺序是后进先出——数据推入堆栈,操作码对栈顶数据操作,结果推回堆栈。操作码本质上就是一条指令,规定计算机执行什么动作。思路很直接:把数据摆上去,上指令,看结果。

Script不是图灵完备的,没法实现循环或递归。每次验证必须在有限时间内完成,不会有死循环拖垮网络。这种可预测性是比特币稳定性的保障。

你不需要自己写脚本,平时转账时背后的验证逻辑已经由脚本帮你完成了。

五种标准交易类型

交易类型全称应用场景地址特征
P2PKHPay to Public Key Hash最常用单地址转账1开头
P2SHPay to Script Hash包装复杂脚本(多签、时间锁)3开头
P2WPKHPay to Witness Public Key HashSegWit单地址交易bc1q开头
P2WSHPay to Witness Script HashSegWit版P2SHbc1q开头
P2TRPay to TaprootTaproot升级后,隐私最佳bc1p开头

操作码组合:能实现哪些交易逻辑

脚本功能与交易类型

常用操作码分几类:基础操作(OP_0OP_16)、堆栈操作(OP_DUP)、算术逻辑(OP_ADD)、加密哈希(OP_HASH160OP_SHA256)、验证签名(OP_CHECKSIGOP_CHECKMULTISIG)、条件控制(OP_IFOP_ELSE)。

这些基本组件组合起来,能搞出不少高级功能:

多重签名(Multisig)

多个私钥同时签名才能花钱。比如3-of-5——5个人里3个同意,资金才能动。公司金库、联合托管用得最多。核心操作码是OP_CHECKMULTISIG

哈希时间锁合约(HTLC)

典型的条件支付:你能揭晓一个哈希值的原始数据,就能在特定时间窗口内认领这笔钱,超时退回原持有人。闪电网络里的资产交换,就是用HTLC撑起来的。

时间锁(Timelock)

指定时间点或区块高度后资金才能花。继承人设定未来某天才能解锁资产,或者把钱锁到退休后才能动。CLTV和CSV是常见实现方式。

离散对数合约(DLCs)

接入预言机,根据链外现实数据(市场价格、比赛结果)触发执行。可用于构建预测市场。


交易结构:脚本放在哪,怎么执行

比特币交易由锁定脚本解锁脚本两部分组成。前者锁资金,后者提供钥匙。验证时两段脚本拼接执行。

基础验证如P2PKH,高级脚本通过P2SH包装后链上只暴露哈希值,实际逻辑延后暴露。闪电网络通道建立依赖P2SH包装HTLC合约。Taproot引入的P2TR让复杂脚本的执行条件可以隐藏,只在真正用到时才暴露逻辑,隐私和效率都提上去了。


二层才是脚本的真正舞台

二层网络扩展示意

比特币可编程性的伸展空间在二层网络。主链只保最终资金安全,具体业务逻辑交给Layer 2。

闪电网络:通过HTLC构建数千个链下支付通道,高频小额交易不写主链,只在最终结算时回写。二层跑得流畅,主链依旧简洁。

RGB、Taproot Assets:Ordinals和Runes把NFT和代币引入比特币,利用隔离见证或taproot字段存数据,扩展了应用场景。

侧链(Liquid、Rootstock等):BTC通过桥锁到侧链,在那里跑更复杂的DeFi,最后回主网。Script的安全性负责桥接环节的最后保障。

在二层跑功能,主链只负责记账和最终清算。


Script vs 以太坊Solidity

对比维度比特币Script以太坊Solidity
语言范式基于堆栈高级面向对象
图灵完备否,有意限制
状态存储无全局状态,UTXO全局状态存储
执行环境交易验证时触发EVM虚拟机
主要用途锁定/解锁资金,验证条件构建复杂交互,全功能DApp
安全哲学保守优先,防攻击灵活优先,需审计

Script"不能"做的事

因为故意设计成非图灵完备,很多事它不参与:

  • 不能写复杂循环:没有递归,防止DoS攻击和服务过载

  • 没有全局共享状态:无持久化账本,合约无法记录全局进展,攻击面窄

  • 不支持复杂交互式DApp:支付验证层不支持多轮链上交互,复杂场景只能推到Layer 2

这种"减法设计"恰好是比特币高安全性的底气。


一张表看清Script能做什么

功能层级具体能力典型应用
基础交易验证P2PKH,标准单签日常收付款
自定义解锁条件多签、时间锁、哈希锁、条件分支托管钱包、继承计划、闪电网络、原子交换
高级脚本结构P2SH封装、Taproot多路径合约隐藏降低链上成本,提高隐私和效率
扩展资产发行Ordinals NFT、Runes代币数字艺术品、项目代币
二层智能合约闪电网络、DLC预言机、侧链/桥接链下高频交易、预测市场、跨链DeFi

未来趋势:Covenants可在脚本中限定交易花费方向;BitVM、Simplicity试图在不牺牲安全的前提下补齐高阶能力;sCrypt这类基于TypeScript的嵌入式语言,让开发更接近传统编程体验。


本文仅供参考,不构成投资建议。各版本Bitcoin Core对操作码支持有差异,部分已禁用,请以官方文档为准。


相关文章

比特币的创世区块里写了什么:那个被锁在时间胶囊里的265个字符,远不止一条新闻标题

比特币的创世区块里写了什么:那个被锁在时间胶囊里的265个字符,远不止一条新闻标题

打开任何一个比特币区块浏览器,把高度调到0,你会看到一个和其他区块长得差不多的数据块。哈希以一连串的0开头,交易只有一笔,时间戳定格在2009年1月4日凌晨。大多数人听说过它里面嵌着一行《泰晤士报》的...

比特币的最小单位是什么?

比特币的最小单位是什么?

比特币不是按"个"算的,是论"聪"的。很多人对比特币的第一印象是贵,一个币几万美元,买不起整币就成了心理门槛。但实际上比特币在链上从来不以"个&quo...

比特币交易确认时间多久?一次说清楚

比特币交易确认时间多久?一次说清楚

2026年5月23日,比特币网络的平均交易确认时间是47.75分钟。意思是说在这一天发起的普通交易,从按下发送键到获得第一次确认,平均要等将近50分钟。10分钟出块一次,理论上最慢一个周期就能确认,实...

比特币的数字签名是如何工作的?从"签字画押"到全网验证

比特币的数字签名是如何工作的?从"签字画押"到全网验证

现实中签支票签合同,你签下的名字代表"我同意这笔交易,我是本人"。但比特币这个没有银行、没有中间人的系统里,问题来了——谁能证明一笔转账真的是你发起的?答案不靠任何第三方,靠的是密...

比特币的 OP_RETURN 是什么?

比特币的 OP_RETURN 是什么?

比特币诞生之初只有一个使命:做一套点对点的电子现金系统,忠实记录谁向谁转了多少币。但后来开发者们发现可以在转账时塞点"私货",一个新问题就摆在眼前——能不能在不破坏记账功能的前提下...

比特币的“奖励减半”代码在哪?

比特币的“奖励减半”代码在哪?

比特币的"奖励减半"不是靠董事会投票决定的,也不是某个服务器上的开关一拨就完事。它就写在一段公开的代码里,任何人都可以去GitHub上看。这篇文章不绕弯子,直接带你找到这段代码的准...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。