TW201911032A - 智慧合約處理方法及裝置 - Google Patents
智慧合約處理方法及裝置 Download PDFInfo
- Publication number
- TW201911032A TW201911032A TW107126301A TW107126301A TW201911032A TW 201911032 A TW201911032 A TW 201911032A TW 107126301 A TW107126301 A TW 107126301A TW 107126301 A TW107126301 A TW 107126301A TW 201911032 A TW201911032 A TW 201911032A
- Authority
- TW
- Taiwan
- Prior art keywords
- smart contract
- file
- class
- call request
- request
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Mining & Analysis (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本發明一實施例公開了一種智慧合約處理方法及裝置。該處理方法包括:基於與待調用的智慧合約所對應的類文件執行該待調用的智能合約;其中,該類文件基於該待調用的智慧合約的程式邏輯預先編譯而成。通過採用本發明實施例所提供的技術方案,支援Java語言開發智慧合約,不需要額外開發編譯器、解譯器,基本保留了Java語言的所有功能,易於接入使用。
Description
本發明屬於電腦資料處理領域,尤其是關於一種智慧合約處理方法及裝置。
智慧合約是一套以數位形式定義的承諾,合約參與方可以在上面執行這些承諾的協議。智慧合約的本身與合約執行過程能夠被觀察,並且合約執行的過程與判決都能夠被驗證。智慧合約的本身及與合約相關的資訊只有相關的合約方才能夠接觸,當發生衝突的時候才會把相關資訊暴露給第三方審查。
區塊鏈技術是基於去中心化的對等網路,將密碼學原理與共識機制相結合,來保障分散式各節點的資料連貫和持續,實現資訊即時驗證、可追溯、難篡改和無法遮罩,從而創造了一套隱私、高效、安全的共用價值體系。智慧合約是指由區塊鏈技術提供的實現複雜功能的去中心化應用技術。智慧合約由高階語言編寫,經對應的編譯器編譯之後生成區塊鏈能夠識別並執行的編碼,部署在區塊鏈之中,提供對應的功能。
用於執行智慧合約的系統或者模組,一般稱為智慧合約的執行引擎。現有的智慧合約執行引擎主要通過創建一種指令碼語言及其解譯 器來實現,存在以下問題:(1)學習成本高,開發人員為了使用這類區塊鏈,還需要學習這個對應的指令碼語言;(2)不具備普適性,一般來說,一種指令碼語言只能在特定的區塊鏈平臺上使用;(3)功能有限,這類指令碼語言僅能支持簡單的運算,難以滿足商用、工程級別的需求。
因此,亟需一種能夠克服上述缺陷的智慧合約處理方法以及對應的裝置。
本發明針對上述問題,提出一種智慧合約處理方法及裝置。
根據本發明的一個方面,提供一種用於在多節點系統中對智慧合約進行處理的方法,包括:基於針對待調用的智慧合約的調用請求確定該智能合約所對應的類文件;以及基於該類文件執行該智慧合約;其中,該類文件基於該智慧合約的程式邏輯預先編譯而成。
在本發明一實施例中,該類文件包括指令和與該指令相對應的計數器;其中,該基於該類文件執行該智慧合約包括:利用該計數器對該指令的執行次數進行計數,當該執行次數大於預設次數時,停止執行該指令。
在本發明一實施例中,該類文件包括多個該指令,每個該指令設置有對應的權重;其中,該權重的值越大,與該權重對應的該指令的該預設次數越少。
在本發明一實施例中,該基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件包括:基於該調用請求在類文件庫中 查找與該智能合約所對應的類文件。
在本發明一實施例中,該基於該調用請求在類文件庫中查找與待調用的該智慧合約所對應的類文件包括:獲取該調用請求中用於指示該智慧合約的標識資訊;以及根據該標識資訊在該類文件庫中查找與該智能合約所對應的類文件。
在本發明一實施例中,該基於針對待調用的智慧合約的調用請求確定該待調用的智慧合約所對應的類文件包括:根據該調用請求中用於指示該智慧合約的標識資訊生成滿足該調用請求的該類文件。
在本發明一實施例中,該基於該類文件執行該智慧合約包括:對該類文件進行產生實體,並且確定該調用請求中的函數和參數;以及基於經產生實體的該類文件以及該函數和參數來執行該智慧合約。
在本發明一實施例中,在基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件之前,該用於在多節點系統中對智慧合約進行處理的方法進一步包括:確定該調用請求合法。
在本發明一實施例中,該確定該調用請求合法包括:對該調用請求的格式進行共識,當所有節點都認為該調用請求的格式為合法時,確定該調用請求合法。
在本發明一實施例中,該類文件預先部署在該多節點系統中,其中,該類文件的部署過程包括:通過類載入器載入待部署的該類文件;以及當確定該類文件中並未包括非確定性類和/或非確定性函數時,部署該類文件以形成類文件庫。
在本發明一實施例中,該類文件的部署過程進一步包括:當 確定該類文件中並未包括非確定性類和/或非確定性函數時,在該類文件中設置與指令對應的計數器,其中,該計數器用於在該智慧合約執行的過程中對該指令的執行次數計數。
在本發明一實施例中,在部署該類文件之前,該用於在多節點系統中對智慧合約進行處理的方法進一步包括:確定部署該類文件的部署請求合法。
在本發明一實施例中,該確定部署該類文件的部署請求合法包括:對該部署請求的格式進行共識,當所有節點都認為該部署請求的格式為合法時,確定該調用請求合法。
根據本發明的另一個方面,還提供一種用於在多節點系統中對智慧合約進行處理的裝置,包括:確定模組,配置為基於針對待調用的智慧合約的調用請求確定該智能合約所對應的類文件;以及執行模組,配置為基於與待調用的智慧合約所對應的類文件執行該待調用的智能合約;其中,該類文件基於該待調用的智慧合約的程式邏輯預先編譯而成。
在本發明一實施例中,該類文件包括指令和與該指令相對應的計數器;其中,該執行模組進一步配置為:利用該計數器對該指令的執行次數進行計數,當該執行次數大於預設次數時,停止執行該指令。
在本發明一實施例中,該類文件包括多個該指令,每個該指令設置有對應的權重;其中,該權重的值越大,與該權重對應的該指令的該預設次數越少。
在本發明一實施例中,該確定模組進一步配置為:基於該調用請求在類文件庫中查找與該智能合約所對應的類文件。
在本發明一實施例中,該確定模組進一步配置為:獲取該調用請求中用於指示該智慧合約的標識資訊;以及根據該標識資訊在該類文件庫中查找與該智能合約所對應的類文件。
在本發明一實施例中,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:生成模組,配置為根據該調用請求中用於指示該智慧合約的標識資訊生成滿足該調用請求的該類文件。
在本發明一實施例中,該執行模組進一步配置為:對該類文件進行產生實體,並且確定調用該智慧合約的調用請求中的函數和參數;以及基於經產生實體的該類文件以及該函數和參數來執行該調用請求所調用的該智能合約。
在本發明一實施例中,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:第一驗證模組,配置為在基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件之前,確定調用該智慧合約的調用請求合法。
在本發明一實施例中,該第一驗證模組進一步配置為:對該調用請求的格式進行共識,當所有節點都認為該調用請求的格式為合法時,確定該調用請求合法。
在本發明一實施例中,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:部署模組,配置為通過類載入器載入待部署的該類文件;以及當確定該類文件中並未包括非確定性類和/或非確定性函數時,部署該類文件以形成類文件庫。
在本發明一實施例中,該部署模組進一步配置為:當確定該 類文件中並未包括非確定性類和/或非確定性函數時,在該類文件中設置與指令對應的計數器,其中,該計數器用於在該智慧合約執行的過程中對該指令的執行次數計數。
在本發明一實施例中,該部署模組進一步配置為:在本地節點處或在與該本地節點通信連接的存放裝置中部署該類文件,以形成類文件庫。
在本發明一實施例中,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:第二驗證模組,配置為在該部署模組部署該類文件之前,確定部署該類文件的部署請求合法。
在本發明一實施例中,該第二驗證模組進一步配置為:對該部署請求的格式進行共識,當所有節點都認為該部署請求的格式為合法時,確定該調用請求合法。
根據本發明的另一個方面,還提供一種在多節點系統中對智慧合約進行部署的方法,包括:獲取包括智慧合約類文件的部署請求,其中,該部署請求包括類文件,該類文件基於待部署的智慧合約的程式邏輯預先編譯而成;以及當確定該類文件中並未包括非確定性類和/或非確定性函數時,將該類文件部署在該多節點系統中。
在本發明一實施例中,該類文件的部署過程進一步包括:當確定該類文件中並未包括非確定性類和/或非確定性函數時,在該類文件中設置與指令對應的計數器,其中,該計數器用於在該智慧合約執行的過程中對該指令的執行次數計數。
在本發明一實施例中,該類文件部署在本地節點處或部署在 與該本地節點通信連接的存放裝置中,以形成類文件庫。
在本發明一實施例中,在部署該類文件之前,該在多節點系統中對智慧合約進行部署的方法進一步包括:確定部署該類文件的部署請求合法。
在本發明一實施例中,該確定部署該類文件的部署請求合法包括:對該部署請求的格式進行共識,當所有節點都認為該部署請求的格式為合法時,確定該調用請求合法。
根據本發明的另一個方面,還提供一種在多節點系統中對智慧合約進行部署的裝置,包括:獲取模組,配置為獲取部署請求,其中,該部署請求包括類文件,該類文件基於待部署的智慧合約的程式邏輯預先編譯而成;以及部署執行模組,配置為當確定該類文件中並未包括非確定性類和/或非確定性函數時,將該類文件部署在該多節點系統中。
在本發明一實施例中,該部署執行模組進一步配置為:當確定該類文件中並未包括非確定性類和/或非確定性函數時,在該類文件中設置與指令對應的計數器,其中,該計數器用於在該智慧合約執行的過程中對該指令的執行次數計數。
在本發明一實施例中,該部署執行模組進一步配置為:在本地節點處或在與該本地節點通信連接的存放裝置中部署該類文件,以形成類文件庫。
在本發明一實施例中,第三驗證模組,配置為在部署該類文件之前,確定部署該類文件的部署請求合法。
在本發明一實施例中,該第三驗證模組進一步配置為:對該 部署請求的格式進行共識,當所有節點都認為該部署請求的格式為合法時,確定該調用請求合法。
根據本發明的另一個方面,還提供一種電腦設備,包括記憶體、處理器以及存儲在該記憶體上被該處理器執行的電腦程式,其特徵在於,該處理器執行該電腦程式時實現如前任一所述的用於在多節點系統中對智慧合約進行處理的方法的步驟,或任一所述的在多節點系統中對智慧合約進行部署的方法的步驟。
根據本發明的另一個方面,還提供一種電腦可讀存儲介質,其上存儲有電腦程式,其特徵在於,該電腦程式被處理器執行時實現如前任一所述的用於在多節點系統中對智慧合約進行處理的方法的步驟,或任一所述的在多節點系統中對智慧合約進行部署的方法的步驟。
通過實施本發明的技術方案,可以基於Java語言開發智慧合約,同時具有確定性計算、有限計算的特點,不需要額外開發編譯器、解譯器,基本保留了Java語言的所有功能,易於接入使用,適合推廣。
101~102、1021~1022、101'、401~403、501、1201~1202、1301、1401‧‧‧步驟
S601~S608、S1501~S1507‧‧‧步驟
300‧‧‧處理裝置
301‧‧‧調用請求接收單元
302‧‧‧調用請求分析單元
303‧‧‧類文件選擇單元
304‧‧‧執行單元
700‧‧‧類文件
701‧‧‧確定模組
702‧‧‧執行模組
703‧‧‧生成模組
704‧‧‧第一驗證模組
705‧‧‧部署模組
706‧‧‧第二驗證模組
1601‧‧‧獲取模組
1602‧‧‧部署執行模組
1603‧‧‧第三驗證模組
參考附圖示出並闡明實施例。這些附圖用於闡明基本原理,從而僅僅示出了對於理解基本原理必要的方面。這些附圖不是按比例的。在附圖中,相同的附圖標記表示相似的特徵。
圖1所示為本發明一實施例提供的一種用於在多節點系統中對智慧合約進行處理的方法的流程示意圖。
圖2所示為本發明一實施例提供的一種用於在多節點系統中對智慧合約進行處理的方法中執行待調用的智慧合約的流程示意圖。
圖3所示為本發明另一實施例提供的一種用於在多節點系統中對智慧合約進行處理的方法的流程示意圖。
圖4所示為本發明另一實施例提供的一種用於在多節點系統中對智慧合約進行處理的方法的流程示意圖。
圖5所示為本發明另一實施例提供的一種用於在多節點系統中對智慧合約進行處理的方法的流程示意圖。
圖6所示為發明一實施例所提供的智慧合約的調用方法的流程圖。
圖7所示為本發明一實施例提供一種用於在多節點系統中對智慧合約進行處理的裝置的結構示意圖。
圖8所示為本發明另一實施例提供一種用於在多節點系統中對智慧合約進行處理的裝置的結構示意圖。
圖9所示為本發明另一實施例提供一種用於在多節點系統中對智慧合約進行處理的裝置的結構示意圖。
圖10所示為本發明另一實施例提供一種用於在多節點系統中對智慧合約進行處理的裝置的結構示意圖。
圖11為本發明一實施例提供的用於在多節點系統中對智慧合約進行處理的裝置的架構示意圖。
圖12為本發明一實施例提供的一種在多節點系統中對智慧合約進行部署的方法的流程示意圖。
圖13為本發明另一實施例提供的一種在多節點系統中對智慧合約進行 部署的方法的流程示意圖。
圖14為本發明另一實施例提供的一種在多節點系統中對智慧合約進行部署的方法的流程示意圖。
圖15a為本發明一實施例提供的智慧合約的部署方法的流程圖。
圖15b為本發明一實施例提供的類文件的結構示意圖。
圖16所示為本發明一實施例提供的一種在多節點系統中對智慧合約進行部署的裝置的結構示意圖。
圖17所示為本發明另一實施例提供的一種在多節點系統中對智慧合約進行部署的裝置的結構示意圖。
在以下優選的實施例的具體描述中,將參考構成本發明一部分的所附的附圖。所附的附圖通過示例的方式示出了能夠實現本發明的特定的實施例。示例的實施例並不旨在窮盡根據本發明的所有實施例。可以理解,在不偏離本發明的範圍的前提下,可以利用其他實施例,也可以進行結構性或者邏輯性的修改。因此,以下的具體描述並非限制性的,且本發明的範圍由所附的申請專利範圍所限定。
對於相關領域普通技術人員已知的技術、方法和設備可能不作詳細討論,但在適當情況下,該技術、方法和設備應當被視為說明書的一部分。對於附圖中的各單元之間的連線,僅僅是為了便於說明,其表示至少連線兩端的單元是相互通信的,並非旨在限制未連線的單元之間無法通信。
首先,對本發明所涉及的名詞和相關技術進行闡述。Java語言是一種高級程式設計語言,類文件(Class file)是Java原始程式碼經過編譯後的產物,承載了具體的程式邏輯。運行Java程式的環境叫做Java虛擬機器(JVM)。Java虛擬機器提供了類載入(Class Loading)機制,通過該機制,可以對Java運行時的類文件進行管理,實現該機制的功能模組稱為類載入器(Class Loader)。確定性函數是指每次使用特定的輸入值集來被調用時,確定性函數總是返回相同的值;對應地,如果返回不同的結果,則該函數為非確定性函數。
圖1所示為本發明一實施例提供的一種用於在多節點系統中對智慧合約進行處理的方法的流程示意圖。如圖1所示,該方法包括如下步驟:步驟101:基於針對待調用的智慧合約的調用請求確定該智能合約所對應的類文件(Class file)。該類文件基於待調用的智慧合約的程式邏輯預先編譯而成;步驟102:基於該類文件執行待調用的智慧合約。具體的執行過程可包括:先對類文件進行產生實體,並且確定調用智慧合約的調用請求中的函數和參數;然後基於經產生實體的類文件以及函數和參數來執行調用請求所調用的智能合約。
由此可見,本發明實施例其實提供了一種基於Java虛擬機器的智慧合約執行系統(執行引擎)以及與該系統相對應的流程和演算法。採用該執行系統的區塊鏈平臺,能夠支援使用Java語言開發智慧合約。更進一步地,能夠支援運行在Java虛擬機器上的所有語言(也稱為JVM語言), 包括Scala,Groovy,Jython等。由於智慧合約的程式邏輯被編譯成了基於Java語言實現的類文件,因此就實現基於Java語言開發智慧合約,不再需要額外開發編譯器、解譯器。開發人員採用Java語言功能即可實現區塊鏈技術的開發和使用,易於接入以滿足工程級別應用、易於商業使用,且適合市場推廣。
應當理解,由於類文件為根據智慧合約編譯而成,因此類文件的內容其實包括了智慧合約的程式邏輯內容,因此在後面有些實施例的描述中,並未對類文件的概念和智能合約的概念做嚴格邏輯區分。例如,當要實現對智慧合約的調用、執行以及部署時,實際上是在執行對類文件的調用、執行以及部署。
在本發明一實施例中,由於發明人通過研究發現,當結合區塊鏈技術來實現智慧合約時,智慧合約需要滿足如下要求:計算是有限的,不應該出現閉環和無限遞迴。因此,類文件可包括指令和與指令相對應的計數器。此時如圖2所示,在執行待調用的智慧合約時,可包括如下步驟:步驟1021:利用該計數器對指令的執行次數進行計數;步驟1022:當執行次數大於預設次數時,則停止執行指令。
例如,假設待調用的智慧合約所對應的類文件包括指令1和指令2,指令1的執行次數為1,指令2的執行次數為3。假設指令2為待調用的指令,則指令2每執行一次,指令2的計數器便增加計數一次。如此,如果將對指令2的預設次數設置為4,則該類文件能夠完全執行;反之,如果將對指令2的預設次數設置為2,則該類文件將無法完全執行或是輸出提示錯誤的結果。
在一種實施方式中,還可以為不同指令賦予不同的「權重」。權重的值越大,與權重對應的指令的預設次數越少。通過調整相應的指令的權重,可以對指令的執行次數進行相應地限定。譬如,通過提升指令2的權重,指令2被允許執行的次數將進一步地減少;同樣,通過降低指令2的權重,指令2被允許執行的次數將得到提升。
因此,通過對指令的計數來防止某一用戶/節點故意或因故障而產生對某一指令的大量重複的調用,保證了區塊鏈的有限計算的特點。例如,在競標系統中,通過在對應於撤回競標操作的指令的後面增添計數器,可以防止用戶惡意地反復撤回競標,避免整個競標系統的因某一個使用者的操作而導致癱瘓或無法正常工作。可以理解的,計數器可以根據具體的應用而設置於不同的位置。
在本發明一實施例中,由於發明人通過研究發現,當結合區塊鏈技術來實現智慧合約時,智慧合約還需要滿足如下要求:在不同的節點上,在不同的時間,相同的輸入可以得到相同的輸出,或稱為確定性計算。因此,可在將類文件預先部署在多節點系統中時,剔除包括非確定性類和/或非確定性函數的類文件,以保證可被執行的類文件都可實現確定性計算。具體而言,類文件的部署過程可包括如下步驟:通過例如類載入器來載入待部署的類文件,以判斷該類文件是否使用了非確定性的函數。如果該類文件中存在任意一個類產生了對非確定性函數的調用,則停止部署該智慧合約,進而提示部署失敗。如果判別出該智慧合約的類文件並未使用非確定性的函數,則部署該類文件。本領域的技術人員能夠理解的是,在不同的應用中,可以存在不同方式的提示,譬如,將部署失敗的結果返 回給用戶,從而告知(譬如,經由使用者可視的介面)其所提交的智慧合約無法部署到區塊鏈中。
在本發明一實施例中,當考慮到既要滿足智慧合約的確定性計算要求,又要滿足有限計算要求時,在對類文件進行部署時,可在當確定類文件中並未包括非確定性類和/或非確定性函數時,再在類文件中設置與指令對應的計數器。具體而言,可通過基於類載入器和位元組碼增強器來對智慧合約的類文件進行處理,其中,類載入器用於判別載入的類文件是否含有非確定性的函數,並基於此能力拒絕載入含有非確定性函數的類;位元組碼增強器用於分析和修改類文件,在類文件被執行的過程中,對類文件中各個被調用的指令進行計數。編寫好的智慧合約經過編譯後,將通過P2P或其它傳輸方式在多節點系統(譬如,區塊鏈)中擴散,每個節點都會收到該智慧合約的類文件。區塊鏈中的節點(譬如,驗證節點)會依據指定的規則對收到的類文件進行共識,或者將收到的合約先保存到記憶體中,等待新一輪的共識時間,觸發對該份合約的共識和處理。可以理解的,本發明中的共識可以針對一個或多個類文件。
在本發明一實施例中,為了提高類文件部署操作的可靠性,在部署類文件之前,需要先確定部署該類文件的部署請求合法。具體而言,接收到該部署請求的節點可對該部署請求進行合法性檢驗,以確定合法的部署請求。合法性檢驗是對該部署請求進行形式上的檢驗,也就是說,上述節點將對該部署請求的格式或其它參數進行檢測,進而判斷該部署請求是否是合法的部署請求,例如,判斷該請求的格式是否適用於當前的區塊鏈。可以理解的是,其它判斷規則的合法性檢驗也適用。
在一進一步實施例中,對於區塊鏈,上述合法性檢驗可以通過共識的機制來執行。具體而言,可對部署請求的格式進行共識,當所有節點都認為部署請求的格式為合法時,確定調用請求合法。通過PoW、PoS、PBFT或者其它共識演算法,讓多個接收到該部署請求的節點對該部署請求進行合法性檢驗,進而確定該部署請求對於當前的區塊鏈是否為合法的部署請求。基於共識的結果,將產生不同的操作。具體而言,如果共識的結果指示該部署請求不是合法的部署請求(譬如,該部署請求的格式不符合要求),則結束該智能合約的部署;如果共識的結果指示該部署請求是合法的部署請求(譬如但不限於,該部署請求的格式符合該區塊鏈對部署請求的格式要求),則執行後續的類文件部署操作。
在本發明一實施例中,如圖3所示,當類文件被預先部署到一個類文件庫中時(例如部署到本地節點處或部署在與本地節點通信連接的存放裝置中),要基於調用請求在類文件庫中查找與待調用的智能合約所對應的類文件(步驟101'),再基於該查找到的類文件執行該智慧合約。
在一進一步實施例中,如圖4所示,當調用智慧合約的調用請求中包括了用於指示智慧合約的標識資訊時,可先獲取調用請求中的標識資訊(步驟401),再根據該標識資訊在類文件庫中查找與待調用的智能合約所對應的類文件(步驟402)。如未在類文件庫中查找到該標識資訊所指向的類文件,則停止調用並提示調用失敗(步驟403)。如果能夠在類文件庫中查找到標識資訊所指示的類文件,則進行後續智慧合約的執行操作。
在本發明另一實施例中,與待調用的智慧合約所對應的類文 件也可以是在接收到調用請求時才進行部署的,具體而言,調用智慧合約的調用請求中可能包括了一些程式邏輯內容,此時則需要根據調用請求中的標識資訊來生成滿足該調用請求的類文件。
在本發明一實施例中,如圖5所示,為了提高調用智慧合約操作的可靠性,可在基於類文件執行智慧合約之前,先確定調用該智慧合約的調用請求合法(步驟501)。具體而言,接收到該調用請求的節點將對該調用請求進行合法性檢驗。節點將對該調用請求的格式或其它參數進行檢測,進而判斷該調用請求是否是合法的調用請求。例如,判斷該請求的格式是否適用於當前的區塊鏈。
在一進一步實施例中,上述對智慧合約的調用請求的合法性檢驗也可以通過共識的機制來執行。對調用請求的格式進行共識,當所有節點都認為調用請求的格式為合法時,確定調用請求合法。譬如,可以通過PoW、PoS、PBFT或者其它共識演算法,讓多個接收到該調用請求的節點對該調用請求進行合法性檢驗,進而確定該到調用請求對於當前的區塊鏈是否為合法的調用請求。基於合法性檢驗的判斷結果,將產生對應的操作。具體而言,如果該調用請求不是合法的調用請求,則結束該智慧合約的調用。譬如,將調用失敗的結果返回給用戶,從而在使用者可視的介面上告知其欲調用的智慧合約缺失或無法調用。如果該調用請求是合法的調用請求(譬如但不限於,該調用請求的格式符合該區塊鏈對調用請求的格式要求),則執行後續智慧合約的執行操作。
圖6所示為發明一實施例所提供的智慧合約的調用方法的流程圖。如圖6所示,該方法包括如下步驟: 步驟S601:獲取智能合約的調用請求,在該步驟中,區塊鏈中的多個節點將接收到智能合約的調用請求。在此實施例中,該調用請求具有特定格式。可以理解的,調用請求可以先由某個節點接收到,然後通過該節點以P2P的方式發送到區塊鏈中的多個節點;步驟S602,判斷調用請求是否具備合法性,在該步驟中,接收到該調用請求的節點將對該調用請求進行合法性檢驗。在此實施例中,上述節點將對該調用請求的格式或其它參數進行檢測,進而判斷該調用請求是否是合法的調用請求。例如,判斷該請求的格式是否適用於當前的區塊鏈。
步驟S602可以通過共識的機制來執行。譬如,可以通過PoW、PoS、PBFT或者其它共識演算法,讓多個接收到該調用請求的節點對該調用請求進行合法性檢驗,進而確定該到調用請求對於當前的區塊鏈是否為合法的調用請求。
基於步驟S602中的判斷結果,將產生對應的操作。具體而言,如果該調用請求不是合法的調用請求,則結束該智慧合約的調用,執行步驟S609的操作,以提示智慧合約調用失敗。譬如,將調用失敗的結果返回給用戶,從而在使用者可視的介面上告知其欲調用的智慧合約缺失或無法調用。如果該調用請求是合法的調用請求(譬如但不限於,該調用請求的格式符合該區塊鏈對調用請求的格式要求),則執行步驟S603中的操作。
步驟S603:確定對應於調用請求的智慧合約的標識資訊, 在本實施例中,調用請求具備特定的格式,並且還包括所要調用的智慧合約的標識資訊以及對應的函數和參數。在此步驟中,將對合法的調用請求進行分析,確定包含在該合法的調用請求中的、用於指示智慧合約的標識資訊。可以理解的,在此步驟中,還可以確定調用請求中所包含的函數和參數。
步驟S604:判斷是否存在對應於調用請求的智慧合約的類文件,在該步驟中,將基於調用請求中的標識資訊,在類文件庫(即,已經部署的智慧合約的集合)中進行查找,並且根據該查找的結果來確定對應的操作。如未在類文件庫中查找到該標識資訊所指向的類文件,則停止調用並提示調用失敗(步驟S609)。如果能夠在類文件庫中查找到標識資訊所指示的類文件,則進行後續操作。
可以理解的,在一種實施方式中,也可以根據該調用請求來生成相應的類文件。譬如,在獲取該調用請求中所包含的標識資訊後,將通過例如圖1中所示的部署方法或該部署方法的一部分來生成滿足調用請求的類文件。
步驟S605:產生實體智能合約,在該步驟中,將基於步驟S204中所查找到的類文件,來進行智慧合約的產生實體。
步驟S606:確定調用請求中的函數以及參數,在該步驟中,通過對調用請求進行分析來確定調用請求中的函數以及參數。可以理解的,還可以使用基於步驟S603的結果來確定調用請求中的 函數以及參數。
步驟S607:執行智能合約,在該步驟中,將結合步驟S605和S606的操作結果,來調用智慧合約。具體而言,基於經產生實體的類文件以及合法的調用請求中的函數和參數來執行與該合法的調用請求相對應的智慧合約,進而輸出智慧合約的結果(步驟S608)。
可以理解的,雖然上述步驟採用了順序的編號,但本領域技術人員能夠理解的是,上述步驟中的一些步驟的順序也可以進行變動。譬如,可以先執行產生實體智慧合約(步驟S605),後執行確定調用請求中的函數以及參數(步驟S606);也可以先執行步驟S606,後執行步驟S605。
圖7所示為本發明一實施例提供一種用於在多節點系統中對智慧合約進行處理的裝置的結構示意圖。如圖7所示,該裝置包括:確定模組701,配置為基於針對待調用的智慧合約的調用請求確定智能合約所對應的類文件;以及執行模組702,配置為基於該類文件執行待調用的智慧合約;其中,類文件基於待調用的智慧合約的程式邏輯預先編譯而成。
在本發明一實施例中,類文件包括指令和與指令相對應的計數器;其中,執行模組702進一步配置為:利用計數器對指令的執行次數進行計數,當執行次數大於預設次數時,停止執行指令。
在本發明一實施例中,類文件包括多個指令,每個指令設置有對應的權重;中,權重的值越大,與權重對應的指令的預設次數越少。
在本發明一實施例中,確定模組701進一步配置為:基於調用請求在類文件庫中查找與該智能合約所對應的類文件。
在本發明一實施例中,確定模組701進一步配置為:獲取調用請求中用於指示該智慧合約的標識資訊;以及根據標識資訊在類文件庫中查找與智慧合約所對應的類文件。
在本發明一實施例中,如圖8所示,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:生成模組703,配置為根據調用請求中用於指示智慧合約的標識資訊生成滿足該調用請求的類文件。
在本發明一實施例中,執行模組702進一步配置為:對類文件進行產生實體,並且確定調用智慧合約的調用請求中的函數和參數;以及基於經產生實體的類文件以及函數和參數來執行調用請求所調用的智能合約。
在本發明一實施例中,如圖9所示,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:第一驗證模組704,配置為在基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件之前,確定調用智慧合約的調用請求合法。
在本發明一實施例中,第一驗證模組704進一步配置為:對調用請求的格式進行共識,當所有節點都認為調用請求的格式為合法時,確定調用請求合法。
在本發明一實施例中,如圖10所示,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:部署模組705,配置為通過類載入器載入待部署的類文件;以及當確定類文件中並未包括非確定性類和/或非確定性函數時,部署類文件以形成類文件庫。
在本發明一實施例中,部署模組705進一步配置為:當確定 類文件中並未包括非確定性類和/或非確定性函數時,在類文件中設置與指令對應的計數器,其中,計數器用於在智慧合約執行的過程中對指令的執行次數計數。
在本發明一實施例中,部署模組705進一步配置為:在本地節點處或在與本地節點通信連接的存放裝置中部署類文件,以形成類文件庫。
在本發明一實施例中,如圖10所示,該用於在多節點系統中對智慧合約進行處理的裝置進一步包括:第二驗證模組706,配置為在部署模組部署類文件之前,確定部署類文件的部署請求合法。
在本發明一實施例中,第二驗證模組706進一步配置為:對部署請求的格式進行共識,當所有節點都認為部署請求的格式為合法時,確定調用請求合法。
應當理解,上述實施例所提供的用於在多節點系統中對智慧合約進行處理的裝置中記載的每個模組都與前述的用於在多節點系統中對智慧合約進行處理的方法中的一個方法步驟相對應。由此,前述的方法步驟描述的操作和特徵同樣適用於該裝置及其中所包含的對應的模組,重複的內容在此不再贅述。
圖11為本發明一實施例提供的用於在多節點系統中對智慧合約進行處理的裝置的架構示意圖。如圖11所示,該處理裝置300包括調用請求接收單元301、調用請求分析單元302、類文件選擇單元303以及執行單元304。具體地,調用請求接收單元301被配置為被配置為接收針對智慧合約的調用請求,並對該調用請求進行合法性檢驗,以確定合法的調用 請求。調用請求分析單元302與調用請求接收單元301通信連接,並且被配置為對該合法的調用請求進行分析,以獲取該合法的調用請求中的用於指示對應的智慧合約的標識資訊。類文件選擇單元303被配置為基於該標識資訊來確定與該合法的調用請求相對應的智能合約的類文件。基於該標識資訊,類文件選擇單元303將該標識資訊與類文件庫中的各個類文件的標識資訊進行比較,進而選擇對應於該合法的調用請求的類文件。執行單元304被配置為基於由類文件選擇單元303所確定的類文件和調用請求來執行對應的智能合約。具體地,執行單元304對類文件進行產生實體,並結合調用請求中的函數和參數,來實施對應於該合法的調用請求的智能合約。
圖12為本發明一實施例提供的一種在多節點系統中對智慧合約進行部署的方法的流程示意圖。如圖12所示,該方法包括如下步驟:步驟1201:獲取部署請求,其中,該部署請求包括類文件,該類文件基於待部署的智慧合約的程式邏輯預先編譯而成;步驟1202:當確定類文件中並未包括非確定性類和/或非確定性函數時,將類文件部署在多節點系統中。例如,部署在本地節點處或部署在與本地節點通信連接的存放裝置中,以形成類文件庫。
如果該類文件中存在任意一個類產生了對非確定性函數的調用,則停止部署該智慧合約,進而提示部署失敗。如果判別出該智慧合約的類文件並未使用非確定性的函數,則部署該類文件。本領域的技術人員能夠理解的是,在不同的應用中,可以存在不同方式的提示,譬如,將部署失敗的結果返回給用戶,從而告知(譬如,經由使用者可視的介面)其所提交的智慧合約無法部署到區塊鏈中。
由此可見,通過這種類文件部署方式,可在將類文件預先部署在多節點系統中時,剔除包括非確定性類和/或非確定性函數的類文件,以保證可被執行的類文件都可實現確定性計算,滿足當結合區塊鏈技術來實現智慧合約時的如下要求:在不同的節點上,在不同的時間,相同的輸入可以得到相同的輸出。
在本發明一實施例中,如圖13所示,當考慮到既要滿足智慧合約的確定性計算要求,又要滿足有限計算要求時,該在多節點系統中對智慧合約進行部署的方法可進一步包括:當確定類文件中並未包括非確定性類和/或非確定性函數時,在類文件中設置與指令對應的計數器,其中,計數器用於在智慧合約執行的過程中對指令的執行次數計數(步驟1301)。具體而言,可通過基於類載入器和位元組碼增強器來對智慧合約的類文件進行處理,其中,類載入器用於判別載入的類文件是否含有非確定性的函數,並基於此能力拒絕載入含有非確定性函數的類;位元組碼增強器用於分析和修改類文件,在類文件被執行的過程中,對類文件中各個被調用的指令進行計數。編寫好的智慧合約經過編譯後,將通過P2P或其它傳輸方式在多節點系統(譬如,區塊鏈)中擴散,每個節點都會收到該智慧合約的類文件。區塊鏈中的節點(譬如,驗證節點)會依據指定的規則對收到的類文件進行共識,或者將收到的合約先保存到記憶體中,等待新一輪的共識時間,觸發對該份合約的共識和處理。可以理解的,本發明中的共識可以針對一個或多個類文件。
在本發明一實施例中,如圖14所示,為了提高類文件部署操作的可靠性,在部署類文件之前,需要先確定部署該類文件的部署請求 合法(步驟1401)。具體而言,接收到該部署請求的節點可對該部署請求進行合法性檢驗,以確定合法的部署請求。合法性檢驗是對該部署請求進行形式上的檢驗,也就是說,上述節點將對該部署請求的格式或其它參數進行檢測,進而判斷該部署請求是否是合法的部署請求,例如,判斷該請求的格式是否適用於當前的區塊鏈。可以理解的是,其它判斷規則的合法性檢驗也適用。
在一進一步實施例中,對於區塊鏈,上述合法性檢驗可以通過共識的機制來執行。具體而言,可對部署請求的格式進行共識,當所有節點都認為部署請求的格式為合法時,確定調用請求合法。通過PoW、PoS、PBFT或者其它共識演算法,讓多個接收到該部署請求的節點對該部署請求進行合法性檢驗,進而確定該部署請求對於當前的區塊鏈是否為合法的部署請求。基於共識的結果,將產生不同的操作。具體而言,如果共識的結果指示該部署請求不是合法的部署請求(譬如,該部署請求的格式不符合要求),則結束該智能合約的部署;如果共識的結果指示該部署請求是合法的部署請求(譬如但不限於,該部署請求的格式符合該區塊鏈對部署請求的格式要求),則執行後續的類文件部署操作。
圖15a為本發明一實施例提供的智慧合約的部署方法的流程圖。如圖15所示,該智慧合約的部署方法包括如下步驟:步驟S1501:獲取智能合約的部署請求,在該步驟中,區塊鏈中的多個節點將接收到智能合約的部署請求。在此實施例中,部署請求具有特定格式並且包括該智慧合約的類文件(即,待部署類文件)。可以理解的,部署請求可以先由某個節點接收到,然後由 該節點以P2P的方式發送到區塊鏈中的多個節點;步驟S1502,判斷部署請求是否具備合法性,在該步驟中,接收到該部署請求的節點將對該部署請求進行合法性檢驗,以確定合法的部署請求。在此實施例中,合法性檢驗是對該部署請求進行形式上的檢驗,也就說,上述節點將對該部署請求的格式或其它參數進行檢測,進而判斷該部署請求是否是合法的部署請求,例如,判斷該請求的格式是否適用於當前的區塊鏈。可以理解的是,其它判斷規則的合法性檢驗也適用。
對於區塊鏈,步驟S1502可以通過共識的機制來執行。具體而言,通過PoW、PoS、PBFT或者其它共識演算法,讓多個接收到該部署請求的節點對該部署請求進行合法性檢驗,進而確定該部署請求對於當前的區塊鏈是否為合法的部署請求。
基於步驟S1502中的共識的結果,將產生不同的操作。具體而言,如果共識的結果指示該部署請求不是合法的部署請求(譬如,該部署請求的格式不符合要求),則結束該智能合約的部署;如果共識的結果指示該部署請求是合法的部署請求(譬如但不限於,該部署請求的格式符合該區塊鏈對部署請求的格式要求),則執行步驟S1503中的操作。
步驟S1503:判斷該部署請求是否存在非確定性,由前述可知,該部署請求具有特定格式並且包括待部署的類文件。因此,可以通過例如類載入器來判別該待部署的類文件是否使用了非確定性的函數,如果該類文件中存在任意一個類產生了對非確定性函數的調用,則停止部署該智慧合約,進而提示部署失敗(步驟S1507)。如果類載入器 判別出該智慧合約的類文件並未使用非確定性的函數(即該類文件中並不包含非確定性類),則執行步驟S1504中的操作。本領域的技術人員能夠理解的是,在不同的應用中,可以存在不同方式的提示,譬如,將部署失敗的結果返回給用戶,從而告知(譬如,經由使用者可視的介面)其所提交的智慧合約無法部署到區塊鏈中。
步驟S1504:添加計數器,在該步驟中,將在指定的指令後面設置計數器,從而可以實現對調用的指令的計數,下面結合圖15b對增加計數器後的類文件的執行進行闡述。
如圖15b所示,類文件400在執行過程中將執行指令1的次數為1,執行指令2的次數為3。如前述,假設指令2為指定的指令,則指令2每執行一次,計數器便增加一次。如此,如果將對指令2的執行次數的閾值設置為大於等於4,則類文件400能夠完全執行;反之,如果將對指令2的執行次數的閾值設置為2,則類文件400將無法完全執行或是輸出提示錯誤的結果。
在一種實施方式中,還可以為不同指令賦予不同的「權重」。仍以圖14b所示的指令為例,通過調整相應的指令的權重,可以對指令的執行次數進行相應地指定。譬如,通過提升指令2的權重,指令2被允許執行的次數將進一步地減少;同樣,通過降低指令2的權重,指令2被允許執行的次數將得到提升。
因此,通過對指令的計數來防止某一用戶/節點故意或因故障而產生對某一指令的大量重複的調用,保證了區塊鏈的有限計算的特點。例如,在競標系統中,通過在對應於撤回競標操作的指令的後面增添計數 器,可以防止用戶惡意地反復撤回競標,避免整個競標系統的因某一個使用者的操作而導致癱瘓或無法正常工作。可以理解的,計數器可以根據具體的應用而設置於不同的位置。
步驟1505:存儲經修改的類文件,由前一步驟可知,未經修改的待部署類文件不含有計數器,本實施例通過位元組碼增強技術來對類文件進行修改,從而在所指定的指令後面增添計數器。經修改的待部署類文件,將被存儲於指定的位置(譬如,存儲在區塊鏈的節點處或存儲在與該節點通信連接的存放裝置中),從而實現將待部署類文件部署到類文件庫中,完成類文件庫的構建。
待上述存儲步驟完成後,將執行步驟S1506:提示部署成功。譬如,將部署成功的結果返回給用戶,從而在使用者可視的介面上告知其所提交的智能合約已經部署到了區塊鏈中。
通過上述步驟,實現了對智慧合約的類文件的部署,並且使得區塊鏈中的類文件均具有確定性和有限性,從而提升了網路的穩定性。具體而言,通過基於類文件是否包括非確定性類和/或非確定性函數或非確定性類來針對待部署的類文件進行篩選,進而使得篩選後且被保留的類文件均具備確定性。另外,由於經修改後的類文件的指定的指令後設置有計數器,因此,當針對該指令的調用次數設置一閾值時,通過比較計數器的輸出值和該調用次數的閾值,則可以限制該指令的調用次數,進而使得該類文件在被調用時具備有限計算的特點。
圖16所示為本發明一實施例提供的一種在多節點系統中對智慧合約進行部署的裝置的結構示意圖。如圖16所示,該裝置包括: 獲取模組1601,配置為獲取部署請求,其中,該部署請求包括類文件,該類文件基於待部署的智慧合約的程式邏輯預先編譯而成;以及部署執行模組1602,配置為當確定類文件中並未包括非確定性類和/或非確定性函數時,將類文件部署在多節點系統中。
在本發明一實施例中,部署執行模組1602進一步配置為:當確定類文件中並未包括非確定性類和/或非確定性函數時,在類文件中設置與指令對應的計數器,其中,計數器用於在智慧合約執行的過程中對指令的執行次數計數。
在本發明一實施例中,部署執行模組1602進一步配置為:在本地節點處或在與本地節點通信連接的存放裝置中部署類文件,以形成類文件庫。
在本發明一實施例中,如圖17所示,該在多節點系統中對智慧合約進行部署的裝置進一步包括:第三驗證模組1603,配置為在部署類文件之前,確定部署類文件的部署請求合法。
在本發明一實施例中,第三驗證模組1603進一步配置為:對部署請求的格式進行共識,當所有節點都認為部署請求的格式為合法時,確定調用請求合法。
應當理解,上述實施例所提供的用於在多節點系統中對智慧合約進行部署的裝置中記載的每個模組都與前述的用於在多節點系統中對智慧合約進行部署的方法中的一個方法步驟相對應。由此,前述的方法步驟描述的操作和特徵同樣適用於該裝置及其中所包含的對應的模組,重複的內容在此不再贅述。
應當理解,如前任一種方法的流程還可實現為機器可讀指令,該機器可讀指令包括由處理器執行的程式。該程式可被實體化在被存儲於有形電腦可讀介質的軟體中,該有形電腦可讀介質如CD-ROM、軟碟、硬碟、數位通用光碟(DVD)、藍光光碟或其它形式的記憶體。替代的,如前任一種方法中的一些步驟或所有步驟可利用專用積體電路(ASIC)、可程式設計邏輯器件(PLD)、現場可程式設計邏輯器件(EPLD)、離散邏輯、硬體、固件等的任意組合被實現。另外,雖然與前述任一方法相對應的說的流程圖描述了該資料處理方法,但可對該處理方法中的步驟進行修改、刪除或合併。
如上所述,可利用編碼指令(如電腦可讀指令)來實現如前任一種方法的過程,該程式設計指令存儲於有形電腦可讀介質上,如硬碟、快閃記憶體、唯讀記憶體(ROM)、光碟(CD)、數位通用光碟(DVD)、快取記憶體器、隨機訪問記憶體(RAM)和/或任何其他存儲介質,在該存儲介質上資訊可以存儲任意時間(例如,長時間,永久地,短暫的情況,臨時緩衝,和/或資訊的緩存)。如在此所用的,該術語有形電腦可讀介質被明確定義為包括任意類型的電腦可讀存儲的信號。附加地或替代地,可利用編碼指令(如電腦可讀指令)實現如前任一種方法的示例過程,該編碼指令存儲於非暫時性電腦可讀介質,如硬碟,快閃記憶體,唯讀記憶體,光碟,數位通用光碟,快取記憶體器,隨機訪問記憶體和/或任何其他存儲介質,在該存儲介質資訊可以存儲任意時間(例如,長時間,永久地,短暫的情況,臨時緩衝,和/或資訊的緩存)。
本發明支援Java語言開發智慧合約,同時具有確定性計算、 有限計算的特點,不需要額外開發編譯器、解譯器,基本保留了Java語言的所有功能,易於接入使用。
因此,雖然參照特定的示例來描述了本發明,其中這些特定的示例僅僅旨在是示例性的,而不是對本發明進行限制,但對於本領域普通技術人員來說顯而易見的是,在不脫離本發明的精神和保護範圍的基礎上,可以對所公開的實施例進行改變、增加或者刪除。
Claims (18)
- 一種用於在多節點系統中對智慧合約進行處理的方法,其特徵在於,包括:基於針對待調用的智慧合約的調用請求確定該智能合約所對應的類文件;以及基於該類文件執行該智慧合約;其中,該類文件基於該智慧合約的程式邏輯預先編譯而成。
- 如請求項1所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該類文件包括指令和與該指令相對應的計數器;其中,該基於該類文件執行該智慧合約包括:利用該計數器對該指令的執行次數進行計數,當該執行次數大於預設次數時,停止執行該指令。
- 如請求項1或2所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該類文件包括多個該指令,每個該指令設置有對應的權重;其中,該權重的值越大,與該權重對應的該指令的該預設次數越少。
- 如請求項1所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件包括:基於該調用請求在類文件庫中查找與該智能合約所對應的類文件。
- 如請求項1所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該基於針對待調用的智慧合約的調用請求確定該待調用的智慧合約所對應的類文件包括:根據該調用請求中用於指示該智慧合約的標識資訊生成滿足該調用請求的該類文件。
- 如請求項1所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該基於該類文件執行該智慧合約包括: 對該類文件進行產生實體,並且確定該調用請求中的函數和參數;以及基於經產生實體的該類文件以及該函數和參數來執行該智慧合約。
- 如請求項1所述的用於在多節點系統中對智慧合約進行處理的方法,其中,在基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件之前,進一步包括:確定該調用請求合法;其中,該確定該調用請求合法包括:對該調用請求的格式進行共識,當所有節點都認為該調用請求的格式為合法時,確定該調用請求合法。
- 如請求項1所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該類文件預先部署在該多節點系統中,其中,該類文件的部署過程包括:通過類載入器載入待部署的該類文件;以及當確定該類文件中並未包括非確定性類和/或非確定性函數時,部署該類文件以形成類文件庫。
- 如請求項8所述的用於在多節點系統中對智慧合約進行處理的方法,其中,該類文件的部署過程進一步包括:當確定該類文件中並未包括非確定性類和/或非確定性函數時,在該類文件中設置與指令對應的計數器,其中,該計數器用於在該智慧合約執行的過程中對該指令的執行次數計數。
- 如請求項8或9所述的用於在多節點系統中對智慧合約進行處理的方法,其中,在部署該類文件之前,進一步包括:確定部署該類文件的部署請求合法;其中,該確定部署該類文件的部署請求合法包括:對該部署請求的格式進行共識,當所有節點都認為該部署請求的格式為合法時,確定該調用請求合法。
- 一種用於在多節點系統中對智慧合約進行處理的裝置,其特徵在於,包括: 確定模組,配置為基於針對待調用的智慧合約的調用請求確定該智能合約所對應的類文件;以及執行模組,配置為基於該類文件執行該待調用的智能合約;其中,該類文件基於該待調用的智慧合約的程式邏輯預先編譯而成。
- 如請求項11所述的用於在多節點系統中對智慧合約進行處理的裝置,其中,該類文件包括指令和與該指令相對應的計數器;其中,該執行模組進一步配置為:利用該計數器對該指令的執行次數進行計數,當該執行次數大於預設次數時,停止執行該指令。
- 如請求項11所述的用於在多節點系統中對智慧合約進行處理的裝置,其中,該確定模組進一步配置為:基於該調用請求在類文件庫中查找與該智能合約所對應的類文件。
- 如請求項11所述的用於在多節點系統中對智慧合約進行處理的裝置,其中,進一步包括:生成模組,配置為根據該調用請求中用於指示該智慧合約的標識資訊生成滿足該調用請求的該類文件。
- 如請求項11所述的用於在多節點系統中對智慧合約進行處理的裝置,其中,該執行模組進一步配置為:對該類文件進行產生實體,並且確定調用該智慧合約的調用請求中的函數和參數;以及基於經產生實體的該類文件以及該函數和參數來執行該調用請求所調用的該智能合約。
- 如請求項11所述的用於在多節點系統中對智慧合約進行處理的裝置,其中,進一步包括:第一驗證模組,配置為在基於針對待調用的智慧合約的調用請求確定該智慧合約所對應的類文件之前,確定調用該智慧合約的調用請求合法;其中,該第一驗證模組進一步配置為:對該調用請求的格式進行共識,當所有節點都認為該調用請求的格式為合法時,確定該調用請求合法。
- 如請求項11所述的用於在多節點系統中對智慧合約進行處理的裝置,其 中,進一步包括:部署模組,配置為通過類載入器載入待部署的該類文件;以及當確定該類文件中並未包括非確定性類和/或非確定性函數時,部署該類文件以形成類文件庫。
- 如請求項17所述的用於在多節點系統中對智慧合約進行處理的裝置,其中,進一步包括:第二驗證模組,配置為在該部署模組部署該類文件之前,確定部署該類文件的部署請求合法;其中,該第二驗證模組進一步配置為:對該部署請求的格式進行共識,當所有節點都認為該部署請求的格式為合法時,確定該調用請求合法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710638423.XA CN107392619B (zh) | 2017-07-31 | 2017-07-31 | 智能合约处理方法及装置 |
??201710638423.X | 2017-07-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201911032A true TW201911032A (zh) | 2019-03-16 |
Family
ID=60342494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107126301A TW201911032A (zh) | 2017-07-31 | 2018-07-30 | 智慧合約處理方法及裝置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20190324772A1 (zh) |
JP (1) | JP2019536153A (zh) |
KR (1) | KR20190107664A (zh) |
CN (1) | CN107392619B (zh) |
AU (1) | AU2018310287A1 (zh) |
SG (1) | SG11201907111QA (zh) |
TW (1) | TW201911032A (zh) |
WO (1) | WO2019024674A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI719797B (zh) * | 2019-04-19 | 2021-02-21 | 開曼群島商創新先進技術有限公司 | 區塊鏈中智能合約的儲存、執行方法及裝置和電子設備 |
TWI720724B (zh) * | 2019-03-26 | 2021-03-01 | 開曼群島商創新先進技術有限公司 | 實施不同類型的區塊鏈合約的系統和方法 |
TWI730654B (zh) * | 2019-08-30 | 2021-06-11 | 開曼群島商創新先進技術有限公司 | 部署和執行智能合約的方法及裝置 |
US11307990B2 (en) | 2019-08-30 | 2022-04-19 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9918605B2 (en) | 2015-04-09 | 2018-03-20 | Irobot Corporation | Wall following robot |
CN107392619B (zh) * | 2017-07-31 | 2020-12-29 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
CN108776936A (zh) * | 2018-06-05 | 2018-11-09 | 中国平安人寿保险股份有限公司 | 保险理赔方法、装置、计算机设备和存储介质 |
CN109146679B (zh) | 2018-06-29 | 2023-11-10 | 创新先进技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
CN108916604B (zh) * | 2018-07-04 | 2020-07-03 | 临沂大学 | 一种便于维护的智能合约转换器 |
US11842322B2 (en) | 2018-08-22 | 2023-12-12 | Equinix, Inc. | Smart contract interpreter |
CN109067759B (zh) * | 2018-08-27 | 2020-11-03 | 深圳前海益链网络科技有限公司 | 一种智能合约调用单点执行系统 |
CN109376541A (zh) * | 2018-09-21 | 2019-02-22 | 上海点融信息科技有限责任公司 | 用于运行智能合约的方法、装置以及计算机存储介质 |
CN111045690B (zh) * | 2018-10-12 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 区块链节点服务部署方法、装置、系统、计算设备及介质 |
CN109933404B (zh) * | 2018-12-12 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的编解码方法及系统 |
CN109710385A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约复杂度限制方法 |
US10733152B2 (en) | 2018-12-29 | 2020-08-04 | Alibaba Group Holding Limited | System and method for implementing native contract on blockchain |
WO2019072310A2 (en) | 2018-12-29 | 2019-04-18 | Alibaba Group Holding Limited | SYSTEM AND METHOD FOR IMPLEMENTING NATIVE CONTRACT ON BLOCK CHAIN |
CN110119428B (zh) * | 2019-04-19 | 2023-05-12 | 腾讯科技(深圳)有限公司 | 一种区块链信息管理方法、装置、设备及存储介质 |
CN116757843A (zh) * | 2019-06-28 | 2023-09-15 | 创新先进技术有限公司 | 用于执行不同类型区块链合约的系统和方法 |
CN110688428B (zh) * | 2019-09-24 | 2021-01-26 | 北京海益同展信息科技有限公司 | 用于发布智能合约的方法和装置 |
CN110633328B (zh) * | 2019-09-25 | 2024-03-22 | 腾讯云计算(北京)有限责任公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN111160911B (zh) * | 2019-12-31 | 2023-10-24 | 杭州趣链科技有限公司 | 一种面向区块链的智能合约调用频率控制方法 |
US11893002B2 (en) * | 2020-05-04 | 2024-02-06 | Salesforce, Inc. | System or method to run distributed validation of workflows across a network in a shared distributed ledger in multi-tenant cloud environment |
CN111831745B (zh) * | 2020-06-05 | 2023-04-18 | 广东科学技术职业学院 | 定时智能合约的调度方法及装置 |
CN111815330A (zh) * | 2020-08-31 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN112070618A (zh) * | 2020-09-02 | 2020-12-11 | 中国平安人寿保险股份有限公司 | 基于区块链的保险核赔方法、装置、设备及介质 |
CN112162851B (zh) * | 2020-09-14 | 2022-12-13 | Oppo(重庆)智能科技有限公司 | dex预编译方法、装置、计算机设备及存储介质 |
CN112417514B (zh) * | 2020-10-30 | 2024-04-05 | 迅鳐成都科技有限公司 | 基于电子合约的多方数据协作方法、系统及存储介质 |
CN112346820A (zh) * | 2020-11-16 | 2021-02-09 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112445543B (zh) * | 2020-11-26 | 2023-03-10 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN112765676A (zh) * | 2020-12-03 | 2021-05-07 | 杭州趣链科技有限公司 | 一种智能合约执行方法、智能合约执行装置及节点设备 |
CN112636981B (zh) * | 2020-12-28 | 2023-02-17 | 杭州趣链科技有限公司 | 区块链主机及其代理方法、装置及存储介质 |
CN112968930B (zh) * | 2021-01-29 | 2022-08-19 | 东南大学 | 区块链键值对智能合约及其设计方法 |
CN112950237B (zh) * | 2021-05-12 | 2021-08-06 | 常州市市场监管服务中心(常州市特种设备事故调查处置中心) | 基于ocr和区块链的气瓶质量安全追溯系统及控制方法 |
CN113342429B (zh) * | 2021-06-09 | 2023-08-08 | 网易(杭州)网络有限公司 | 智能合约数据处理方法、装置、计算机设备及存储介质 |
CN113805889B (zh) * | 2021-08-27 | 2023-07-28 | 成都质数斯达克科技有限公司 | 一种智能合约调用执行方法、装置、设备及可读存储介质 |
CN113778564B (zh) * | 2021-09-03 | 2023-05-30 | 杭州复杂美科技有限公司 | 一种高效执行evm智能合约的方法、设备及储存介质 |
CN114422535B (zh) * | 2022-01-18 | 2024-04-09 | 网易(杭州)网络有限公司 | 区块链中部署合约的方法、装置、计算机设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645319A (zh) * | 2005-01-20 | 2005-07-27 | 上海交通大学 | 优化网络环境下部分计值服务的方法 |
CN100349115C (zh) * | 2005-06-30 | 2007-11-14 | 西安交通大学 | 一种应用服务器平台的实现方法 |
US20150379510A1 (en) * | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
CN104731708A (zh) * | 2015-03-25 | 2015-06-24 | 北京信息控制研究所 | 一种Shellcode的动态检测方法 |
CN106295336B (zh) * | 2015-06-26 | 2020-05-22 | 阿里巴巴集团控股有限公司 | 恶意程序检测方法及装置 |
EP3323080B1 (en) * | 2015-07-14 | 2020-11-04 | Fmr Llc | Computationally efficient transfer processing, auditing, and search apparatuses, methods and systems |
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
CN106101242B (zh) * | 2016-06-24 | 2019-08-06 | 深圳前海微众银行股份有限公司 | 区块链云服务平台的构建方法和装置 |
CN106651303B (zh) * | 2016-12-02 | 2020-05-26 | 北京轻信科技有限公司 | 一种基于模板的智能合约处理方法和系统 |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107392619B (zh) * | 2017-07-31 | 2020-12-29 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
-
2017
- 2017-07-31 CN CN201710638423.XA patent/CN107392619B/zh active Active
-
2018
- 2018-07-16 KR KR1020197019035A patent/KR20190107664A/ko active Search and Examination
- 2018-07-16 WO PCT/CN2018/095784 patent/WO2019024674A1/zh active Application Filing
- 2018-07-16 JP JP2019524456A patent/JP2019536153A/ja not_active Withdrawn
- 2018-07-16 SG SG11201907111QA patent/SG11201907111QA/en unknown
- 2018-07-16 AU AU2018310287A patent/AU2018310287A1/en not_active Withdrawn
- 2018-07-30 TW TW107126301A patent/TW201911032A/zh unknown
-
2019
- 2019-07-02 US US16/460,202 patent/US20190324772A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI720724B (zh) * | 2019-03-26 | 2021-03-01 | 開曼群島商創新先進技術有限公司 | 實施不同類型的區塊鏈合約的系統和方法 |
TWI719797B (zh) * | 2019-04-19 | 2021-02-21 | 開曼群島商創新先進技術有限公司 | 區塊鏈中智能合約的儲存、執行方法及裝置和電子設備 |
TWI730654B (zh) * | 2019-08-30 | 2021-06-11 | 開曼群島商創新先進技術有限公司 | 部署和執行智能合約的方法及裝置 |
US11307990B2 (en) | 2019-08-30 | 2022-04-19 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
Also Published As
Publication number | Publication date |
---|---|
JP2019536153A (ja) | 2019-12-12 |
WO2019024674A1 (zh) | 2019-02-07 |
US20190324772A1 (en) | 2019-10-24 |
SG11201907111QA (en) | 2019-09-27 |
CN107392619A (zh) | 2017-11-24 |
AU2018310287A1 (en) | 2019-09-05 |
KR20190107664A (ko) | 2019-09-20 |
CN107392619B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201911032A (zh) | 智慧合約處理方法及裝置 | |
CN109710384B (zh) | 一种安全的Java智能合约解释执行引擎及方法 | |
JP5985631B2 (ja) | 信頼レベルのアクティブ化 | |
CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
US7743423B2 (en) | Security requirement determination | |
WO2017041657A1 (zh) | 一种应用接口管理方法和装置 | |
CN107203715B (zh) | 执行系统调用的方法及装置 | |
US11556348B2 (en) | Bootstrapping profile-guided compilation and verification | |
CN107257959B (zh) | 用于托管代码中的垃圾收集控制的系统和方法 | |
US9871800B2 (en) | System and method for providing application security in a cloud computing environment | |
US10019598B2 (en) | Dynamic service discovery | |
KR20090017598A (ko) | 소프트웨어를 분석하기 위한 방법 및 시스템 | |
US20050172133A1 (en) | Cross assembly call interception | |
US11726896B2 (en) | Application monitoring using workload metadata | |
US20130254832A1 (en) | Security Protection Domain-Based Testing Framework | |
US11489844B2 (en) | On-the-fly creation of transient least privileged roles for serverless functions | |
US20180107463A1 (en) | Safe loading of dynamic user-defined code | |
CN116502283A (zh) | 一种隐私数据处理方法及装置 | |
US20210019155A1 (en) | Optimizing managed runtime applications for serverless environments | |
US20160110191A1 (en) | Staged points-to analysis for large code bases | |
US9430196B2 (en) | Message inlining | |
US11662983B2 (en) | Bytecode verification using class relationship caching | |
CN111045746A (zh) | 代码扩展方法和框架 | |
KR20230073230A (ko) | 소프트웨어 플랫폼용 제3자 라이브러리 함수의 상호 호출 방법 및 상호 호출 시스템 | |
Ridge | Verifying distributed systems: the operational approach |