比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Fil > Info

Hardcore | Miniscript:讓比特幣編程更便捷高效的“神器”_SCR

Author:

Time:1900/1/1 0:00:00

比特幣為全世界帶來了首個智能合約編程語言——Script,其能夠讓不同的加密貨幣在不同的編程環境下被使用。然而這一概念在極具顛覆性的同時,使用起來卻有一定難度,特別是在較為復雜的花費環境下。無論是編寫較為復雜的智能合約,還是驗證合約是否正確運行其職能,都很容易出現人為錯誤,在關系到資產安全的情況下,對于腳本程序運行條件正確性的驗證變得尤為重要.

在過去的一年中,區塊鏈工程師AndrewPoelstra,PieterWuille和SanketKanjalkar開始著手改進這一點。通過將Script語言拆分簡化,保留其最基本的要素和功能,優化出了“新”的編程語言——“Miniscript”——減少了原編程語言的復雜性,讓所有進行比特幣編程的人們獲得更安全、便捷的體驗。

“從理論上來講Miniscript相比Script有了更多的明確的使用條件和限制,但實際上人們可以用它完成任何Script所能做的事情。”Blockstream研發主管以及Miniscript聯合設計者AndrewPoelstra表示。

SCRIPT

我們首先來簡單了解一下Script語言。

每一筆比特幣交易都包含兩個主要部分:輸入(input)和輸出(output),二者都有自己的代碼,輸入(inputs)“解鎖”了代幣,而輸出(outputs)將代幣再次“鎖住”,并規定了下一次被解鎖再次進行交易輸入的條件,在這些條件中通常包括一個有效的加密簽名,更多的可能條件例如:該幣必須經過一定的時間后,或必須含有特殊的密碼才能被使用或花費。

Chardan總經理:資本市場對加密貨幣公司來說仍然不太友好:金色財經報道,投資銀行Chardan總經理Brian Dobson表示,資本市場對加密貨幣公司來說仍然不太友好。SPA CInsider的數據顯示,自從2021年的狂熱隨著次年初加密貨幣寒冬以來,九家希望通過SPAC上市的數字資產公司已經放棄了他們的計劃。其中包括穩定幣發行商Circle、加密貨幣交易所Bullish Global和經紀公司eToro。這些公司的交易估值從1.6億美元到超過100億美元不等,自2021年3月以來,已宣布的價值超過350億美元的加密SPAC交易未能完成。[2023/7/5 22:18:27]

交易中的這段代碼就是用Script創建的,Script是專門為比特幣設計的編程語言。其靈感來自于Forth,一種20世紀60年代發明的編程語言,最初設計用來操作射電望遠鏡。不過,Script在經過調整之后更加契合比特幣。

例如,Script中沒有使“循環”的操作碼(指令):該語言不支持無限次執行相同的計算。因為在比特幣中,沒有必要無限次地執行相同的計算,因為比特幣的節點們實際上并不通過計算進行交易——而是驗證交易。(關于為什么會出現這種情況,Blockstream工程師羅素·奧康納(RussellO'Connor)在三年前就發布了文章:對比特幣和以太坊的腳本語言和理念進行比較,其中進行了較為詳細的解釋。

同時Script并沒有被“類化”,這意味著計算的結果可以以不同的方式被注釋和使用,舉個很簡單的例子,一個有效簽名的結果可能是“true”,而“true”可以被注釋轉化等于數字“1”進而用于數學程式中,true=1,而truetrue則可以被看成11=2,意味著如果交易最少需要兩個有效簽名進行驗證,則其滿足了這個條件。

聯合國兒童基金會從Huobi Charity獲得7枚比特幣捐贈:金色財經報道,聯合國兒童基金會(UNICEF)已從Huobi Charity獲得了價值約40萬美元的比特幣捐贈。Huobi Charity表示,在2021年第一季度后半,其向聯合國兒童基金會捐贈了7枚BTC,當時1枚BTC的價格約為5萬美元。以當前價格計算,這7枚BTC的價值約為40.5萬美元。該組織稱,已承諾以比特幣和美元的形式向聯合國兒童基金會捐贈100萬美元,其余的資金將在三年內捐贈。[2021/4/7 19:52:11]

這其實為我們引入了Script語言中最重要的一個屬性——“難以推理(參考PreethiKasireddy關于JavaScript提出的文章當我們說一段代碼”易于推理”到底是什么意思?)”這基本意味著Script的計算結果能夠以多種方式被注釋轉化,即使一個簽名是無效的,在Script中其仍可以出于某些原因將其編寫為有效。

“在BitcoinScript中的確有一些運算碼在運行時鬧出荒唐事,例如,將一個簽名解釋為真/假值,在此之后將該布爾值轉化為數字后編入堆棧索引中,再根據這一數值將堆棧重新排列,然而在實際運行過程中其具體規則是非常荒唐可笑的。”Poelstra解釋道。

這樣一來在通過Script處理一些問題時會很棘手,尤其是在花費代幣的要求變得更加復雜時,一筆交易的發起者的代碼中可能會無意中包含了允許代幣在其他條件下被使用的信息,反過來也就是說,交易的收款方有可能因為沒有注意到這樣的“漏洞”而被發現這樣信息的攻擊者攻擊受到損失。

倫敦服裝設計師Charli Cohen將發布Genesis Digi-Fizzy ERC-1155 NFT:數字時尚拍賣交易平臺DIGITALAX宣布倫敦服裝設計師Charli Cohen合作,Cohen將在DIGITALAX鏈上庫發布Genesis Digi-Fizzy ERC-1155 NFT。Cohen將開放其源代碼,未來的設計師可以根據部分版稅分配將它運用到其服裝中。

據悉,2020年12月,DIGITALAX首次正式推出時引入了部分服裝所有權的概念,允許獨立藝術家和創作者以ERC 1155代幣的形式發行數字材料、圖案和紋理。在鏈上記錄和鑄造這些東西,將其添加到DIGITALAX鏈上數字庫并且開源。

Cohen發布的圖案將用于特殊版本的數字和實體服裝。數字服裝由藝術家Kodomodachi設計,實體服裝是限量版的Charli Cohen夾克。買家可以通過DIGI組合(DIGI Bundle)購買這個Digi-Fizzy混搭時尚品,該產品將在其電競平臺ESPA發布時上線DIGITALAX Matic市場。[2021/3/20 19:03:18]

總結來說,當前BitcoinScript的最大問題是在對較為復雜的程序進行驗證時比較困難(容易出錯).

問題的具體舉例

關于以上的問題如何限制了Script的實用性,下面我們舉一個具體一些的例子。

BlockstreamGreenWallet錢包有一個標準的“共同簽名”設置,錢包用戶掌控2個密鑰中的一個,Blockstream掌控另一個,這樣一來錢包中的數字資產能夠通過兩種方式被使用。用戶想要使用資產:用戶簽署了該筆交易并請求Blockstream一并簽署,通常Blockstream都會通過執行;但可能發生的一種情況是:Blockstream這一端出現了問題——如公司跑路或者丟失了密鑰,或出于其他原因無法簽署。在這樣的情況下,用戶需要使用一個備用方案來完成這筆交易:如在鎖定時間過后,用戶可以在預定時間過后完成該筆交易。

動態 | GoodSoulGroups Charity開發推特機器人推進XRP捐款透明化:在推特上擁有6個慈善機構的GoodSoulGroups Charity已經實現了一個類似Tipbot機器人來接受推特上XRP的捐款。名為GoodXRP的機器人由Daniel Siedentopf開發,可以在六個慈善機構中平均分配捐款金額。(AMBCrypto)[2019/10/30]

這樣的解決方案似乎可行,但仍會受到限制,比如用戶將無法再使用任何其他比特幣的潛在智能合約,或在其終端增加更多靈活可擴展的設置。

“現在Green有一個適用于所有客戶的預備腳本,基本上就是一個簡單的多重簽名,但是我們并不真正在乎腳本講了什么,我們在乎的是,在規定時間內,交易代幣是否有可能在不需要我們簽名的情況下被交易?如果用戶提出一些與常人不同的要求,但只要原則上這些要求是我們關心和在乎的,我們就應該滿足和支持。”

舉個例子,一些用戶以防有什么意外發生,希望讓他的另一半或家人在一年后能夠繼承使用這筆資產;或以用戶是一家公司為例,其希望創建一個使用機制,例如需要三分之二或更多的董事會成員權限才能共同使用資產。

當然從技術上來講,在比特幣腳本語言中以上的情況都是可以被實現的,但這將需要用戶設計一個自定義程序,而Blockstream也需要確保參與其中。

這樣就太復雜了,“如果用戶任意提供給我們一個腳本語言,我們幾乎無法確定其是否滿足了我們所關心在乎的那個運行條件,因為所有腳本行為的組合非常復雜,舉個例子,假如用戶提供的一個腳本程序看上去需要一個簽名(signature)進行認證,但我們還需要考慮,如果用戶提供了一個non-signiture會發生什么情況?其是否會觸發其他條件使資產能夠被調用?等等。”Poelstra解釋道。

動態 | Dharma鎖倉資產暴跌74%,用戶提幣困難,合約代碼已閉源:據區塊律動消息,去中心化借貸平臺Dharma社群內最近有不少用戶反映在使用產品今天提幣時遇到問題,原本應該自動化處理的合約并未執行而且處于代處理狀態(pending)。與此同時Dharma的鏈上鎖倉資產數量也在一個月時間內暴跌74%,僅剩561萬美元。 有用戶反饋點擊提幣后十多個小時沒有反饋,還有用戶的提幣訂單被重置,多次提幣仍然無法提出。官方的support@dharma.io郵箱也沒有對用戶的問題作出反饋,有用戶已經提交了問題數月仍然無法解決,引發不少用戶的焦慮。 DappTotal的DeFi數據顯示,Dharma平臺的的鎖倉資產從一個月前的2187萬美元暴跌至8月2日的561萬美元,有74%的資產已經被提幣轉走,處于資產流出狀態。 根據Dharma的Github,項目代碼中最后一次更新是4月18日,更新內容為開發者手冊。Telegram社群管理員Rachael McWhirter在上個月20日表示,“項目合約已經閉源處理,所有核心協議代碼正在被ZK Labs、Trails of Bits、Zeppelin等審查”。目前Dharma的Twitter等渠道正常運行。[2019/8/2]

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

Tags:SCRIPTMINISCSCRT價格KRIPTOMINIDOGEPRO價格BISC幣

Fil
數據:BTC鏈上活躍度盤整于30日均線,OTC流量小幅萎縮_BRI

據TokenInsight數據顯示,反映區塊鏈行業整體表現的TI指數北京時間09月17日8時報740.96點,較昨日同期下跌0.75點,跌幅為0.1%.

1900/1/1 0:00:00
BTC大概率在構筑中繼底 等待新的拉升波段_BTC

在BTC以往整個大牛市的進程中,周線21均線與EMA120日均線起到關鍵的支撐作用,特別是在2016年慢牛至2017年下半年的瘋牛走勢中,大盤反復測試了120日均線與21周均線支撐的有效性.

1900/1/1 0:00:00
BNV全球獨家首發上線活動公告_COI

親愛的大幣網(Dcoin)用戶:大幣網(Dcoin)將于2019年09月16日全球首發上線BeNative(BNV)??,具體時間安排如下.

1900/1/1 0:00:00
Binance JEX上線月ETH期權1010公告_SDT

ETH看漲期權 代碼月ETH看漲1010期權標的ETH合約類型歐式看漲期權計價單位USDT最小價格單位0.0001USDT合約比例20:1.

1900/1/1 0:00:00
EOS帶領主流幣短時補漲 但未來行情仍需要向BTC看齊_EOS

昨晚,EOS再次暴動,短時漲幅超過10%,突破了日線級別MA60均線的壓制,量能上也同步放大。主流幣跟隨反彈,短時同步上漲。作為大盤重要風向標的BTC,卻并沒有明顯漲幅,仍處于小區間震蕩走勢.

1900/1/1 0:00:00
DragonEx上線 SOG/USDT 交易對_區塊鏈

DragonEx上線SOG/USDT交易對 2019-09-12 親愛的用戶: DragonEx將于2019年9月16日16:00在創新區上線SOG/USDT交易對.

1900/1/1 0:00:00
ads