加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

比特幣腳本迎來重要升級 Pieter Wuille正式公布Miniscript項目_MIN:Mini Tiger

Author:

Time: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可以根據需要進行擴展。

Ault Alliance子公司BitNile將6572臺比特幣礦機移出德州托管設施:金色財經報道,多元化控股公司Ault Alliance, Inc.今天宣布,由于2022年9月比特幣礦企Compute North申請破產,其子公司BitNile, Inc.目前正在將比特幣礦機搬出得克薩斯州Wolf Hollow托管設施。

BitNile, Inc.于2022年8月16日與Compute North, LLC簽署了一項托管協議,以獲得20兆瓦的挖礦電力。根據該協議,BitNile, Inc.將6572臺比特幣礦機轉移到Compute North位于得克薩斯州的Wolf Hollow托管設施。(BusinessWire)[2023/2/10 11:59:38]

如果需要的話,我會在BitcoinCore中加入這部分內容,但理想情況下,它會被包含在很多錢包技術中。AndrewPoelstra和sanket1729一直在為它開發一個Rust庫:

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

以下內容,是Miniscript項目技術文檔的譯文:

Miniscript介紹

Miniscript是一種以結構化方式編寫比特幣腳本子集,并支持分析、合成、通用簽名等功能的語言。

比特幣腳本是一種獨特的基于棧的語言,其具有很多邊界用例,旨在實現由簽名、哈希鎖和時間鎖的各種組合組成的支出條件。盡管比特幣腳本的功能有限,但其仍然是非常重要的:

考慮一個支出條件的組合,找到最經濟的腳本來實現它;

給定兩個腳本,構建一個實現其支出條件組合的腳本;

給定一個腳本,找出其允許的支出條件;

給定一個腳本并訪問足夠的私鑰集,為它構造一個通用的令人滿意的witness;

給定一個腳本,能夠預測花費一個輸出的成本;

給定一個腳本,了解特定的資源限制在花費時是否會受到影響;

數據:比特幣鯨魚數量已開始下降 原因在于托管錢包的重組:2月28日消息,Glassnode數據表明,比特幣鯨魚(持有1000枚至10000枚BTC的錢包賬戶)的數量暫時逆轉了之前從2020年4月開始的強勁上升趨勢,Glassnode將這一現象稱為潛在的“鯨魚繁殖季節的結束”。Glassnode指出,鯨魚賬戶數下降的很大一部分原因在于托管錢包的重組,很難將鯨魚錢包的減少歸結為加密貨幣和宏觀市場崩盤期間的恐慌性拋售。(Cointelegraph)[2021/2/28 17:59:39]

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

4、在斯坦福區塊鏈活動上談論的Miniscript內容:http://diyhpl.us/wiki/transcripts/stanford-blockchain-conference/2019/miniscript/

調查:拉丁美洲超過31%的人希望投資比特幣:1月20日消息,Sherlock Communications最近發布的一項調查顯示,拉丁美洲超過31%的人希望投資比特幣,以在經濟不穩定時期維持其資產價值。該項報告對阿根廷、巴西、哥倫比亞和墨西哥的2,200多人進行了調查。(Crypto Potato)[2021/1/20 16:35:21]

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輸出:

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

支出成本分析

腳本:114WU

輸入Input:142.900000WU

分析 | 以太坊對比特幣匯率有一定下滑?主流交易所相關交易量有一定增長:據 TokenGazer 數據分析顯示,截止至 10 月 16?日 11 時,以太坊價格為$179.58,總市值為$19,437.40M,主流交易所24H交易量約為$100.82M,環比昨日增量33.89%;近期以太坊對比特幣匯率有一定下滑趨勢;基本面方面,以太坊鏈上交易量、鏈上DApp交易量持續增長、算力有一定反彈、新增地址增長穩定;以太坊 30 天開發者指數約為 2.25;以太坊與 BTC 180 天關聯度保持穩定,30 天 ROI 持續下滑;ERC20 代幣總市值約為以太坊總市值的 59.09%。[2019/10/16]

總計: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:包裝類;

聲音 | 分析師:BTC恐懼指數顯示比特幣在走低之前會攀升至更高:據newsbtc報道,今日恐慌指數為42,恐慌等級轉為恐懼。對此,推特上流行的加密貨幣分析師Mr. Anderson表示,目前回調至4900美元的恐懼比此前回調至3900美元的恐懼更多,這種情緒表明比特幣在走低之前會攀升至更高。[2019/4/13]

含義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/

Tags:MINMINIIPTSCRMini Tigergemini風暴時期的隊友IPT價格scrt幣投資機構

芝麻開門交易所下載
比特國際數字資產平臺上線XEQ_比特幣:CHTT

尊敬的GJGlobal用戶:比特國際數字資產平臺創投區即將上線XEQ,并開放XEQ/USDT交易對.

1900/1/1 0:00:00
“中本聰”已露馬腳 偽“聰”鬧劇何時休?_比特幣:TOS

多年來,“偽聰們”一直在爭奪比特幣創造者的寶座。而就在上周末,新的情況再次發生,某位自稱“中本聰”的不知名人士決定通過分為三部分的博客文章“自證”其身份.

1900/1/1 0:00:00
突發 四川水災 價值百萬的比特幣礦機被水沖走_IOTA:IOT

自8月18日20時起,四川全省經歷了一次強降雨過程。成都、雅安、阿壩等多地降暴雨到大暴雨,出現災情。8月20日,汶川縣遭強降雨襲擊,縣境內不同程度發生泥石流災害,山體滑坡等自然災害.

1900/1/1 0:00:00
17歲做淘寶 賺200萬 抱著錢來了幣圈_比特幣:APP

前幾天,微博一個姓Y的朋友聯系我,要給我講他經歷的幣圈故事。他在微博上給我打了很多字,我說這還不夠寫文章,必須要他接受我的語音采訪才可以。他就給了我微信,我們開了語音通話.

1900/1/1 0:00:00
關于LBank將啟動 LBK(藍貝殼) 5折售賣「PUX專場」的公告_LBK:BLANK

尊敬的LBank用戶: 為慶祝LBank即將開通PUX/USDT交易對,并回饋廣大社區用戶,LBK聯合PUX開啟「LBK(藍貝殼)5折售賣」PUX專場,售賣總額共10,000,000枚PUX.

1900/1/1 0:00:00
比特幣會跌到哪里 答案在這 08.21行情分析_比特幣:Helios Cash

本文觀點僅代表個人,僅限交流學習,所有內容不構成任何投資建議。想及時了解更多行情信息,請添加官方微信進群:jiamibaoluo.

1900/1/1 0:00:00
ads