TWI743458B - 一種並行化執行區塊鏈交易的方法、裝置及系統 - Google Patents
一種並行化執行區塊鏈交易的方法、裝置及系統 Download PDFInfo
- Publication number
- TWI743458B TWI743458B TW108109776A TW108109776A TWI743458B TW I743458 B TWI743458 B TW I743458B TW 108109776 A TW108109776 A TW 108109776A TW 108109776 A TW108109776 A TW 108109776A TW I743458 B TWI743458 B TW I743458B
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- queue
- transactions
- written
- block
- Prior art date
Links
Images
Classifications
-
- 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/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公開了一種並行化執行區塊鏈交易的方法、裝置及系統。在本說明書實施例中,如果待寫入區塊中的每個交易皆不是對不止一個儲存地址上儲存的資訊進行更新的交易,那麼,區塊鏈網路中的每個節點可以將待寫入區塊中的各交易組織成至少兩個交易隊列,然後,同時開始執行每個交易隊列中的交易。
Description
本說明書實施例關於資訊技術領域,尤其關於一種並行化執行區塊鏈交易的方法、裝置及系統。
對於常見的區塊鏈應用情境而言,當需要進行各節點間的共識時,各節點會基於共識算法選舉出有權限將若干待執行的交易打包成區塊的節點,即記帳節點。在共識之後,記帳節點從緩存中撈取若干待執行的交易打包成區塊,並將所述區塊廣播給其他節點。隨後,針對每個節點,該節點一方面會按照所述區塊中各交易被發起的先後順序,由先到後依次執行每個交易,另一方面會將所述區塊寫入區塊鏈。
通常,將節點由先到後逐個執行區塊中的每個交易的方式稱為串列化的交易執行方式。之所以要採用這種串列化的交易執行方式,是因為在常見的區塊鏈應用情境下,一筆交易的執行有時會對不止一個儲存地址上儲存的資訊進行更新,如果不採用串列化的交易執行方式,則容易出現有的交易執行失敗的情況。
但是,在有的區塊鏈應用情境下,不存在會對不止一個儲存地址上儲存的資訊進行更新的交易。在這些區塊鏈應用情境下,採用上述的串列化的交易執行方式,會導致交易執行效率較低。
為了解決現有的區塊鏈交易執行方式效率較低的問題,本說明書實施例提供一種並行化執行區塊鏈交易的方法、裝置及系統,技術方案如下:
根據本說明書實施例的第1態樣,提供一種並行化執行區塊鏈交易的方法,包括:
針對區塊鏈網路中的每個節點,該節點獲取待寫入區塊;針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存地址並存入資訊,或更新一個儲存地址上儲存的資訊;
從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;
同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;
將所述待寫入區塊寫入區塊鏈。
根據本說明書實施例的第2態樣,提供一種並行化執行區塊鏈交易的裝置,所述裝置為區塊鏈網路中的任一節點,所述裝置包括:
獲取模組,獲取待寫入區塊;針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存地址並存入資訊,或更新一個儲存地址上儲存的資訊;
組織模組,從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;
執行模組,同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;
寫入模組,將所述待寫入區塊寫入區塊鏈。
根據本說明書實施例的第3態樣,提供一種並行化執行區塊鏈交易的系統,包括由多個節點組成的區塊鏈網路;
所述區塊鏈網路中的任一節點,獲取待寫入區塊;從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;將所述待寫入區塊寫入區塊鏈;
其中,針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存地址並存入資訊,或更新一個儲存地址上儲存的資訊。
本說明書實施例所提供的技術方案,如果待寫入區塊中的每個交易皆不是對不止一個儲存地址上儲存的資訊進行更新的交易,那麼,區塊鏈網路中的每個節點可以將待寫入區塊中的各交易組織成至少兩個交易隊列,然後,同時開始執行每個交易隊列中的交易。如此,每個節點可以在單位時間內執行更多數量的交易,提升了交易執行效率。
應當理解的是,以上的一般描述和後文的細節描述僅是示例性和解釋性的,並不能限制本說明書實施例。
此外,本說明書實施例中的任一實施例並不需要達到上述的全部效果。
需要說明的是,在本說明書中所描述的交易(transaction),是指使用者透過區塊鏈的客戶端創建,並需要最終發佈至區塊鏈的分布式資料庫中的一筆資料。
也就是說,區塊鏈中的交易,存在狹義的交易以及廣義的交易之分。狹義的交易是指使用者向區塊鏈發佈的一筆價值轉移;例如,在傳統的比特幣區塊鏈網路中,交易可以是使用者在區塊鏈中發起的一筆轉帳。而廣義的交易是指使用者向區塊鏈發佈的一筆具有業務意圖的業務資料;例如,運營方可以基於實際的業務需求搭建一個聯盟鏈,依託於聯盟鏈配置一些與價值轉移無關的其它類型的在線業務(比如,租房業務、車輛調度業務、保險理賠業務、信用服務、醫療服務等),而在這類聯盟鏈中,交易可以是使用者在聯盟鏈中發佈的一筆具有業務意圖的業務消息或者業務請求。
下面,以以太坊這種區塊鏈協議為例,對現有技術採用串列化的交易執行方式的原因進行詳細說明。值得強調的是,在除以太坊之外的其他區塊鏈協議中,採用串列化的交易執行方式的原因也是類似的。
在以太坊中,存在外部帳戶與合約帳戶之分。外部帳戶用於儲存使用者擁有的以太幣餘額,外部帳戶本質上是儲存有餘額資訊的儲存地址。合約帳戶用於儲存使用者創設的智慧型合約,合約帳戶本質上是儲存有智慧型合約代碼的儲存地址。
在以太坊中,一般有兩種類型的交易,即外部帳戶向其他帳戶(可以是外部帳戶也可以是合約帳戶)的轉帳交易,以及外部帳戶創建合約帳戶的合約創建交易。
轉帳交易的執行一般會對不止一個儲存地址上儲存的資訊進行更新。具體而言,一筆轉帳交易的執行,通常會改變兩個帳戶的餘額(即兩個帳戶地址上儲存的餘額資訊),即從轉帳帳戶的餘額中扣除轉帳金額,向收帳帳戶的餘額中增加轉帳金額。一筆轉帳交易可執行的前提是轉帳帳戶的餘額不小於轉帳金額。
實際應用中,某一筆轉帳交易(記為轉帳交易A)中的轉帳帳戶,有可能是之前的另一筆轉帳交易(記為轉帳交易B)中的收帳使用者。如果不按照交易被發起的順序由先到後執行交易,那麼可能出現如下情況,即轉帳交易B未執行,導致轉帳交易A中的轉帳帳戶沒有充足的餘額進行轉帳。正是因為這樣,凡是關於轉帳交易的區塊鏈應用情境,都不得不採用串列化的交易執行方式,以保證交易可以順利執行。
而合約創建交易的執行實際上是創建一個合約帳戶,即創設一個儲存地址,並將智慧型合約代碼存入創設的儲存地址。顯然,合約創建交易的執行只會影響一個儲存地址。
此外,區塊鏈應用情境是多種多樣的,在有的區塊鏈應用情境下,可以基於以太坊進行擴展,開發出新類型的交易,這種交易的執行也可能只會影響一個儲存地址。例如,利用區塊鏈進行內容存證。一筆存證交易的執行,本質上是創設一個儲存地址,將要存證的內容存入創設的儲存地址。
基於以上,本發明提出了一種並行化執行區塊鏈交易的方法,專門針對某一類區塊鏈應用情境,在這類區塊鏈情境下,每筆交易的執行結果只會影響一個儲存地址。
為了使本領域技術人員更好地理解本說明書實施例中的技術方案,下面將結合本說明書實施例中的附圖,對本說明書實施例中的技術方案進行詳細地描述,顯然,所描述的實施例僅僅是本說明書的一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本領域普通技術人員所獲得的所有其他實施例,都應當屬於保護的範圍。
以下結合附圖,詳細說明本說明書各實施例提供的技術方案。
圖1是本說明書實施例提供的一種並行化執行區塊鏈交易的方法的流程示意圖,包括以下步驟:
S100:針對區塊鏈網路中的每個節點,該節點獲取待寫入區塊。
在本說明書實施例中,所述待寫入區塊實際上各節點共識之後,由記帳節點打包成的區塊。記帳節點會將所述待寫入區塊廣播給其他節點。眾所周知,在區塊鏈協議中,每個節點一方面需要執行待寫入區塊中的每個交易,另一方面需要將待寫入區塊寫入到區塊鏈中進行公示。所述待寫入區塊一旦寫入區塊鏈中,相當於將待寫入區塊中的每個交易進行了公示。公示於區塊鏈上的交易可以用來核查相應的交易執行結果是否正確,以防止有節點作惡。
在步驟S100中,針對每個節點,如果該節點是記帳節點,那麼該節點獲取所述待寫入區塊的方式具體可以是從自身的緩存中撈取若干交易打包成所述待寫入區塊;如果該節點不是記帳節點,那麼該節點獲取所述待寫入區塊的方式具體可以是接收記帳節點廣播的所述待寫入區塊。
值得強調的是,針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存地址並存入資訊,或更新一個儲存地址上儲存的資訊(向一個儲存地址存入資訊或修改一個儲存地址上儲存的資訊)。也就是說,所述待寫入區塊中的每個交易的執行結果,只會對一個儲存地址產生影響。
例如,創建合約帳戶的合約創建交易,就是執行結果為創設一個儲存地址並存入資訊的交易。
又如,在有些區塊鏈應用情境下,需要對每個使用者的購物記錄進行存證。那麼,就需要在資料庫中創設每個使用者對應的記錄儲存地址。當目標使用者進行購物時,就會產生一條購物記錄,區塊鏈網路中的任一節點會基於該購物記錄構建記錄存證交易並廣播。然後,針對每個節點,該節點會在合適的時機(即該記錄存證交易被打包進待寫入模組並廣播給各節點時)執行該記錄存證交易,即將該購物記錄存入目標使用者對應的記錄儲存地址。顯然,目標使用者進行多次購物所產生的多條購物記錄都會被存入目標使用者對應的記錄儲存地址。因此,上述的記錄存證交易,就是執行結果為更新一個儲存地址上儲存的資訊交易。
S102:從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列。
在現有技術中,每個節點通常採用串列化的交易執行方式來執行所述待寫入區塊中的各交易。如圖2所示,所謂串列化的交易執行方式,是指每個節點按照一定的先手順序,逐個執行所述待寫入區塊中的每個交易。
而在本說明書實施例中,會將所述待寫入區塊中的各交易拆分為N組,其中,N為大於1的自然數。然後,針對每個組,將這個組中的交易排列成一個交易隊列。本說明書對每個交易隊列中交易的排列順序不做具體限定。
S104:同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易。
在步驟S104中,實際上是同時開始並行化的針對每個交易隊列進行交易執行。而具體到每個交易隊列,實際上是串列化執行該交易隊列中的每個交易。如圖3所示。
所謂“同時”,是指節點在同一時間開始執行每個交易隊列中的交易。相當於節點在同一時間創設了N個交易執行進程,每個交易進程負責執行一個交易隊列中的交易。
對比圖2和圖3的兩種交易執行方式,顯然,採用圖3所示的交易執行方式,可以在單位時間內執行更多的交易。
S106:將所述待寫入區塊寫入區塊鏈。
在本說明書實施例中,針對每個節點,可以在執行步驟S104之後,執行步驟S106;也可以不在執行步驟S104之後才執行步驟S106。
透過圖1所示的並行化執行區塊鏈交易的方法,如果待寫入區塊中的每個交易皆不是對不止一個儲存地址上儲存的資訊進行更新的交易,那麼,區塊鏈網路中的每個節點可以將待寫入區塊中的各交易組織成至少兩個交易隊列,然後,同時開始執行每個交易隊列中的交易。如此,每個節點可以在單位時間內執行更多數量的交易,提升了交易執行效率。
此外,在本說明書實施例中,每個交易隊列對應的交易數量(即每個交易隊列中的交易的數量)可以比較接近。如此,在並行化的同時針對各交易隊列進行交易執行時,每個執行進程所執行的交易的數量比較接近,不會出現有的進程閒置,有的進程負荷過重的情況。這也意味著,節點可以在單位時間內,執行盡可能多的交易。
具體地,可以設置基於每個交易隊列對應的交易數量計算得到的變異數不大於指定閾值。基於每個交易隊列對應的交易數量計算得到的變異數越小,各交易隊列對應的交易數量就越接近。
另外,在本說明書實施例中,具體可以採用以太坊協議構建區塊鏈網路。在以太坊中,每個節點上安裝有虛擬機程式,用於為以太坊協議的實現提供運行環境。
通常,一個虛擬機程式用於執行一個區塊鏈進程。而在本說明書實施例中,由於需要同時針對不止一個交易隊列,並行化的執行不止一個區塊鏈進程,因此,需要在每個節點上預先配置不止一個虛擬機程式。
具體地,如果需要將待寫入區塊中的交易組織成N個交易隊列,那麼,就需要預先在每個節點上配置N個虛擬機程式。
如此,在步驟S104中,可以建立預先配置的N個虛擬機程式與N個交易隊列之間的一一對應關係;同時針對每個交易隊列,透過該交易隊列對應的虛擬機程式,由先到後依次執行該交易隊列中的每個交易。
此外,在本說明書實施例中,通常,待寫入區塊中的交易既有第一類交易,也有第二類交易。其中,第一類交易是指,執行結果為更新一個儲存地址上儲存的資訊的交易;第二類交易是指,執行結果為創設一個儲存地址並存入資訊的交易。
顯然,待寫入區塊中可能存在不止一個第一類交易會對同一個儲存地址上儲存的資訊進行更新。而節點在執行每個第一類交易時,往往需要先存取當前所執行的第一類交易所針對的儲存地址。這種情況下,節點在執行待寫入區塊中的交易時,如果能對同一儲存地址對應的所有第一類交易進行集中批量執行,那麼只需要針對同一個儲存地址進行一次存取即可,這會顯著提升節點執行交易的速度。
具體地,在步驟S102中,可以從各交易中選擇出執行結果為更新一個儲存地址上儲存的資訊的交易,作為第一類交易,以及,將各交易中除第一類交易以外的其他交易作為第二類交易;將各第一類交易中,對應的儲存地址相同的第一類交易組織成一個交易子隊列;以每個交易子隊列為一個處理單位,並且,以每個第二類交易視為一個處理單位;將各處理單位組織成N個交易隊列。
如此,所述待寫入區塊中,對應於任一儲存地址的全部第一類交易都會被整合一個交易子隊列,該交易子隊列會被整體放入到某個交易隊列中。節點在針對該交易隊列進行交易執行時,一旦存取該儲存地址,就會連續執行該儲存地址對應的全部第一類交易。
進一步地,將各處理單位組織成N個交易隊列,可以如下:
根據每個處理單位對應的交易數量,由大到小對各處理單位進行排序;並且,初始化每個交易隊列對應的交易數量為0;根據排序結果,選擇第一個處理單位;將當前選擇的處理單位添加到最小交易隊列的隊尾,並更新所述最小交易隊列對應的交易數量;最小交易隊列是當前對應的交易數量最小的交易隊列;繼續選擇下一個處理單位,直至所有處理單位都被添加到交易隊列。
透過這種方式,可以使得各交易隊列分別對應的交易數量大體相當。這樣,在基於各交易隊列進行並行化的交易執行時,各執行進程上的工作負荷也大體相當,不會有某個執行進程閒置的情況出現,這樣可以在單位時間內執行最多的交易,顯著提升節點的交易執行效率。
基於圖1所示的方法,本說明書實施例還對應提供了一種並行化執行區塊鏈交易的裝置,所述裝置為區塊鏈網路中的任一節點,如圖4所示,所述裝置包括:
獲取模組401,獲取待寫入區塊;針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存地址並存入資訊,或更新一個儲存地址上儲存的資訊;
組織模組402,從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;
執行模組403,同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;
寫入模組404,將所述待寫入區塊寫入區塊鏈。
基於每個交易隊列對應的交易數量計算得到的變異數不大於指定閾值。
所述裝置上預先配置有N個虛擬機程式;
所述執行模組403,建立預先配置的N個虛擬機程式與N個交易隊列之間的一一對應關係;同時針對每個交易隊列,透過該交易隊列對應的虛擬機程式,由先到後依次執行該交易隊列中的每個交易。
所述組織模組402,從各交易中選擇出執行結果為更新一個儲存地址上儲存的資訊的交易,作為第一類交易,以及,將各交易中除第一類交易以外的其他交易作為第二類交易;將各第一類交易中,對應的儲存地址相同的第一類交易組織成一個交易子隊列;以每個交易子隊列為一個處理單位,並且,以每個第二類交易視為一個處理單位;將各處理單位組織成N個交易隊列。
所述組織模組402,根據每個處理單位對應的交易數量,由大到小對各處理單位進行排序;並且,初始化每個交易隊列對應的交易數量為0;根據排序結果,選擇第一個處理單位;將當前選擇的處理單位添加到最小交易隊列的隊尾,並更新所述最小交易隊列對應的交易數量,所述最小交易隊列是當前對應的交易數量最小的交易隊列;繼續選擇下一個處理單位,直至所有處理單位都被添加到交易隊列。
基於圖1所示的方法,本說明書實施例還對應提供了一種並行化執行區塊鏈交易的系統,如圖5所示,包括由多個節點組成的區塊鏈網路;
所述區塊鏈網路中的任一節點,獲取待寫入區塊;從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;將所述待寫入區塊寫入區塊鏈;
其中,針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存地址並存入資訊,或更新一個儲存地址上儲存的資訊。
本說明書實施例還提供一種計算機設備,其至少包括記憶體、處理器及儲存在記憶體上並可在處理器上運行的計算機程式,其中,處理器執行所述程式時實現圖1所示方法的功能。
圖6示出了本說明書實施例所提供的一種更為具體的計算設備硬體結構示意圖,該設備可以包括:處理器1010、記憶體1020、輸入/輸出介面1030、通訊介面1040和匯流排1050。其中處理器1010、記憶體1020、輸入/輸出介面1030和通訊介面1040透過匯流排1050實現彼此之間在設備內部的通訊連接。
處理器1010可以採用通用的CPU(Central Processing Unit,中央處理器)、微處理器、應用專用積體電路(Application Specific Integrated Circuit,ASIC)、或者一個或多個積體電路等方式實現,用於執行相關程式,以實現本說明書實施例所提供的技術方案。
記憶體1020可以採用ROM(Read Only Memory,唯讀記憶體)、RAM(Random Access Memory,隨機存取記憶體)、靜態儲存設備,動態儲存設備等形式實現。記憶體1020可以儲存操作系統和其他應用程式,在透過軟體或者韌體來實現本說明書實施例所提供的技術方案時,相關的程式代碼保存在記憶體1020中,並由處理器1010來呼叫執行。
輸入/輸出介面1030用於連接輸入/輸出模組,以實現資訊輸入及輸出。輸入輸出/模組可以作為組件配置在設備中(圖中未示出),也可以外接於設備以提供相應功能。其中輸入設備可以包括鍵盤、滑鼠、觸摸螢幕、麥克風、各類感測器等,輸出設備可以包括顯示器、揚聲器、振動器、指示燈等。
通訊介面1040用於連接通訊模組(圖中未示出),以實現本設備與其他設備的通訊交互。其中通訊模組可以透過有線方式(例如USB、網線等)實現通訊,也可以透過無線方式(例如行動網路、WIFI、藍牙等)實現通訊。
匯流排1050包括一通路,在設備的各個組件(例如處理器1010、記憶體1020、輸入/輸出介面1030和通訊介面1040)之間傳輸資訊。
需要說明的是,儘管上述設備僅示出了處理器1010、記憶體1020、輸入/輸出介面1030、通訊介面1040以及匯流排1050,但是在具體實施過程中,該設備還可以包括實現正常運行所必需的其他組件。此外,本領域的技術人員可以理解的是,上述設備中也可以僅包含實現本說明書實施例方案所必需的組件,而不必包含圖中所示的全部組件。
本說明書實施例還提供一種計算機可讀儲存媒體,其上儲存有計算機程式,該程式被處理器執行時實現圖1所示方法的功能。
計算機可讀媒體包括永久性和非永久性、可行動和非可行動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是計算機可讀指令、資料結構、程式的模組或其他資料。計算機的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體或其他內部記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁碟儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,計算機可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。
透過以上的實施方式的描述可知,本領域的技術人員可以清楚地瞭解到本說明書實施例可借助軟體加必需的通用硬體平臺的方式來實現。基於這樣的理解,本說明書實施例的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以儲存在儲存媒體中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台計算機設備(可以是個人計算機,伺服器,或者網路設備等)執行本說明書實施例各個實施例或者實施例的某些部分所述的方法。
上述實施例闡明的系統、方法、模組或單元,具體可以由計算機晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為計算機,計算機的具體形式可以是個人計算機、膝上型計算機、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板計算機、可穿戴設備或者這些設備中的任意幾種設備的組合。
本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於裝置和設備實施例而言,由於其基本相似於方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的方法實施例僅僅是示意性的,其中所述作為分離部件說明的模組可以是或者也可以不是物理上分開的,在實施本說明書實施例方案時可以把各模組的功能在同一個或多個軟體和/或硬體中實現。也可以根據實際的需要選擇其中的部分或者全部模組來實現本實施例方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
以上所述僅是本說明書實施例的具體實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本說明書實施例原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本說明書實施例的保護範圍。
S100:步驟
S102:步驟
S104:步驟
S106:步驟
1:交易
2:交易
3:交易
4:交易
5:交易
6:交易
401:獲取模組
402:組織模組
403:執行模組
404:寫入模組
1010:處理器
1020:記憶體
1030:輸入/輸出介面
1040:通訊介面
1050:匯流排
為了更清楚地說明本說明書實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本說明書實施例中記載的一些實施例,對於本領域普通技術人員來講,還可以根據這些附圖獲得其他的附圖。
圖1是本說明書實施例提供的一種並行化執行區塊鏈交易的方法的流程示意圖;
圖2是現有技術中串列化的交易執行方式示意圖;
圖3是本說明書實施例提供的並行化的交易執行方式示意圖;
圖4是本說明書實施例提供的一種並行化執行區塊鏈交易的裝置的結構示意圖;
圖5是本說明書實施例提供的一種並行化執行區塊鏈交易的系統的結構示意圖;
圖6是用於配置本說明書實施例方法的一種計算機設備的結構示意圖。
Claims (10)
- 一種並行化執行區塊鏈交易的方法,包括:針對區塊鏈網路中的每個節點,該節點獲取待寫入區塊;針對該待寫入區塊中的每個交易的執行結果為只創設一個儲存地址並存入資訊,或只更新一個儲存地址上儲存的資訊;從該待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;將該待寫入區塊寫入區塊鏈;針對該區塊鏈網路中的每個節點,該節點上預先配置有N個虛擬機程式;同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易,具體包括:建立預先配置的N個虛擬機程式與N個交易隊列之間的一一對應關係;同時針對每個交易隊列,透過該交易隊列對應的虛擬機程式,由先到後依次執行該交易隊列中的每個交易。
- 如請求項1之方法,基於每個交易隊列對應的交易數量計算得到的變異數不大於指定閾值。
- 如請求項1之方法,將各交易組織成N個交易隊列,具體包括:從各交易中選擇出執行結果為更新一個儲存地址上儲存的資訊的交易,作為第一類交易,以及,將各交易中除第一類交易以外的其他交易作為第二類交易;將各第一類交易中,對應的儲存地址相同的第一類交易組織成一個交易子隊列;以每個交易子隊列為一個處理單位,並且,以每個第二類交易視為一個處理單位;將各處理單位組織成N個交易隊列。
- 如請求項3之方法,將各處理單位組織成N個交易隊列,具體包括:根據每個處理單位對應的交易數量,由大到小對各處理單位進行排序;並且,初始化每個交易隊列對應的交易數量為0;根據排序結果,選擇第一個處理單位;將當前選擇的處理單位添加到最小交易隊列的隊尾,並更新該最小交易隊列對應的交易數量;最小交易隊列是當前對應的交易數量最小的交易隊列;繼續選擇下一個處理單位,直至所有處理單位都被添加到交易隊列。
- 一種並行化執行區塊鏈交易的裝置,該裝置為區塊鏈 網路中的任一節點,該裝置包括:獲取模組,獲取待寫入區塊;針對該待寫入區塊中的每個交易的執行結果為只創設一個儲存地址並存入資訊,或只更新一個儲存地址上儲存的資訊;組織模組,從該待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;執行模組,同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;寫入模組,將該待寫入區塊寫入區塊鏈;該裝置上預先配置有N個虛擬機程式;該執行模組,建立預先配置的N個虛擬機程式與N個交易隊列之間的一一對應關係;同時針對每個交易隊列,透過該交易隊列對應的虛擬機程式,由先到後依次執行該交易隊列中的每個交易。
- 如請求項5之裝置,基於每個交易隊列對應的交易數量計算得到的變異數不大於指定閾值。
- 如請求項5之裝置,該組織模組,從各交易中選擇出執行結果為更新一個儲存地址上儲存的資訊的交易,作為第一類交易,以及,將各交易中除第一類交易以外的其他交易作為第二類交易;將各第一類交易中,對應的儲存地址相同的第一類交易組織成一個交易子隊列;以每個交易子隊列為一個處理單位,並且,以每個第二類交易視為一 個處理單位;將各處理單位組織成N個交易隊列。
- 如請求項7之裝置,該組織模組,根據每個處理單位對應的交易數量,由大到小對各處理單位進行排序;並且,初始化每個交易隊列對應的交易數量為0;根據排序結果,選擇第一個處理單位;將當前選擇的處理單位添加到最小交易隊列的隊尾,並更新該最小交易隊列對應的交易數量,該最小交易隊列是當前對應的交易數量最小的交易隊列;繼續選擇下一個處理單位,直至所有處理單位都被添加到交易隊列。
- 一種並行化執行區塊鏈交易的系統,包括由多個節點組成的區塊鏈網路;該區塊鏈網路中的任一節點,獲取待寫入區塊;從該待寫入區塊中讀取各交易,並將各交易組織成N個交易隊列;N大於1;同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易;將該待寫入區塊寫入區塊鏈;其中,針對該待寫入區塊中的每個交易的執行結果為只創設一個儲存地址並存入資訊,或只更新一個儲存地址上儲存的資訊;針對該區塊鏈網路中的每個節點,該節點上預先配置有N個虛擬機程式;同時針對每個交易隊列,由先到後依次執行該交易隊列中的每個交易,具體包括: 建立預先配置的N個虛擬機程式與N個交易隊列之間的一一對應關係;同時針對每個交易隊列,透過該交易隊列對應的虛擬機程式,由先到後依次執行該交易隊列中的每個交易。
- 一種計算機設備,包括記憶體、處理器及儲存在記憶體上並可在處理器上運行的計算機程式,其中,該處理器執行該程式時實現如第1~4任一項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811261883.6 | 2018-10-26 | ||
CN201811261883.6A CN109636384A (zh) | 2018-10-26 | 2018-10-26 | 一种并行化执行区块链交易的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202016815A TW202016815A (zh) | 2020-05-01 |
TWI743458B true TWI743458B (zh) | 2021-10-21 |
Family
ID=66066815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108109776A TWI743458B (zh) | 2018-10-26 | 2019-03-21 | 一種並行化執行區塊鏈交易的方法、裝置及系統 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN109636384A (zh) |
TW (1) | TWI743458B (zh) |
WO (1) | WO2020082871A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109636384A (zh) * | 2018-10-26 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 一种并行化执行区块链交易的方法、装置及系统 |
CN110163609B (zh) * | 2019-05-28 | 2024-02-27 | 深圳前海微众银行股份有限公司 | 一种区块链中数据处理方法及装置 |
CN110675255B (zh) * | 2019-08-30 | 2021-04-02 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110689344B (zh) * | 2019-08-30 | 2021-04-09 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN113570460A (zh) * | 2019-08-30 | 2021-10-29 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN111047306A (zh) * | 2019-12-17 | 2020-04-21 | 北京菲林方德科技有限公司 | 一种交易输入集合的并行交易处理方法及装置 |
CN111199483A (zh) * | 2019-12-31 | 2020-05-26 | 陕西医链区块链集团有限公司 | 一种区块链交易执行方法、装置、电子设备及存储介质 |
CN111292192A (zh) * | 2020-02-18 | 2020-06-16 | 杭州复杂美科技有限公司 | 一种交易并行执行方法、设备及存储介质 |
CN111405037A (zh) * | 2020-03-13 | 2020-07-10 | 杭州复杂美科技有限公司 | 区块同步方法、设备和存储介质 |
CN111447269A (zh) * | 2020-03-25 | 2020-07-24 | 中国银行股份有限公司 | 区块链交易中高并发场景的去序列化方法及装置 |
CN113726875B (zh) * | 2020-07-08 | 2024-06-21 | 支付宝(杭州)信息技术有限公司 | 一种基于区块链一体机的交易处理方法及装置 |
CN112132583A (zh) * | 2020-08-14 | 2020-12-25 | 中信银行股份有限公司 | 区块链的交易处理方法、装置、电子设备及可读存储介质 |
CN111932257B (zh) * | 2020-08-18 | 2023-10-24 | 中国工商银行股份有限公司 | 一种区块链并行化处理方法及装置 |
CN112950185B (zh) * | 2021-03-11 | 2023-10-20 | 杭州复杂美科技有限公司 | 一种基于并行执行的交易费支付方法、设备及储存介质 |
CN112990895A (zh) * | 2021-03-11 | 2021-06-18 | 杭州复杂美科技有限公司 | 一种加速区块链交易并行执行的方法、设备及储存介质 |
CN113110934A (zh) * | 2021-04-09 | 2021-07-13 | 杭州复杂美科技有限公司 | 平行链区块生成方法、计算机设备和存储介质 |
CN113077344B (zh) * | 2021-04-15 | 2023-06-30 | 恒生电子股份有限公司 | 基于区块链的交易方法、装置、电子设备及存储介质 |
CN113064953B (zh) * | 2021-04-21 | 2023-08-22 | 湖南天河国云科技有限公司 | 基于邻居信息聚合的区块链地址聚类方法及装置 |
CN113656509B (zh) * | 2021-08-26 | 2024-05-31 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
CN113656510A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201810148A (zh) * | 2016-09-02 | 2018-03-16 | 現代財富控股有限公司 | 區塊鏈負載平衡系統及其方法 |
CN108269072A (zh) * | 2016-12-30 | 2018-07-10 | 深圳瀚德创客金融投资有限公司 | 用于区块链的交易处理方法和网络节点 |
CN108512775A (zh) * | 2018-04-16 | 2018-09-07 | 杭州秘猿科技有限公司 | 一种排序交易队列的方法及装置 |
CN108564470A (zh) * | 2018-04-17 | 2018-09-21 | 北京天德科技有限公司 | 一种区块链中并行建块的交易分发方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008014523A2 (en) * | 2006-07-28 | 2008-01-31 | Futurelogic, Inc. | Methods and apparatus for a downloadable financial transaction printer |
CN103677771B (zh) * | 2012-09-06 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种并发事务的处理方法和装置 |
CN106530083B (zh) * | 2016-10-27 | 2018-06-29 | 深圳壹账通智能科技有限公司 | 基于区块链的多链管理方法及系统 |
CN106611061B (zh) * | 2016-12-29 | 2018-02-23 | 北京众享比特科技有限公司 | 基于区块链网络的数据库写入方法及系统 |
CN106843774B (zh) * | 2017-02-24 | 2017-12-26 | 合肥工业大学 | 一种基于区块链的智能合约的众包构建方法 |
CN107688999B (zh) * | 2017-08-11 | 2020-11-13 | 杭州溪塔科技有限公司 | 一种基于区块链的并行交易执行方法 |
CN108537543B (zh) * | 2018-03-30 | 2023-07-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN109636384A (zh) * | 2018-10-26 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 一种并行化执行区块链交易的方法、装置及系统 |
-
2018
- 2018-10-26 CN CN201811261883.6A patent/CN109636384A/zh active Pending
-
2019
- 2019-03-21 TW TW108109776A patent/TWI743458B/zh active
- 2019-08-21 WO PCT/CN2019/101666 patent/WO2020082871A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201810148A (zh) * | 2016-09-02 | 2018-03-16 | 現代財富控股有限公司 | 區塊鏈負載平衡系統及其方法 |
CN108269072A (zh) * | 2016-12-30 | 2018-07-10 | 深圳瀚德创客金融投资有限公司 | 用于区块链的交易处理方法和网络节点 |
CN108512775A (zh) * | 2018-04-16 | 2018-09-07 | 杭州秘猿科技有限公司 | 一种排序交易队列的方法及装置 |
CN108564470A (zh) * | 2018-04-17 | 2018-09-21 | 北京天德科技有限公司 | 一种区块链中并行建块的交易分发方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020082871A1 (zh) | 2020-04-30 |
TW202016815A (zh) | 2020-05-01 |
CN109636384A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI743458B (zh) | 一種並行化執行區塊鏈交易的方法、裝置及系統 | |
TWI705346B (zh) | 基於中心化結算與區塊鏈存證的交易方法及系統 | |
US20210049595A1 (en) | Transaction method and system based on centralized settlement and block chain storage | |
US12072828B2 (en) | Article, device, and techniques for serverless message stream processing | |
TWI694700B (zh) | 資料處理方法和裝置、用戶端 | |
CN109359118B (zh) | 一种数据写入方法及装置 | |
TW202027456A (zh) | 聯盟鏈的可信度驗證方法、系統、裝置及設備 | |
EP3817333B1 (en) | Method and system for processing requests in a consortium blockchain | |
CN109145051A (zh) | 分布式数据库的数据汇总方法及装置和电子设备 | |
CN110020846B (zh) | 一种转账业务处理方法及系统 | |
TWI706252B (zh) | 程式設計題目發佈、解答代碼發佈、解答代碼檢驗方法、裝置、系統及電腦設備 | |
WO2024001024A1 (zh) | 在区块链系统中执行交易的方法、区块链系统和节点 | |
WO2020134620A1 (zh) | 一种受理区块链存证交易的方法及系统 | |
EP3813001A1 (en) | Data reading method based on a plurality of block chain networks and system | |
TWI686703B (zh) | 資料儲存與業務處理的方法及裝置 | |
EP3812998A1 (en) | Data storage and attestation method and system based on multiple blockchain networks | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
CN111459948B (zh) | 一种基于中心化块链式账本的交易完整性验证方法 | |
CN111506580B (zh) | 一种基于中心化块链式账本的交易存储方法 | |
CN110019538B (zh) | 一种数据表切换方法及装置 | |
US11223692B2 (en) | Service execution methods and apparatuses | |
CN115454576B (zh) | 一种虚拟机进程管理方法、系统及电子设备 | |
US20220405406A1 (en) | Methods and Systems for Dynamic Sampling of Application Events | |
CN112540772B (zh) | 应用发布方法及其系统、电子设备、存储介质 | |
US11086849B2 (en) | Methods and systems for reading data based on plurality of blockchain networks |