APP
比特币编程便捷高效的“神器”Miniscript
2019-09-20 31909 0

比特币为世界带来了首个智能合约开发语言——Script,其能够让不同的加密货币在不同的编程环境下被使用。然而这一概念在极具颠覆性的同时,使用起来却有一定难度,特别是在较为复杂的花费环境下。无论是编写较为复杂的智能合约,还是验证合约是否正确运行其职能,都很容易出现人为错误,在关系到资产安全的情况下,对于脚本程序运行条件正确性的验证变得尤为重要.



在过去的一年中,区块链工程师Andrew Poelstra, Pieter Wuille(比特币核心开发人员、同时也是隔离见证机制SegWit创建者)和Sanket Kanjalkar开始着手改进这一点。通过将Script语言拆分简化,保留其最基本的要素和功能,优化出了新的编程语言——Miniscript——减少了原编程语言的复杂性,让所有进行比特币编程的人们获得更安全、便捷的体验。



从理论上来讲Miniscript相比Script有了更多的明确的使用条件和限制,但实际上人们可以用它完成任何Script所能做的事情。Blockstream研发主管以及Miniscript联合设计者Andrew Poelstra表示。

就在上周,Pieter Wuille在Medium发文再次介绍了Miniscript(Miniscript: 改进后的比特币脚本语言),他拿一段在比特币脚本语言中的代码为例:<A> OP_CHECKSIG OP_IFDUP OP_NOTIF OP_DUP OP_HASH160 <hash160(B)> OP_EQUALVERIFY OP_CHECKSIGVERIFY <144> OP_CSV OP_ENDIF

其中,A和B为公钥,在Miniscript中这段语言可以被精简为:or_d(c:pk(A),and_v(vc:pk_h(B),older(144)))

这段代码很清楚明了地表现了代币的解锁条件:A签名通过;或者经过 144 个区块后B签名通过。而很大一部分的Script可以以这样的方式编写。

策略语言和投入使用

尽管Miniscript也还在继续开发中,但其早期版本已经发布并可以投入使用了。

甚至为了让编写Miniscript变得更加简单,Wuille还设计了一种“策略语言”,策略语言更像是用户编写自己熟悉的语言,其最终可以被编译至Miniscript格式,进而可以被用于Script,并入比特币交易输出中。

这种策略语言的最大好处就是,它会在根据脚本编写的不同情况下,尽可能地自动地转换至最合适、高效的Miniscript格式。

在Script里你可以有非常多的编写方式表达‘或(or)’;有非常多的编写方式表达‘和(and)’,但当然其中总有一些表达方法是更高效的,而策略语言中‘或(or)’、‘和and’和其他条件的表达方式是固定的,Pieter Wuille还设计编写了一个超极简单明了的编译器(compiler),让策略语言能够以最优的方式转化至Miniscript格式。

根据其线上编译器,刚刚我们举例编码在策略语言中可以再次被转化为:or(99@pk(A),1@and(pk(B),older(144)))

这样的写法意思是:左边的 “或(or)”被采用的概率是99%(A签名通过);右边情况“和(and)”(经过144个区块后B签名通过)发生概率为1%。

值得注意的是,以上并不仅仅是一个理论概念,虽然当前的Miniscript和编译器都不是最终版本,但Blockstream内部已经正在将其使用于Liquid官方侧链软件的分支开发中了,其中一个功能被称为Dynamic Federations,其允许现有的Liquid成员对新加入的成员进行管理,或对现有在联盟控制下的比特币使用权限的脚本进行更新。Miniscript为构建和更新此类相关的Script提供了更高效快速的工具,经过现有的Miniscript编译器转化后,原有的已经经过人工精简和优化过的Liquid Script脚本被再次精简了 22 个字节,相比原有的脚本约节省了 5% 的工作量。更重要的是,其允许成员对新提出的脚本更改的主体部分(成员密钥、代币紧急被调用的条件正确性以及联盟新成员对原联盟控制资产的使用条件等)进行自动化验证,减少了成员间相互协调、对脚本进行复杂的人工安全审计的必要。

目前Miniscript的策略语言编译器可以支持C++和Rust语言的转化,为了让这项技术更易于使用,Pieter表示未来他们还需将它与其他常用软件整合集成,通过实现对相位整形二进制传输(双二进制,PSBT)和Miniscript的兼容(更新器updater和终结器finalizer等),许多PSBT签名使用者(包括硬件钱包)即使没有显式支持的情况下,也可被用于复杂的脚本中;此外,由于许多策略语言的脚本转换结果还没有被考虑到,编译器也将会被进一步优化改进。

内容来源:金色财经

版权声明:本文仅为传播消息之用,不代表币源社区立场,文章不构成投资建议。如需转载,请务必注明文章原作者以及来源,部分图片来源于网络,我们尊重版权,如有疑问敬请联系,我们将核实并删除。

我要评论
字数上限500
评论(0)