比特幣為全世界帶來了首個智能合約編程語言——Script,其能夠讓不同的加密貨幣在不同的編程環境下被使用。然而這一概念在極具顛覆性的同時,使用起來卻有一定難度,特別是在較為復雜的花費環境下。無論是編寫較為復雜的智能合約,還是驗證合約是否正確運行其職能,都很容易出現人為錯誤,在關系到資產安全的情況下,對于腳本程序運行條件正確性的驗證變得尤為重要.
在過去的一年中,區塊鏈工程師AndrewPoelstra,PieterWuille和SanketKanjalkar開始著手改進這一點。通過將Script語言拆分簡化,保留其最基本的要素和功能,優化出了“新”的編程語言——“Miniscript”——減少了原編程語言的復雜性,讓所有進行比特幣編程的人們獲得更安全、便捷的體驗。
“從理論上來講Miniscript相比Script有了更多的明確的使用條件和限制,但實際上人們可以用它完成任何Script所能做的事情。”Blockstream研發主管以及Miniscript聯合設計者AndrewPoelstra表示。
SCRIPT
我們首先來簡單了解一下Script語言。
每一筆比特幣交易都包含兩個主要部分:輸入(input)和輸出(output),二者都有自己的代碼,輸入(inputs)“解鎖”了代幣,而輸出(outputs)將代幣再次“鎖住”,并規定了下一次被解鎖再次進行交易輸入的條件,在這些條件中通常包括一個有效的加密簽名,更多的可能條件例如:該幣必須經過一定的時間后,或必須含有特殊的密碼才能被使用或花費。
Haru Invest CEO:正調查問題但不能透露合作公司:6月13日消息,Haru Invest首席執行官Hyung-soo Lee對平臺暫停存提款一事表示,我們正在與合作方一起調查問題的原因,正在制定解決方案。在投資者保護是重中之重的情況下,我們不能談論具體的合作伙伴公司,因為我們擔心敏感問題會先被暴露,從而導致無法解決。
針對關于其辦公司已關閉的報道,Lee表示,我們認為在暫停存取款的同時可能會給我們的員工帶來風險,因此我們轉為在家工作并關閉它以保護辦公室的資產。
據悉,Haru Invest是韓國區塊鏈加速器Block Crafters推出的虛擬資產存儲服務,總部設在新加坡,官網稱其在140個國家擁有約8萬名會員。Haru Invest提供虛擬資產時提供高達12%的高額利息,在吸引投資者的同時也備受業界質疑。今早開始陸續有用戶反饋稱無法在該平臺提款,目前韓國受損用戶規模尚不得知。Haru Invest并沒有向韓國注冊其業務,因此該國監管機構或對此事件無能為力。[2023/6/13 21:33:42]
交易中的這段代碼就是用Script創建的,Script是專門為比特幣設計的編程語言。其靈感來自于Forth,一種20世紀60年代發明的編程語言,最初設計用來操作射電望遠鏡。不過,Script在經過調整之后更加契合比特幣。
例如,Script中沒有使“循環”的操作碼(指令):該語言不支持無限次執行相同的計算。因為在比特幣中,沒有必要無限次地執行相同的計算,因為比特幣的節點們實際上并不通過計算進行交易——而是驗證交易。(關于為什么會出現這種情況,Blockstream工程師羅素·奧康納(RussellO'Connor)在三年前就發布了文章:對比特幣和以太坊的腳本語言和理念進行比較,其中進行了較為詳細的解釋。
ProShares宣布撤回2倍杠桿比特幣ETF的提案:金色財經報道,ProShares?宣布將撤回其關于 2 倍杠桿比特幣交易所交易基金 (ETF) ProShares UltraBitcoin Strategy ETF 的提案。目前沒有透露突然撤回的原因。但這可能與美國證券交易委員會正在進行的審查有關。?
根據數字資產研究公司 K33 Research 的一份報告,ProShares 的比特幣期貨交易所交易基金 (ETF) BITO 在比特幣價格上漲的情況下表現不佳,這主要是由于與其期貨合約相關的結構性成本。[2023/6/4 11:56:25]
同時Script并沒有被“類化”,這意味著計算的結果可以以不同的方式被注釋和使用,舉個很簡單的例子,一個有效簽名的結果可能是“true”,而“true”可以被注釋轉化等于數字“1”進而用于數學程式中,true=1,而truetrue則可以被看成11=2,意味著如果交易最少需要兩個有效簽名進行驗證,則其滿足了這個條件。
這其實為我們引入了Script語言中最重要的一個屬性——“難以推理(參考PreethiKasireddy關于JavaScript提出的文章當我們說一段代碼”易于推理”到底是什么意思?)”這基本意味著Script的計算結果能夠以多種方式被注釋轉化,即使一個簽名是無效的,在Script中其仍可以出于某些原因將其編寫為有效。
“在BitcoinScript中的確有一些運算碼在運行時鬧出荒唐事,例如,將一個簽名解釋為真/假值,在此之后將該布爾值轉化為數字后編入堆棧索引中,再根據這一數值將堆棧重新排列,然而在實際運行過程中其具體規則是非常荒唐可笑的。”Poelstra解釋道。
CoinShares:上周加密貨幣投資產品凈流入8100萬美元,7月共流入4.74億美元:8月1日消息,據CoinShares周報數據,上周數字資產投資產品凈流入8100萬美元,7月是今年迄今為止最強勁的月度資金流入,總計4.74億美元,幾乎糾正了6月份總計4.81億美元的所有流出。上周比特幣流入總額為8500萬美元,而空頭比特幣流出總額為260萬美元,這是近期熊市連續5周流入后的第一周流出。從地區來看,大部分資金流入來自北美,來自美國和加拿大的資金流入總額分別為1500萬美元和6700萬美元。巴西和瑞典都有少量資金流出。[2022/8/1 2:51:40]
這樣一來在通過Script處理一些問題時會很棘手,尤其是在花費代幣的要求變得更加復雜時,一筆交易的發起者的代碼中可能會無意中包含了允許代幣在其他條件下被使用的信息,反過來也就是說,交易的收款方有可能因為沒有注意到這樣的“漏洞”而被發現這樣信息的攻擊者攻擊受到損失。
總結來說,當前BitcoinScript的最大問題是在對較為復雜的程序進行驗證時比較困難(容易出錯).
問題的具體舉例
關于以上的問題如何限制了Script的實用性,下面我們舉一個具體一些的例子。
BlockstreamGreenWallet錢包有一個標準的“共同簽名”設置,錢包用戶掌控2個密鑰中的一個,Blockstream掌控另一個,這樣一來錢包中的數字資產能夠通過兩種方式被使用。用戶想要使用資產:用戶簽署了該筆交易并請求Blockstream一并簽署,通常Blockstream都會通過執行;但可能發生的一種情況是:Blockstream這一端出現了問題——如公司跑路或者丟失了密鑰,或出于其他原因無法簽署。在這樣的情況下,用戶需要使用一個備用方案來完成這筆交易:如在鎖定時間過后,用戶可以在預定時間過后完成該筆交易。
Charles Hoskinson等人表示愿意幫助說唱歌手Soulja Boy發幣:1月31日消息,美國說唱歌手DeAndre Cortez Way(又名Soulja Boy)近日發推稱,“誰可以幫助我使SouljaCoin成為真實的產品,又不會與SEC等部門產生任何法律糾紛……就像真實和合法的問題一樣,我想這可能是個很大的問題。麻煩聯系我,謝謝。”
多位加密行業知名人士提出建議。Cardano創始人Charles Hoskinson稱,“如果你是認真的,我可以幫你。私聊我。”波場創始人孫宇晨表示,“在TRON區塊鏈上創建,然后在Justswap.org交易SouljaCoin。可以在10分鐘內完成,而且完全去中心化!”Elrond Network創始人Beniamin Mincu也表示愿意伸出援手,他聲稱Elrond可能是世界上最具擴展性的區塊鏈架構。
然而并不是每個人都贊同這個計劃。一些人敦促他放棄該計劃,因為這只會給他帶來麻煩。MyCrypto CMO Jordan Spence認為Soulja Boy沒必要自己發行加密貨幣,不如堅持NFT和有趣的東西。播客主持人Peter McCormack則直接回復稱,“刪除你的賬戶。”(Crypto News Flash)[2021/1/31 18:32:16]
這樣的解決方案似乎可行,但仍會受到限制,比如用戶將無法再使用任何其他比特幣的潛在智能合約,或在其終端增加更多靈活可擴展的設置。
“現在Green有一個適用于所有客戶的預備腳本,基本上就是一個簡單的多重簽名,但是我們并不真正在乎腳本講了什么,我們在乎的是,在規定時間內,交易代幣是否有可能在不需要我們簽名的情況下被交易?如果用戶提出一些與常人不同的要求,但只要原則上這些要求是我們關心和在乎的,我們就應該滿足和支持。”
動態 | Power Ledger與日本共享能源公司Sharing Energy達成合作:據鳳凰科技報道,位于澳大利亞的Power Ledger公司近日宣布與日本的共享能源公司Sharing Energy建立合作伙伴關系。Power Ledger提供基于區塊鏈的標記化能源交易平臺,而Sharing Energy則是太陽能裝置和設備的供應商。該伙伴關系的初步試點項目將跟蹤關西、中部和九州地區100名個人太陽能電池板的可再生能源消耗。Power Ledger公司表示,通過區塊鏈能源交易平臺將改變可再生能源分配系統,同時減少碳足跡。[2019/2/1]
舉個例子,一些用戶以防有什么意外發生,希望讓他的另一半或家人在一年后能夠繼承使用這筆資產;或以用戶是一家公司為例,其希望創建一個使用機制,例如需要三分之二或更多的董事會成員權限才能共同使用資產。
當然從技術上來講,在比特幣腳本語言中以上的情況都是可以被實現的,但這將需要用戶設計一個自定義程序,而Blockstream也需要確保參與其中。
這樣就太復雜了,“如果用戶任意提供給我們一個腳本語言,我們幾乎無法確定其是否滿足了我們所關心在乎的那個運行條件,因為所有腳本行為的組合非常復雜,舉個例子,假如用戶提供的一個腳本程序看上去需要一個簽名(signature)進行認證,但我們還需要考慮,如果用戶提供了一個non-signiture會發生什么情況?其是否會觸發其他條件使資產能夠被調用?等等。”Poelstra解釋道。
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:SCRIPTMINISCScriv Network比特幣行情軟件pinescriptMinionverseaisc幣價
唐威在線上最標志性的是他的ID@sorpaas,這是一個邏輯語復合詞,大致意思是“許多希望”。他的ID伴隨著一個寧靜的頭像——一座島上矗立著一座房子和一棵樹,這是宮崎駿著名的動畫電影“千與千尋”.
1900/1/1 0:00:00尊敬的WBFex用戶: WBFex第二期“聚變挖礦大賽”已于2019年9月11日23:59:59結束.
1900/1/1 0:00:00出品/火星傳媒作者/Darcy擁有6億人口,涵蓋11個國家的東南亞正在迅速發展成為中國企業新一輪的投資熱地.
1900/1/1 0:00:009月12日,中央黨校馬克思主義學院副院長、教授陳江生發表文章《科學把握重要戰略機遇期的新內涵》。世界正面臨新一輪科技革命和產業變革的沖擊.
1900/1/1 0:00:00加入官方社群,或關注官方微博,第一時間接收直播信息! Bitget團隊 2019年9月17日 FTX持有印尼加密交易所Bitocto 99%的股權:11月24日消息.
1900/1/1 0:00:00爬蟲究竟是合法還是違法的?隨著大數據的火熱,數據相關行業競爭不僅“蒸蒸日上”,爬蟲之間的戰爭也越發地激烈.
1900/1/1 0:00:00