国产乱人伦在线播放,99无码精品二区在线视频,最近在线更新8中文字幕免费,精品成人一区二区三区四区

您的位置:首頁 > 互聯(lián)網(wǎng) >

Script是智能合約的開發(fā)語言 能讓加密貨幣適應(yīng)不同的編程環(huán)境

2019-09-24 14:14:36 來源: 區(qū)塊網(wǎng)

比特幣為世界帶來了首個(gè)智能合約開發(fā)語言——Script,其能夠讓不同的加密貨幣在不同的編程環(huán)境下被使用。然而這一概念在極具顛覆性的同時(shí),使用

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

在過去的一年中,區(qū)塊鏈工程師Andrew Poelstra, Pieter Wuille(比特幣核心開發(fā)人員、同時(shí)也是隔離見證機(jī)制SegWit創(chuàng)建者)和Sanket Kanjalkar開始著手改進(jìn)這一點(diǎn)。通過將Script語言拆分簡化,保留其最基本的要素和功能,優(yōu)化出了新的編程語言——Miniscript——減少了原編程語言的復(fù)雜性,讓所有進(jìn)行比特幣編程的人們獲得更安全、便捷的體驗(yàn)。

從理論上來講Miniscript相比Script有了更多的明確的使用條件和限制,但實(shí)際上人們可以用它完成任何Script所能做的事情。Blockstream研發(fā)主管以及Miniscript聯(lián)合設(shè)計(jì)者Andrew Poelstra表示。

SCRIPT

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

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

交易中的這段代碼就是用Script創(chuàng)建的,Script是專門為比特幣設(shè)計(jì)的編程語言。其靈感來自于Forth,一種20世紀(jì)60年代發(fā)明的編程語言,最初設(shè)計(jì)用來操作射電望遠(yuǎn)鏡。不過,Script在經(jīng)過調(diào)整之后更加契合比特幣。

例如,Script中沒有使“循環(huán)”的操作碼:該語言不支持無限次執(zhí)行相同的計(jì)算。因?yàn)樵诒忍貛胖?,沒有必要無限次地執(zhí)行相同的計(jì)算,因?yàn)楸忍貛诺墓?jié)點(diǎn)們實(shí)際上并不通過計(jì)算進(jìn)行交易——而是驗(yàn)證交易。關(guān)于為什么會(huì)出現(xiàn)這種情況,Blockstream工程師羅素·奧康納在三年前就發(fā)布了文章:對(duì)比特幣和以太坊的腳本語言和理念進(jìn)行比較,其中進(jìn)行了較為詳細(xì)的解釋。

同時(shí)Script并沒有被“類化”,這意味著計(jì)算的結(jié)果可以以不同的方式被注釋和使用,舉個(gè)很簡單的例子,一個(gè)有效簽名的結(jié)果可能是“true”,而“true”可以被注釋轉(zhuǎn)化等于數(shù)字“1”進(jìn)而用于數(shù)學(xué)程式中,true=1,而true+true則可以被看成1+1=2,意味著如果交易最少需要兩個(gè)有效簽名進(jìn)行驗(yàn)證,則其滿足了這個(gè)條件。

這其實(shí)為我們引入了Script語言中最重要的一個(gè)屬性——“難以推理” 這基本意味著Script的計(jì)算結(jié)果能夠以多種方式被注釋轉(zhuǎn)化,即使一個(gè)簽名是無效的,在Script中其仍可以出于某些原因?qū)⑵渚帉憺橛行А?/p>

在Bitcoin Script中的確有一些運(yùn)算碼在運(yùn)行時(shí)鬧出荒唐事,例如,將一個(gè)簽名解釋為真/假值,在此之后將該布爾值轉(zhuǎn)化為數(shù)字(例如1/0)后編入堆棧索引中,再根據(jù)這一數(shù)值將堆棧重新排列,然而在實(shí)際運(yùn)行過程中其具體規(guī)則是非?;奶瓶尚Φ模琍oelstra解釋道。

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

總結(jié)來說,當(dāng)前Bitcoin Script的最大問題是在對(duì)較為復(fù)雜的程序進(jìn)行驗(yàn)證時(shí)比較困難。

問題的具體舉例

關(guān)于以上的問題如何限制了Script的實(shí)用性,下面我們舉一個(gè)具體一些的例子。

Blockstream Green Wallet錢包有一個(gè)標(biāo)準(zhǔn)的“共同簽名”設(shè)置,錢包用戶掌控 2 個(gè)密鑰中的一個(gè),Blockstream掌控另一個(gè),這樣一來錢包中的數(shù)字資產(chǎn)能夠通過兩種方式被使用。用戶想要使用資產(chǎn):用戶簽署了該筆交易并請求Blockstream一并簽署,通常Blockstream都會(huì)通過執(zhí)行(經(jīng)過郵箱或短信驗(yàn)證碼二次確認(rèn)后);

但可能發(fā)生的一種情況是:Blockstream這一端出現(xiàn)了問題——如公司跑路或者丟失了密鑰,或出于其他原因無法簽署。在這樣的情況下,用戶需要使用一個(gè)備用方案來完成這筆交易:如在鎖定時(shí)間過后,用戶可以在預(yù)定時(shí)間過后完成該筆交易。

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

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

舉個(gè)例子,一些用戶以防有什么意外發(fā)生,希望讓他的另一半或家人在一年后能夠繼承使用這筆資產(chǎn);或以用戶是一家公司為例,其希望創(chuàng)建一個(gè)使用機(jī)制,例如需要三分之二或更多的董事會(huì)成員權(quán)限才能共同使用資產(chǎn)。

當(dāng)然從技術(shù)上來講,在比特幣腳本語言中以上的情況都是可以被實(shí)現(xiàn)的,但這將需要用戶設(shè)計(jì)一個(gè)自定義程序,而Blockstream(資產(chǎn)托管方)也需要確保參與其中。

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

Miniscript

在過去的一年中,Poelstra、Blockstream 核心技術(shù)工程師Pieter Wuille和Sanket Kanjalkar設(shè)計(jì)了Miniscript,Miniscript官方并不屬于Blockstream的產(chǎn)品。

簡而言之,Miniscript是一個(gè)“刪減版”的Script:從Script工具包Script toolkit中整合選擇了更加易用和易于被驗(yàn)證的工具,而除去極少數(shù)基本無人使用的工具外,幾乎所有Script能干的事Miniscript也能干。本質(zhì)上來講,一行Miniscript的代碼仍可以看作等于一行有效地Script代碼,只不過Miniscript通過防止代碼出現(xiàn)意料之外結(jié)果而盡可能的減少Bug的出現(xiàn)。

就拿我們上面提到過的問題來說,用戶可以利用Miniscript更加容易地設(shè)計(jì)出一個(gè)便于Blockstream驗(yàn)證其是否滿足運(yùn)行條件的設(shè)置,詳細(xì)來講,Blockstream能夠更加清晰地明白用戶資產(chǎn)的被使用條件,如,要么簽名通過,要么時(shí)間到了,不管用戶在其自定義程序端還夾雜了任何其他附加條件,如額外的時(shí)間要求、多重簽名等,說白了,使用了Miniscript,在Blockstream端來看可以免去那些花里胡哨的,可能影響驗(yàn)證條件或偷換概念的東西,更干凈利落。

Miniscript語言非常直接且可預(yù)測,其程序總能導(dǎo)向一個(gè)決策樹,將程序很清楚的呈現(xiàn)出來,就像圖像編碼,易于推理。

就在上周,Pieter Wuille在Medium發(fā)文再次介紹了Miniscript(Miniscript: 改進(jìn)后的比特幣腳本語言),他拿一段在比特幣腳本語言中的代碼為例: OP_CHECKSIG OP_IFDUP OP_NOTIF OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIGVERIFY <144> OP_CSV OP_ENDIF

其中,A和B為公鑰,在Miniscript中這段語言可以被精簡為:or_d(c:pk(A),and_v(vc:pk_h(B),older(144)))

這段代碼很清楚明了地表現(xiàn)了代幣的解鎖條件:A簽名通過;或者經(jīng)過 144 個(gè)區(qū)塊后B簽名通過。而很大一部分的Script可以以這樣的方式編寫。

策略語言和投入使用

盡管Miniscript也還在繼續(xù)開發(fā)中,但其早期版本已經(jīng)發(fā)布并可以投入使用了。

甚至為了讓編寫Miniscript變得更加簡單,Wuille還設(shè)計(jì)了一種“策略語言”,策略語言更像是用戶編寫自己熟悉的語言,其最終可以被編譯至Miniscript格式,進(jìn)而可以被用于Script,并入比特幣交易輸出中。

這種策略語言的最大好處就是,它會(huì)在根據(jù)腳本編寫的不同情況下,盡可能地自動(dòng)地轉(zhuǎn)換至最合適、高效的Miniscript格式。

在Script里你可以有非常多的編寫方式表達(dá)‘或(or)’;有非常多的編寫方式表達(dá)‘和(and)’,但當(dāng)然其中總有一些表達(dá)方法是更高效的,而策略語言中‘或(or)’、‘和and’和其他條件的表達(dá)方式是固定的,Pieter Wuille還設(shè)計(jì)編寫了一個(gè)超極簡單明了的編譯器(compiler),讓策略語言能夠以最優(yōu)的方式轉(zhuǎn)化至Miniscript格式。

根據(jù)其線上編譯器,剛剛我們舉例編碼在策略語言中可以再次被轉(zhuǎn)化為:or(99@pk(A),1@and(pk(B),older(144)))

這樣的寫法意思是:左邊的 “或(or)”被采用的概率是99%(A簽名通過);右邊情況“和(and)”(經(jīng)過144個(gè)區(qū)塊后B簽名通過)發(fā)生概率為1%。

值得注意的是,以上并不僅僅是一個(gè)理論概念,雖然當(dāng)前的Miniscript和編譯器都不是最終版本,但Blockstream內(nèi)部已經(jīng)正在將其使用于Liquid官方側(cè)鏈軟件的分支開發(fā)中了,其中一個(gè)功能被稱為Dynamic Federations,其允許現(xiàn)有的Liquid成員對(duì)新加入的成員進(jìn)行管理,或?qū)ΜF(xiàn)有在聯(lián)盟控制下的比特幣使用權(quán)限的腳本進(jìn)行更新。

Miniscript為構(gòu)建和更新此類相關(guān)的Script提供了更高效快速的工具,經(jīng)過現(xiàn)有的Miniscript編譯器轉(zhuǎn)化后,原有的已經(jīng)經(jīng)過人工精簡和優(yōu)化過的Liquid Script腳本被再次精簡了 22 個(gè)字節(jié),相比原有的腳本約節(jié)省了 5% 的工作量。

更重要的是,其允許成員對(duì)新提出的腳本更改的主體部分(成員密鑰、代幣緊急被調(diào)用的條件正確性以及聯(lián)盟新成員對(duì)原聯(lián)盟控制資產(chǎn)的使用條件等)進(jìn)行自動(dòng)化驗(yàn)證,減少了成員間相互協(xié)調(diào)、對(duì)腳本進(jìn)行復(fù)雜的人工安全審計(jì)的必要。

目前Miniscript的策略語言編譯器可以支持C++和Rust語言的轉(zhuǎn)化,為了讓這項(xiàng)技術(shù)更易于使用,Pieter表示未來他們還需將它與其他常用軟件整合集成,通過實(shí)現(xiàn)對(duì)相位整形二進(jìn)制傳輸(雙二進(jìn)制,PSBT)和Miniscript的兼容(更新器updater和終結(jié)器finalizer等),許多PSBT簽名使用者(包括硬件錢包)即使沒有顯式支持的情況下,也可被用于復(fù)雜的腳本中;此外,由于許多策略語言的腳本轉(zhuǎn)換結(jié)果還沒有被考慮到,編譯器也將會(huì)被進(jìn)一步優(yōu)化改進(jìn)。(金色財(cái)經(jīng)

關(guān)鍵詞: Script 智能合約 開發(fā)語言

精選 導(dǎo)讀

募資55億港元萬物云啟動(dòng)招股 預(yù)計(jì)9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當(dāng)日啟動(dòng)招股,預(yù)計(jì)發(fā)行價(jià)介乎每股47 1港元至52 7港元,預(yù)計(jì)9月29日登陸港交所主板。按發(fā)行1 167億股計(jì)算,萬

發(fā)布時(shí)間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報(bào)披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時(shí)間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財(cái)報(bào)動(dòng)作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價(jià)掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時(shí)間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時(shí)觸及漲停,報(bào)20 2元 股。值得一提的是,在7月21日

發(fā)布時(shí)間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標(biāo)的資

發(fā)布時(shí)間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對(duì)債市影響如何?

央行12日再次開展了30億元逆回購操作,中標(biāo)利率2 10%。這已是央行連續(xù)7日每天僅進(jìn)行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時(shí)間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個(gè)月新低

由于對(duì)美聯(lián)儲(chǔ)激進(jìn)加息的擔(dān)憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個(gè)月新低。美

發(fā)布時(shí)間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達(dá)克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達(dá)克綜合指數(shù)下跌29 5%,標(biāo)普500指數(shù)下跌20 6%。其中,納斯達(dá)克連續(xù)

發(fā)布時(shí)間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強(qiáng),滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個(gè)半

發(fā)布時(shí)間: 2022-06-20 09:41
資訊   2022-06-20

4個(gè)交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計(jì)凈

發(fā)布時(shí)間: 2022-06-17 09:37
推薦   2022-06-17

熱門TAG

more
美聯(lián)儲(chǔ)今年已將基準(zhǔn)利率從接近零大幅上調(diào)至略高于3% EIA報(bào)告:美國原油庫存及戰(zhàn)略儲(chǔ)備減少,汽油及精煉油庫存輕微波動(dòng) 美國政府更廣泛推動(dòng)從汽油動(dòng)力汽車轉(zhuǎn)向電動(dòng)汽車的一部分 數(shù)據(jù)顯示:今年9月日本船企接單量延續(xù)8月下跌下跌趨勢 公告顯示:2022年前三季度TCL中環(huán)研發(fā)投入為27億元 占比營業(yè)收入5.42% 新的111.75億英鎊注資列在“對(duì)金融機(jī)構(gòu)的援助—支付給英格蘭銀行”標(biāo)題下 本次政府儲(chǔ)備肉投放面向北京18家主要連鎖超市門店及相關(guān)零售終端投放 有交易員預(yù)計(jì):如果LME不采取措施 接下來可能將有數(shù)十萬噸鋁流入LME 據(jù)報(bào)道:繼德國最大釀酒商拉德貝格啤酒公司9月宣布漲價(jià) 據(jù)報(bào)道:澳大利亞礦商Pilbara的鋰礦拍賣價(jià)再創(chuàng)新高 折算后的碳酸鋰成本 中集天達(dá)首次公開發(fā)行A股股票 招股書顯示此次擬公開發(fā)行股數(shù)不超過103, 多家銀行加強(qiáng)綠色金融頂層設(shè)計(jì) 致力于為經(jīng)濟(jì)社會(huì)綠色低碳轉(zhuǎn)型貢獻(xiàn)力量 萊特幣 比特幣 數(shù)字資產(chǎn) 火幣 以太經(jīng)典 比特股 EOS 比特幣現(xiàn)金 量子鏈 Hcash 泰達(dá)幣 瑞波幣 Qcash 比特幣鉆石 超級(jí)比特幣 優(yōu)幣 硬分叉 加密貨幣