比特币脚本语言能做什么:不是图灵完备,但能实现复杂逻辑
比特币不是以太坊,但它有自己的"程序"。
说比特币"不能编程"跟真相差了一大截——只是编程方式完全不同。比特币用一种叫Script的脚本语言,核心任务不是建复杂应用,而是验证"这笔钱该怎么花出去"。
Script把你的钱锁在规则里,想花掉就得提供能解开这道锁的"钥匙"。这些规则就是比特币脚本能做的事。
各大交易所注册链接:
Script是什么:为"花钱"设计的简单语言
Script是一种基于堆栈的语言,不是给普通人写复杂逻辑的,而是让节点快速验证这笔钱到底归不归你。设计原则就两条:简单、安全。
执行顺序是后进先出——数据推入堆栈,操作码对栈顶数据操作,结果推回堆栈。操作码本质上就是一条指令,规定计算机执行什么动作。思路很直接:把数据摆上去,上指令,看结果。
Script不是图灵完备的,没法实现循环或递归。每次验证必须在有限时间内完成,不会有死循环拖垮网络。这种可预测性是比特币稳定性的保障。
你不需要自己写脚本,平时转账时背后的验证逻辑已经由脚本帮你完成了。
五种标准交易类型
| 交易类型 | 全称 | 应用场景 | 地址特征 |
|---|---|---|---|
| P2PKH | Pay to Public Key Hash | 最常用单地址转账 | 1开头 |
| P2SH | Pay to Script Hash | 包装复杂脚本(多签、时间锁) | 3开头 |
| P2WPKH | Pay to Witness Public Key Hash | SegWit单地址交易 | bc1q开头 |
| P2WSH | Pay to Witness Script Hash | SegWit版P2SH | bc1q开头 |
| P2TR | Pay to Taproot | Taproot升级后,隐私最佳 | bc1p开头 |
操作码组合:能实现哪些交易逻辑

常用操作码分几类:基础操作(OP_0到OP_16)、堆栈操作(OP_DUP)、算术逻辑(OP_ADD)、加密哈希(OP_HASH160、OP_SHA256)、验证签名(OP_CHECKSIG、OP_CHECKMULTISIG)、条件控制(OP_IF、OP_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对操作码支持有差异,部分已禁用,请以官方文档为准。





