比特币为全世界带来了首个智能合约编程语言——Script,其能够让不同的加密货币在不同的编程环境下被使用。然而这一概念在极具颠覆性的同时,使用起来却有一定难度,特别是在较为复杂的花费环境下。无论是编写较为复杂的智能合约,还是验证合约是否正确运行其职能,都很容易出现人为错误,在关系到资产安全的情况下,对于脚本程序运行条件正确性的验证变得尤为重要.
在过去的一年中,区块链工程师AndrewPoelstra,PieterWuille和SanketKanjalkar开始着手改进这一点。通过将Script语言拆分简化,保留其最基本的要素和功能,优化出了“新”的编程语言——“Miniscript”——减少了原编程语言的复杂性,让所有进行比特币编程的人们获得更安全、便捷的体验。
“从理论上来讲Miniscript相比Script有了更多的明确的使用条件和限制,但实际上人们可以用它完成任何Script所能做的事情。”Blockstream研发主管以及Miniscript联合设计者AndrewPoelstra表示。
SCRIPT
我们首先来简单了解一下Script语言。
每一笔比特币交易都包含两个主要部分:输入(input)和输出(output),二者都有自己的代码,输入(inputs)“解锁”了代币,而输出(outputs)将代币再次“锁住”,并规定了下一次被解锁再次进行交易输入的条件,在这些条件中通常包括一个有效的加密签名,更多的可能条件例如:该币必须经过一定的时间后,或必须含有特殊的密码才能被使用或花费。
CoinShares:以太坊有望于加密货币市场悲观行情中脱颖而出:金色财经报道,根据CoinShares在2022年12月29日至2023年1月23日期间进行的一项调查显示,尽管比特币自年初至今的表现优于以太币,但有60%接受调查的投资者认为以太坊具有最引人注目的增长前景,比例高于去年10月的调查(40%)。另一方面,约30%的受访者认为比特币是未来最具吸引力的加密货币,低于之前接受调查有相同观点的受访者比例(近40%)。
上周,CoinShares指出,允许投资者押注较低比特币价格的投资产品的单周资金流入量创下自去年7月以来的最高点,而押注较高以太坊价格的投资产品则出现了稳定的资金流入量。这种动态凸显出比特币相对于以太币的市场悲观情绪。[2023/1/30 11:35:47]
交易中的这段代码就是用Script创建的,Script是专门为比特币设计的编程语言。其灵感来自于Forth,一种20世纪60年代发明的编程语言,最初设计用来操作射电望远镜。不过,Script在经过调整之后更加契合比特币。
例如,Script中没有使“循环”的操作码(指令):该语言不支持无限次执行相同的计算。因为在比特币中,没有必要无限次地执行相同的计算,因为比特币的节点们实际上并不通过计算进行交易——而是验证交易。(关于为什么会出现这种情况,Blockstream工程师罗素·奥康纳(RussellO'Connor)在三年前就发布了文章:对比特币和以太坊的脚本语言和理念进行比较,其中进行了较为详细的解释。
Adrienne Harris正式担任纽约州金融服务管理局负责人:金色财经报道,周二,纽约州参议院确认前联邦官员兼教授Adrienne Harris将担任纽约州金融服务管理局(NYDFS)负责人。自2021 年 8 月被提名以来,Harris一直担任 NYDFS 的代理主管。Harris曾是奥巴马白宫经济政策特别助理,最近还担任数字美元基金会的董事会成员。
周一在州参议院财政委员会举行的提名听证会上,Harris表示,希望加强监管机构的 BitLicense 团队,以清理积压的纽约标志性加密货币许可证申请。(Coindesk)[2022/1/26 9:13:33]
同时Script并没有被“类化”,这意味着计算的结果可以以不同的方式被注释和使用,举个很简单的例子,一个有效签名的结果可能是“true”,而“true”可以被注释转化等于数字“1”进而用于数学程式中,true=1,而truetrue则可以被看成11=2,意味着如果交易最少需要两个有效签名进行验证,则其满足了这个条件。
这其实为我们引入了Script语言中最重要的一个属性——“难以推理(参考PreethiKasireddy关于JavaScript提出的文章当我们说一段代码”易于推理”到底是什么意思?)”这基本意味着Script的计算结果能够以多种方式被注释转化,即使一个签名是无效的,在Script中其仍可以出于某些原因将其编写为有效。
“在BitcoinScript中的确有一些运算码在运行时闹出荒唐事,例如,将一个签名解释为真/假值,在此之后将该布尔值转化为数字后编入堆栈索引中,再根据这一数值将堆栈重新排列,然而在实际运行过程中其具体规则是非常荒唐可笑的。”Poelstra解释道。
Harvest发推督促MIC-USDT和MIS-USDT用户及时迁移至V2:3月2日,Harvest Finance官方发推提醒称,Harvest金库的MIC-USDT和MIS-USDT储户需及时取出资产并立即迁移到v2。官方称,由于V2默认有blocks智能合约,因此官方无法为用户支付Gas费,并自动迁移。[2021/3/2 18:06:52]
这样一来在通过Script处理一些问题时会很棘手,尤其是在花费代币的要求变得更加复杂时,一笔交易的发起者的代码中可能会无意中包含了允许代币在其他条件下被使用的信息,反过来也就是说,交易的收款方有可能因为没有注意到这样的“漏洞”而被发现这样信息的攻击者攻击受到损失。
总结来说,当前BitcoinScript的最大问题是在对较为复杂的程序进行验证时比较困难(容易出错).
问题的具体举例
关于以上的问题如何限制了Script的实用性,下面我们举一个具体一些的例子。
BlockstreamGreenWallet钱包有一个标准的“共同签名”设置,钱包用户掌控2个密钥中的一个,Blockstream掌控另一个,这样一来钱包中的数字资产能够通过两种方式被使用。用户想要使用资产:用户签署了该笔交易并请求Blockstream一并签署,通常Blockstream都会通过执行;但可能发生的一种情况是:Blockstream这一端出现了问题——如公司跑路或者丢失了密钥,或出于其他原因无法签署。在这样的情况下,用户需要使用一个备用方案来完成这笔交易:如在锁定时间过后,用户可以在预定时间过后完成该笔交易。
动态 | 币安宣布下一个Launchpad上线项目为Harmony:币安宣布下一个Launchpad上线项目为Harmony,将于5月15日宣布代币销售细节和更新的摇号抽签安排。据Block123.com信息,Harmony是基于分片技术的新一代高性能公链,已于2月份发布测试网络。[2019/5/12]
这样的解决方案似乎可行,但仍会受到限制,比如用户将无法再使用任何其他比特币的潜在智能合约,或在其终端增加更多灵活可扩展的设置。
“现在Green有一个适用于所有客户的预备脚本,基本上就是一个简单的多重签名,但是我们并不真正在乎脚本讲了什么,我们在乎的是,在规定时间内,交易代币是否有可能在不需要我们签名的情况下被交易?如果用户提出一些与常人不同的要求,但只要原则上这些要求是我们关心和在乎的,我们就应该满足和支持。”
举个例子,一些用户以防有什么意外发生,希望让他的另一半或家人在一年后能够继承使用这笔资产;或以用户是一家公司为例,其希望创建一个使用机制,例如需要三分之二或更多的董事会成员权限才能共同使用资产。
当然从技术上来讲,在比特币脚本语言中以上的情况都是可以被实现的,但这将需要用户设计一个自定义程序,而Blockstream也需要确保参与其中。
这样就太复杂了,“如果用户任意提供给我们一个脚本语言,我们几乎无法确定其是否满足了我们所关心在乎的那个运行条件,因为所有脚本行为的组合非常复杂,举个例子,假如用户提供的一个脚本程序看上去需要一个签名(signature)进行认证,但我们还需要考虑,如果用户提供了一个non-signiture会发生什么情况?其是否会触发其他条件使资产能够被调用?等等。”Poelstra解释道。
金色财经现场报道 ShareX创始人李刚强:风口中出现大量巨婴型项目:金色财经前方记者实时报道,第三届中国股权转让论坛暨ShareX平台首批入驻项目签约仪式于4月13日在北京举办,ShareX创始人李刚强在致辞中表示,据基金业协会数据统计,截至2017年底,国内私募创业投资,股权投资机构超过1.3万家,8.7万亿存量管理规模,13.7万亿从业者,但繁华背后问题重重,风口之下出现众多巨婴型项目,很多项目后期的估值无法匹配其融资时的估值。[2018/4/13]
Miniscript
在过去的一年中,Poelstra、Blockstream核心技术工程师PieterWuille和SanketKanjalkar设计了Miniscript。
简而言之,Miniscript是一个“删减版”的Script:从Script工具包中整合选择了更加易用和易于被验证的工具,而除去极少数基本无人使用的工具外,几乎所有Script能干的事Miniscript也能干。本质上来讲,一行Miniscript的代码仍可以看作等于一行有效地Script代码,只不过Miniscript通过防止代码出现意料之外结果而尽可能的减少Bug的出现。
就拿我们上面提到过的问题来说,用户可以利用Miniscript更加容易地设计出一个便于Blockstream验证其是否满足运行条件的设置,详细来讲,Blockstream能够更加清晰地明白用户资产的被使用条件,不管用户在其自定义程序端还夹杂了任何其他附加条件,如额外的时间要求、多重签名等,说白了,使用了Miniscript,在Blockstream端来看可以免去那些“花里胡哨”的,可能影响验证条件或“偷换概念”的东西,更干净利落。
Miniscript语言非常直接且可预测,其程序总能导向一个决策树,将程序很清楚的呈现出来,易于推理。
就在上周,PieterWuille在Medium发文再次介绍了Miniscript,他拿一段在比特币脚本语言中的代码为例:
OP_CHECKSIGOP_IFDUPOP_NOTIFOP_DUPOP_HASH160OP_EQUALVERIFYOP_CHECKSIGVERIFY<144>OP_CSVOP_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里你可以有非常多的编写方式表达‘或’;有非常多的编写方式表达‘和’,但当然其中总有一些表达方法是更高效的,而策略语言中‘或’、‘和and’和其他条件的表达方式是固定的,PieterWuille还设计编写了一个超极简单明了的编译器(compiler),让策略语言能够以最优的方式转化至Miniscript格式。”
根据其线上编译器,刚刚我们举例编码在策略语言中可以再次被转化为:
or((A),(pk(B),older(144)))
这样的写法意思是:左边的“或(or)”被采用的概率是99%;右边情况“和(and)”发生概率为1%。
值得注意的是,以上并不仅仅是一个理论概念,虽然当前的Miniscript和编译器(Compiler)都不是最终版本,但Blockstream内部已经正在将其使用于Liquid官方侧链软件的分支开发中了,其中一个功能被称为DynamicFederations,其允许现有的Liquid成员对新加入的成员进行管理,或对现有在联盟控制下的比特币使用权限的脚本进行更新。Miniscript为构建和更新此类相关的Script提供了更高效快速的工具,经过现有的Miniscript编译器转化后,原有的已经经过人工精简和优化过的LiquidScript脚本被再次精简了22个字节,相比原有的脚本约节省了5%的工作量。更重要的是,其允许成员对新提出的脚本更改的主体部分进行自动化验证,减少了成员间相互协调、对脚本进行复杂的人工安全审计的必要。
目前Miniscript的策略语言编译器可以支持C和Rust语言的转化,为了让这项技术更易于使用,Pieter表示未来他们还需将它与其他常用软件整合集成,通过实现对相位整形二进制传输和Miniscript的兼容,许多PSBT签名使用者即使没有显式支持的情况下,也可被用于复杂的脚本中;此外,由于许多策略语言的脚本转换结果还没有被考虑到,编译器也将会被进一步优化改进。
参考资料及原文:
Miniscript:HowBlockstreamEngineersAreMakingBitcoinProgrammingEasy(er)By:AaronVanWirdum
ComparisonbetweenBitcoinandEthereum'sphilosophyandscriptinglanguage(&OP_EVAL)byPurse.io'sCTO,JJ
Whatdoesitmeanwhencodeis“easytoreasonabout”?By:PreethiKasireddy
Miniscript:StreamlinedBitcoinScriptingBy:PieterWuille&AndrewPoelstra
活动时间:9月13日16:00:00-9月20日23:59:59活动奖励:1,000,000CUST活动规则:1活动期间.
1900/1/1 0:00:00前言:当前全世界的资产市场有多大?比特币和加密货币在整个世界货币和市场中占据什么样的比例?感觉就像是九牛一毛,理解了这一点,可以知道比特币和加密货币现在还多幼稚,多早期了.
1900/1/1 0:00:00“我们之所以需要区块链,是因为对于中心化系统最大的担忧不是作恶代价的大小,而恰恰是作恶成本无法估计、无法量化。作恶的回报并不限于系统内,还可以在系统外.
1900/1/1 0:00:009月12日,清华大学五道口金融学院常务副院长、清华大学金融科技研究院院长廖理发文《金融科技的未来在哪?》.
1900/1/1 0:00:00本文观点仅代表个人,仅限交流学习,所有内容不构成任何投资建议。想及时了解更多行情信息,请添加官方微信进群:jiamibaoluo。盈利几时有,持币问苍天;不知人间币市,解套在何年.
1900/1/1 0:00:00尊敬的币权BQB用户:BQB上线BTM,并开放BTM/USDT具体时间如下:BTM交易开启时间:9月10日16:00比原链旨在探索不同类型资产与区块链的结合.
1900/1/1 0:00:00