麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

用于將高級(jí)語(yǔ)言代碼編譯為區(qū)塊鏈平臺(tái)上可執(zhí)行的腳本的系統(tǒng)和方法與流程

文檔序號(hào):41753402發(fā)布日期:2025-04-29 18:21閱讀:3來(lái)源:國(guó)知局
用于將高級(jí)語(yǔ)言代碼編譯為區(qū)塊鏈平臺(tái)上可執(zhí)行的腳本的系統(tǒng)和方法與流程

本公開(kāi)總體上涉及分布式賬本技術(shù),并且更具體地涉及區(qū)塊鏈技術(shù)。本發(fā)明還涉及用于轉(zhuǎn)換基于計(jì)算機(jī)的代碼的編譯器和與編譯器相關(guān)的技術(shù)。本發(fā)明的一個(gè)或多個(gè)實(shí)施方式適于用作如下解決方案,該解決方案使得能夠在區(qū)塊鏈平臺(tái)或協(xié)議上自動(dòng)化和執(zhí)行高級(jí)程序和/或便利該自動(dòng)化和執(zhí)行,該區(qū)塊鏈平臺(tái)或協(xié)議包括功能上受限的基于腳本的語(yǔ)言。


背景技術(shù):

1、在本文中,我們使用術(shù)語(yǔ)“區(qū)塊鏈”來(lái)涵蓋所有形式的基于計(jì)算機(jī)的電子分布式賬本技術(shù)。這些包括基于共識(shí)的區(qū)塊鏈和交易鏈技術(shù)、經(jīng)許可和未經(jīng)許可的賬本、共享賬本及其變體。應(yīng)當(dāng)注意,本發(fā)明不限于與特定區(qū)塊鏈一起使用,并且替代的區(qū)塊鏈實(shí)現(xiàn)方式和協(xié)議落入本發(fā)明的范圍內(nèi)。術(shù)語(yǔ)“用戶”在此可以指人類(lèi)或基于處理器的資源。

2、區(qū)塊鏈?zhǔn)且环N點(diǎn)對(duì)點(diǎn)的電子賬本,其被實(shí)現(xiàn)為基于計(jì)算機(jī)的去中心化的分布式系統(tǒng),該系統(tǒng)由區(qū)塊組成,而區(qū)塊又由交易(transaction)組成。每個(gè)交易是一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)對(duì)區(qū)塊鏈系統(tǒng)中的參與者之間的數(shù)字資產(chǎn)的控制轉(zhuǎn)移進(jìn)行編碼,并包括至少一個(gè)輸入和至少一個(gè)輸出。每個(gè)區(qū)塊包含前一個(gè)區(qū)塊的散列,以致于這些區(qū)塊變?yōu)殒溄釉谝黄穑詣?chuàng)建自區(qū)塊鏈開(kāi)始以來(lái)就已經(jīng)寫(xiě)入?yún)^(qū)塊鏈的所有交易的永久、不可更改的記錄。交易包含嵌入其輸入和輸出中稱(chēng)為腳本的小程序,它們指定如何以及通過(guò)誰(shuí)來(lái)訪問(wèn)交易的輸出。在一些平臺(tái)上,這些腳本是使用稱(chēng)為script的基于堆棧的腳本語(yǔ)言來(lái)編寫(xiě)的。腳本使用通過(guò)解釋程序轉(zhuǎn)換為可執(zhí)行代碼的命令(操作碼)來(lái)編寫(xiě)。

3、為了將交易寫(xiě)入?yún)^(qū)塊鏈,必須對(duì)其進(jìn)行“驗(yàn)證”。網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行工作以確保每次交易都有效,而無(wú)效交易從網(wǎng)絡(luò)中被拒絕。安裝在節(jié)點(diǎn)上的軟件客戶端通過(guò)執(zhí)行其鎖定和解鎖腳本,來(lái)對(duì)未耗用的交易(utxo)進(jìn)行該驗(yàn)證工作。如果鎖定和解鎖腳本的執(zhí)行評(píng)估為true且可能通過(guò)了其他檢查,則交易有效并且被寫(xiě)入?yún)^(qū)塊鏈。因此,為了將交易寫(xiě)入?yún)^(qū)塊鏈,該交易必須i)由接收交易的第一節(jié)點(diǎn)來(lái)驗(yàn)證-如果交易被驗(yàn)證,則節(jié)點(diǎn)將其中繼到網(wǎng)絡(luò)中的其他節(jié)點(diǎn);ii)被加入由網(wǎng)絡(luò)節(jié)點(diǎn)建造的新區(qū)塊;iii)被挖掘,即加入過(guò)去交易的公共賬本。

4、數(shù)字企業(yè)家已經(jīng)開(kāi)始探索加密安全系統(tǒng)以及可以存儲(chǔ)在區(qū)塊鏈上以實(shí)現(xiàn)新系統(tǒng)的數(shù)據(jù)這兩者的使用。如果區(qū)塊鏈可用于自動(dòng)化任務(wù)和過(guò)程,這將是非常有利的。這樣的解決方案將能夠利用區(qū)塊鏈的好處(例如,事件的永久性、防篡改記錄,分布式處理等),同時(shí)在其應(yīng)用中更通用。因此,需要對(duì)新應(yīng)用和技術(shù)創(chuàng)新更廣泛地使用該技術(shù),這就類(lèi)似于早期使用因特網(wǎng),隨后在基于網(wǎng)絡(luò)系統(tǒng)的開(kāi)發(fā)方面蓬勃發(fā)展那樣。

5、然而,以腳本語(yǔ)言編寫(xiě)程序例如不為更廣泛的編程社區(qū)直觀地容易接受,因?yàn)槠湫枰嘘P(guān)于低級(jí)編程技術(shù)的知識(shí)和技巧。其需要程序員考慮堆棧以及其中數(shù)據(jù)的位置。編寫(xiě)低級(jí)操作碼組成的程序比以高級(jí)語(yǔ)言(hll)比如c、java等編寫(xiě)源代碼更加耗時(shí)且勞動(dòng)密集。為該hll構(gòu)建的編譯器/解釋程序提供了一個(gè)方便的抽象層,該層使得程序員遠(yuǎn)離與內(nèi)存管理等有關(guān)的更費(fèi)力的低級(jí)問(wèn)題。編寫(xiě)操作碼的序列來(lái)操縱一個(gè)或更多個(gè)堆棧中的數(shù)據(jù)比以hll編寫(xiě)源代碼技術(shù)上更復(fù)雜和耗時(shí)。因此,由于使用低級(jí)操作碼的困難性,更容易發(fā)生錯(cuò)誤和缺陷。

6、此外,hll使程序員能夠在其源代碼中包括復(fù)雜控制流結(jié)構(gòu)比如循環(huán)、case語(yǔ)句和遞歸調(diào)用。程序員可以專(zhuān)注于所需的邏輯并以直觀的方式通過(guò)諸如“while?this?is?true,do?x...(當(dāng)這是真的,做x…)”之類(lèi)的機(jī)制來(lái)表達(dá)邏輯流程。然而,一些與區(qū)塊鏈相關(guān)聯(lián)的腳本語(yǔ)言比如script在功能上受限制,因?yàn)樗鼈儼ū热缢阈g(shù)運(yùn)算這樣的經(jīng)典運(yùn)算符,也包括比如哈希運(yùn)算符和簽名驗(yàn)證這樣的加密功能,然而不包括用于復(fù)雜控制結(jié)構(gòu)(比如while循環(huán))的固有原語(yǔ),也不允許使用遞歸技術(shù),如在hll中能夠使用的那樣。該受限制的語(yǔ)言不支持基于跳轉(zhuǎn)的控制流。因此,通過(guò)設(shè)計(jì),其限制了提供給程序員以包括在源代碼中的語(yǔ)言和邏輯結(jié)構(gòu)。這導(dǎo)致一些人爭(zhēng)辯說(shuō)比如script這樣的受限制語(yǔ)言是非圖靈完整的,雖然該定義被其他人提出異議。因此,在此將使用短語(yǔ)“功能受限制”。

7、應(yīng)注意,盡管這種故意限制會(huì)使編碼過(guò)程對(duì)于程序員來(lái)說(shuō)更加困難,然而其也使得程序執(zhí)行時(shí)間有界限,且重要的是,提供了重要的安全機(jī)制,因?yàn)槠浞乐沽藧阂饫?exploits),比如防止了使用無(wú)限循環(huán)來(lái)實(shí)施拒絕服務(wù)(dos)攻擊。

8、因此,在關(guān)鍵性的安全性和需要便利于、鼓勵(lì)和改進(jìn)基于區(qū)塊鏈技術(shù)的發(fā)展之間存在權(quán)衡。為了解決后一個(gè)問(wèn)題,hll語(yǔ)言可以被包括在區(qū)塊鏈平臺(tái)中來(lái)作為固有功能。如script那樣,需要低級(jí)解釋程序來(lái)產(chǎn)生代碼的可執(zhí)行版本。一些hll語(yǔ)言允許通過(guò)使用有條件和無(wú)條件跳轉(zhuǎn)來(lái)執(zhí)行控制流。其還允許遞歸。為了避免比如dos攻擊之類(lèi)的問(wèn)題,通過(guò)引入gas這一概念來(lái)限制交易執(zhí)行時(shí)間,gas涉及預(yù)先支付從而覆蓋執(zhí)行成本。因此,由于使用固有hll,需要另外一層技術(shù)和商業(yè)上的復(fù)雜性。

9、因此,期望提供一種機(jī)制,程序員可通過(guò)該機(jī)制使用其熟悉的hll語(yǔ)言以更容易、快速和高效的方式開(kāi)發(fā)、設(shè)計(jì)和產(chǎn)生有效的區(qū)塊鏈解決方案,而不損害功能上受限制的腳本語(yǔ)言提供的安全性。這絕不是一項(xiàng)微不足道的任務(wù),該任務(wù)是需要相當(dāng)大程度的技術(shù)創(chuàng)新的。這是本發(fā)明解決的技術(shù)問(wèn)題之一。


技術(shù)實(shí)現(xiàn)思路

1、因此,根據(jù)本公開(kāi),提供了一些系統(tǒng)和相應(yīng)方法。

2、根據(jù)本公開(kāi),可以提供一種計(jì)算機(jī)實(shí)現(xiàn)的方法和相應(yīng)的系統(tǒng)。該方法可以被設(shè)置為使得能夠在區(qū)塊鏈平臺(tái)上執(zhí)行一部分源代碼,或便利于其執(zhí)行。源代碼可以用高級(jí)語(yǔ)言編寫(xiě)。本公開(kāi)描述了可以被實(shí)現(xiàn)為軟件編譯器的編譯技術(shù)和系統(tǒng)/組件。以下可將其稱(chēng)為“區(qū)塊鏈編譯器”。可將軟件編譯器設(shè)置為結(jié)合任何基于區(qū)塊鏈的協(xié)議/網(wǎng)絡(luò)來(lái)使用。

3、有利的是,本公開(kāi)的軟件編譯器可以使得用戶(程序員)能夠以熟悉的語(yǔ)言(比如c、java、c++的語(yǔ)法格式)來(lái)編寫(xiě)和創(chuàng)建區(qū)塊鏈可執(zhí)行的程序/應(yīng)用。這將基于區(qū)塊鏈的開(kāi)發(fā)這一任務(wù)擴(kuò)展到更寬廣的開(kāi)發(fā)社區(qū)。這也意味著,基于區(qū)塊鏈的解決方案可更快速地編寫(xiě),并且可以由本發(fā)明進(jìn)行錯(cuò)誤檢查,下文對(duì)此進(jìn)行更詳細(xì)描述。至為重要的是,底層協(xié)議和相關(guān)聯(lián)腳本語(yǔ)言的安全功能得以保留和維護(hù)。因此,本發(fā)明提供了一種技術(shù)和系統(tǒng)用于在腳本生成過(guò)程中保留與區(qū)塊鏈有關(guān)的安全性,并便利于生成有效的無(wú)錯(cuò)誤腳本(以及交易)或使得能夠生成該有效的無(wú)錯(cuò)誤腳本(以及交易),該無(wú)錯(cuò)誤腳本(以及交易)由區(qū)塊鏈網(wǎng)絡(luò)上的節(jié)點(diǎn)驗(yàn)證。

4、根據(jù)一個(gè)可能的實(shí)施方式,可以提供一種計(jì)算機(jī)實(shí)現(xiàn)的方法,該方法使用靜態(tài)編譯來(lái)將一部分源代碼轉(zhuǎn)換成區(qū)塊鏈兼容的腳本。這可以被稱(chēng)為“輸出腳本”,因?yàn)槠淇尚纬删幾g器提供的輸出。本發(fā)明可針對(duì)一個(gè)或更多個(gè)錯(cuò)誤進(jìn)行測(cè)試。其可在檢測(cè)到一個(gè)或更多個(gè)錯(cuò)誤時(shí)提供警報(bào)。靜態(tài)編譯可包括循環(huán)展開(kāi)的步驟;在所述一部分源代碼內(nèi)提供的一個(gè)或更多個(gè)循環(huán)可被展開(kāi)。應(yīng)注意,術(shù)語(yǔ)“靜態(tài)編譯”和“循環(huán)展開(kāi)”是本領(lǐng)域已知的術(shù)語(yǔ),且容易為本領(lǐng)域技術(shù)人員所理解。

5、可將該方法布置為與區(qū)塊鏈網(wǎng)絡(luò)一起使用。區(qū)塊鏈網(wǎng)絡(luò)可與協(xié)議相關(guān)聯(lián)。其可以是“工作量證明”的區(qū)塊鏈。其可以是基于共識(shí)的區(qū)塊鏈。其可以是公共和/或未經(jīng)許可的區(qū)塊鏈。其可以是點(diǎn)對(duì)點(diǎn)、去中心化的區(qū)塊鏈。

6、區(qū)塊鏈網(wǎng)絡(luò)可以包括驗(yàn)證區(qū)塊鏈交易的多個(gè)節(jié)點(diǎn)。區(qū)塊鏈交易可以包括可由多個(gè)節(jié)點(diǎn)執(zhí)行的腳本。腳本可由屬于功能上受限制(或稱(chēng)為非圖靈完整)的區(qū)塊鏈腳本語(yǔ)言的一組操作碼表示或包括該一組操作碼。該方法可以包括步驟:生成輸出腳本以包括在區(qū)塊鏈交易中,該區(qū)塊鏈交易由區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)驗(yàn)證。輸出腳本可由屬于功能上受限制的區(qū)塊鏈腳本語(yǔ)言的一組操作碼表示,且輸出腳本可被設(shè)置或改寫(xiě),使得區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)對(duì)腳本的執(zhí)行可實(shí)施源代碼中指定的功能。

7、該部分源代碼可以用高級(jí)語(yǔ)言(hll)編寫(xiě)。hll可被描述為可編譯hll。hll可由根據(jù)本發(fā)明設(shè)置的軟件組件(編譯器)來(lái)編譯。hll可由編譯器來(lái)編譯,從而產(chǎn)生可由解釋程序執(zhí)行的腳本。腳本可設(shè)置在區(qū)塊鏈交易(tx)中。腳本可以與交易的輸入或輸出相關(guān)聯(lián)。hll可以是圖靈完整的語(yǔ)言(受現(xiàn)實(shí)世界約束),因?yàn)槠淇稍试S實(shí)現(xiàn)復(fù)雜控制流(比如遞歸)、復(fù)雜選擇結(jié)構(gòu)和/或循環(huán)的表達(dá)式、結(jié)構(gòu)和/或語(yǔ)句。hll固有的語(yǔ)法可以包括與循環(huán)有關(guān)的語(yǔ)法比如while、for或repeat循環(huán)。其可以包括用于執(zhí)行加密運(yùn)算、算術(shù)運(yùn)算和堆棧操縱運(yùn)算的原語(yǔ)。hll可以包括定制的操作碼和/或高級(jí)語(yǔ)言結(jié)構(gòu),基本如下所述。

8、區(qū)塊鏈兼容的腳本可以是由從區(qū)塊鏈上執(zhí)行的區(qū)塊鏈腳本語(yǔ)言中選擇的、該語(yǔ)言固有的和/或形成該語(yǔ)言一部分的操作碼來(lái)形成的腳本(即程序)。操作碼可以被稱(chēng)為原語(yǔ)或命令。腳本可在于區(qū)塊鏈上執(zhí)行/可執(zhí)行之前,通過(guò)解釋程序或虛擬機(jī)。(術(shù)語(yǔ)“區(qū)塊鏈”在該上下文中可以包括協(xié)議和實(shí)施平臺(tái))。解釋程序可以將該腳本轉(zhuǎn)換成機(jī)器可執(zhí)行(對(duì)象)代碼。區(qū)塊鏈腳本語(yǔ)言可以例如是script語(yǔ)言。腳本語(yǔ)言可被設(shè)置為與區(qū)塊鏈協(xié)議一起使用。腳本語(yǔ)言可以包括加密操作碼、算術(shù)操作碼和堆棧操縱操作碼。

9、區(qū)塊鏈腳本語(yǔ)言可以在功能上受限制。其可在語(yǔ)法/解釋程序被設(shè)置允許或處理的功能方面受限制。其可能不固有地支持復(fù)雜控制流比如遞歸、復(fù)雜選擇結(jié)構(gòu)和/或循環(huán)。

10、另外或作為替代,可以提供一種方法,該方法被設(shè)置為使得能夠在區(qū)塊鏈平臺(tái)上執(zhí)行以高級(jí)語(yǔ)言(hll)編寫(xiě)的一部分源代碼,或便利于該執(zhí)行。源代碼可被設(shè)置為實(shí)現(xiàn)智能合約。智能合約可以是機(jī)器可讀且可執(zhí)行的應(yīng)用程序,可在區(qū)塊鏈上執(zhí)行,如現(xiàn)有技術(shù)已知的那樣。

11、該方法可以包括步驟:接收該一部分源代碼作為輸入。其可以由軟件實(shí)施的編譯器來(lái)接收。

12、該方法可以包括步驟:生成輸出腳本。這可以是如上所述的區(qū)塊鏈兼容的腳本。其可以包括從功能上受限制的區(qū)塊鏈腳本語(yǔ)言選擇的和/或其固有的多個(gè)操作碼。該腳本語(yǔ)言可以如上所述。在執(zhí)行時(shí),該腳本可以至少部分地提供源代碼中指定的功能。

13、該方法可以包括步驟:提供或使用被設(shè)置為執(zhí)行上述任何方法實(shí)施方式的編譯器。可通過(guò)執(zhí)行靜態(tài)編譯來(lái)生成輸出腳本。

14、使用靜態(tài)編譯提供了如下優(yōu)點(diǎn):產(chǎn)生的腳本將總是停止。這不僅在運(yùn)行時(shí)提供了實(shí)際的好處,而且使本發(fā)明能用作驗(yàn)證工具,因?yàn)槿绻谠创a中遇到了某種類(lèi)型的錯(cuò)誤或無(wú)效結(jié)構(gòu),區(qū)塊鏈編譯器將停止。在腳本開(kāi)發(fā)期間能夠使用驗(yàn)證工具這一優(yōu)勢(shì)意味著:編程任務(wù)通過(guò)減少程序員時(shí)間和工作量得到增強(qiáng)。進(jìn)一步,區(qū)塊鏈編譯器提供了一種安全性的解決方案,因?yàn)槠鋵?duì)缺陷和溢出錯(cuò)誤進(jìn)行測(cè)試,這使得用戶(程序員)能夠靜態(tài)地測(cè)試程序是否將執(zhí)行且安全地執(zhí)行。

15、區(qū)塊鏈腳本語(yǔ)言可以受限制,使得其不通過(guò)基于跳轉(zhuǎn)的循環(huán)或其他遞歸編程結(jié)構(gòu)固有地支持復(fù)雜控制流結(jié)構(gòu)或遞歸。生成輸出腳本的步驟可以包括展開(kāi)源代碼中提供的至少一個(gè)循環(huán)結(jié)構(gòu)。該方法可以包括步驟:提供或使用解釋程序或虛擬機(jī),其被設(shè)置成將輸出腳本轉(zhuǎn)換成可在區(qū)塊鏈平臺(tái)上執(zhí)行的形式。

16、該方法還可以包括步驟:至少一次優(yōu)化輸出腳本,從而提供更高效或簡(jiǎn)化版本的輸出腳本。這可以包括使用無(wú)導(dǎo)數(shù)優(yōu)化(derivative?free?optimisation,dfo)。dfo是本領(lǐng)域已知的術(shù)語(yǔ),容易為本領(lǐng)域技術(shù)人員所理解。另外或作為替代,生成輸出腳本的步驟可以包括使用無(wú)導(dǎo)數(shù)優(yōu)化。

17、區(qū)塊鏈編譯器可被設(shè)置為形成軟件開(kāi)發(fā)工具包(sdk)的一部分和/或結(jié)合軟件開(kāi)發(fā)工具包一起操作。sdk可以包括編輯器、調(diào)適器和已知與sdk一起使用的其他組件,以便利于生成基于代碼的解決方案。

18、hll可以包括至少一個(gè)原語(yǔ)(primitive)、運(yùn)算符或結(jié)構(gòu),其可被直接轉(zhuǎn)換為區(qū)塊鏈腳本語(yǔ)言固有的一個(gè)或更多個(gè)原語(yǔ)/命令/操作碼。

19、區(qū)塊鏈腳本語(yǔ)言可以是基于堆棧的。其可以被設(shè)置成操縱一個(gè)或多個(gè)堆棧。hll可以包括一個(gè)或更多個(gè)原語(yǔ)或運(yùn)算符,該原語(yǔ)或運(yùn)算符被設(shè)置成導(dǎo)致在腳本語(yǔ)言使用的堆棧上執(zhí)行操作。

20、hll可以包括如下原語(yǔ)或結(jié)構(gòu),該原語(yǔ)或結(jié)構(gòu)被設(shè)置成將至源代碼的輸入的數(shù)量推到區(qū)塊鏈腳本語(yǔ)言進(jìn)行內(nèi)存分配而使用的堆棧上。hll可以包括一個(gè)或更多個(gè)原語(yǔ),該一個(gè)或更多個(gè)原語(yǔ)被設(shè)置成導(dǎo)致執(zhí)行加密運(yùn)算或功能、算術(shù)運(yùn)算和/或循環(huán)。

21、hll可以包括以下原語(yǔ)或運(yùn)算符或其各個(gè)功能等同物中的至少一個(gè):

22、initiate;

23、declare;

24、increment;

25、if;

26、while;

27、populate;

28、monus;

29、reset;

30、rawscript;

31、abort;

32、retrieve;

33、hash,hash?160,或其他hash操作或其變體。

34、另外或作為替代,本公開(kāi)可以提供一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括以下步驟:接收一部分源代碼作為輸入,其中所述一部分源代碼以高級(jí)語(yǔ)言(hll)編寫(xiě)、并指定功能;以及,生成輸出腳本,所述輸出腳本包括多個(gè)操作碼(op_code),其是從功能受限的區(qū)塊鏈腳本語(yǔ)言中選擇的、和/或?qū)τ诠δ苁芟薜膮^(qū)塊鏈腳本語(yǔ)言是所固有的,以使所述輸出腳本在執(zhí)行時(shí)至少部分地提供所述一部分源代碼中所指定的功能;其中,所述功能受限的區(qū)塊鏈腳本語(yǔ)言對(duì)于遞歸編程結(jié)構(gòu)的支持是受限制的(restricted?from,或者說(shuō),不支持遞歸編程結(jié)構(gòu))。

35、可選地,所述的生成輸出腳本的步驟包括:展開(kāi)所述一部分源代碼中提供的至少一個(gè)循環(huán)結(jié)構(gòu),其中所述循環(huán)結(jié)構(gòu)包括代碼塊、條件、和最大迭代次數(shù)。

36、可選地,所述循環(huán)結(jié)構(gòu)是while循環(huán)。

37、可選地,所述的展開(kāi)所述循環(huán)構(gòu)造包括:在所述輸出腳本中復(fù)制一個(gè)或多個(gè)操作碼命令(op_code?command),復(fù)制次數(shù)等于所述最大迭代次數(shù)地,所述一個(gè)或多個(gè)操作碼命令測(cè)試條件,其隨后是代表在op_if/op_endif對(duì)中所嵌入的代碼塊的功能的操作碼序列。

38、可選地,所述條件是可評(píng)估表達(dá)式,所述可評(píng)估表達(dá)式可解析為true或false。

39、可選地,所述方法還包括:執(zhí)行所述輸出腳本;其中,所述功能受限的區(qū)塊鏈腳本語(yǔ)言是基于堆棧的;并且,在所述輸出腳本的執(zhí)行期間,測(cè)試所述條件的一個(gè)或多個(gè)操作碼命令將會(huì)評(píng)估為true或false結(jié)果、并將所述true或false結(jié)果放置在堆棧頂部;并且其中,當(dāng)true結(jié)果位于堆棧頂部時(shí),op_if語(yǔ)句的執(zhí)行將會(huì)選擇性地執(zhí)行復(fù)制的代碼塊,當(dāng)false結(jié)果位于堆棧頂部時(shí),op_if語(yǔ)句的執(zhí)行將繞過(guò)復(fù)制的代碼塊的執(zhí)行。

40、可選地,所述最大迭代次數(shù)由所述循環(huán)結(jié)構(gòu)中指定的參數(shù)來(lái)定義。

41、本公開(kāi)可以提供一種方法,該方法包括以下步驟:使用靜態(tài)編譯將一部分源代碼轉(zhuǎn)換成與區(qū)塊鏈兼容的腳本。靜態(tài)編譯可以包括循環(huán)展開(kāi)的步驟。

42、該一部分的源代碼可以包括至少一個(gè)高級(jí)編程結(jié)構(gòu)。可以通過(guò)將高級(jí)編程結(jié)構(gòu)轉(zhuǎn)換成屬于功能上受限制的區(qū)塊鏈腳本語(yǔ)言的一個(gè)或更多個(gè)操作碼來(lái)生成輸出腳本。輸出腳本的一個(gè)或更多個(gè)操作碼可以被設(shè)置或改寫(xiě),使得通過(guò)區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)執(zhí)行一個(gè)或更多個(gè)操作碼來(lái)實(shí)施源代碼的至少一個(gè)高級(jí)編程結(jié)構(gòu)(的功能)。

43、優(yōu)選地,功能上受限制的區(qū)塊鏈腳本語(yǔ)言不支持循環(huán)結(jié)構(gòu)。優(yōu)選地,至少一個(gè)高級(jí)編程結(jié)構(gòu)包括循環(huán)結(jié)構(gòu)。優(yōu)選地,通過(guò)展開(kāi)循環(huán)結(jié)構(gòu)(loop?construct)(也可稱(chēng)為“循環(huán)結(jié)構(gòu)(looping?construct)”)生成腳本。優(yōu)選地,循環(huán)結(jié)構(gòu)包括代碼塊和指定迭代次數(shù)的實(shí)際參數(shù)argument,以及展開(kāi)循環(huán)結(jié)構(gòu)包括以上述迭代次數(shù)編寫(xiě)用于代碼塊的功能的操作碼。

44、該方法還可以包括以下步驟:檢查循環(huán)結(jié)構(gòu)的語(yǔ)法,從而確保循環(huán)結(jié)構(gòu)包括指定迭代次數(shù)的實(shí)際參數(shù)argument,且確保該實(shí)際參數(shù)argument滿足指定最大迭代次數(shù)的約束。

45、循環(huán)結(jié)構(gòu)可以包括代碼塊和用于基于至少一個(gè)變量來(lái)指定循環(huán)結(jié)構(gòu)的迭代次數(shù)的條件。優(yōu)選地,展開(kāi)循環(huán)結(jié)構(gòu)包括:結(jié)合編寫(xiě)操作碼命令,復(fù)制用于代碼塊的功能的操作碼,基于使用根據(jù)輸出腳本的執(zhí)行確定的變量值而對(duì)條件的評(píng)估,上述操作碼命令以最大迭代次數(shù)選擇性執(zhí)行復(fù)制的用于代碼塊的功能的操作碼。

46、根據(jù)本公開(kāi),提供一種計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),該計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)被設(shè)置成實(shí)現(xiàn)此處描述的任何方法實(shí)施方式的步驟。

47、根據(jù)本公開(kāi)的實(shí)施方式的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)可以包括編譯器。編譯器可以被設(shè)置為接收一部分源代碼作為輸入。源代碼可以用高級(jí)語(yǔ)言(hll)編寫(xiě)。編譯器可以被設(shè)置為生成輸出腳本。輸出腳本可以被稱(chēng)為“區(qū)塊鏈腳本”或“區(qū)塊鏈兼容腳本”,并且可以包括多個(gè)操作碼。可以從如上所述的功能受限的區(qū)塊鏈腳本語(yǔ)言中選擇這些操作碼,和/或這些操作碼是該語(yǔ)言固有的,以使得在執(zhí)行時(shí),腳本至少部分地提供源代碼中指定的功能。

48、該系統(tǒng)可以包括軟件開(kāi)發(fā)工具包(sdk)。編譯器可以構(gòu)成dsk的一部分。

49、本發(fā)明還提供一種系統(tǒng)(例如計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)),包括:

50、處理器;以及

51、包括可執(zhí)行指令(例如計(jì)算機(jī)可執(zhí)行指令)的存儲(chǔ)器,該可執(zhí)行指令由于處理器的執(zhí)行而導(dǎo)致系統(tǒng)執(zhí)行本文所述的計(jì)算機(jī)實(shí)現(xiàn)的方法的任何實(shí)施方式。

52、本發(fā)明還提供一種其上存儲(chǔ)有可執(zhí)行指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該可執(zhí)行指令由于由計(jì)算機(jī)系統(tǒng)的處理器執(zhí)行而導(dǎo)致該計(jì)算機(jī)系統(tǒng)至少執(zhí)行在此所述的該計(jì)算機(jī)實(shí)現(xiàn)的方法的實(shí)施方式。

53、以上關(guān)于本公開(kāi)的一個(gè)方面或一個(gè)實(shí)施方式描述的任何特征也可應(yīng)用于一個(gè)或更多個(gè)其他方面或?qū)嵤┓绞健jP(guān)于本公開(kāi)的方法描述的任何特征可同等地應(yīng)用于根據(jù)本公開(kāi)的系統(tǒng),反之亦然。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 凤城市| 广南县| 侯马市| 磐石市| 分宜县| 鄂伦春自治旗| 疏勒县| 建始县| 清徐县| 北票市| 澄城县| 正镶白旗| 荣成市| 焉耆| 高平市| 乌鲁木齐县| 新郑市| 黑山县| 乐山市| 利辛县| 晋江市| 汉源县| 福建省| 建德市| 乌苏市| 灵台县| 工布江达县| 九江市| 天长市| 兴隆县| 大埔县| 河北省| 灵台县| 杨浦区| 安徽省| 当涂县| 闽清县| 公主岭市| 全椒县| 屏东市| 英超|