TWI817863B - 區塊鏈合約交易的驗證系統及其方法 - Google Patents
區塊鏈合約交易的驗證系統及其方法 Download PDFInfo
- Publication number
- TWI817863B TWI817863B TW111147460A TW111147460A TWI817863B TW I817863 B TWI817863 B TW I817863B TW 111147460 A TW111147460 A TW 111147460A TW 111147460 A TW111147460 A TW 111147460A TW I817863 B TWI817863 B TW I817863B
- Authority
- TW
- Taiwan
- Prior art keywords
- blockchain
- contract
- transaction
- data
- signed
- Prior art date
Links
- 238000012795 verification Methods 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Abstract
一種區塊鏈合約交易的驗證系統及其方法,透過區塊鏈合約系統根據應用端主機的呼叫請求執行相應的區塊鏈合約程式,並且在執行過程中根據合約資料產生合約區塊鏈交易,以供應用端主機簽章且提交至區塊鏈核心系統進行上鏈,再由區塊鏈核心系統將已上鏈的區塊鏈交易傳送至區塊鏈合約系統,以便使其擷取呼叫參數並據以執行區塊鏈合約程式,並且同樣根據合約資料產生合約區塊鏈交易,以及比對上鏈前後的合約區塊鏈交易之合約資料是否一致,以判斷是否遭到竄改、被其他交易變更或重複執行,用以達到提高確保交易的正確性及有效性之技術功效。
Description
本發明涉及一種驗證系統及其方法,特別是區塊鏈合約交易的驗證系統及其方法。
近年來,隨著區塊鏈的普及與蓬勃發展,各種基於智能合約(Smart Contract)的區塊鏈應用便如雨後春筍般湧現,例如:電子票券、生產履歷等等。
一般而言,傳統使用智能合約(或稱為區塊鏈合約)的區塊鏈交易,因為其基於去中心化機制,需要通過多個節點主機的共識演算法進行驗證及上鏈,所以在提交上鏈至將交易內容更新至合約資料之前,存在較長的時間差,導致存在如何確保區塊鏈交易的內容是由區塊鏈合約所產生,而未被其他系統變更的問題,舉例來說,假設應用端呼叫電子票券合約產生一筆電子票券核銷交易,倘若應用端在取得區塊鏈合約產生的電子票券核銷交易後,逕行將核銷金額變更,導致核銷金額大於交易金額,倘若沒有適當的驗證機制,將存在正確性受到質疑的問題。
另一方面,當已簽章的區塊鏈交易提交上鏈後,在將交易內容更新至合約資料之前,如何有效確保此期間涉及的合約資料未被變更,同樣也是非常重要的問題。舉例來說,假設應用端呼叫電子票券合約,針對一張使用中的電子票券進行核銷,並產生一筆電子票券核銷交易。倘若應用端在取得區塊鏈合約產生的電子票券核銷交易後,未及時提交上鏈,導致這張使用中的電子票券因為另一筆電子票券退回交易被執行,而變成「已退回」的狀態。此時,應用端將電子票券核銷交易提交上鏈後,若無法檢核出電子票券已失效,將存在有效性的問題。
綜上所述,可知先前技術中長期以來一直存在如何確保交易的正確性及有效性之問題,因此實有必要提出改進的技術手段,來解決此一問題。
本發明揭露一種區塊鏈合約交易的驗證系統及其方法。
首先,本發明揭露一種區塊鏈合約交易的驗證系統,此系統包含:應用端主機、區塊鏈核心系統及區塊鏈合約系統。其中,所述應用端主機用以通過區塊鏈合約程式的應用程式介面發送呼叫請求,並且接收相應呼叫請求的第一合約區塊鏈交易進行簽章,用以產生已簽章區塊鏈交易以進行傳送,其中,所述區塊鏈合約程式允許存取合約資料。接著,在區塊鏈核心系統的部分,其由多個節點主機組成且連接應用端主機,所述區塊鏈核心系統包含:驗證模組及記錄模組。其中,驗證模組用以接收與驗證應用端主機傳送的已簽章區塊鏈交易,並且將驗證通過的已簽章區塊鏈交易寫入至區塊鏈以作為區塊鏈資料,以及在成功寫入區塊鏈後,傳送所述已簽章區塊鏈交易;所述記錄模組用以記錄比對結果以根據記錄的比對結果通知應用端主機所述已簽章區塊鏈交易的執行結果,其中,當比對結果為一致時,執行結果為成功,當比對結果為不一致時,執行結果為失敗。接下來,在區塊鏈合約系統的部分,其建置在區塊鏈核心系統上,並且連接應用端主機及儲存區塊鏈合約程式,所述區塊鏈合約系統包含:產生模組及比對模組。其中,所述產生模組用以根據應用端主機的呼叫請求呼叫區塊鏈合約程式以產生第一合約區塊鏈交易並傳送至應用端主機,以及自區塊鏈核心系統接收已簽章區塊鏈交易以從中擷取呼叫參數,並且根據所述呼叫參數呼叫相應的區塊鏈合約程式的應用程式介面,用以執行區塊鏈合約程式以產生第二合約區塊鏈交易,其中,區塊鏈合約程式包含對合約資料進行讀取、處理及更新;比對模組連接產生模組,用以比對第一合約區塊鏈交易與第二合約區塊鏈交易以產生比對結果,以及將所述比對結果記錄在區塊鏈核心系統,其中,當比對結果為一致時,區塊鏈合約系統更新合約資料且寫入至區塊鏈以作為區塊鏈資料。
另外,本發明還揭露一種區塊鏈合約交易的驗證方法,應用在具有應用端主機、區塊鏈核心系統及區塊鏈合約系統的環境中,其步驟包括:區塊鏈核心系統由多個節點主機組成,用以接收與驗證應用端主機傳送的已簽章區塊鏈交易,並且將驗證通過的已簽章區塊鏈交易寫入至區塊鏈以作為區塊鏈資料;區塊鏈合約系統建置在區塊鏈核心系統上,用以儲存區塊鏈合約程式,所述區塊鏈合約程式允許存取合約資料,並且在應用端主機呼叫時,根據所述合約資料產生第一合約區塊鏈交易,以及在區塊鏈核心系統呼叫時,根據所述合約資料產生第二合約區塊鏈交易;應用端主機通過區塊鏈合約程式的應用程式介面發送呼叫請求至區塊鏈合約系統,用以呼叫所述區塊鏈合約程式以讀取、處理及更新合約資料;區塊鏈合約系統根據更新的合約資料產生第一合約區塊鏈交易,並且將所述第一合約區塊鏈交易傳送至應用端主機;應用端主機對第一合約區塊鏈交易進行簽章以生成已簽章區塊鏈交易,並且將所述已簽章區塊鏈交易傳送至區塊鏈核心系統;區塊鏈核心系統將已簽章區塊鏈交易寫入至區塊鏈,以及傳送至區塊鏈合約系統執行;區塊鏈合約系統自接收到的已簽章區塊鏈交易中擷取呼叫參數,並且以所述呼叫參數呼叫相應的區塊鏈合約程式的應用程式介面,用以執行區塊鏈合約程式以讀取、處理及更新合約資料;區塊鏈合約系統根據更新的合約資料產生第二合約區塊鏈交易,並且比對第一合約區塊鏈交易與第二合約區塊鏈交易以產生比對結果,以及將所述比對結果記錄在區塊鏈核心系統,其中,當比對結果為一致時,區塊鏈合約系統更新合約資料且寫入至區塊鏈以作為區塊鏈資料;以及區塊鏈核心系統根據記錄的比對結果通知應用端主機所述已簽章區塊鏈交易的執行結果,其中,當比對結果為一致時,執行結果為成功,當比對結果為不一致時,執行結果為失敗。
本發明所揭露之系統與方法如上,與先前技術的差異在於本發明是透過區塊鏈合約系統根據應用端主機的呼叫請求執行相應的區塊鏈合約程式,並且在執行過程中根據合約資料產生合約區塊鏈交易,以供應用端主機簽章且提交至區塊鏈核心系統進行上鏈,再由區塊鏈核心系統將已上鏈的區塊鏈交易傳送至區塊鏈合約系統,以便使其擷取呼叫參數並據以執行區塊鏈合約程式,並且同樣根據合約資料產生合約區塊鏈交易,以及比對上鏈前後的合約區塊鏈交易之合約資料是否一致,以判斷是否遭到竄改、被其他交易變更或重複執行。
透過上述的技術手段,本發明可以達成提高確保交易的正確性及有效性之技術功效。
以下將配合圖式及實施例來詳細說明本發明之實施方式,藉此對本發明如何應用技術手段來解決技術問題並達成技術功效的實現過程能充分理解並據以實施。
在說明本發明所揭露之區塊鏈合約交易的驗證系統及其方法之前,先對本發明所自行定義的名詞作說明,本發明所述的「第一合約區塊鏈交易」是指由應用端主機呼叫區塊鏈合約程式根據合約資料所產生的區塊鏈交易,也就是上鏈前的區塊鏈交易;所述「已簽章區塊鏈交易」是由應用端主機對接收到的第一合約區塊鏈交易進行簽章後所產生,也就是要傳給區塊鏈核心系統進行上鏈的區塊鏈交易;所述「第二合約區塊鏈交易」是指由區塊鏈核心系統將已簽章區塊鏈交易傳送至區塊鏈合約系統後,區塊鏈合約程式同樣根據合約資料所產生的區塊鏈交易,也可視為上鏈後的區塊鏈交易。
以下配合圖式對本發明區塊鏈合約交易的驗證系統及其方法做進一步說明,請先參閱「第1圖」,「第1圖」為本發明區塊鏈合約交易的驗證系統的系統方塊圖,此系統包含:應用端主機110、區塊鏈核心系統120及區塊鏈合約系統130。其中,所述應用端主機110用以通過區塊鏈合約程式的應用程式介面發送呼叫請求,並且接收相應呼叫請求的第一合約區塊鏈交易進行簽章,用以產生已簽章區塊鏈交易以進行傳送,其中,所述區塊鏈合約程式允許存取合約資料。在實際實施上,區塊鏈合約系統130建置在區塊鏈核心系統120上,整體可視為區塊鏈環境100。
在區塊鏈核心系統120的部分,其由多個節點主機組成且連接應用端主機110,所述區塊鏈核心系統包含:驗證模組121及記錄模組122。其中,驗證模組121用以接收與驗證應用端主機傳送的已簽章區塊鏈交易,並且將驗證通過的已簽章區塊鏈交易寫入至區塊鏈以作為區塊鏈資料,以及在成功寫入區塊鏈後,將已簽章區塊鏈交易傳送至區塊鏈合約系統130執行。在實際實施上,節點主機可通過有線網路(如:乙太網路)或無線網路,例如:Wi-Fi、ZigBee、CoAP(Constrained Application Protocol)、MQTT(Message Queuing Telemetry Transport)或其相似的無線傳輸技術相互連接。另外,區塊鏈核心系統120將已簽章區塊鏈交易傳送至區塊鏈合約系統130執行時,必須根據已簽章區塊鏈交易在區塊鏈中的順序依序執行,以確保所有節點主機執行已簽章區塊鏈交易的順序一致,以及接收來自區塊鏈合約系統130的執行結果以記錄在區塊鏈資料庫之中。
所述記錄模組122用以記錄比對結果以根據記錄的比對結果通知應用端主機110所述已簽章區塊鏈交易的執行結果,其中,當比對結果為一致時,通知應用端主機110執行結果為成功,當比對結果為不一致時,通知應用端主機110執行結果為失敗。稍後將舉例說明如何產生比對結果,並且判斷比對結果是否一致。
接下來,在區塊鏈合約系統130的部分,其建置在區塊鏈核心系統120上,並且連接應用端主機110及儲存區塊鏈合約程式,所述區塊鏈合約系統130包含:產生模組131及比對模組132。其中,所述產生模組131用以根據應用端主機110的呼叫請求呼叫區塊鏈合約程式以產生第一合約區塊鏈交易並傳送至應用端主機110,以及自區塊鏈核心系統120接收已簽章區塊鏈交易,以便從中擷取呼叫參數,並且根據所述呼叫參數呼叫相應的區塊鏈合約程式的應用程式介面,用以執行區塊鏈合約程式以產生第二合約區塊鏈交易,其中,區塊鏈合約程式包含對合約資料進行讀取、處理及更新(寫入)。在實際實施上,產生模組131產生第一合約區塊鏈交易的方式是將呼叫請求的參數記錄在第一合約區塊鏈交易的呼叫參數,再將交易快取區中記錄為來自合約資料庫的每一筆合約資料計算出相應的雜湊值,以及將每一筆合約資料的鍵值及雜湊值記錄在第一合約區塊鏈交易的讀取資料區,並且交易快取區中記錄為來自「寫入動作」的每一筆合約資料計算出相應的雜湊值,再將每一筆合約資料的內容及雜湊值記錄在第一合約區塊鏈交易的寫入資料區,最後將呼叫參數、讀取資料區及寫入資料區的資料一併組成第一合約區塊鏈交易後,將此第一合約區塊鏈交易傳送至應用端主機110。另外,所述區塊鏈合約程式在讀取合約資料時,倘若合約資料已經存在於交易快取區時,可直接讀取此交易快取區中的合約資料以回傳給區塊鏈合約程式;反之,倘若合約資料不存在於交易快取區時,則可從合約資料庫中讀取合約資料,並且將讀取到的合約資料儲存在交易快取區中,同時記錄合約資料來自於合約資料庫。除此之外,在更新合約資料時,可將更新的合約資料寫入至交易快取區中,並且記錄為來自寫入動作,特別要說明的是,更新的合約資料不寫入合約資料庫中。
比對模組132連接產生模組131,用以比對第一合約區塊鏈交易與第二合約區塊鏈交易以產生比對結果,以及將所述比對結果記錄在區塊鏈核心系統120,其中,當比對結果為一致時,區塊鏈合約系統130更新合約資料,並且將更新的合約資料寫入至區塊鏈以作為區塊鏈資料。在實際實施上,假設「第一合約區塊鏈交易」記錄在寫入資料區的內容與產生「第二合約區塊鏈交易」時,在交易快取區中記錄為來自寫入動作的內容不同,則比對結果為不一致;或者「第一合約區塊鏈交易」記錄在讀取資料區的內容與產生「第二合約區塊鏈交易」時,在交易快取區中記錄為來自資料庫的內容不同,則比對結果為不一致。當上述兩種情況只要滿足其中之一,那麼最後的比對結果仍然是不一致,只有上述兩種情況的比對結果皆為一致時,最後的比對結果才為一致。實際上,區塊鏈合約系統130接收到已簽章區塊鏈交易後,可從已簽章區塊鏈交易中取出呼叫參數,並且以此呼叫參數呼叫對應的區塊鏈合約程式的應用程式介面,接著在交易快取區中記錄區塊鏈合約程式執行過程中的讀取/寫入的合約資料,直到區塊鏈合約程式執行結束返回為止,以及從已簽章區塊鏈交易中取出讀取資料區,並且根據雜湊值及鍵值比對交易快取區中記錄為來自合約資料庫的合約資料是否相同、從已簽章區塊鏈交易中,取出寫入資料區,並且根據雜湊值及鍵值比對交易快取區中記錄為來自寫入動作的合約資料的雜湊值及鍵值是否相同,當這些比對不完全相同時,代表資料可能遭到竄改,故拒絕執行已簽章區塊鏈交易,並且傳送失敗結果至區塊鏈核心系統120(即:記錄比對結果為不一致),當比對完全相同時,代表資料無誤,故將已簽章區塊鏈交易的寫入資料區更新至合約資料庫中,並且將更新的合約資料與已簽章區塊鏈交易進行連接,以及在合約資料更新後傳送成功結果至區塊鏈核心系統120(即:記錄比對結果為一致)。
特別要說明的是,在實際實施上,本發明所述模組皆可利用各種方式來實現,包含軟體、硬體或其任意組合,例如,在某些實施方式中,各模組可利用軟體及硬體或其中之一來實現,除此之外,本發明亦可部分地或完全地基於硬體來實現,例如,系統中的一個或多個模組可以透過積體電路晶片、系統單晶片(System on Chip, SoC)、複雜可程式邏輯裝置(Complex Programmable Logic Device, CPLD)、現場可程式邏輯閘陣列(Field Programmable Gate Array, FPGA)等來實現。本發明可以是系統、方法及/或電腦程式。電腦程式可以包括電腦可讀儲存媒體,其上載有用於使處理器實現本發明的各個方面的電腦可讀程式指令,電腦可讀儲存媒體可以是可以保持和儲存由指令執行設備使用的指令的有形設備。電腦可讀儲存媒體可以是但不限於電儲存設備、磁儲存設備、光儲存設備、電磁儲存設備、半導體儲存設備或上述的任意合適的組合。電腦可讀儲存媒體的更具體的例子(非窮舉的列表)包括:硬碟、隨機存取記憶體、唯讀記憶體、快閃記憶體、光碟、軟碟以及上述的任意合適的組合。此處所使用的電腦可讀儲存媒體不被解釋爲瞬時信號本身,諸如無線電波或者其它自由傳播的電磁波、通過波導或其它傳輸媒介傳播的電磁波(例如,通過光纖電纜的光信號)、或者通過電線傳輸的電信號。另外,此處所描述的電腦可讀程式指令可以從電腦可讀儲存媒體下載到各個計算/處理設備,或者通過網路,例如:網際網路、區域網路、廣域網路及/或無線網路下載到外部電腦設備或外部儲存設備。網路可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火牆、交換器、集線器及/或閘道器。每一個計算/處理設備中的網路卡或者網路介面從網路接收電腦可讀程式指令,並轉發此電腦可讀程式指令,以供儲存在各個計算/處理設備中的電腦可讀儲存媒體中。執行本發明操作的電腦程式指令可以是組合語言指令、指令集架構指令、機器指令、機器相關指令、微指令、韌體指令、或者以一種或多種程式語言的任意組合編寫的原始碼或目的碼(Object Code),所述程式語言包括物件導向的程式語言,如:Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby與PHP等,以及常規的程序式(Procedural)程式語言,如:C語言或類似的程式語言。所述電腦程式指令可以完全地在電腦上執行、部分地在電腦上執行、作爲一個獨立的軟體執行、部分在客戶端電腦上部分在遠端電腦上執行、或者完全在遠端電腦或伺服器上執行。
請參閱「第2A圖」及「第2B圖」,「第2A圖」及「第2B圖」為本發明區塊鏈合約交易的驗證方法的方法流程圖,應用在具有應用端主機110、區塊鏈核心系統120及區塊鏈合約系統130的環境中,其步驟包括:區塊鏈核心系統120由多個節點主機組成,用以接收與驗證應用端主機110傳送的已簽章區塊鏈交易,並且將驗證通過的已簽章區塊鏈交易寫入至區塊鏈以作為區塊鏈資料(步驟210);區塊鏈合約系統130建置在區塊鏈核心系統120上,用以儲存區塊鏈合約程式,所述區塊鏈合約程式允許存取合約資料,並且在應用端主機110呼叫時,根據所述合約資料產生第一合約區塊鏈交易,以及在區塊鏈核心系統120呼叫時,根據所述合約資料產生第二合約區塊鏈交易(步驟220);應用端主機110通過區塊鏈合約程式的應用程式介面發送呼叫請求至區塊鏈合約系統130,用以呼叫所述區塊鏈合約程式以讀取、處理及更新合約資料(步驟230);區塊鏈合約系統130根據更新的合約資料產生第一合約區塊鏈交易,並且將所述第一合約區塊鏈交易傳送至應用端主機110(步驟240);應用端主機110對第一合約區塊鏈交易進行簽章以生成已簽章區塊鏈交易,並且將所述已簽章區塊鏈交易傳送至區塊鏈核心系統120(步驟250);區塊鏈核心系統120將已簽章區塊鏈交易寫入至區塊鏈,以及傳送至區塊鏈合約系統130執行(步驟260);區塊鏈合約系統130自接收到的已簽章區塊鏈交易中擷取呼叫參數,並且以所述呼叫參數呼叫相應的區塊鏈合約程式的應用程式介面,用以執行區塊鏈合約程式以讀取、處理及更新合約資料(步驟270);區塊鏈合約系統130根據更新的合約資料產生第二合約區塊鏈交易,並且比對第一合約區塊鏈交易與第二合約區塊鏈交易以產生比對結果,以及將所述比對結果記錄在區塊鏈核心系統120,其中,當比對結果為一致時,區塊鏈合約系統更新合約資料且寫入至區塊鏈以作為區塊鏈資料(步驟280);以及區塊鏈核心系統120根據記錄的比對結果通知應用端主機110所述已簽章區塊鏈交易的執行結果,其中,當比對結果為一致時,執行結果為成功,當比對結果為不一致時,執行結果為失敗(步驟290)。透過上述步驟,即可透過區塊鏈合約系統130根據應用端主機110的呼叫請求執行相應的區塊鏈合約程式,並且在執行過程中根據合約資料產生合約區塊鏈交易,以供應用端主機110簽章且提交至區塊鏈核心系統120進行上鏈,再由區塊鏈核心系統120將已上鏈的區塊鏈交易傳送至區塊鏈合約系統130,以便使其擷取呼叫參數並據以執行區塊鏈合約程式,並且同樣根據合約資料產生合約區塊鏈交易,以及比對上鏈前後的合約區塊鏈交易之合約資料是否一致,以判斷是否遭到竄改、被其他交易變更或重複執行。
以下配合「第3A圖」及「第3B圖」以實施例的方式進行如下說明,「第3A圖」及「第3B圖」為應用本發明的驗證流程之示意圖。首先,請參閱「第3A圖」所示意的驗證流程300a,當應用端主機110要呼叫區塊鏈合約時,將發送呼叫請求(已經過應用端主機110簽章)至區塊鏈合約系統130,此時,區塊鏈合約系統130會驗證此呼叫請求以檢核應用端主機110的身分,並且驗證其電子簽章是否正確。假設驗證無誤,區塊鏈合約系統130便會依據此呼叫請求,通過相應的區塊鏈合約程式的應用程式介面來呼叫區塊鏈合約程式,使區塊鏈合約程式讀取、處理及更新(寫入)合約資料。其中,在讀取合約資料時,若讀取的合約資料存在於交易快取區中,則直接讀取交易快取區中的合約資料以傳回區塊鏈合約程式;若讀取的合約資料不存在於交易快取區中時,則從合約資料庫中讀取,並且將讀取到的合約資料儲存於交易快取區中,以及記錄此合約資料來自合約資料庫。另外,在寫入合約資料時,則是將寫入的合約資料儲存(或更新)至交易快取區中,並且記錄此合約資料來自寫入動作,而且此合約資料不寫入合約資料庫中。
接下來,區塊鏈合約系統130會根據更新的合約資料產生第一合約區塊鏈交易,並且將其傳送至應用端主機110。在實際上,產生的第一合約區塊鏈交易包含:(1)應用端主機110呼叫應用程式介面的參數,其記錄於第一合約區塊鏈交易的呼叫參數;(2)讀取過的合約資料;(3)寫入的合約資料。其中,在讀取過的合約資料的部分,是將交易快取區中記錄為來自合約資料庫的每一筆合約資料計算雜湊值,再將合約資料的鍵值與雜湊值記錄在第一合約區塊鏈交易的讀取資料區中;在寫入的合約資料的部分,是將交易快取區中記錄為來自寫入動作的每一筆合約資料計算雜湊值,再將合約資料的內容與雜湊值記錄在第一合約區塊鏈交易的寫入資料區中。如此一來,便可組成第一合約區塊鏈交易且將其傳回應用端主機110。
當應用端主機110接收到來自區塊鏈合約系統130的第一合約區塊鏈交易時,將對其進行簽章,例如:以應用端主機110所代表的實名使用者的電子憑證進行簽章,或以匿名使用者的私鑰進行電子簽章,用以產生已簽章區塊鏈交易。接著,將所述已簽章區塊鏈交易傳送至區塊鏈核心系統120以供其進行驗證及上鏈。也就是說,區塊鏈核心系統120在接收到應用端主機110所傳送的已簽章區塊鏈交易後,會使用區塊鏈共識協議與其他節點主機(或稱為區塊鏈節點)進行共識同步,進而將已簽章區塊鏈交易寫入至區塊鏈以完成上鏈,並且更新區塊鏈資料庫。接下來,區塊鏈核心系統120在完成上鏈後,會將已簽章區塊鏈交易傳送至區塊鏈合約系統130執行,並且等待區塊鏈合約系統130傳回執行結果,以便將此執行結果記錄於區塊鏈資料庫中的合約區塊鏈交易。特別要強調的是,區塊鏈核心系統120將第一合約區塊鏈交易傳送至區塊鏈合約系統130執行時,必須以第一合約區塊鏈交易在區塊鏈中的順序(所在區塊的順序,以及交易在區塊中的順序)依序執行,以確保所有區塊鏈節點執行第一合約區塊鏈交易的順序是一致的。
承上所述,當區塊鏈合約系統130接收到區塊鏈核心系統120傳送的已簽章區塊鏈交易時,會從中擷取呼叫參數。接著,請參閱「第3B圖」所示意的驗證流程300b,區塊鏈合約系統130會以此呼叫參數呼叫對應的區塊鏈合約程式的應用程式介面,以便執行區塊鏈合約程式,並且在交易快取區中,記錄區塊鏈合約程式執行過程中所讀取/寫入的合約資料,以作為是否被竄改或是否被其他交易變更的判斷依據,直到區塊鏈合約程式執行結束返回為止。具體來說,從已簽章區塊鏈交易中取出讀取資料區,並且將其與交易快取區中記錄為來自合約資料庫的合約資料進行比對以判斷是否完全符合,以及從已簽章區塊鏈交易中取出寫入資料區,並且將其與交易快取區中記錄為來自寫入動作的合約資料進行比對,以便判斷兩者是否完全符合,舉例來說,比對資料的鍵值與雜湊值是否相同,若相同即代表符合,反之則代表不符合。假設上述兩個比對不完全符合,表示這個已簽章區塊鏈交易可能遭到竄改,或者已經失效,或與其他交易衝突。因此,區塊鏈合約系統130將拒絕執行這個已簽章區塊鏈交易,並且傳送失敗結果至在區塊鏈核心系統120以記錄為比對結果不一致,反之若比對結果為一致時,區塊鏈合約系統130將更新合約資料並且寫入至區塊鏈,以及傳送成功結果至區塊鏈核心系統120以記錄為比對結果為一致。最後,區塊鏈核心系統120會根據比對結果輸出相應的執行結果以通知應用端主機110。
綜上所述,可知本發明與先前技術之間的差異在於透過區塊鏈合約系統根據應用端主機的呼叫請求執行相應的區塊鏈合約程式,並且在執行過程中根據合約資料產生合約區塊鏈交易,以供應用端主機簽章且提交至區塊鏈核心系統進行上鏈,再由區塊鏈核心系統將已上鏈的區塊鏈交易傳送至區塊鏈合約系統,以便使其擷取呼叫參數並據以執行區塊鏈合約程式,並且同樣根據合約資料產生合約區塊鏈交易,以及比對上鏈前後的合約區塊鏈交易之合約資料是否一致,以判斷是否遭到竄改、被其他交易變更或重複執行,藉由此一技術手段可以解決先前技術所存在的問題,進而達成提高確保交易的正確性及有效性之技術功效。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
100:區塊鏈環境
110:應用端主機
120:區塊鏈核心系統
121:驗證模組
122:記錄模組
130:區塊鏈合約系統
131:產生模組
132:比對模組
300a,300b:驗證流程
步驟210:區塊鏈核心系統由多個節點主機組成,用以接收與驗證應用端主機傳送的一已簽章區塊鏈交易,並且將驗證通過的所述已簽章區塊鏈交易寫入至一區塊鏈以作為一區塊鏈資料
步驟220:區塊鏈合約系統建置在該區塊鏈核心系統上,用以儲存一區塊鏈合約程式,該區塊鏈合約程式允許存取一合約資料,並且在該應用端主機呼叫時,根據所述合約資料產生一第一合約區塊鏈交易,以及在該區塊鏈核心系統呼叫時,根據所述合約資料產生一第二合約區塊鏈交易
步驟230:該應用端主機通過該區塊鏈合約程式的一應用程式介面發送一呼叫請求至該區塊鏈合約系統,用以呼叫所述區塊鏈合約程式以讀取、處理及更新所述合約資料
步驟240:該區塊鏈合約系統根據更新的該合約資料產生所述第一合約區塊鏈交易,並且將所述第一合約區塊鏈交易傳送至該應用端主機
步驟250:該應用端主機對所述第一合約區塊鏈交易進行簽章以生成所述已簽章區塊鏈交易,並且將所述已簽章區塊鏈交易傳送至該區塊鏈核心系統
步驟260:該區塊鏈核心系統將所述已簽章區塊鏈交易寫入該區塊鏈,以及傳送至該區塊鏈合約系統執行
步驟270:該區塊鏈合約系統自接收到的所述已簽章區塊鏈交易中擷取一呼叫參數,並且以所述呼叫參數呼叫相應的所述區塊鏈合約程式的所述應用程式介面,用以執行所述區塊鏈合約程式以讀取、處理及更新所述合約資料
步驟280:該區塊鏈合約系統根據更新的所述合約資料產生所述第二合約區塊鏈交易,並且比對所述第一合約區塊鏈交易與所述第二合約區塊鏈交易以產生一比對結果,以及將該比對結果記錄在該區塊鏈核心系統,其中,當該比對結果為一致時,該區塊鏈合約系統更新所述合約資料且寫入至該區塊鏈以作為該區塊鏈資料
步驟290:該區塊鏈核心系統根據記錄的該比對結果通知該應用端主機所述已簽章區塊鏈交易的一執行結果,其中,當該比對結果為一致時,所述執行結果為成功,當該比對結果為不一致時,所述執行結果為失敗
第1圖為本發明區塊鏈合約交易的驗證系統的系統方塊圖。
第2A圖及第2B圖為本發明區塊鏈合約交易的驗證方法的方法流程圖。
第3A圖及第3B圖為應用本發明的驗證流程之示意圖。
100:區塊鏈環境
110:應用端主機
120:區塊鏈核心系統
121:驗證模組
122:記錄模組
130:區塊鏈合約系統
131:產生模組
132:比對模組
Claims (10)
- 一種區塊鏈合約交易的驗證系統,該系統包含: 一應用端主機,用以通過一區塊鏈合約程式的一應用程式介面發送一呼叫請求,並且接收相應該呼叫請求的一第一合約區塊鏈交易進行簽章,用以產生一已簽章區塊鏈交易以進行傳送,其中,該區塊鏈合約程式允許存取一合約資料; 一區塊鏈核心系統,由多個節點主機組成且連接該應用端主機,該區塊鏈核心系統包含: 一驗證模組,用以接收與驗證該應用端主機傳送的該已簽章區塊鏈交易,並且將驗證通過的所述已簽章區塊鏈交易寫入至一區塊鏈以作為一區塊鏈資料,以及在成功寫入該區塊鏈後,傳送所述已簽章區塊鏈交易;以及 一記錄模組,用以記錄一比對結果以根據記錄的該比對結果通知該應用端主機所述已簽章區塊鏈交易的一執行結果,其中,當該比對結果為一致時,所述執行結果為成功,當該比對結果為不一致時,所述執行結果為失敗;以及 一區塊鏈合約系統,建置在該區塊鏈核心系統上,並且連接該應用端主機及儲存該區塊鏈合約程式,該區塊鏈合約系統包含: 一產生模組,用以根據該應用端主機的該呼叫請求呼叫所述區塊鏈合約程式以產生所述第一合約區塊鏈交易並傳送至該應用端主機,以及自該區塊鏈核心系統接收所述已簽章區塊鏈交易以從中擷取一呼叫參數,並且根據所述呼叫參數呼叫相應的所述區塊鏈合約程式的所述應用程式介面,用以執行所述區塊鏈合約程式以產生一第二合約區塊鏈交易,其中,該區塊鏈合約程式包含對所述合約資料進行讀取、處理及更新;以及 一比對模組,連接該產生模組,用以比對所述第一合約區塊鏈交易與所述第二合約區塊鏈交易以產生所述比對結果,以及將該比對結果記錄在該區塊鏈核心系統,其中,當該比對結果為一致時,該區塊鏈合約系統更新所述合約資料且寫入至該區塊鏈以作為該區塊鏈資料。
- 如請求項1之區塊鏈合約交易的驗證系統,其中該區塊鏈合約程式在讀取所述合約資料時,當所述合約資料存在於一交易快取區時,直接讀取該交易快取區中的所述合約資料以回傳給所述區塊鏈合約程式,當所述合約資料不存在於該交易快取區時,自一合約資料庫中讀取所述合約資料,並且將讀取到的所述合約資料儲存在所述交易快取區中,同時記錄所述合約資料來自該合約資料庫,以及在更新所述合約資料時,將更新的所述合約資料寫入至所述交易快取區中,並且記錄為來自寫入動作,以及更新的所述合約資料不寫入所述合約資料庫中。
- 如請求項2之區塊鏈合約交易的驗證系統,其中該產生模組產生所述第一合約區塊鏈交易係將該呼叫請求的參數記錄在所述第一合約區塊鏈交易的所述呼叫參數,再將該交易快取區中記錄為來自該合約資料庫的每一所述合約資料計算出相應的一雜湊值,以及將每一所述合約資料的一鍵值及該雜湊值記錄在所述第一合約區塊鏈交易的一讀取資料區,並且該交易快取區中記錄為來自寫入動作的每一所述合約資料計算出相應的該雜湊值,再將每一所述合約資料的內容及該雜湊值記錄在所述第一合約區塊鏈交易的一寫入資料區,最後將該呼叫參數、該讀取資料區及該寫入資料區的資料組成所述第一合約區塊鏈交易以傳送至該應用端主機。
- 如請求項1之區塊鏈合約交易的驗證系統,其中該區塊鏈核心系統將所述已簽章區塊鏈交易傳送至該區塊鏈合約系統執行時,根據所述已簽章區塊鏈交易在區塊鏈中的順序依序執行,以確保所有所述節點主機執行所述已簽章區塊鏈交易的順序一致,以及接收來自該區塊鏈合約系統的執行結果以記錄在一區塊鏈資料庫。
- 如請求項3之區塊鏈合約交易的驗證系統,其中該區塊鏈合約系統接收到所述已簽章區塊鏈交易後,自所述已簽章區塊鏈交易中取出所述呼叫參數,並且以所述呼叫參數呼叫對應的所述區塊鏈合約程式的該應用程式介面,接著在該交易快取區中記錄所述區塊鏈合約程式執行過程中的讀取/寫入的所述合約資料,直到所述區塊鏈合約程式執行結束返回為止,以及自所述已簽章區塊鏈交易中,取出所述讀取資料區,並且根據所述雜湊值及所述鍵值比對所述交易快取區中記錄為來自所述合約資料庫的所述合約資料是否相同、自所述已簽章區塊鏈交易中,取出所述寫入資料區,並且根據所述雜湊值及所述鍵值比對所述交易快取區中記錄為來自寫入動作的所述合約資料的所述雜湊值及所述鍵值是否相同,當比對不完全相同時,拒絕執行所述已簽章區塊鏈交易,並且傳送一失敗結果至所述區塊鏈核心系統,當比對完全相同時,將所述已簽章區塊鏈交易的所述寫入資料區更新至所述合約資料庫中,並且將更新的所述合約資料與所述已簽章區塊鏈交易進行連接,以及在所述合約資料更新後傳送一成功結果至所述區塊鏈核心系統。
- 一種區塊鏈合約交易的驗證方法,應用在具有一應用端主機、一區塊鏈核心系統及一區塊鏈合約系統的環境中,其步驟包括: 該區塊鏈核心系統由多個節點主機組成,用以接收與驗證該應用端主機傳送的一已簽章區塊鏈交易,並且將驗證通過的所述已簽章區塊鏈交易寫入至一區塊鏈以作為一區塊鏈資料; 該區塊鏈合約系統建置在該區塊鏈核心系統上,用以儲存一區塊鏈合約程式,該區塊鏈合約程式允許存取一合約資料,並且在該應用端主機呼叫時,根據所述合約資料產生一第一合約區塊鏈交易,以及在該區塊鏈核心系統呼叫時,根據所述合約資料產生一第二合約區塊鏈交易; 該應用端主機通過該區塊鏈合約程式的一應用程式介面發送一呼叫請求至該區塊鏈合約系統,用以呼叫所述區塊鏈合約程式以讀取、處理及更新所述合約資料; 該區塊鏈合約系統根據更新的該合約資料產生所述第一合約區塊鏈交易,並且將所述第一合約區塊鏈交易傳送至該應用端主機; 該應用端主機對所述第一合約區塊鏈交易進行簽章以生成所述已簽章區塊鏈交易,並且將所述已簽章區塊鏈交易傳送至該區塊鏈核心系統; 該區塊鏈核心系統將所述已簽章區塊鏈交易寫入至該區塊鏈,以及傳送至該區塊鏈合約系統執行; 該區塊鏈合約系統自接收到的所述已簽章區塊鏈交易中擷取一呼叫參數,並且以所述呼叫參數呼叫相應的所述區塊鏈合約程式的所述應用程式介面,用以執行所述區塊鏈合約程式以讀取、處理及更新所述合約資料; 該區塊鏈合約系統根據更新的所述合約資料產生所述第二合約區塊鏈交易,並且比對所述第一合約區塊鏈交易與所述第二合約區塊鏈交易以產生一比對結果,以及將該比對結果記錄在該區塊鏈核心系統,其中,當該比對結果為一致時,該區塊鏈合約系統更新所述合約資料且寫入至該區塊鏈以作為該區塊鏈資料;以及 該區塊鏈核心系統根據記錄的該比對結果通知該應用端主機所述已簽章區塊鏈交易的一執行結果,其中,當該比對結果為一致時,所述執行結果為成功,當該比對結果為不一致時,所述執行結果為失敗。
- 如請求項6之區塊鏈合約交易的驗證方法,其中讀取及更新所述合約資料包含下列步驟: 在讀取所述合約資料時,當所述合約資料存在於一交易快取區時,直接讀取該交易快取區中的所述合約資料以回傳給所述區塊鏈合約程式,當所述合約資料不存在於該交易快取區時,自一合約資料庫中讀取所述合約資料,並且將讀取到的所述合約資料儲存在所述交易快取區中,同時記錄所述合約資料來自該合約資料庫;以及 在更新所述合約資料時,將更新的所述合約資料寫入至所述交易快取區中,並且記錄為來自寫入動作,以及更新的所述合約資料不寫入所述合約資料庫中。
- 如請求項7之區塊鏈合約交易的驗證方法,其中產生所述第一合約區塊鏈交易包含下列步驟: 將該呼叫請求的參數記錄在所述第一合約區塊鏈交易的所述呼叫參數; 將該交易快取區中記錄為來自該合約資料庫的每一所述合約資料計算出相應的一雜湊值,再將每一所述合約資料的一鍵值及該雜湊值記錄在所述第一合約區塊鏈交易的一讀取資料區; 將該交易快取區中記錄為來自寫入動作的每一所述合約資料計算出相應的該雜湊值,再將每一所述合約資料的內容及該雜湊值記錄在所述第一合約區塊鏈交易的一寫入資料區;以及 將該呼叫參數、該讀取資料區及該寫入資料區的資料組成所述第一合約區塊鏈交易以傳送至該應用端主機。
- 如請求項6之區塊鏈合約交易的驗證方法,其中該區塊鏈核心系統將所述已簽章區塊鏈交易傳送至該區塊鏈合約系統執行時,根據所述已簽章區塊鏈交易在區塊鏈中的順序依序執行,以確保所有所述節點主機執行所述已簽章區塊鏈交易的順序一致,以及接收來自該區塊鏈合約系統的執行結果以記錄在一區塊鏈資料庫。
- 如請求項8之區塊鏈合約交易的驗證方法,其中該區塊鏈合約系統接收到所述已簽章區塊鏈交易後,執行下列步驟: (A) 自所述已簽章區塊鏈交易中取出所述呼叫參數,並且以所述呼叫參數呼叫對應的所述區塊鏈合約程式的該應用程式介面; (B) 在該交易快取區中記錄所述區塊鏈合約程式執行過程中的讀取/寫入的所述合約資料,直到所述區塊鏈合約程式執行結束返回為止; (C) 自所述已簽章區塊鏈交易中,取出所述讀取資料區,並且根據所述雜湊值及所述鍵值比對所述交易快取區中記錄為來自所述合約資料庫的所述合約資料是否相同; (D) 自所述已簽章區塊鏈交易中,取出所述寫入資料區,並且根據所述雜湊值及所述鍵值比對所述交易快取區中記錄為來自寫入動作的所述合約資料的所述雜湊值及所述鍵值是否相同; (E) 當步驟C及步驟D的比對不完全相同時,拒絕執行所述已簽章區塊鏈交易,並且傳送一失敗結果至所述區塊鏈核心系統;以及 (F) 當步驟C及步驟D的比對完全相同時,將所述已簽章區塊鏈交易的所述寫入資料區更新至所述合約資料庫中,並且將更新的所述合約資料與所述已簽章區塊鏈交易進行連接,以及在所述合約資料更新後傳送一成功結果至所述區塊鏈核心系統。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111147460A TWI817863B (zh) | 2022-12-09 | 2022-12-09 | 區塊鏈合約交易的驗證系統及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111147460A TWI817863B (zh) | 2022-12-09 | 2022-12-09 | 區塊鏈合約交易的驗證系統及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
TWI817863B true TWI817863B (zh) | 2023-10-01 |
Family
ID=89858033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111147460A TWI817863B (zh) | 2022-12-09 | 2022-12-09 | 區塊鏈合約交易的驗證系統及其方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI817863B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210075589A1 (en) * | 2019-07-02 | 2021-03-11 | Advanced New Technologies Co., Ltd. | System and method for blockchain-based cross-entity authentication |
TWM611967U (zh) * | 2020-05-15 | 2021-05-21 | 天宿智能科技股份有限公司 | 結合區塊鏈的資產存證彙整系統 |
TWI740378B (zh) * | 2019-07-12 | 2021-09-21 | 開曼群島商創新先進技術有限公司 | 用於進行交易驗證的方法及裝置 |
TWI744863B (zh) * | 2020-04-16 | 2021-11-01 | 天宿智能科技股份有限公司 | 基於區塊鏈之資產管理履歷存證彙整系統及其方法 |
US20220122090A1 (en) * | 2020-10-16 | 2022-04-21 | Toyota Motor North America, Inc. | Automatic detection and validation of transport service |
TWM638100U (zh) * | 2022-12-09 | 2023-02-21 | 臺灣網路認證股份有限公司 | 區塊鏈合約交易的驗證系統 |
-
2022
- 2022-12-09 TW TW111147460A patent/TWI817863B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210075589A1 (en) * | 2019-07-02 | 2021-03-11 | Advanced New Technologies Co., Ltd. | System and method for blockchain-based cross-entity authentication |
TWI740378B (zh) * | 2019-07-12 | 2021-09-21 | 開曼群島商創新先進技術有限公司 | 用於進行交易驗證的方法及裝置 |
TWI744863B (zh) * | 2020-04-16 | 2021-11-01 | 天宿智能科技股份有限公司 | 基於區塊鏈之資產管理履歷存證彙整系統及其方法 |
TWM611967U (zh) * | 2020-05-15 | 2021-05-21 | 天宿智能科技股份有限公司 | 結合區塊鏈的資產存證彙整系統 |
US20220122090A1 (en) * | 2020-10-16 | 2022-04-21 | Toyota Motor North America, Inc. | Automatic detection and validation of transport service |
TWM638100U (zh) * | 2022-12-09 | 2023-02-21 | 臺灣網路認證股份有限公司 | 區塊鏈合約交易的驗證系統 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737944B (zh) | 基於區塊鏈的交易執行方法及裝置、電子設備 | |
CN110597925B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
JP7213310B2 (ja) | マシン可読コードを介したオフラインデータ転送のための方法及びシステム | |
US11790370B2 (en) | Techniques for expediting processing of blockchain transactions | |
US10891305B2 (en) | Synchronization of data between systems | |
US11652634B2 (en) | Computer-implemented systems and methods for linking a blockchain to a digital twin | |
KR102120703B1 (ko) | 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치 | |
WO2020029755A1 (zh) | 交易校验方法、装置、存储介质及电子设备 | |
US20180374086A1 (en) | Blockchain transaction commitment ordering | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
US20230090296A1 (en) | Transaction verification of a transaction based on a blockchain network | |
TWI772654B (zh) | 跨區塊鏈第三方仲裁履約保證系統及其方法 | |
CN112055023B (zh) | 基于预言机的访问请求处理方法、装置、设备和介质 | |
WO2022121538A1 (zh) | 基于区块链的数据同步方法、系统及相关设备 | |
WO2021056968A1 (zh) | 用于执行智能合约的方法和装置 | |
US20230052935A1 (en) | Asynchronous accounting method and apparatus for blockchain, medium and electronic device | |
CN109951546A (zh) | 基于智能合约的事务请求处理方法、装置、设备和介质 | |
CN109710695A (zh) | 事务请求有效性识别和发起方法、装置、设备和介质 | |
CN112613877A (zh) | 应用于区块链网络的智能合约触发方法、装置及相关设备 | |
TWM638100U (zh) | 區塊鏈合約交易的驗證系統 | |
CN112291321B (zh) | 业务处理方法、装置及系统 | |
TWI817863B (zh) | 區塊鏈合約交易的驗證系統及其方法 | |
WO2023207529A1 (zh) | 数据处理方法、装置及设备、介质、产品 | |
KR102637173B1 (ko) | 5g 모바일 에지 컴퓨팅 환경을 위한 블록체인 시스템, 장치 및 운영 방법 | |
JP7273241B2 (ja) | インテリジェント契約実行方法および装置 |