BTC Script

DeeLMind大约 4 分钟

BTC Script

1. 什么是 Bitcoin Scriptopen in new window

Bitcoin Script 是一种简单的、基于栈的编程语言,用于定义比特币交易中资金的支出条件。它的主要作用是确保比特币在满足特定条件时才能被花费。Bitcoin Script 是非图灵完备的,意在保持简单和安全。

调试器open in new window

1.1 基本结构

比特币交易分为两个脚本部分:

  • scriptPubKey(锁定脚本):它定义了如何锁定比特币,通常包含收款人的条件(如公钥哈希)。
  • scriptSig(解锁脚本):包含满足锁定脚本条件所需的信息(如签名和公钥)。

两者的执行顺序如下:

  1. 解锁脚本和锁定脚本会被组合起来,并依次执行。
  2. 交易只有在整个脚本执行结果为 True 时,才会被认为是合法的。

1.2 常见操作符

Bitcoin Script 提供了一组基于栈的操作符来处理数据:

  • OP_DUP:复制栈顶的元素。
  • OP_HASH160:对栈顶元素进行哈希处理(RIPEMD-160(SHA-256(x)))。
  • OP_EQUALVERIFY:验证栈顶两个元素是否相等,验证失败则终止脚本。
  • OP_CHECKSIG:检查签名是否有效。
  • OP_CHECKMULTISIG:验证多重签名条件。

1.3 常见的脚本类型

1.3.1 P2PKH (Pay-to-PubKey-Hash)

最常见的交易类型,要求发送方提供与收款地址对应的公钥和签名。

  • scriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  • scriptSig: <Signature> <PublicKey>

1.3.2 P2SH (Pay-to-Script-Hash)

允许复杂的锁定脚本嵌套在哈希中,由解锁脚本提供完整的赎回脚本。

  • scriptPubKey: OP_HASH160 <ScriptHash> OP_EQUAL
  • scriptSig: <RedeemScript> <Data needed by RedeemScript>

1.3.3 多重签名 (Multisig)

多重签名交易要求多个公钥的签名来解锁资金。通常用于多人钱包。

  • scriptPubKey: OP_2 <PubKey1> <PubKey2> <PubKey3> OP_3 OP_CHECKMULTISIG

2. 比特币脚本的特点

  • 基于栈的语言:所有操作基于栈的“推入”和“弹出”。
  • 非图灵完备:比特币脚本不支持循环和递归,避免了复杂的计算和潜在的 DoS 攻击。
  • 不可篡改:一旦脚本部署,交易验证规则不可更改。
  • 时间锁支持:通过 OP_CHECKLOCKTIMEVERIFY 等操作符,可以实现基于时间的支付条件。

3. BTC Script 与 ETH 智能合约的区别

特性Bitcoin ScriptEthereum 智能合约
图灵完备性否,不能执行循环和递归是,支持复杂逻辑,图灵完备
用途用于定义交易验证条件可用于金融应用、游戏、去中心化交易等
操作方式基于栈操作,验证签名、哈希等允许复杂计算和存储
复杂性简单,通常只进行签名验证复杂,支持多种金融逻辑和应用
合约升级不可修改,一经部署不可更改可以通过代理合约等技术实现合约升级
Gas 费用无明确的 Gas 机制每次操作都需消耗 Gas
安全性设计为非常安全,限制功能避免攻击复杂性较高,智能合约漏洞常见
开发语言Bitcoin ScriptSolidity、Vyper
执行环境比特币节点以太坊虚拟机 (EVM)

4. BTC Script 和智能合约的适用场景

4.1 Bitcoin Script 适用场景

  • 简单支付条件:比如,验证签名、检查多重签名等。
  • 时间锁支付:在未来的某个时间或区块后才能解锁。
  • 简单的条件支付:通过 OP_IF 实现的分支逻辑。

4.2 Ethereum 智能合约适用场景

  • 去中心化应用(DApps):如去中心化交易所、借贷协议、游戏等。
  • 复杂的金融逻辑:如稳定币、借贷协议、自动化市场做市(AMM)等。
  • NFT 应用:如数字艺术品、游戏道具等。

5. 总结

  • Bitcoin Script 的设计目标是安全、简单,它主要用于验证比特币交易的合法性,功能有限但足够处理各种支付场景。
  • Ethereum 智能合约 则是图灵完备的,能够支持复杂的去中心化应用,功能更强大,但也因此面临更多的安全挑战。

在应用场景上,Bitcoin Script 更适合支付相关的简单条件验证,而以太坊智能合约可以实现复杂的业务逻辑。

上次编辑于:
贡献者: DeeLMind