月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Polygon > 正文

MIN:比特币脚本迎来重要升级 Pieter Wuille正式公布Miniscript项目_SCR

作者:

时间:1900/1/1 0:00:00

比特币脚本的功能虽然有限,但它的重要性不言而喻,而其在今日迎来了重要升级,Bitcoincore协议维护者PieterWuille正式公布了Miniscript技术项目。

PieterWuille介绍道:

“简而言之,它是一种以结构化、可组合的方式编写比特币脚本的方法,其允许各种静态分析、通用签名和策略编写。想象一下,一家公司想用2-of-3多重签名策略来保护他们的冷存储资金。问题是,其中一位高管有一个自己的2FA双因子验证/多重签名/timelock设置。为什么整个设置不能成为多重签名“参与者”之一?

当前很多工作都集中在对区块链本身功能的扩展上,以支持更复杂的应用,但我觉得我们忘记了,以可访问、可组合、可分析的方式使用这些功能,在今天基本上是不可能的。

我希望Miniscript和PSBT这样的东西,可以减少软件之间的一些障碍。理想情况下,执行人员的2FA设置可以完美地与冷存储设置交互,计算必要的组合脚本,并且仍然能够签名。

该项目包括一个策略编译器,你可以知道在什么条件下输出应该是可使用的,及其相对概率是什么,它将为其找到最经济的Miniscript兼容脚本。

为了这个项目,我们已讨论了很长一段时间。直至我们对比特币共识及标准化规则进行了大量测试,我才对发布内容感到满意,而当下便是公布之时。

而从开始至今,我们重写整个设计近3次,AndrewPoelstra和sanket1729在持续讨论额外的可能性、问题及分析技术。

正如大家所知的,我对命名这件事并不擅长,所以我需要指出,这个项目与Minisketch(https://github.com/sipa/minisketch)完全无关,Minisketch库是GregMaxwell、tomatodread和我一起编写的,其目的是支持高效的基于集调节的交易中继(Erlay)。

它也和我们在Taproot上的研究工作无关。当然,对Miniscript的研究确实教会了我们一些关于脚本的知识,这些知识可以为将来对脚本的改进提供设计依据,并且Miniscript可以根据需要进行扩展。

矿企Stronghold Digital Mining拟通过1000万美元私募股权融资购买比特币矿机:金色财经报道,比特币矿企 Stronghold Digital Mining 宣布,已与机构投资者和公司董事长兼首席执行官 Greg Beard 签订证券购买协议,向机构投资者出售 900 万股 A 类普通股和股票等价物,以及向 Beard 赠送 100 万股 A 类普通股,每种情况下的价格为每股等值 1 美元。公司还将向购买者发行购买合计 1000 万股 A 类普通股的认股权证,初始行使价为每股 1.1 美元(可调整),此类认股权证在发行后六个月内不得行使。在扣除发行费用之前,私募的总收益预计为 1000 万美元,预计将用于收购更多的比特币矿机。私募预计将于 2023 年 4 月 21 日结束。

此前报道,2 月 3 日,Stronghold Digital Mining 提交招股说明书,计划出售 1000 万股 A 类股以提高现金储备。[2023/4/21 14:19:06]

如果需要的话,我会在BitcoinCore中加入这部分内容,但理想情况下,它会被包含在很多钱包技术中。AndrewPoelstra和sanket1729一直在为它开发一个Rust库:

https://github.com/apoelstra/rust-miniscript/

以下内容,是Miniscript项目技术文档的译文:

Miniscript介绍

Miniscript是一种以结构化方式编写比特币脚本子集,并支持分析、合成、通用签名等功能的语言。

比特币脚本是一种独特的基于栈的语言,其具有很多边界用例,旨在实现由签名、哈希锁和时间锁的各种组合组成的支出条件。尽管比特币脚本的功能有限,但其仍然是非常重要的:

考虑一个支出条件的组合,找到最经济的脚本来实现它;

给定两个脚本,构建一个实现其支出条件组合的脚本;

给定一个脚本,找出其允许的支出条件;

上周比特币基金流出9800万美元:金色财经报道,上周,随着比特币价格大跌,投资者从加密货币基金中撤出了约5000万美元,这是今年的首次净赎回。根据CoinShares周一的报告,在截至5月14日的七天内,比特币基金的资金流出总额达到创纪录的9800万美元,而专注于其他数字资产的投资产品继续吸引新资金。CoinShares表示,投资者已经开始从比特币转向多元化的投资产品。投资者对以以太坊为主的投资产品的需求持续上升,上周总计为2700万美元。[2021/5/18 22:12:51]

给定一个脚本并访问足够的私钥集,为它构造一个通用的令人满意的witness;

给定一个脚本,能够预测花费一个输出的成本;

给定一个脚本,了解特定的资源限制在花费时是否会受到影响;

Miniscript作为脚本的代表,使得这些操作成为可能,其有一个允许合成的结构。它非常易于静态分析各种属性。它可成为支出策略编制者的目标。最后,兼容脚本可以很容易地转换为Miniscript格式,从而避免了对支持它的签名设备等附加元数据的需要。

目前,Miniscript实际上只为P2WSH和P2SH-P2WSH嵌入式脚本设计。它的大多数构造在p2sh中也可以正常工作,但一些安全属性依赖于隔离见证特定规则。此外,已实现的策略编译器假定了一个隔离见证特定成本模型。

Miniscript由BlockstreamResearch的PieterWuille、AndrewPoelstra和SanketKanjalkar共同设计和实现,但也有其他人参与讨论。

链接:

1、C编译器:https://github.com/sipa/miniscript

2、BitcoinCore兼容C实现:https://github.com/sipa/miniscript/tree/master/bitcoin/script

3、Rust-miniscript实现:https://github.com/apoelstra/rust-miniscript

USDT占比特币交易比重约为53.06%:金色财经消息,据cryptocompare数据显示,目前比特币交易情况按照交易币种排名,排名名第一的是USDT,占比为53.06%;排名第二的是美元,占比为15.57%;排名第三的是日元,占比为6.72%;排名第四的是BUSD,占比为6.11%;排名五的是欧元,占比为4.46%[2021/2/22 17:38:12]

4、在斯坦福区块链活动上谈论的Miniscript内容:http://diyhpl.us/wiki/transcripts/stanford-blockchain-conference/2019/miniscript/

MiniScript编译器策略

在这里,你可以看到Miniscript编译器的演示。根据下面的说明编写支出策略,并观察它如何影响构造的Miniscript。

策略

and(pk(A),or(pk(B),or((C),older(1000))))

支持策略:

pk(NAME):需要名为NAME的公钥进行签名,名称可以是最多16个字符的任何字符串;

after(NUM),older(NUM):要求nlocktime/nsequence值至少为NUM,NUM不能为0;

sha256(HEX),hash256(HEX):要求显示64个字符HEX的预映射,特殊值H可用作HEX;

ripemd160(HEX),hash160(HEX):要求显示40个字符HEX的预映射,特殊值H可用作HEX;

and(POL,POL):要求满足这两个子策略;

or(]POL,]POL):要求满足其中一个子策略。数字N表示每个子表达式的相对概率;

thresh(NUM,POL,POL,...):要求满足以下子策略中的NUM;

编译

Miniscript输出:

比特币成为按市值计算全球第二十大资产:金色财经报道,根据AssetDash的数据,比特币市值已接近3000亿美元,成为目前全球市值排名第二十的资产。目前,比特币超越了美国家居建材零售商家得宝(Home Depot)、Verizon和贝宝(PayPal)。[2020/11/13 14:10:16]

and_v(or_c(c:pk(B),or_c(c:pk(C),v:older(1000))),c:pk(A))

支出成本分析

脚本:114WU

输入Input:142.900000WU

总计:256.900000WU

生成的脚本结构

OP_CHECKSIGOP_NOTIFOP_CHECKSIGOP_NOTIFOP_CHECKSEQUENCEVERIFYOP_VERIFYOP_ENDIFOP_ENDIFOP_CHECKSIG

分析Miniscript

在这里,你可以分析Miniscript表达式的结构等等。

Miniscript

and_v(or_c(c:pk(B),or_c(c:pk(C),v:older(1000))),c:pk(A))

提供类型为“B”的良好miniscript表达式。

分析:

大小:114字节脚本

生成的脚本结构

OP_CHECKSIGOP_NOTIFOP_CHECKSIGOP_NOTIFOP_CHECKSIGOP_NOTIFOP_CHECKSEQUENCEVERIFYOP_VERIFYOP_ENDIFOP_ENDIFOP_CHECKSIG

Miniscriptreference

翻译表

此表显示了所有Miniscript片段及其相关语义和比特币脚本。不改变其子表达式语义的片段称为wrapper。普通片段使用“fragment”表示法,而wrapper使用前缀编写,前缀由冒号与其他片段分开。冒号将在后续wrapper之间删除;例如vc:pk(key)是应用于给定密钥的pk片段的c:包装类的v:包装类;

动态 | StarkWare宣布推出闪电网络替代品StarkPay 暂不适用于比特币:据The Block消息,隐私区块链公司StarkWare宣布推出闪电网络替代支付方案StarkPay。StarkWare宣称StarkPay支付处理器和验证器是脱链的,生成对批量支付有效性的证明,验证人核对数字签名,验证付款人有充足资金后,交易才会被链上发送给验证人。但由于目前比特币形式无法支持在链上运行的高效STARK验证器,StarkPay功能暂无法适用于比特币网络。2018年10月消息,StarkWare获Coinbase风险投资公司投资。[2019/3/6]

含义Miniscript片段比特币脚本false00true11check(key)pk(key)pk_h(key)DUPHASH160EQUALVERFIFY

nSequence≥n(andcompatible)older(n)CHECKSEQUENCEVERIFYnLockTime≥n(andcompatilbe)after(n)CHECKLOCKTIMEVERIFYlen(x)=32andSHA256(x)=hsha256(h)SIZE<32>EQUALVERIFYSHA256EQUAL

len(x)=32andHASH256(x)=hhash256(h)SIZE<32>EQUALVERIFYHASH256EQUAL

len(x)=32andRIPEMD160(x)=hripemd160(h)SIZE<32>EQUALVERIFYRIPEMD160EQUAL

len(x)=32andHASH160(x)=hhash160(h)SIZE<32>EQUALVERIFYHASH160EQUAL

(XandY)orZandor(X,Y,Z)NOTIFELSEENDIFXandYand_v(X,Y)and_b(X,Y)BOOLANDand_n(X,Y)=andor(X,Y,0)NOTIF0ELSEENDIFXorZor_b(X,Z)BOOLORor_c(X,Z)NOTIFENDIFor_d(X,Z)IFDUPNOTIFENDIFor_i(X,Z)IFELSEENDIFX1...Xn=kthresh(k,X1,...,Xn)ADD...ADD...EQUALcheck(key1)...check(keyn)=kthresh_m(k,key1,...,keyn)...CHECKMULTISIGX(identities)a:XTOALTSTACKFROMALTSTACKs:XSWAPc:XCHECKSIGt:X=and_v(X,1)1d:XDUPIFENDIFv:XVERIFY(orVERIFYversionoflastopcodein

)

j:XSIZE0NOTEQUALIFENDIFn:X0NOTEQUALl:X=or_i(0,X)IF0ELSEENDIFu:X=or_i(X,0)IFELSE0ENDIFand_n片段和t:、l:以及u:包装类对于其他Miniscript而言是语法糖,如上表所示。在下面的内容中,它们将不再被包括在内,因为它们的属性可通过查看它们的扩展来派生。

正确性属性

并非每个Miniscript表达式都可以彼此组合。有些通过在栈中放入“true”或“false”值来返回结果,另一些只能中止或继续。有些需要使用完全已知数量的参数的子表达式,而另一些则需要具有非零顶部栈元素的子表达式来满足。为了对所有这些属性进行建模,我们为Miniscript定义了一个正确性类型系统。

每个ministcript表达式都有四种基本类型之一:

"B"基本表达式:这些表达式从栈顶获取输入。当满足时,它们将最多4字节的非零值推送到栈上。当不满足时,它们将一个精确的0推送到栈上。此类型用于大多数表达式,并且是顶级表达式所必需的。示例是older(n)=CHECKSEQUENCEVERIFY;

"V"验证表达式:像"B"表达式一样,它们从栈顶获取输入。然而一旦满足,它们就可继续工作而无需推送任何东西。它们在不中止的情况下,是无法不满足的。一个"V"表达式可使用"B"表达式上的v:wrapper获得,或者通过使用and_v,or_i,or_c,或andor组合其他"V"表达式获得。例子有vc:pk(key)=CHECKSIGVERIFY;

"K"Key表达式:它们也同样从栈顶获取输入,但不会直接验证条件,而是将公钥推送到栈上,对于该栈,仍需要签名来满足表达式。可使用c:wrapper将"K"表达式转换为"B"表达式。例如pk_h(key)=DUPHASH160EQUALVERIFY;

"W"包装表达式:它们从栈顶获取输入,并将非零或零推送到栈顶部或onebelow。例如,一个3输入"W"表达式会把栈"ABCDEF"转换成"ABF0"或"AB0F",而如果满足,则转换成"ABFn"或"ABnF"。每个"W"表达式要么是s:B(SWAPB)要么是a:B(TOALTSTACKBFROMALTSTACK)。例子有sc:pk(key)=SWAPCHECKSIG;

然后有5个类型修饰符,它们负责保证附加属性:

“z”zeroarg:此表达式始终只消耗0个栈元素;

"o"One-arg:此表达式始终只消耗一个栈元素;

"n"非零:此表达式始终使用至少一个栈元素,此表达式的dissatisfaction,要求顶部输入栈元素为零;

"d"不满足:此表达式的不满足可无条件构造。这意味着dissatisfaction不能包括任何签名或哈希预映射preimage,也不能依赖于满足的时间锁;

"u"单位:当满足时,此表达式将在栈上精确放置一个1;

下表列出了每个Miniscript表达式的正确性要求及其子表达式中的类型属性:

资源限制

不同类型的比特币脚本有不同的资源限制,无论是通过共识还是标准。其中一些会影响其他有效的Miniscripts:

超过10000字节的脚本因共识而无效;

超过520字节的脚本因共识无效;

脚本满足操作,其中非push操作码总数加上参与所有已执行thresh_ms的key数大于201,因共识而无效(bare,P2SH,P2WSH,P2SH-P2WSH);

除c:pk(key)、c:pk_h(key)和thresh_m(k,...)之外n=3的任何内容在标准性无效;

超过3600字节的脚本因标准无效;

序列化脚本签名超过1650字节的脚本,因标准无效;

由100多个栈元素组成的witness脚本,因标准无效;

MiniScript的存在,使验证满足脚本不受这些限制影响的能力变得容易。请注意,这与验证是否永远无法达到限制不同。例如,考虑or_b(X,Y),其中x和y都需要执行大量的thresh_ms来satisfaction。在这种情况下,满足x或y中的一个不会超过操作限制,而满足两者则都会超过。因为这两者都不需要满足,所以限制并不能阻止satisfaction。

安全属性

上面的类型系统保证对应的比特币脚本是:

共识和标准性完成:假设不违反上一节中列出的资源限制,对于语义允许的每一组满足条件,可构建一个通过比特币共识规则和通用标准性规则的witness;

共识健全:除非满足支出条件,否则无法构建对脚本有效的共识witness。由于标准性规则只允许共识有效满足的一个子集,因此此属性还意味着标准的健全性。

通过对比BitcoinCore的共识和标准性实现,及验证大量随机Miniscript表达式的随机满足性,P2WSH的完整性属性得到了广泛测试。通过考虑每个片段脚本中所有可能的执行路径,可推断出健全性。

为了使这些属性不仅适用于脚本,而且适用于整个交易,witness必须提交与验证相关的所有数据。实际上,这意味着不需要任何数字签名就可满足其条件的脚本是不安全的。例如,如果一个输出可通过简单地传递某个nLockTime片段)来使用,但没有任何数字签名,攻击者就可以修改支出交易中的nLockTime字段。

更多内容,读者可访问:http://bitcoin.sipa.be/miniscript/

标签:MINMINIIPTSCREthash Minergemini女朋友PIPT币SCR价格

Polygon热门资讯
KEX:BKEX Global 关于QWC充值即上币的活动公告_QWC

亲爱的BKEXer:BKEXGlobal将于新加坡时间2019年8月21日19:00开放QWC充值功能。?项目介绍:2018年,德国极客团队倾力打造区块链项目Qwertycoin.

1900/1/1 0:00:00
FEX:关于WBFex平台上线ECCC的公告_CCC币

尊敬的WBFex用户:WBFex即将上线ECCC,并在开放区上线ECCC/USDT的交易对,具体情况如下:充值时间:2019/08/2014:00交易时间:2019/08/2017:00提币时间.

1900/1/1 0:00:00
COX:LaLiga & GCOX签署亚洲及中东地区合作伙伴协议_BALI价格

LaLiga和全球名人代币持牌交易所GCOX宣布建立战略合作伙伴关系,这将强有力的推动LaLiga能够继续其全球扩张计划.

1900/1/1 0:00:00
稳定币:金色相对论|蔡维德:数字法币的提出就是要减少的可能性_libero币哪里发行的

蔡维德系国家特聘教授,北航博导,麻省理工学院学士,加州大学伯克利分校计算机科学专业博士,在美国明尼苏大大学和亚利桑那州立大学教育研究30年.

1900/1/1 0:00:00
CRYPTO:Cryptopia清算人Grant Thornton:该交易所未使用个人加密钱包_Cryptoindex.com

被盗交易所Cryptopia清算人GrantThornton周三在其网站上发布声明称,Cryptopia没有使用个人加密钱包,而是将客户资金汇集到混合的加密货币钱包中.

1900/1/1 0:00:00
Chain:数据显示:比特币区间震荡仍在持续_AIN

据ChaiNext数据显示,北京时间8月18日8点,反映加密货币市场整体走势的ChaiNext100指数报898.24点,过去24小时下北京时间8月18日8点.

1900/1/1 0:00:00