TWI706252B - Programming question release, answer code release, answer code inspection method, device, system and computer equipment - Google Patents
Programming question release, answer code release, answer code inspection method, device, system and computer equipment Download PDFInfo
- Publication number
- TWI706252B TWI706252B TW108109775A TW108109775A TWI706252B TW I706252 B TWI706252 B TW I706252B TW 108109775 A TW108109775 A TW 108109775A TW 108109775 A TW108109775 A TW 108109775A TW I706252 B TWI706252 B TW I706252B
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- transaction
- answer
- topic
- programming
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 119
- 238000007689 inspection Methods 0.000 title claims description 32
- 238000012795 verification Methods 0.000 claims abstract description 57
- 230000007246 mechanism Effects 0.000 claims abstract description 36
- 238000012360 testing method Methods 0.000 claims description 43
- 238000012546 transfer Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008520 organization Effects 0.000 abstract description 22
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013475 authorization Methods 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Educational Technology (AREA)
- Economics (AREA)
- Marketing (AREA)
- Finance (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Educational Administration (AREA)
- Technology Law (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Primary Health Care (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
公開了一種程式設計題目發佈、解答代碼發佈、解答代碼檢驗方法及系統。任一IT機構的設備可以存取區塊鏈網路稱為節點。在區塊鏈網路中,任一節點可以基於區塊鏈協定,發佈自身創設的程式設計題目,也就是說,任一節點可以基於自身創設的程式設計題目構建題目發佈交易,接著把題目發佈交易廣播給其他節點。獲得題目發佈交易每個節點會基於各節點間的共識機制,將題目發佈交易寫入區塊鏈。 A method and system for program design question release, answer code release, and answer code verification are disclosed. The equipment of any IT organization that can access the blockchain network is called a node. In the blockchain network, any node can publish its own programming questions based on the blockchain protocol, that is to say, any node can construct a topic publishing transaction based on the programming topic created by itself, and then publish the topic The transaction is broadcast to other nodes. To obtain the topic release transaction, each node will write the topic release transaction into the blockchain based on the consensus mechanism between the nodes.
Description
本說明書實施例關於資訊技術領域,尤其關於一種程式設計題目發佈、解答代碼發佈、解答代碼檢驗方法及系統。 The embodiments of this specification relate to the field of information technology, and particularly relate to a method and system for issuing programming questions, issuing answer codes, and verifying answer codes.
目前,國內外的諸多資訊技術(Information Technology,IT)機構(如高等院校電腦學院、IT公司等)一般都會搭建自已的程式設計題庫,用於測試用戶(如在校學生、在職員工、面試者等)的程式設計程度。 At present, many Information Technology (IT) institutions at home and abroad (such as colleges and universities, computer schools, IT companies, etc.) generally build their own programming question bank for testing users (such as school students, current employees, Interviewer, etc.) programming level.
在實踐中,很多IT機構有共享彼此的程式設計題庫的需求。然而,對於任一IT機構而言,如何防止其他IT機構擅自修改該IT機構創建的程式設計題目,是亟待解決的技術問題。 In practice, many IT organizations have the need to share each other's programming question bank. However, for any IT organization, how to prevent other IT organizations from modifying the programming problems created by the IT organization without authorization is a technical problem that needs to be solved urgently.
為了解決任一IT機構共享給其他IT機構的程式設計題目容易被其他IT機構擅自修改的問題,本說明書實施例提供一種程式設計題目發佈方法及系統。此外,本說明書實 施例還提用了一種解答代碼發佈、解答代碼檢驗方法及系統。 In order to solve the problem that programming problems shared by any IT organization to other IT organizations are easily modified by other IT organizations without authorization, the embodiments of this specification provide a programming problem publishing method and system. In addition, this manual The example also proposes a solution code release and solution code verification method and system.
上述技術方案如下:根據本說明書實施例的第1態樣,提供一種基於區塊鏈的程式設計題目發佈方法,包括:目標節點創設待發佈的程式設計題目;所述目標節點為區塊鏈網路中的任一節點;所述目標節點基於題目相關資料,構建題目發佈交易,並向所述區塊鏈網路廣播所述題目發佈交易;所述題目相關資料包括所述程式設計題目;針對獲得所述題目發佈交易的每個節點,該節點基於各節點之間的共識機制,將所述題目發佈交易寫入區塊鏈。 The above technical solution is as follows: According to the first aspect of the embodiment of the present specification, a method for publishing a programming topic based on a blockchain is provided, including: a target node creates a programming topic to be published; the target node is a blockchain network Any node in the road; the target node constructs a topic publication transaction based on topic-related data, and broadcasts the topic publication transaction to the blockchain network; the topic-related data includes the programming topic; Each node of the topic publishing transaction is obtained, and the node writes the topic publishing transaction into the blockchain based on the consensus mechanism between the nodes.
根據本說明書實施例的第2態樣,提供一種基於區塊鏈的解答代碼發佈方法,包括:目標節點獲取程式設計題目;所述目標節點為區塊鏈網路中的任一節點,所述程式設計題目是透過上述第1態樣的方法發佈的;所述目標節點將所述程式設計題目提供給被測試用戶進行解答,並接收所述被測試用戶上傳的解答代碼;所述目標節點基於解答相關資料,構建解答發佈交易,並向所述區塊鏈網路廣播所述解答發佈交易;所述解答相關資料包括所述程式設計題目的題目標識、所述解答代碼與所述被測試用戶的用戶標識;針對獲得所述解答發佈交易的每個節點,該節點基於各節點之間的共識機制,將所述解答發佈交易寫入區塊鏈。 根據本說明書實施例的第3態樣,提供一種基於區塊鏈的解答代碼檢驗方法,包括: 獲取模組,獲取程式設計題目對應的解答代碼與上傳所述解答代碼的被測試用戶的用戶標識;所述程式設計題目是透過上述第1態樣的方法發佈的,所述解答代碼是透過上述第2態樣的方法發佈的,所述檢驗節點是區塊鏈網路中,儲存有所述程式設計題目對應的解答檢驗資料的節點; 所述檢驗節點使用儲存的對應於所述程式設計題目的解答檢驗資料,檢驗所述解答代碼; 若檢驗通過,則所述檢驗節點基於結果相關資料,構建結果發佈交易,並向所述區塊鏈網路廣播所述結果發佈交易;所述結果相關資料包括所述程式設計題目的題目標識與所述用戶標識; 針對獲得所述結果發佈交易的每個節點,該節點基於各節點之間的共識機制,將所述結果發佈交易寫入區塊鏈。 根據本說明書實施例的第4態樣,提供一種基於區塊鏈的程式設計題目發佈系統,包括由多個節點組成的區塊鏈網路; 任一節點,創設待發佈的程式設計題目;基於題目相關資料,構建題目發佈交易,並向所述區塊鏈網路廣播所述題目發佈交易,所述題目相關資料包括所述程式設計題目; 獲得所述題目發佈交易的每個節點,基於各節點之間的共識機制,將所述題目發佈交易寫入區塊鏈。 根據本說明書實施例的第5態樣,提供一種基於區塊鏈的解答代碼發佈系統,包括由多個節點組成的區塊鏈網路; 任一節點,獲取程式設計題目;所述目標節點為區塊鏈網路中的任一節點,所述程式設計題目是透過上述第1態樣的方法發佈的;將所述程式設計題目提供給被測試用戶進行解答,並接收所述被測試用戶上傳的解答代碼;基於解答相關資料,構建解答發佈交易,並向所述區塊鏈網路廣播所述解答發佈交易;其中,所述解答相關資料包括所述程式設計題目的題目標識、所述解答代碼與所述被測試用戶的用戶標識; 獲得所述解答發佈交易的每個節點,基於各節點之間的共識機制,將所述解答發佈交易寫入區塊鏈。 根據本說明書實施例的第6態樣,提供一種基於區塊鏈的解答代碼檢驗系統,包括由多個節點組成的區塊鏈網路; 檢驗節點,獲取程式設計題目對應的解答代碼與上傳所述解答代碼的被測試用戶的用戶標識,所述程式設計題目是透過上述第1態樣的方法發佈的,所述解答代碼是透過上述第2態樣的方法發佈的,所述檢驗節點是區塊鏈網路中,儲存有所述程式設計題目對應的解答檢驗資料的節點;使用儲存的對應於所述程式設計題目的解答檢驗資料,檢驗所述解答代碼;若檢驗通過,則基於結果相關資料,構建結果發佈交易,並向所述區塊鏈網路廣播所述結果發佈交易;其中,所述結果相關資料包括所述程式設計題目的題目標識與所述用戶標識; 獲得所述結果發佈交易的每個節點,基於各節點之間的共識機制,將所述結果發佈交易寫入區塊鏈。 本說明書實施例所提供的技術方案,任一IT機構的設備可以存取區塊鏈網路稱為節點。在區塊鏈網路中,任一節點可以基於區塊鏈協定,發佈自身創設的程式設計題目,也就是說,任一節點可以基於自身創設的程式設計題目構建題目發佈交易,接著把題目發佈交易廣播給其他節點。獲得題目發佈交易每個節點會基於各節點間的共識機制,將題目發佈交易寫入區塊鏈。如此,一方面,任一IT機構都可以將自身創設的程式設計題目共享給其他IT機構;另一方面,任一節點發佈程式設計題目的流程受到區塊鏈協定的制約,程式設計題目從被創設到被寫入區塊鏈的整個過程中,難以被篡改,程式設計題目被寫入區塊鏈之後,也是難以被篡改的。 此外,在本說明書實施例中,任一節點可以從各節點間共享的程式設計題目中抽取程式設計題目提供給被測試用戶解答,以對所述被測試用戶的程式設計程度進行測試。並且,被測試用戶上傳的解答代碼也會被封裝進解答發佈交易寫入到區塊鏈進行公示。 還有,在本說明書實施例中,針對任一節點,如果該節點儲存有某個程式設計題目對應的解答檢驗資料,那麼,該節點還可以對被測試用戶針對該程式設計題目給出的解答代碼進行檢驗,以判斷被測試用戶是否通過測試。並且,如果被測試用戶通過測試,則該節點也會構建結果發佈交易並廣播,以便將被測試用戶通過測試的訊息寫入區塊鏈進行公示。 可見,本發明實際上提供了一種基於區塊鏈的程式設計程度測試方案,囊括了程式設計題目發佈、解答代碼發佈以及解答代碼檢驗等階段,將IT機構創設的程式設計題目、被測試用戶針對程式設計題目的解答記錄以及被測試用戶透過測試的結果都寫入區塊鏈進行公示,使得整個程式設計程度測試過程公開透明。 應當理解的是,以上的一般描述和後文的細節描述僅是示例性和解釋性的,並不能限制本說明書實施例。 此外,本說明書實施例中的任一實施例並不需要達到上述的全部效果。According to the second aspect of the embodiments of the present specification, a method for publishing answer codes based on blockchain is provided, including: a target node obtains programming questions; the target node is any node in the blockchain network, and The programming question is issued by the method of the first aspect; the target node provides the programming question to the tested user for answering, and receives the answer code uploaded by the tested user; the target node is based on Answer relevant information, construct answer release transaction, and broadcast the answer release transaction to the blockchain network; the answer related information includes the question mark of the programming question, the answer code and the tested user For each node that obtains the answer release transaction, the node writes the answer release transaction into the blockchain based on the consensus mechanism between the nodes. According to the third aspect of the embodiments of this specification, a blockchain-based answer code verification method is provided, including: Obtain the module to obtain the answer code corresponding to the programming question and the user ID of the tested user who uploaded the answer code; the programming question is issued through the first aspect of the above method, and the answer code is through the above According to the method of the second aspect, the verification node is a node in the blockchain network that stores the solution verification data corresponding to the programming question; The verification node uses the stored answer verification data corresponding to the programming question to verify the answer code; If the test is passed, the verification node constructs a result issuance transaction based on the result-related data, and broadcasts the result issuance transaction to the blockchain network; the result-related data includes the title identification of the programming topic and The user identification; For each node that obtains the result publication transaction, the node writes the result publication transaction into the blockchain based on the consensus mechanism between the nodes. According to the fourth aspect of the embodiment of the present specification, there is provided a blockchain-based programming topic publishing system, including a blockchain network composed of multiple nodes; Any node creates a programming topic to be released; constructs a topic publishing transaction based on topic-related data, and broadcasts the topic publishing transaction to the blockchain network, and the topic-related data includes the programming topic; Each node that obtains the topic publishing transaction writes the topic publishing transaction into the blockchain based on the consensus mechanism between the nodes. According to the fifth aspect of the embodiment of this specification, a blockchain-based answer code issuing system is provided, including a blockchain network composed of multiple nodes; Any node obtains a programming topic; the target node is any node in the blockchain network, and the programming topic is issued through the method of the first aspect; the programming topic is provided to The tested user answers and receives the answer code uploaded by the tested user; builds an answer release transaction based on the answer related data, and broadcasts the answer release transaction to the blockchain network; wherein the answer is related The data includes the title identification of the programming question, the answer code and the user identification of the tested user; Each node that obtains the answer release transaction writes the answer release transaction into the blockchain based on the consensus mechanism between the nodes. According to the sixth aspect of the embodiments of this specification, a blockchain-based answer code verification system is provided, including a blockchain network composed of multiple nodes; The test node obtains the answer code corresponding to the programming question and the user ID of the tested user who uploaded the answer code. The programming question is issued through the first aspect of the above method, and the answer code is obtained through the above first aspect. Issued by the 2-mode method, the test node is a node in the blockchain network that stores the answer test data corresponding to the programming question; using the stored answer test data corresponding to the programming question, Check the answer code; if the check is passed, construct a result release transaction based on the result related data, and broadcast the result release transaction to the blockchain network; wherein the result related data includes the programming question The title identification of and the user identification; Each node that obtains the result publication transaction writes the result publication transaction into the blockchain based on the consensus mechanism between the nodes. In the technical solutions provided by the embodiments of this specification, the equipment of any IT organization that can access the blockchain network is called a node. In the blockchain network, any node can publish its own programming questions based on the blockchain protocol, that is to say, any node can construct a topic publishing transaction based on the programming topic created by itself, and then publish the topic The transaction is broadcast to other nodes. To obtain the topic release transaction, each node will write the topic release transaction into the blockchain based on the consensus mechanism between the nodes. In this way, on the one hand, any IT organization can share its own programming problems with other IT organizations; on the other hand, the process of issuing programming problems at any node is restricted by the blockchain agreement, and programming problems are never The entire process from creation to being written into the blockchain is difficult to be tampered with, and programming topics are also difficult to be tampered with after being written into the blockchain. In addition, in the embodiment of this specification, any node can extract programming questions from the programming questions shared between the nodes to provide answers to the tested user, so as to test the programming level of the tested user. In addition, the answer code uploaded by the tested user will also be encapsulated in the answer release transaction and written to the blockchain for publicity. In addition, in the embodiment of this specification, for any node, if the node stores the solution test data corresponding to a certain programming problem, then the node can also give the solution to the programming problem given by the tested user The code is checked to determine whether the tested user passes the test. Moreover, if the tested user passes the test, the node will also construct a result release transaction and broadcast it, so that the message that the tested user passed the test can be written into the blockchain for publicity. It can be seen that the present invention actually provides a program design level test program based on blockchain, including the stages of program design question release, answer code release, and answer code verification. The program design questions created by IT organizations and the tested users are targeted The answer records of programming questions and the test results of the tested users are written into the blockchain for publicity, making the entire programming level testing process open and transparent. It should be understood that the above general description and the following detailed description are only exemplary and explanatory, and cannot limit the embodiments of this specification. In addition, any embodiment in the embodiments of this specification does not need to achieve all the above-mentioned effects.
此處先對本發明所應用的業務場景(即程式設計程度測試)進行更為詳細的說明。以資訊技術公司A為例,倘若公司A想要瞭解某個用戶(如員工、面試者)的程式設計程度,那麼,公司A可以從自己的程式設計題庫中抽取任一程式設計題目提供給該用戶。該用戶根據該程式設計題目進行作答,給出解答該程式設計題目的解答代碼,並將解答代碼上傳給公司A的線上判題系統。公司A的線上判題系統儲存有上述程式設計題庫中每個程式設計題目對應的解答檢驗資料(具體是標準輸入資料與標準輸出資料),用於驗證解答代碼的正確性。具體地,公司A的線上判題系統會將該程式設計題目對應的標準輸入資料輸入到解答代碼並運行解答代碼,接著,判斷解答代碼是否能夠輸出該程式設計題目對應的標準輸出資料,若是,則認定該用戶透過測試,否則,認定該用戶未透過測試。
實踐中,很多IT機構有共享彼此的程式設計題庫的需求。為此,現有技術中,針對任一IT機構,該IT機構一般會採用爬蟲程序從其他IT機構的程式設計題庫爬取程式設計題目,將爬取的程式設計題目提供給被測試用戶進行解答。接著,該IT機構還需要將被測試用戶給出的解答代碼發送給創設該程式設計題目的IT機構的線上判題系統進行檢驗。
然而,這種方式存在如下弊端:
1、IT機構透過爬蟲程序爬取其他IT機構的程式設計題目後,有時會擅自對程式設計題目進行一些不恰當的修改,這一方面不能很好的保護創設程式設計題目的IT機構的權益,另一方面,被測試用戶針對修改後的程式設計題目給出的解答代碼往往與修改前的程式設計題目並不匹配,而線上判題系統是使用適配於修改前的程式設計題目的解答檢驗資料來測試代碼是否正確的,如此,導致測試結果不能準確反映被測試用戶的程式設計程度。
2、一旦其他IT機構的資料庫不可存取,該IT機構就無法透過爬蟲程序爬取其他結構的程式設計題目。也就是說,這種共享程式設計題目的方式並不總是有效的。
為此,在本說明書實施例中,任一IT機構可以借助於區塊鏈協定,將自己創設的程式設計題目發佈到區塊鏈中,相當於既將自己創設的程式設計題目共享給其他IT機構,又無需擔心其他IT機構會對該程式設計題目進行修改。
為了使本領域技術人員更好地理解本說明書實施例中的技術方案,下面將結合本說明書實施例中的附圖,對本說明書實施例中的技術方案進行詳細地描述,顯然,所描述的實施例僅僅是本說明書的一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本領域普通技術人員所獲得的所有其他實施例,都應當屬保護的範圍。
以下結合附圖,詳細說明本說明書各實施例提供的技術方案。
圖1是本說明書實施例提供的一種基於區塊鏈的程式設計題目發佈方法的流程示意圖,包括以下步驟:
S100:目標節點創設待發佈的程式設計題目。
在本說明書實施例中,各IT機構的設備可以存取區塊鏈網路,成為區塊鏈網路中的節點。也就是說,區塊鏈網路中的各節點與想要彼此共享程式設計題目的各IT機構一一對應。
在步驟S100中,所述目標節點可以是區塊鏈網路中的任一節點。也就是說,任一IT機構的設備都可以透過圖1所示的方法,創設程式設計題目並發佈。
需要說明的是,目標節點創設程式設計題目,具體可以是目標節點接收控制所述目標節點的IT機構上傳的程式設計題目,也可以是目標節點根據預設的程式設計題目創設模型,自動創設程式設計題目。
S102:所述目標節點基於題目相關資料,構建題目發佈交易。
需要說明的是,本文中所述的交易(transaction),是指區塊鏈協定中指定的資料結構。在區塊鏈協定中,交易是指節點透過安裝的區塊鏈用戶端創建,並需要最終寫入區塊鏈的一筆資料。也就是說,根據區塊鏈協定,凡是需要寫入區塊鏈進行公示的資料,都需要被封裝成交易這種資料結構。
在步驟S102中,所述題目相關資料至少包括目標節點在步驟S100中創設的程式設計題目。所述目標節點基於所述題目相關資料構建題目發佈交易,實際上是將所述題目相關資料封裝進交易這一區塊鏈協定指定的資料結構。
S104:所述目標節點向所述區塊鏈網路廣播所述題目發佈交易。
在步驟S104中,目標節點向區塊鏈網路廣播所述題目發佈交易,實際上是將所述題目發佈交易廣播給其他節點,相當於將所述程式設計題目,分享給其他節點。
S106:針對獲得所述題目發佈交易的每個節點,該節點基於各節點之間的共識機制,將所述題目發佈交易寫入區塊鏈。
針對獲得所述題目發佈交易的每個節點,該節點在將所述題目發佈交易寫入區塊鏈之前,可以針對所述題目發佈交易進行合法性驗證。
針對所述題目發佈交易進行合法性驗證的事項可以根據業務需要指定。例如,假設並不是每個節點都有發佈程式設計題目的權限,那麼,可以所述題目發佈交易中的節點標識,判斷所述節點標識對應的節點(即目標節點)是否具有發佈程式設計題目的權限,如果沒有權限,就拒絕將所述題目發佈交易寫入區塊鏈。
在步驟S106中,各節點之間的共識機制確保了各節點每次向區塊鏈寫入的資料的一致性。因此,哪怕某個節點擅自對題目發佈交易中封裝的程式設計題目進行修改,從而改變所述題目發佈交易的內容,修改後的題目發佈交易也不會被大多數節點寫入區塊鏈。
如此,目標節點創設的程式設計題目總是可以不經修改地被寫入區塊鏈,從而完成程式設計題目的分享。並且,區塊鏈的分布式儲存特性,寫入區塊鏈之後的題目發佈交易也是難以被篡改的。
需要說明的是,針對後文中將要出現的解答發佈交易、結果發佈交易,基於同樣的原因,這些交易的內容也難以被篡改。
透過圖1所示的方法,任一IT機構的設備可以存取區塊鏈網路稱為節點。在區塊鏈網路中,任一節點可以基於區塊鏈協定,發佈自身創設的程式設計題目,也就是說,任一節點可以基於自身創設的程式設計題目構建題目發佈交易,接著把題目發佈交易廣播給其他節點。獲得題目發佈交易每個節點會基於各節點間的共識機制,將題目發佈交易寫入區塊鏈。如此,一方面,任一IT機構都可以將自身創設的程式設計題目共享給其他IT機構;另一方面,任一節點發佈程式設計題目的流程受到區塊鏈協定的制約,程式設計題目從被創設到被寫入區塊鏈的整個過程中,難以被篡改,程式設計題目被寫入區塊鏈之後,也是難以被篡改的。
此外,在本說明書實施例中,所述題目相關資料還可以包括目標節點的節點標識。這意味著,目標節點也會將自身的節點標識封裝進題目發佈交易,進而寫入區塊鏈中進行公示。如此,可以明確共享給各IT機構的每個程式設計題目的創設者,保護創設程式設計題目的IT機構的權益。
另外,在實際應用中,由於區塊鏈這種資料儲存方式較為複雜,節點當想要從寫入區塊鏈的程式設計題目中調取某個程式設計題目時,操作較為複雜。
為此,在本說明書實施例中,針對獲得所述題目發佈交易的每個節點,該節點可以在創建題目儲存位址,並將所述題目相關資料存入所述題目儲存位址。這相當於還將程式設計題目以簡單的儲存方式進行儲存。需要說明的是,針對任一題目發佈交易,可以根據寫入區塊鏈的該題目發佈交易,驗證存入題目儲存位址的程式設計題目是否被篡改。透過上述方式,節點當想要調取某個程式設計題目時,可以較為便捷。
進一步地,節點具體可以將封裝有所述題目相關資料的題目智慧合約存入所述題目儲存位址。這種情況下,所述題目儲存位址實際上是所述題目智慧合約的合約標識。
智慧合約是很多區塊鏈協定(如乙太坊)天然支援的資料結構,並且,很多區塊鏈協定也天然支援智慧合約的快速呼叫。因此,可以以智慧合約這種資料結構,對程式設計題目進行儲存,方便後續透過呼叫智慧合約的形式,快速調取程式設計題目進行程式設計程度測試。
根據圖1所示的程式設計題目發佈方法,本說明書實施例進一步提供了一種基於區塊鏈的解答代碼發佈方法,如圖2所示,包括以下步驟:
S200:目標節點獲取程式設計題目。
所述目標節點是區塊鏈網路中的任一節點。在實際應用中,任一IT機構想要對被測試用戶的程式設計程度進行測試時,可以觸發自身控制的目標節點獲取程式設計題目。目標節點獲取的程式設計題目是基於圖1所示的程式設計題目發佈方法發佈的。
具體地,目標節點可以從區塊鏈中的任一題目發佈交易中讀取程式設計題目。
或者,如果所述題目發佈交易所封裝的題目相關資料也被存入了某個題目儲存位址,那麼,目標節點也可以從該題目儲存位址獲取所述程式設計題目。當採用這種方式獲取程式設計題目時,較為快捷。
進一步地,如果所述題目相關資料是以智慧合約的形式(即題目智慧合約)存入該題目儲存位址的,所述目標節點可以呼叫該題目智慧合約,從而獲取到所述程式設計題目。
S202:所述目標節點將所述程式設計題目提供給被測試用戶進行解答,並接收所述被測試用戶上傳的解答代碼。
S204:所述目標節點基於解答相關資料,構建解答發佈交易。
在本說明書實施例中,所述解答相關資料至少包括所述程式設計題目的題目標識、所述解答代碼與所述被測試用戶的用戶標識。
其中,若所述目標節點從區塊鏈中的任一題目發佈交易中讀取程式設計題目,則所述程式設計題目的題目標識為所述題目發佈交易的交易雜湊;若所述目標節點從任一題目儲存位址獲取程式設計題目,則所述程式設計題目的題目標識為所述儲存位址。
進一步地,所述目標節點可以對所述解答代碼是否存在編譯或運行問題進行檢查,如果檢查通過,才會構建解答發佈交易,如果檢查不通過,則拒絕構建解答發佈交易。
S206:所述目標節點向所述區塊鏈網路廣播所述解答發佈交易。
S208:針對獲得所述解答發佈交易的每個節點,該節點基於各節點之間的共識機制,將所述解答發佈交易寫入區塊鏈。
針對獲得所述解答發佈交易的每個節點,該節點在將所述解答發佈交易寫入區塊鏈之前,可以針對所述解答發佈交易進行合法性驗證。
針對所述解答發佈交易進行合法性驗證的事項可以根據業務需要指定。例如,假設預先規定有解答代碼的格式,那麼,可以對所述解答發佈交易中的解答代碼的格式進行驗證,如果格式不符合要求,就拒絕將所述解答發佈交易寫入區塊鏈。
在步驟S208中,相當於將被測試用戶的身份資訊、被測試用戶所解答的程式設計題目的標識資訊、被測試用戶給出的解答代碼公示給每個節點。
此外,為了方便節點可以快速調取被測試用戶的解答代碼進行檢驗,在本說明書實施例中,每個節點還可以創建解答儲存位址,並將所述解答相關資料存入所述解答儲存位址。
進一步地,每個節點可以將封裝有所述解答相關資料的解答智慧合約存入所述解答儲存位址。
根據圖1所示的程式設計題目發佈方法與圖2所示的解答代碼發佈方法,本說明書實施例進一步提供了一種基於區塊鏈的解答代碼檢驗方法,如圖3所示,包括以下步驟:
S300:檢驗節點獲取程式設計題目對應的解答代碼與上傳所述解答代碼的被測試用戶的用戶標識。
在本說明書實施例中,所述檢驗節點儲存有所述程式設計題目對應的解答檢驗資料的節點。所述解答檢驗資料是用於對解答所述程式設計題目所給出的解答代碼的正確性進行檢驗的資料。如前文所述,所述解答檢驗資料一般包括標準輸入資料與標準輸出資料。
所述檢驗節點一般是創設所述程式設計題目的節點。當然,創設所述程式設計題目的節點也可以將所述程式設計題目對應的解答檢驗資料分發給至少一個其他節點。這樣,所述檢驗節點也可以是除創設所述程式設計題目的節點之外,儲存有所述解答檢驗資料的其他節點。
在本說明書實施例中,檢驗節點可以根據儲存的任一解答檢驗資料,確定該解答檢驗資料對應的題目標識。接著,從區塊鏈中的查詢出包含所述題目標識的解答發佈交易,並從所述解答發佈交易中讀取解答代碼與用戶標識。
進一步地,檢驗節點也可以查詢儲存有所述題目標識的解答儲存位址,並從所述解答儲存位址獲取解答代碼與用戶標識。
更進一步地,檢驗節點可以查詢封裝有所述題目標識的題目智慧合約,並呼叫所述題目智慧合約,從而獲取到相應的解答代碼與用戶標識。
S302:所述檢驗節點使用儲存的對應於所述程式設計題目的解答檢驗資料,檢驗所述解答代碼。
S304:若檢驗通過,則所述檢驗節點基於結果相關資料,構建結果發佈交易。
在本說明書實施例中,檢驗節點如果對所述解答代碼檢驗通過,則可以將檢驗通過的訊息公示於區塊鏈。這種情況下,所述結果相關資料實際上包括所述程式設計題目的題目標識與所述用戶標識,所述結果發佈交易的含義為,舉例來說,“用戶張三答對了題目1”。
進一步地,檢驗節點如果對所述解答代碼檢驗未通過,則也可以將檢驗未通過的訊息公示於區塊鏈。這種情況下,所述結果發佈交易的含義既可以是檢驗通過,也可以是檢驗未通過。為了進行區分,所述結果相關資料還需要包括檢驗通過結果或檢驗未通過結果。
S306:向所述區塊鏈網路廣播所述結果發佈交易。
S308:針對獲得所述結果發佈交易的每個節點,該節點基於各節點之間的共識機制,將所述結果發佈交易寫入區塊鏈。
針對獲得所述結果發佈交易的每個節點,該節點在將所述題目發佈交易寫入區塊鏈之前,可以針對所述結果發佈交易進行合法性驗證。
針對所述結果發佈交易進行合法性驗證的事項可以根據業務需要指定。例如,假設只有創設所述程式設計題目的節點才有權限檢驗所述程式設計題目對應的解答代碼,那麼,可以判斷廣播所述結果發佈交易的檢驗節點是否有檢驗權限,如果沒有權限,就拒絕將所述結果發佈交易寫入區塊鏈。
在步驟S308中,相當於將被測試用戶的身份資訊、被測試用戶所解答的程式設計題目的標識資訊、被測試用戶是否通過測試的結果公示給每個節點。
此外,為了方便節點可以快速調取被測試用戶的測試結果進行查閱,在本說明書實施例中,每個節點還可以創建結果儲存位址,並將所述結果相關資料存入所述結果儲存位址。
進一步地,每個節點可以將封裝有所述結果相關資料的結果智慧合約存入所述結果儲存位址。
另外,在實踐中,所述被測試用戶可能會解答不止一個程式設計題目,上傳不止一個解答代碼。這種情況下,針對每個節點,該節點可以將所述被測試用戶解答多個程式設計題目的結果都存入同一個結果儲存位址,方便統計與查閱。
具體地,在本說明書實施例中,針對獲得所述結果發佈交易的每個節點,該節點若獲得與所述結果發佈交易相關聯的其他結果發佈交易,則基於各節點之間的共識機制,將所述其他結果發佈交易寫入區塊鏈,其中,所述其他結果發佈交易是基於所述用戶標識與其他題目標識構建的。接著,該節點根據所述其他結果發佈交易,將所述其他題目標識存入所述結果儲存位址。
也就是說,所述結果發佈交易可以視為所述被測試用戶解答的第一個程式設計題目所產生的,而其他結果發佈交易可以視為所述被測試用戶後續解答的其他程式設計題目所產生的。對於所述被測試用戶後續解答的其他程式設計題目的結果,無需重新創建結果儲存位址進行儲存,而是直接將其存入之前創建的結果儲存位址即可。
如此,每個被測試用戶都有唯一對應於自己的結果儲存位址,用於記錄自己的答題情況。
另外需要說明的是,在圖1所示的方法中,可能存在不止一個檢驗節點檢驗所述解題代碼的情況。這種情況下,針對每個檢驗節點,該檢驗節點獲取程式設計題目對應的解答代碼與上傳所述解答代碼的被測試用戶的用戶標識;接著使用儲存的對應於所述程式設計題目的解答檢驗資料,檢驗所述解答代碼;若對所述解答代碼檢驗通過,則基於結果相關資料,構建結果發佈交易,並向所述區塊鏈網路廣播所述結果發佈交易。
基於此,針對每個節點,該節點可以當確定獲得的結果發佈交易的數量為指定數量時,才會基於各節點之間的共識機制,將獲得的任一結果發佈交易寫入區塊鏈。其中,所述指定數量不大於檢驗節點的數量。
另外,在本說明書實施例中,存在三種類型的交易,即題目發佈交易、解答發佈交易以及結果發佈交易。其中,針對任一種交易,創建儲存位址並存入該種交易所封裝的相關資料,可以視為對該種交易的執行操作。
顯然,不論針對上述哪種交易,執行該種交易產生的執行結果,僅僅會對一個儲存位址產生影響。因此,本說明書實施例中的三種類型的交易,都適合採用下文給出的並行化的交易執行方式進行執行。下文將對這種並行化的交易執行方式進行介紹說明。
對於常見的區塊鏈應用場景而言,當需要進行各節點間的共識時,各節點會基於共識演算法選舉出有權限將若干待執行的交易打包成區塊的節點,即記帳節點。在共識之後,記帳節點從快取中撈取若干待執行的交易打包成區塊,並將所述區塊廣播給其他節點。隨後,針對每個節點,該節點一方面會按照所述區塊中各交易被發起的先後順序,由先到後依次執行每個交易,另一方面會將所述區塊寫入區塊鏈。
通常,將節點由先到後逐個執行區塊中的每個交易的方式稱為串列化的交易執行方式。之所以要採用這種串列化的交易執行方式,是因為在常見的區塊鏈應用場景下,一筆交易的執行有時會對不止一個儲存位址上儲存的資訊進行更新,如果不採用串列化的交易執行方式,則容易出現有的交易執行失敗的情況。
但是,在有的區塊鏈應用場景下,不存在會對不止一個儲存位址上儲存的資訊進行更新的交易。在這些區塊鏈應用場景下,採用上述的串列化的交易執行方式,會導致交易執行效率較低。
下面,以乙太坊這種區塊鏈協定為例,對採用串列化的交易執行方式的原因進行詳細說明。值得強調的是,在除乙太坊之外的其他區塊鏈協定中,採用串列化的交易執行方式的原因也是類似的。
在乙太坊中,存在外部帳戶與合約帳戶之分。外部帳戶用於儲存用戶擁有的乙太幣餘額,外部帳戶本質上是儲存有餘額資訊的儲存位址。合約帳戶用於儲存用戶創設的智慧合約,合約帳戶本質上是儲存有智慧合約代碼的儲存位址。
在乙太坊中,一般有兩種類型的交易,即外部帳戶向其他帳戶(可以是外部帳戶也可以是合約帳戶)的轉帳交易,以及外部帳戶創建合約帳戶的合約創建交易。
轉帳交易的執行一般會對不止一個儲存位址上儲存的資訊進行更新。具體而言,一筆轉帳交易的執行,通常會改變兩個帳戶的餘額(即兩個帳戶位址上儲存的餘額資訊),即從轉帳帳戶的餘額中扣除轉帳金額,向收帳帳戶的餘額中增加轉帳金額。一筆轉帳交易可執行的前提是轉帳帳戶的餘額不小於轉帳金額。
實際應用中,某一筆轉帳交易(記為轉帳交易A)中的轉帳帳戶,有可能是之前的另一筆轉帳交易(記為轉帳交易B)中的收帳用戶。如果不按照交易被發起的順序由先到後執行交易,那麼可能出現如下情況,即轉帳交易B未執行,導致轉帳交易A中的轉帳帳戶沒有充足的餘額進行轉帳。正是因為這樣,凡是關於轉帳交易的區塊鏈應用場景,都不得不採用串列化的交易執行方式,以保證交易可以順利執行。
而合約創建交易的執行實際上是創建一個合約帳戶,即創設一個儲存位址,並將智慧合約代碼存入創設的儲存位址。顯然,合約創建交易的執行只會影響一個儲存位址。
此外,區塊鏈應用場景是多種多樣的,在有的區塊鏈應用場景下,可以基於乙太坊進行擴展,開發出新類型的交易,這種交易的執行也可能只會影響一個儲存位址。例如,利用區塊鏈進行內容存證。一筆存證交易的執行,本質上是創設一個儲存位址,將要存證的內容存入創設的儲存位址。
基於以上,本文提出了一種並行化執行區塊鏈交易的方法,專門針對某一類區塊鏈應用場景,在這類區塊鏈場景下,每筆交易的執行結果只會影響一個儲存位址。
圖4是本說明書實施例提供的一種並行化執行區塊鏈交易的方法的流程示意圖,包括以下步驟:
S400:針對區塊鏈網路中的每個節點,該節點獲取待寫入區塊。
在本說明書實施例中,所述待寫入區塊實際上各節點共識之後,由記帳節點打包成的區塊。記帳節點會將所述待寫入區塊廣播給其他節點。眾所周知,在區塊鏈協定中,每個節點一方面需要執行待寫入區塊中的每個交易,另一方面需要將待寫入區塊寫入到區塊鏈中進行公示。所述待寫入區塊一旦寫入區塊鏈中,相當於將待寫入區塊中的每個交易進行了公示。公示於區塊鏈上的交易可以用來核查相應的交易執行結果是否正確,以防止有節點作惡。
在步驟S400中,針對每個節點,如果該節點是記帳節點,那麼該節點獲取所述待寫入區塊的方式具體可以是從自身的快取中撈取若干交易打包成所述待寫入區塊;如果該節點不是記帳節點,那麼該節點獲取所述待寫入區塊的方式具體可以是接收記帳節點廣播的所述待寫入區塊。
值得強調的是,針對所述待寫入區塊中的每個交易,該交易的執行結果為,創設一個儲存位址並存入資訊,或更新一個儲存位址上儲存的資訊(向一個儲存位址存入資訊或修改一個儲存位址上儲存的資訊)。也就是說,所述待寫入區塊中的每個交易的執行結果,只會對一個儲存位址產生影響。
例如,創建合約帳戶的合約創建交易,就是執行結果為創設一個儲存位址並存入資訊的交易。前文提及的題目發佈交易與解答發佈交易,也是執行結果為創設一個儲存位址並存入資訊的交易。
又如,在有些區塊鏈應用場景下,需要對每個用戶的購物記錄進行存證。那麼,就需要在資料庫中創設每個用戶對應的記錄儲存位址。當目標用戶進行購物時,就會產生一條購物記錄,區塊鏈網路中的任一節點會基於該購物記錄構建記錄存證交易並廣播。接著,針對每個節點,該節點會在合適的時機(即該記錄存證交易被打包進待寫入模組並廣播給各節點時)執行該記錄存證交易,即將該購物記錄存入目標用戶對應的記錄儲存位址。顯然,目標用戶進行多次購物所產生的多條購物記錄都會被存入目標用戶對應的記錄儲存位址。因此,上述的記錄存證交易,就是執行結果為更新一個儲存位址上儲存的資訊交易。
前文提及的結果發佈交易,也是執行結果為更新一個儲存位址上儲存的資訊交易。
S402:從所述待寫入區塊中讀取各交易,並將各交易組織成N個交易佇列。
在現有技術中,每個節點通常採用串列化的交易執行方式來執行所述待寫入區塊中的各交易。如圖5所示,所謂串列化的交易執行方式,是指每個節點按照一定的先手順序,逐個執行所述待寫入區塊中的每個交易。
而在本說明書實施例中,會將所述待寫入區塊中的各交易拆分為N組,其中,N為大於1的自然數。接著,針對每個組,將這個組中的交易排列成一個交易佇列。本說明書對每個交易佇列中交易的排列順序不做具體限定。
S404:同時針對每個交易佇列,由先到後依次執行該交易佇列中的每個交易。
在步驟S404中,實際上是同時開始並行化的針對每個交易佇列進行交易執行。而具體到每個交易佇列,實際上是串列化執行該交易佇列中的每個交易。如圖6所示。
所謂“同時”,是指節點在同一時間開始執行每個交易佇列中的交易。相當於節點在同一時間創設了N個交易執行進程,每個交易進程負責執行一個交易佇列中的交易。
對比圖5和圖6的兩種交易執行方式,顯然,採用圖6所示的交易執行方式,可以在單位時間內執行更多的交易。
S406:將所述待寫入區塊寫入區塊鏈。
在本說明書實施例中,針對每個節點,可以在執行步驟S404之後,執行步驟S406;也可以不在執行步驟S404之後才執行步驟S406。
透過圖4所示的並行化執行區塊鏈交易的方法,如果待寫入區塊中的每個交易皆不是對不止一個儲存位址上儲存的資訊進行更新的交易,那麼,區塊鏈網路中的每個節點可以將待寫入區塊中的各交易組織成至少兩個交易佇列,接著,同時開始執行每個交易佇列中的交易。如此,每個節點可以在單位時間內執行更多數量的交易,提升了交易執行效率。
此外,在本說明書實施例中,每個交易佇列對應的交易數量(即每個交易佇列中的交易的數量)可以比較接近。如此,在並行化的同時針對各交易佇列進行交易執行時,每個執行進程所執行的交易的數量比較接近,不會出現有的進程閒置,有的進程負荷過重的情況。這也意味著,節點可以在單位時間內,執行盡可能多的交易。
具體地,可以設置基於每個交易佇列對應的交易數量計算得到的方差不大於指定臨界值。基於每個交易佇列對應的交易數量計算得到的方差越小,各交易佇列對應的交易數量就越接近。
另外,在本說明書實施例中,具體可以採用乙太坊協定構建區塊鏈網路。在乙太坊中,每個節點上安裝有虛擬機程序,用於為乙太坊協定的實現提供運行環境。
通常,一個虛擬機程序用於執行一個區塊鏈進程。而在本說明書實施例中,由於需要同時針對不止一個交易佇列,並行化的執行不止一個區塊鏈進程,因此,需要在每個節點上預先部署不止一個虛擬機程序。
具體地,如果需要將待寫入區塊中的交易組織成N個交易佇列,那麼,就需要預先在每個節點上部署N個虛擬機程序。
如此,在步驟S404中,可以建立預先部署的N個虛擬機程序與N個交易佇列之間的一一對應關係;同時針對每個交易佇列,透過該交易佇列對應的虛擬機程序,由先到後依次執行該交易佇列中的每個交易。
此外,在本說明書實施例中,通常,待寫入區塊中的交易既有第一類交易,也有第二類交易。其中,第一類交易是指,執行結果為更新一個儲存位址上儲存的資訊的交易;第二類交易是指,執行結果為創設一個儲存位址並存入資訊的交易。
顯然,待寫入區塊中可能存在不止一個第一類交易會對同一個儲存位址上儲存的資訊進行更新。而節點在執行每個第一類交易時,往往需要先存取當前所執行的第一類交易所針對的儲存位址。這種情況下,節點在執行待寫入區塊中的交易時,如果能對同一儲存位址對應的所有第一類交易進行集中批量執行,那麼只需要針對同一個儲存位址進行一次存取即可,這會顯著提升節點執行交易的速度。
具體地,在步驟S402中,可以從各交易中選擇出執行結果為更新一個儲存位址上儲存的資訊的交易,作為第一類交易,以及,將各交易中除第一類交易以外的其他交易作為第二類交易;將各第一類交易中,對應的儲存位址相同的第一類交易組織成一個交易子佇列;以每個交易子佇列為一個處理單位,並且,以每個第二類交易視為一個處理單位;將各處理單位組織成N個交易佇列。
如此,所述待寫入區塊中,對應於任一儲存位址的全部第一類交易都會被整合一個交易子佇列,該交易子佇列會被整體放入到某個交易佇列中。節點在針對該交易佇列進行交易執行時,一旦存取該儲存位址,就會連續執行該儲存位址對應的全部第一類交易。
進一步地,將各處理單位組織成N個交易佇列,可以如下:
根據每個處理單位對應的交易數量,由大到小對各處理單位進行排序;並且,初始化每個交易佇列對應的交易數量為0;根據排序結果,選擇第一個處理單位;將當前選擇的處理單位添加到最小交易佇列的隊尾,並更新所述最小交易佇列對應的交易數量;最小交易佇列是當前對應的交易數量最小的交易佇列;繼續選擇下一個處理單位,直至所有處理單位都被添加到交易佇列。
透過這種方式,可以使得各交易佇列分別對應的交易數量大體相當。這樣,在基於各交易佇列進行並行化的交易執行時,各執行進程上的工作負荷也大體相當,不會有某個執行進程閒置的情況出現,這樣可以在單位時間內執行最多的交易,顯著提升節點的交易執行效率。
基於圖1所示的方法,本說明書實施例還對應提供了一種基於區塊鏈的程式設計題目發佈裝置,如圖7所示,所述裝置為區塊鏈網路中的任一節點,所述裝置包括:
創設模組701,創設待發佈的程式設計題目;
構建廣播模組702,基於題目相關資料,構建題目發佈交易,並向所述區塊鏈網路廣播所述題目發佈交易;所述題目相關資料包括所述程式設計題目,以使獲得所述題目發佈交易的每個節點基於各節點之間的共識機制,將所述題目發佈交易寫入區塊鏈。
基於圖2所示的方法,本說明書實施例還對應提供了一種基於區塊鏈的解答代碼發佈裝置,如圖8所示,所述裝置為區塊鏈網路中的任一節點,所述裝置包括:
獲取模組801,獲取程式設計題目;所述程式設計題目是透過申請專利範圍第1至4任一項所述的方法發佈的;
解答模組802,將所述程式設計題目提供給被測試用戶進行解答,並接收所述被測試用戶上傳的解答代碼;
構建廣播模組803,基於解答相關資料,構建解答發佈交易,並向所述區塊鏈網路廣播所述解答發佈交易,以使獲得所述解答發佈交易的每個節點基於各節點之間的共識機制,將所述解答發佈交易寫入區塊鏈;
其中,所述解答相關資料包括所述程式設計題目的題目標識、所述解答代碼與所述被測試用戶的用戶標識。
基於圖2所示的方法,本說明書實施例還對應提供了一種基於區塊鏈的解答代碼檢驗裝置,如圖9所示,所述裝置是區塊鏈網路中,儲存有程式設計題目對應的解答檢驗資料的節點,所述裝置包括:
獲取模組901,獲取所述程式設計題目對應的解答代碼與上傳所述解答代碼的被測試用戶的用戶標識;所述程式設計題目是透過圖1所示的方法發佈的,所述解答代碼是透過圖2所示的方法發佈的;
檢驗模組902,使用儲存的對應於所述程式設計題目的解答檢驗資料,檢驗所述解答代碼;
構建廣播模組903,若檢驗通過,則基於結果相關資料,構建結果發佈交易,並向所述區塊鏈網路廣播所述結果發佈交易,以使獲得所述結果發佈交易的每個節點基於各節點之間的共識機制,將所述結果發佈交易寫入區塊鏈;
其中,所述結果相關資料包括所述程式設計題目的題目標識與所述用戶標識。
基於圖1所示的方法,本說明書實施例還對應提供了一種基於區塊鏈的程式設計題目發佈系統,包括由多個節點組成的區塊鏈網路;
任一節點,創設待發佈的程式設計題目;基於題目相關資料,構建題目發佈交易,並向所述區塊鏈網路廣播所述題目發佈交易,所述題目相關資料包括所述程式設計題目;
獲得所述題目發佈交易的每個節點,基於各節點之間的共識機制,將所述題目發佈交易寫入區塊鏈。
基於圖2所示的方法,本說明書實施例還對應提供了一種基於區塊鏈的解答代碼發佈系統,包括由多個節點組成的區塊鏈網路;
任一節點,獲取程式設計題目;所述目標節點為區塊鏈網路中的任一節點,所述程式設計題目是根據圖1所示的方法發佈的;將所述程式設計題目提供給被測試用戶進行解答,並接收所述被測試用戶上傳的解答代碼;基於解答相關資料,構建解答發佈交易,並向所述區塊鏈網路廣播所述解答發佈交易;其中,所述解答相關資料包括所述程式設計題目的題目標識、所述解答代碼與所述被測試用戶的用戶標識;
獲得所述解答發佈交易的每個節點,基於各節點之間的共識機制,將所述解答發佈交易寫入區塊鏈。
Here, a more detailed description of the business scenario (that is, the programming degree test) applied by the present invention will be given first. Take information technology company A as an example. If company A wants to know the programming level of a user (such as an employee, interviewer), then company A can extract any programming question from its own programming question bank and provide it to the user. The user answers according to the programming question, gives an answer code to answer the programming question, and uploads the answer code to company A's online questioning system. Company A’s online questioning system stores the answer test data (specifically standard input data and standard output data) corresponding to each programming question in the above-mentioned programming question bank, which is used to verify the correctness of the answer code. Specifically, the online problem determination system of company A will input the standard input data corresponding to the programming problem into the solution code and run the solution code, and then determine whether the solution code can output the standard output data corresponding to the programming problem. If so, The user is deemed to pass the test, otherwise, the user is deemed not to pass the test.
In practice, many IT organizations have the need to share each other's programming question bank. For this reason, in the prior art, for any IT organization, the IT organization generally uses a crawler program to crawl programming questions from the programming question bank of other IT organizations, and provides the crawled programming questions to the tested user for answers. Then, the IT organization also needs to send the answer code given by the tested user to the online judging system of the IT organization that created the programming problem for verification.
However, this method has the following disadvantages:
1. After the IT organization crawls the programming problems of other IT organizations through the crawler program, they sometimes make some inappropriate modifications to the programming problems without authorization. This aspect cannot well protect the rights and interests of the IT organizations that create programming problems. On the other hand, the answer code given by the tested user for the modified programming problem often does not match the programming problem before the modification, and the online judging system uses the solution adapted to the programming problem before the modification Check the data to test whether the code is correct, so that the test results cannot accurately reflect the programming level of the tested user.
2. Once the database of other IT organizations is inaccessible, the IT organization cannot crawl programming problems of other structures through crawlers. In other words, this way of sharing programming questions is not always effective.
For this reason, in the embodiments of this specification, any IT organization can use the blockchain protocol to publish its own programming topics to the blockchain, which is equivalent to sharing the programming topics created by itself with other IT Organizations, and there is no need to worry that other IT organizations will modify the programming topic.
In order to enable those skilled in the art to better understand the technical solutions in the embodiments of this specification, the technical solutions in the embodiments of this specification will be described in detail below in conjunction with the drawings in the embodiments of this specification. Obviously, the described implementation The examples are only a part of the embodiments of this specification, not all the embodiments. Based on the embodiments in this specification, all other embodiments obtained by those of ordinary skill in the art should fall within the scope of protection.
The following describes in detail the technical solutions provided by the embodiments of this specification in conjunction with the accompanying drawings.
Figure 1 is a schematic flow chart of a method for publishing programming questions based on blockchain provided by an embodiment of this specification, including the following steps:
S100: The target node creates a programming problem to be released.
In the embodiment of this specification, the equipment of each IT organization can access the blockchain network and become a node in the blockchain network. In other words, each node in the blockchain network corresponds to each IT organization that wants to share programming issues with each other.
In step S100, the target node may be any node in the blockchain network. In other words, the equipment of any IT organization can create programming problems and publish them through the method shown in Figure 1.
It should be noted that the programming problem created by the target node can be specifically the programming problem that the target node receives and uploads from the IT organization that controls the target node, or the target node creates a model based on the preset programming problem and automatically creates the program. Design topic.
S102: The target node constructs a topic release transaction based on topic related materials.
It should be noted that the transaction described in this article refers to the data structure specified in the blockchain agreement. In the blockchain protocol, a transaction means that a node creates a piece of data through the installed blockchain client and needs to be finally written into the blockchain. In other words, according to the blockchain agreement, all data that needs to be written to the blockchain for publicity needs to be encapsulated into a transaction data structure.
In step S102, the topic-related data includes at least the programming topic created by the target node in step S100. The target node constructs a topic publishing transaction based on the topic-related data, which actually encapsulates the topic-related data into a data structure specified by the blockchain agreement of the transaction.
S104: The target node broadcasts the topic release transaction to the blockchain network.
In step S104, the target node broadcasts the topic publishing transaction to the blockchain network, which is actually broadcasting the topic publishing transaction to other nodes, which is equivalent to sharing the programming topic with other nodes.
S106: For each node that obtains the topic publishing transaction, the node writes the topic publishing transaction into the blockchain based on the consensus mechanism between the nodes.
For each node that obtains the topic publishing transaction, the node may perform legality verification on the topic publishing transaction before writing the topic publishing transaction to the blockchain.
The items for the legality verification of the subject issue transaction can be specified according to business needs. For example, assuming that not every node has the authority to issue programming topics, then the node identification in the topic publication transaction can be used to determine whether the node corresponding to the node identification (ie the target node) has the authority to publish programming topics Permission, if there is no permission, refuse to write the subject issue transaction to the blockchain.
In step S106, the consensus mechanism between the nodes ensures the consistency of the data written by each node to the blockchain each time. Therefore, even if a node arbitrarily modifies the programming topic encapsulated in the topic publishing transaction, thereby changing the content of the topic publishing transaction, the modified topic publishing transaction will not be written into the blockchain by most nodes.
In this way, the programming topics created by the target node can always be written into the blockchain without modification, thereby completing the sharing of programming topics. In addition, the distributed storage feature of the blockchain makes it difficult to tamper with the issue of the transaction after being written into the blockchain.
It should be noted that for the answer release transactions and result release transactions that will appear in the following text, for the same reason, the content of these transactions is also difficult to tamper with.
Through the method shown in Figure 1, any IT organization's equipment can access the blockchain network called a node. In the blockchain network, any node can publish its own programming questions based on the blockchain protocol, that is to say, any node can construct a topic publishing transaction based on the programming topic created by itself, and then publish the topic The transaction is broadcast to other nodes. To obtain the topic release transaction, each node will write the topic release transaction into the blockchain based on the consensus mechanism between the nodes. In this way, on the one hand, any IT organization can share its own programming problems with other IT organizations; on the other hand, the process of issuing programming problems at any node is restricted by the blockchain agreement, and programming problems are never The entire process from creation to being written into the blockchain is difficult to be tampered with, and programming topics are also difficult to be tampered with after being written into the blockchain.
In addition, in the embodiment of this specification, the topic-related data may also include the node identification of the target node. This means that the target node will also encapsulate its own node ID into the topic release transaction, and then write it into the blockchain for publicity. In this way, it is possible to clearly share the creators of each programming problem with each IT organization, and protect the rights and interests of the IT organization that creates the programming problem.
In addition, in practical applications, because the data storage method of the blockchain is more complicated, when a node wants to retrieve a programming topic from the programming topic written in the blockchain, the operation is more complicated.
For this reason, in the embodiment of the present specification, for each node that obtains the topic publishing transaction, the node may create a topic storage address and store the topic related data in the topic storage address. This is equivalent to storing programming questions in a simple way. It should be noted that for any topic publishing transaction, the transaction can be published according to the topic written in the blockchain to verify whether the programming topic stored in the topic storage address has been tampered with. Through the above method, the node can be more convenient when it wants to retrieve a certain programming topic.
Further, the node can specifically store the topic smart contract encapsulating the topic related data into the topic storage address. In this case, the topic storage address is actually the contract identifier of the topic smart contract.
Smart contracts are a data structure naturally supported by many blockchain protocols (such as Ethereum), and many blockchain protocols also naturally support quick calls of smart contracts. Therefore, the programming questions can be stored in the data structure of the smart contract, so that the programming questions can be quickly retrieved to test the programming level by calling the smart contract.
According to the programming question publishing method shown in Figure 1, the embodiment of this specification further provides a blockchain-based solution code publishing method, as shown in Figure 2, including the following steps:
S200: The target node obtains programming questions.
The target node is any node in the blockchain network. In practical applications, when any IT organization wants to test the programming level of the tested user, it can trigger the target node under its control to obtain programming questions. The programming topic acquired by the target node is published based on the programming topic publishing method shown in Figure 1.
Specifically, the target node can read the programming topic from any topic publishing transaction in the blockchain.
Or, if the topic related data packaged by the topic publishing exchange is also stored in a certain topic storage address, then the target node can also obtain the programming topic from the topic storage address. When using this method to obtain programming questions, it is faster.
Further, if the topic related data is stored in the topic storage address in the form of a smart contract (ie, topic smart contract), the target node can call the topic smart contract to obtain the programming topic.
S202: The target node provides the programming question to the tested user for answering, and receives the answer code uploaded by the tested user.
S204: The target node constructs an answer release transaction based on answer related materials.
In the embodiment of this specification, the answer-related data includes at least the question mark of the programming question, the answer code and the user mark of the tested user.
Wherein, if the target node reads a programming topic from any topic issuance transaction in the blockchain, then the topic identification of the programming topic is the transaction hash of the topic issuance transaction; if the target node is from If any problem storage address acquires a programming problem, the problem of the programming problem is identified as the storage address.
Further, the target node may check whether the answer code has a compilation or running problem, if the check is passed, the answer issuance transaction will be constructed, if the check is not passed, it will refuse to construct the answer issuance transaction.
S206: The target node broadcasts the answer release transaction to the blockchain network.
S208: For each node that obtains the answer publishing transaction, the node writes the answer publishing transaction into the blockchain based on the consensus mechanism between the nodes.
For each node that obtains the answer issuance transaction, the node may perform legality verification for the answer issuance transaction before writing the answer issuance transaction into the blockchain.
The legality verification items for the answer release transaction can be specified according to business needs. For example, assuming that the format of the answer code is specified in advance, the format of the answer code in the answer issuance transaction can be verified, and if the format does not meet the requirements, the answer issuance transaction is refused to be written into the blockchain.
In step S208, it is equivalent to publicizing the identity information of the tested user, the identification information of the programming question answered by the tested user, and the answer code given by the tested user to each node.
In addition, in order to facilitate the node to quickly retrieve the answer code of the tested user for verification, in the embodiment of this specification, each node can also create an answer storage address, and store the answer-related information in the answer storage location site.
Further, each node can store the solution smart contract encapsulating the solution-related data in the solution storage address.
According to the method for issuing programming questions shown in FIG. 1 and the method for issuing answer codes shown in FIG. 2, the embodiment of this specification further provides a method for verifying answer codes based on blockchain, as shown in FIG. 3, which includes the following steps:
S300: The inspection node obtains the answer code corresponding to the programming question and the user identification of the tested user who uploaded the answer code.
In the embodiment of this specification, the verification node stores a node of the solution verification data corresponding to the programming question. The solution test data is data used to test the correctness of the solution code given to solve the programming problem. As mentioned above, the answer test data generally includes standard input data and standard output data.
The check node is generally a node where the programming problem is created. Of course, the node that creates the programming problem can also distribute the solution test data corresponding to the programming problem to at least one other node. In this way, the verification node may also be a node that stores the solution verification data in addition to the node that creates the programming question.
In the embodiment of this specification, the inspection node can determine the question mark corresponding to the answer inspection data according to any stored answer inspection data. Then, the answer publishing transaction containing the question identifier is found from the query in the blockchain, and the answer code and the user identifier are read from the answer publishing transaction.
Further, the inspection node may also query the answer storage address where the question mark is stored, and obtain the answer code and user identification from the answer storage address.
Furthermore, the inspection node can query the topic smart contract encapsulated with the topic identifier, and call the topic smart contract to obtain the corresponding answer code and user identifier.
S302: The checking node uses the stored solution checking data corresponding to the programming question to check the solution code.
S304: If the inspection is passed, the inspection node constructs a result release transaction based on the result related data.
In the embodiment of this specification, if the verification node passes the verification of the answer code, the verification message can be published on the blockchain. In this case, the result-related data actually includes the title identification of the programming topic and the user identification, and the meaning of the result publishing transaction is, for example, "User Zhang San answered the
基於圖3所示的方法,本說明書實施例還對應提供了一種基於區塊鏈的解答代碼檢驗系統,包括由多個節點組成的區塊鏈網路;檢驗節點,獲取程式設計題目對應的解答代碼與上傳所述解答代碼的被測試用戶的用戶標識,所述程式設計題目是根據圖1所示的方法發佈的,所述解答代碼是根據圖2所示的方法發佈的,所述檢驗節點是區塊鏈網路中,儲存有所述程式設計題目對應的解答檢驗資料的節點;使用儲存的對應於所述程式設計題目的解答檢驗資料,檢驗所述解答代碼;若檢驗通過,則基於結果相關資料,構建結果發佈交易,並向所述區塊鏈網路廣播所述結果發佈交易;其中,所述結果相關資料包括所述程式設計題目的題目標識與所述用戶標識;獲得所述結果發佈交易的每個節點,基於各節點之間的共識機制,將所述結果發佈交易寫入區塊鏈。 Based on the method shown in Figure 3, the embodiment of this specification also correspondingly provides a blockchain-based answer code verification system, including a blockchain network composed of multiple nodes; the nodes are verified to obtain the corresponding answers to the programming questions The code and the user ID of the tested user who uploaded the answer code, the programming question is issued according to the method shown in FIG. 1, the answer code is issued according to the method shown in FIG. 2, the verification node It is a node in the blockchain network that stores the answer test data corresponding to the programming question; uses the stored answer test data corresponding to the programming question to verify the answer code; if the test passes, it is based on Result-related data, construct a result issuance transaction, and broadcast the result issuance transaction to the blockchain network; wherein, the result-related data includes the title identification of the programming topic and the user identification; obtain the Each node of the result publishing transaction writes the result publishing transaction into the blockchain based on the consensus mechanism between the nodes.
圖10是本說明書實施例提供的一種基於區塊鏈的程式設計程度測試系統的結構示意圖。圖10所示的系統,具體可以用於實現基於區塊鏈的程式設計題目發佈系統、解答代碼發佈系統、解答代碼檢驗系統。 FIG. 10 is a schematic structural diagram of a programming degree testing system based on blockchain provided by an embodiment of this specification. The system shown in Figure 10 can be specifically used to implement a blockchain-based programming question issuing system, an answering code issuing system, and an answering code verification system.
本說明書實施例還提供一種電腦設備,其至少包括記憶體、處理器及儲存在記憶體上並可在處理器上運行的電腦程式,其中,處理器執行所述程序時實現圖1或圖2或圖3所示方法的功能。 The embodiment of the specification also provides a computer device, which at least includes a memory, a processor, and a computer program stored on the memory and running on the processor, wherein the processor executes the program to implement FIG. 1 or FIG. 2 Or the function of the method shown in Figure 3.
圖11顯示了本說明書實施例所提供的一種更為具體的計算設備硬體結構示意圖,該設備可以包括:處理器1110、記憶體1120、輸入/輸出介面1130、通訊介面1140和匯流排1150。其中處理器1110、記憶體1120、輸入/輸出介面1130和通訊介面1140透過匯流排1150實現彼此之間在設備內部的通訊連接。
FIG. 11 shows a more specific hardware structure diagram of a computing device provided by an embodiment of this specification. The device may include a
處理器1110可以採用通用的CPU(Central Processing Unit,中央處理器)、微處理器、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、或者一個或多個積體電路等方式實現,用於執行相關程序,以實現本說明書實施例所提供的技術方案。
The
記憶體1120可以採用ROM(Read Only Memory,唯讀記憶體)、RAM(Random Access Memory,隨機存取記憶體)、靜態儲存設備,動態儲存設備等形式實現。記憶體1120可以儲存作業系統和其他應用程序,在透過軟體或者韌體來實現本說明書實施例所提供的技術方案時,相關的程序代碼保存在記憶體1120中,並由處理器1110來呼叫執行。
The
輸入/輸出介面1130用於連接輸入/輸出模組,以實現資訊輸入及輸出。輸入輸出/模組可以作為組件配置在設備中(圖中未顯示),也可以外接於設備以提供相應功能。其中輸入設備可以包括鍵盤、滑鼠、觸控螢幕、麥克風、各類感測器等,輸出設備可以包括顯示器、揚聲器、振動器、指示燈等。
The input/
通訊介面1140用於連接通訊模組(圖中未顯示),以實現本設備與其他設備的通訊互動。其中通訊模組可以透過有線方式(例如USB、網線等)實現通訊,也可以透過無線方式(例如移動網路、WIFI、藍牙等)實現通訊。
The
匯流排1150包括一通路,在設備的各個組件(例如處理器1110、記憶體1120、輸入/輸出介面1130和通訊介面1140)之間傳輸資訊。
The
需要說明的是,儘管上述設備僅顯示了處理器1110、記憶體1120、輸入/輸出介面1130、通訊介面1140以及匯流排1150,但是在具體實施過程中,該設備還可以包括實現正常運行所必需的其他組件。此外,本領域的技術人員可以理解的是,上述設備中也可以僅包含實現本說明書實施例方案所必需的組件,而不必包含圖中所示的全部組件。
It should be noted that although the above device only shows the
本說明書實施例還提供一種電腦可讀儲存媒體,其上儲存有電腦程式,該程序被處理器執行時實現圖1和/或圖4所示方法的功能。 The embodiment of the present specification also provides a computer-readable storage medium on which a computer program is stored, and when the program is executed by a processor, the function of the method shown in FIG. 1 and/or FIG. 4 is realized.
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程序的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可抹除可程式化唯讀記憶體 (EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁磁碟儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料訊號和載波。 Computer-readable media includes permanent and non-permanent, removable and non-removable media, and information storage can be realized by any method or technology. Information can be computer-readable instructions, data structures, program modules, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), and other types of random access memory (RAM) , Read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disc (DVD) or other optical storage, magnetic tape, magnetic tape, magnetic disk storage or Other magnetic storage devices or any other non-transmission media can be used to store information that can be accessed by computing devices. According to the definition in this article, computer-readable media does not include transitory media, such as modulated data signals and carrier waves.
透過以上的實施方式的描述可知,本領域的技術人員可以清楚地瞭解到本說明書實施例可借助軟體加必需的通用硬體平臺的方式來實現。基於這樣的理解,本說明書實施例的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該電腦軟體產品可以儲存在儲存媒體中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本說明書實施例各個實施例或者實施例的某些部分所述的方法。 From the description of the above embodiments, those skilled in the art can clearly understand that the embodiments of this specification can be implemented by means of software plus a necessary general hardware platform. Based on this understanding, the technical solutions of the embodiments of this specification can be embodied in the form of software products, which can be stored in storage media, such as ROM/RAM, magnetic A disc, an optical disc, etc., include a number of instructions to make a computer device (which can be a personal computer, a server, or a network device, etc.) execute the methods described in the various embodiments or some parts of the embodiments of this specification.
上述實施例闡明的系統、方法、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧手機、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任意幾種設備的組合。 The systems, methods, modules, or units explained in the above embodiments may be implemented by computer chips or entities, or implemented by products with certain functions. A typical implementation device is a computer. The specific form of the computer can be a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email receiving and sending device, and a game control A console, a tablet, a wearable device, or a combination of any of these devices.
本說明書中的各個實施例均採用遞進的方式描述,各 個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於裝置和設備實施例而言,由於其基本相似於方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的方法實施例僅僅是示意性的,其中所述作為分離部件說明的模組可以是或者也可以不是實體上分開的,在實施本說明書實施例方案時可以把各模組的功能在同一個或多個軟體和/或硬體中實現。也可以根據實際的需要選擇其中的部分或者全部模組來實現本實施例方案的目的。本領域普通技術人員在不付出進步性勞動的情況下,即可以理解並實施。 Each embodiment in this specification is described in a progressive manner, each The same or similar parts between the embodiments can be referred to each other, and each embodiment focuses on the differences from other embodiments. In particular, for the device and equipment embodiments, since they are basically similar to the method embodiments, the description is relatively simple, and for related parts, please refer to the part of the description of the method embodiments. The method embodiments described above are merely illustrative. The modules described as separate components may or may not be physically separated. When implementing the solutions of the embodiments of this specification, the functions of the modules can be Implemented in the same one or more software and/or hardware. It is also possible to select some or all of the modules according to actual needs to achieve the objectives of the solutions of the embodiments. Those of ordinary skill in the art can understand and implement it without making progressive work.
以上所述僅是本說明書實施例的具體實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本說明書實施例原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本說明書實施例的保護範圍。 The above are only specific implementations of the embodiments of this specification. It should be pointed out that for those of ordinary skill in the art, without departing from the principle of the embodiments of this specification, several improvements and modifications can be made. These Improvements and modifications should also be regarded as the protection scope of the embodiments of this specification.
S100-S106:步驟 S100-S106: steps
S200-S208:步驟 S200-S208: steps
S300-S308:步驟 S300-S308: steps
S400-S406:步驟 S400-S406: steps
701:創設模組 701: Create Module
702:構建廣播模組 702: Build a broadcast module
801:獲取模組 801: Get Module
802:解答模組 802: Answer Module
803:構建廣播模組 803: Build Broadcast Module
901:獲取模組 901: Get Module
902:檢驗模組 902: Inspection Module
903:構建廣播模組 903: Build a broadcast module
1110:處理器 1110: processor
1120:記憶體 1120: memory
1130:輸入/輸出介面 1130: input/output interface
1140:通訊介面 1140: communication interface
1150:匯流排 1150: bus
為了更清楚地說明本說明書實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本說明書實施例中記載的一些實施例,對於本領域普通技術人員來講,還可以根據這些附圖獲得其他的附圖。 圖1是本說明書實施例提供的一種基於區塊鏈的程式設計題目發佈方法的流程示意圖; 圖2是本說明書實施例提供的一種基於區塊鏈的解答代碼發佈方法的流程示意圖; 圖3是本說明書實施例提供的一種基於區塊鏈的解答代碼檢驗方法的流程示意圖; 圖4是本說明書實施例提供的一種並行化的執行區塊鏈交易的方法的流程示意圖; 圖5是現有技術中串列化的交易執行方式示意圖; 圖6是本說明書實施例提供的並行化的交易執行方式示意圖; 圖7本說明書實施例還對應提供了一種基於區塊鏈的程式設計題目發佈裝置的結構示意圖; 圖8本說明書實施例還對應提供了一種基於區塊鏈的解答代碼發佈裝置的結構示意圖; 圖9本說明書實施例還對應提供了一種基於區塊鏈的解答代碼檢驗裝置的結構示意圖; 圖10是本說明書實施例提供的一種基於區塊鏈的程式設計程度測試系統的流程示意圖; 圖11是用於配置本說明書實施例方法的一種電腦設備的結構示意圖。In order to more clearly describe the technical solutions in the embodiments of this specification or the prior art, the following will briefly introduce the drawings that need to be used in the description of the embodiments or the prior art. Obviously, the drawings in the following description are merely present For some of the embodiments described in the embodiments of the specification, for those of ordinary skill in the art, other drawings may be obtained from these drawings. FIG. 1 is a schematic flowchart of a method for publishing programming questions based on blockchain provided by an embodiment of this specification; FIG. 2 is a schematic flowchart of a method for issuing answer codes based on a blockchain provided by an embodiment of this specification; FIG. 3 is a schematic flowchart of a method for verifying answer codes based on blockchain according to an embodiment of this specification; FIG. 4 is a schematic flow diagram of a method for parallel execution of blockchain transactions provided by an embodiment of this specification; FIG. 5 is a schematic diagram of a serialized transaction execution method in the prior art; FIG. 6 is a schematic diagram of a parallelized transaction execution method provided by an embodiment of this specification; Fig. 7 The embodiment of this specification also correspondingly provides a structural schematic diagram of a programming topic publishing device based on blockchain; Figure 8 The embodiment of this specification also correspondingly provides a structural schematic diagram of a solution code issuing device based on blockchain; Fig. 9 The embodiment of this specification also correspondingly provides a structural schematic diagram of a solution code checking device based on blockchain; FIG. 10 is a schematic flow chart of a programming degree testing system based on blockchain provided by an embodiment of this specification; Fig. 11 is a schematic structural diagram of a computer device for configuring the method of the embodiment of this specification.
Claims (24)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260961.0 | 2018-10-26 | ||
CN201811260961.0A CN109345392B (en) | 2018-10-26 | 2018-10-26 | Method and system for issuing programming question, issuing solution code and checking solution code |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202016778A TW202016778A (en) | 2020-05-01 |
TWI706252B true TWI706252B (en) | 2020-10-01 |
Family
ID=65312467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108109775A TWI706252B (en) | 2018-10-26 | 2019-03-21 | Programming question release, answer code release, answer code inspection method, device, system and computer equipment |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN109345392B (en) |
TW (1) | TWI706252B (en) |
WO (1) | WO2020082917A1 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109345392B (en) * | 2018-10-26 | 2020-06-23 | 阿里巴巴集团控股有限公司 | Method and system for issuing programming question, issuing solution code and checking solution code |
CN110096435B (en) * | 2019-04-09 | 2023-08-08 | 平安科技(深圳)有限公司 | Automatic code writing method, device, computer equipment and storage medium |
CN110944008B (en) * | 2019-09-13 | 2021-03-19 | 腾讯科技(深圳)有限公司 | Block chain-based task reward processing method, device, equipment and storage medium |
CN110688410B (en) * | 2019-09-23 | 2021-03-19 | 创新先进技术有限公司 | Suggestion processing method and device based on block chain and electronic equipment |
CN116032793B (en) * | 2022-11-17 | 2024-04-02 | 中国联合网络通信集团有限公司 | Information processing method, information processing device, electronic equipment and computer readable medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180158347A1 (en) * | 2015-06-07 | 2018-06-07 | Protean LLC | Educational Proficiency Development and Assessment System |
CN108352044A (en) * | 2015-11-24 | 2018-07-31 | 索尼公司 | Information processing unit, information processing method and program |
CN108521456A (en) * | 2018-04-01 | 2018-09-11 | 南京米好信息安全有限公司 | Network establishment contest system based on block chain |
TW201837805A (en) * | 2017-04-10 | 2018-10-16 | 安地卡及巴布達商區塊鏈控股有限公司 | Securing blockchain transaction based on undetermined data |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622385A (en) * | 2017-08-28 | 2018-01-23 | 南京邮电大学 | A kind of copyright distributing method based on block chain intelligence contract |
CN108171493A (en) * | 2017-11-14 | 2018-06-15 | 北京欧链科技有限公司 | The data processing method and device of block chain |
CN108111312B (en) * | 2017-12-28 | 2019-09-27 | 电子科技大学 | Intelligent terminal safety communication method based on block chain |
CN108550041A (en) * | 2018-03-20 | 2018-09-18 | 深圳市元征科技股份有限公司 | Protect the method, apparatus and terminal of original works |
CN108595535B (en) * | 2018-03-30 | 2020-11-17 | 李欣宇 | Knowledge question-answering system and method based on same-root double-chain block chain |
CN108615153A (en) * | 2018-04-28 | 2018-10-02 | 百度在线网络技术(北京)有限公司 | Processing method, device, system, equipment and the storage medium of block chain data |
CN109345392B (en) * | 2018-10-26 | 2020-06-23 | 阿里巴巴集团控股有限公司 | Method and system for issuing programming question, issuing solution code and checking solution code |
-
2018
- 2018-10-26 CN CN201811260961.0A patent/CN109345392B/en active Active
-
2019
- 2019-03-21 TW TW108109775A patent/TWI706252B/en active
- 2019-09-09 WO PCT/CN2019/104897 patent/WO2020082917A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180158347A1 (en) * | 2015-06-07 | 2018-06-07 | Protean LLC | Educational Proficiency Development and Assessment System |
CN108352044A (en) * | 2015-11-24 | 2018-07-31 | 索尼公司 | Information processing unit, information processing method and program |
TW201837805A (en) * | 2017-04-10 | 2018-10-16 | 安地卡及巴布達商區塊鏈控股有限公司 | Securing blockchain transaction based on undetermined data |
CN108521456A (en) * | 2018-04-01 | 2018-09-11 | 南京米好信息安全有限公司 | Network establishment contest system based on block chain |
Also Published As
Publication number | Publication date |
---|---|
CN109345392B (en) | 2020-06-23 |
CN109345392A (en) | 2019-02-15 |
WO2020082917A1 (en) | 2020-04-30 |
TW202016778A (en) | 2020-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI706252B (en) | Programming question release, answer code release, answer code inspection method, device, system and computer equipment | |
TWI743458B (en) | Method, device and system for parallel execution of blockchain transactions | |
CN109981679B (en) | Method and apparatus for performing transactions in a blockchain network | |
CN109377216B (en) | Transaction method and system based on centralized settlement and block chain deposit certificate | |
WO2020029630A1 (en) | Transaction method and system based on centralized clearing and blockchain record keeping | |
WO2020029631A1 (en) | Transaction method and system based on centralized settlement and blockchain deposit certificates | |
CN109274667B (en) | Copyright event evidence storing method and system based on block chain | |
TWI700600B (en) | A blockchain-based method and system for proxy deposit of copyright events | |
TWI692990B (en) | Smart device binding method, device and system, communication system | |
CN110046523B (en) | Intelligent contract checking method and device and electronic equipment | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
TWI706282B (en) | Method and device for concealing transactions written in blockchain, blockchain system, and computer equipment | |
CN109299015B (en) | Software testing method, device and system | |
TW202018555A (en) | Method and apparatus for performing blockchain evidence storage on webpage by means of webpage monitoring | |
CN110222042A (en) | For determining the method, apparatus, equipment and system architecture of having checked business datum | |
CN111506580B (en) | Transaction storage method based on centralized block chain type account book | |
CN111459948A (en) | Data block deleting method based on centralized block chain type account book | |
CN112291321B (en) | Service processing method, device and system | |
CN111464319B (en) | Transaction storage and signature verification method based on centralized block chain type account book | |
US20200294057A1 (en) | Business processing method, apparatus, and equipment | |
WO2020155838A1 (en) | Copyright transfer method and device employing blockchain | |
CN108710658B (en) | Data record storage method and device | |
CN110245188B (en) | Work list evidence-storing method, device and system based on blockchain | |
WO2020108055A1 (en) | Multiple blockchain network-based data reading method and system | |
CN111858335A (en) | Block chain SDK testing method and device |