Miniscript 让比特币开发者编写智能合约和明确花费条件变得更加简单,让复用变得更容易。

作者:LeftOfCenter

本周一,比特币核心开发者兼 Blockstream 联合创始人 Pieter Wuille 通过比特币开发者邮件列表公开了一门新的比特币脚本语言,根据其介绍,这种叫做「Miniscript」的编程语言能让比特币开发者编写智能合约和明确花费条件变得更加简单

完全兼容当前的比特币脚本(不用分叉),Miniscript 是一种更加简化的脚本,让代码编写、审计和使用都更加自然。

本质上,Miniscript 是一种以结构化、可组合的方式编写(某些)比特币脚本的方法,允许各种静态分析、通用签名和策略编译。该项目包括一个策略编译器,当你设置好输出花费条件和相对概率,它能够找到最经济的 Miniscript 兼容脚本。开发者不仅可以在网站上使用策略编译器,而且,在无需知道脚本策略创建来源的情况下,Miniscript 的算法支持为任何兼容 Miniscript 的脚本构建见证。

同时,Miniscript 让复用变得更容易。在软件行业中,可组合行非常重要,这意味着你可以复用之前已经写好的东西,不用浪费精力重复造轮子,在传统的比特币脚本语言中,复用脚本语言并不简单,但 Miniscript 让复用变得很容易。

Pieter Wuille 透露,他和 Andrew Poelstra 、Sanket Sanjalkar 三人一起为这个项目开发了近 1 年时间。

据 Block123.com 显示,Pieter Wuille 是 Blockstream 联合创始人兼比特币核心开发者。Pieter Wuille 在提交比特币核心代码方面,排名第二,负责过比特币的重要改进,比如 BIP 66、libsecp256k1、Segregated Witness 等。其擅长的编程语言,包括 C++、C、Perl、Java、Bash、(PG) SQL、Haskell、OCaml、PHP 系统管理等等。

五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写

Andrew Poelstra 则是一名数学家,领导 Blockstream 的研究团队。在过去的二十年里,他一直从事软件开发,有十年开源、密码学的经验。他于 2011 年底接触到比特币,加入 Greg Maxwell 与 Pieter Wuille 联合创办的 Blockstream,开发 libsecp256k1 高性能加密库。

五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写

Sanket Sanjalkar :Blockstream 前实习生。计算机科学在读,比特币极简主义者和发烧友。

五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写

原理简述

在介绍 Miniscript 之前,不得不先介绍比特币的脚本语言 Script。

比特币的脚本语言 Script,允许用户在花掉比特币之前设定某些特定的条件。比如说,将资金锁定,直到过了某个特定的时间点才能被花费。又或者,交易双方必须签名之后才能移动资金,这个概念在密码学中被称为「多重签名」。

而 Miniscript 则是建立在 Script 之上的改进方式,能够「编译」为比特币的原生语言。根据 Pieter Wuille 的说法,这种语言结构更易于人类理解,Wuille 用以下这个案例进行了解释:允许 A 随时拿走代币,然后在 [一天] 后允许 B 拿走代币。

如果用比特币脚本语言 Script 实现,是以下这样的:
五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写
在 Minscript 中,则是这样写的:
五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写

使用场景

为了让使用 Miniscript 语言编程变得更容易,Wuille 还设计了一种「策略语言」。

用这种策略语言写好输出花费条件后,可以被编译(翻译)成 Miniscript 脚本语言,因此可以编译成有效的 Script 语言,从而包含在比特币交易输出中。

这种策略语言的一个关键优势是,它可以自动编译成最优的 Miniscript 版本,具体取决于该脚本编码的具体内容。

一般来说,在 Script 脚本语言中,有多种不同的方式去写 or 和 and,而策略语言则只有唯一一种方式写 or 和 and 等, Pieter [Wuille] 编写了一个最优的编译器,可将这些逻辑运算符转换为 Miniscript,并以最优化的方式完成。

Miniscript 不仅是一个理论概念,事实上,它已经在实际的场景中开始使用了。虽然当前版本的 Miniscript 和策略编译器病不是最终版,但 Miniscript 语言已经被 Blockstream 团队用于实现比特币侧链 Liquid 的功能开发了。

Ciphrex 首席技术官 Eric Lombrozo 发布推特称,Miniscript 让比特币钱包部署脚本更容易。

「比特币原教旨主义者」Jimmy Song 表示,甚至可以用于支撑闪电网络。和以太坊语言 Solidity 不同,用 Miniscript 编写智能合约的可能性少得多,但这样反而可以减少「复杂度」和「受攻击面」。

Andrew Poelstra 指出,与原始的 Script 脚本相比,使用优化过的编译器,为 Blockstream 节省了 22 字节的空间。

Pieter Wuille 为 Miniscript 编译器提供了一个策略语言的演示版本,供任何人在 http://bitcoin.sipa.be/miniscript/ 查看。

赞扬与批评

Miniscript 发布后,获得了来自各界的好评。

机构级加密资产研究机构 Digital Asset Research 技术研究负责人 Lucas Nuzzi 评价,Miniscript 将会改变托管行业的游戏规则,因为它允许像 2FA 这样的东西本地集成,而不需要 adhoc 工程。

五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写

Hashcash 的发明者 Adam Back 引述了比特币杂志的科普文章称,Miniscript 解锁了更广泛和模块化的使用,使用通用或自定义脚本可实现可互操作的钱包共同签名和进行交互。

五分钟速览比特币新语言 Miniscript:简化比特币智能合约编写

闪电网络开发者 ZmnSCPxj 则认为,并不是所有的比特币应用都受益于此,就在发布后不久,这门新的脚本语言导致 JoinMarket、 Wasabi 钱包和 Arwen 出了问题。ZmnSCPxj 认为,对于 CoinJoin (JoinMarket,Wasabi)这类只是使用 P2WPKHSIGHASH_ALL 签名和 P2WPKH 输出的应用来说,不会受益于 Miniscript。

来源链接:bitcoinmagazine.com