KR102121157B1 - 동시 블록체인 트랜잭션 실패를 해결하기 위한 넌스 테이블의 이용 - Google Patents
동시 블록체인 트랜잭션 실패를 해결하기 위한 넌스 테이블의 이용 Download PDFInfo
- Publication number
- KR102121157B1 KR102121157B1 KR1020197011526A KR20197011526A KR102121157B1 KR 102121157 B1 KR102121157 B1 KR 102121157B1 KR 1020197011526 A KR1020197011526 A KR 1020197011526A KR 20197011526 A KR20197011526 A KR 20197011526A KR 102121157 B1 KR102121157 B1 KR 102121157B1
- Authority
- KR
- South Korea
- Prior art keywords
- nonce
- blockchain
- slot
- value
- specific
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- 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/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
- Hardware Redundancy (AREA)
Abstract
본 개시내용의 구현예는 복수의 넌스 슬롯을 포함하는 넌스 테이블을 초기화하는 것으로서, 각각의 넌스 슬롯은 넌스 인덱스 및 상태와 연관되고, 각각의 넌스 값을 저장하는 것인, 넌스 테이블을 초기화하는 것; 애플리케이션으로부터 넌스 값에 대한 요청을 수신하고, 이에 응답하여, 넌스 테이블로부터 넌스 값을 요청하는 것; 요청에 응답하여 넌스 값을 수신하는 것으로서, 넌스 값에 대응하는 넌스 슬롯의 상태는 점유로 설정되는 것인, 넌스 값을 수신하는 것; 및 넌스 값을 사용하는 트랜잭션이 성공 및 실패 중 하나인 것에 응답하여, 이하: 트랜잭션이 성공적이면, 넌스 슬롯 내에 넌스 값을 해제하고 상태를 미점유로 설정하는 것, 및 트랜잭션이 실패이면 상태를 미점유로 설정하는 것 중 하나를 실행하는 것을 포함한다.
Description
합의 네트워크, 및/또는 블록체인 네트워크라 또한 칭할 수 있는 분산 원장 시스템(Distributed ledger systems: DLSs)은 참여 엔티티가 안전하게 그리고 변경 불가능하게 데이터를 저장하는 것을 가능하게 한다. DLS는 통상적으로 임의의 특정 사용 사례(예를 들어, 암호 화폐)를 참조하지 않고 블록체인 네트워크라 칭한다. 예시적인 유형의 블록체인 네트워크는 공용 블록체인 네트워크, 사설 블록체인 네트워크 및 컨소시엄 블록체인 네트워크를 포함할 수 있다. 공용 블록체인 네트워크는 모든 엔티티가 DLS를 사용하고 합의 프로세스에 참여하게 하기 위해 개방되어 있다. 읽기 및 쓰기 권한을 중앙에서 제어하는 사설 블록체인 네트워크가 특정 엔티티에 대해 제공된다. 컨소시엄 블록체인 네트워크는 합의 프로세스를 제어하는 선택된 엔티티 그룹을 위해 제공되고, 액세스 제어 계층을 포함한다.
블록체인 네트워크에서, 합의 프로토콜이 실행되어 블록체인의 블록에 트랜잭션을 추가한다. 합의 프로토콜은 넌스(nonce)(예를 들어, 각각 1회 사용되는 임의의 숫자)에 기초하여 동작할 수 있고, 블록체인의 각각의 노드는 넌스를 소비한다. 예를 들어, 추가될 각각의 트랜잭션에 대해, 각각의 노드는 블록체인의 블록에 트랜잭션을 추가하기 위한 시도시에 넌스를 소비한다. 대부분의 경우, 트랜잭션은 동시적일 수 있는 데, 이는 동일한 넌스가 다수의 노드에 의해 사용되게 할 수 있다. 결과적으로, 동시 트랜잭션들 중 하나 이상이 실패할 수도 있다.
본 개시내용의 구현예는 블록체인 네트워크에서 동시 트랜잭션 실패를 완화하기 위한 컴퓨터-구현 방법을 포함한다. 더 구체적으로, 본 개시내용의 구현예는 블록체인 네트워크에서 동시 트랜잭션의 프로세싱에서 넌스 충돌(nonce collision)을 회피하기 위해 복수의 프리-파퓰레이팅된(pre-populated) 넌스를 갖는 넌스 테이블에 관한 것이다.
몇몇 구현예에서, 동작은 복수의 넌스 슬롯을 포함하는 넌스 테이블을 초기화하는 것으로서, 각각의 넌스 슬롯은 넌스 인덱스 및 상태와 연관되고, 각각의 넌스 값을 저장하는 것인, 넌스 테이블을 초기화하는 것; 애플리케이션으로부터 넌스 값에 대한 요청을 수신하고, 이에 응답하여, 넌스 테이블로부터 넌스 값을 요청하는 것; 요청에 응답하여 넌스 값을 수신하는 것으로서, 넌스 값에 대응하는 넌스 슬롯의 상태는 점유로 설정되는 것인, 넌스 값을 수신하는 것; 및 넌스 값을 사용하는 트랜잭션이 성공 및 실패 중 하나인 것에 응답하여, 이하: 트랜잭션이 성공적이면, 넌스 슬롯 내에 넌스 값을 해제하고 상태를 미점유로 설정하는 것, 및 트랜잭션이 실패이면 상태를 미점유로 설정하는 것 중 하나를 실행하는 것을 포함한다. 다른 구현예는 컴퓨터 저장 디바이스 상에 인코딩된, 방법의 동작을 수행하도록 구성된 대응 시스템, 장치, 및 컴퓨터 프로그램을 포함한다.
이들 및 다른 구현예는 이하의 특징들 중 하나 이상을 각각 선택적으로 포함할 수도 있다: 넌스 슬롯 내에서 넌스 값을 해제하는 것은 넌스 슬롯에 증분된 넌스 값을 저장하는 것을 포함하고; 애플리케이션으로부터 넌스 값에 대한 제2 요청을 수신하고, 이에 응답하여 넌스 테이블로부터 넌스 값을 요청하고, 넌스 테이블 내의 각각의 넌스 슬롯의 상태가 점유된 것으로 결정하고, 이에 응답하여 넌스 슬롯이 점유되었다는 표시를 애플리케이션에 전송하고; 넌스 테이블은 데이터베이스에 저장되고, 애플리케이션과 데이터베이스 사이의 브리지는 넌스 값에 대한 요청을 수신하고, 넌스 값을 애플리케이션에 선택적으로 제공하고; 애플리케이션은, 블록체인 네트워크로부터 애플리케이션에 의해 수신된 하나 이상의 메시지에 기초하여, 넌스 값을 사용하는 트랜잭션이 성공 및 실패 중 하나인지 여부를 결정하고; 트랜잭션의 상태는 타임아웃 이벤트가 발생했는지 여부를 결정하기 위해 주기적으로 트리거링된다.
본 개시내용은 하나 이상의 프로세서에 결합되고, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서가 본 명세서에 제공된 방법의 구현예에 따른 동작을 수행하게 하는 명령이 그 위에 저장되어 있는 하나 이상의 비일시적 컴퓨터-판독가능한 저장 매체를 또한 제공한다.
본 개시내용은 또한 본 명세서에 제공된 방법을 구현하기 위한 시스템을 제공한다. 시스템은 하나 이상의 프로세서와, 하나 이상의 프로세서에 결합되고, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서가 본 명세서에 제공된 방법의 구현예에 따른 동작을 수행하게 하는 명령이 그 위에 저장되어 있는 컴퓨터-판독가능한 저장 매체를 포함한다.
본 개시내용에 따른 방법은 본 명세서에 설명된 양태 및 특징의 임의의 조합을 포함할 수도 있다는 것이 이해된다. 즉, 본 개시내용에 따른 방법은 본 명세서에 구체적으로 설명된 양태 및 특징의 조합에 한정되지 않고, 제공된 양태 및 특징의 임의의 조합을 또한 포함한다.
본 개시내용의 하나 이상의 구현예의 상세는 첨부 도면 및 이하의 설명에서 설명된다. 본 개시내용의 다른 특징 및 장점은 상세한 설명 및 도면 및 청구범위로부터 명백해질 것이다.
도 1은 본 개시내용의 구현예를 실행하는 데 사용될 수 있는 예시적인 환경을 도시하고 있다.
도 2는 본 개시내용의 구현예에 따른 예시적인 개념 아키텍처를 도시하고 있다.
도 3은 본 개시내용의 구현예에 따라 넌스 테이블을 초기화하기 위한 예시적인 신호 흐름을 도시하고 있다.
도 4는 본 개시내용의 구현예에 따라 넌스 테이블로부터 넌스 값을 페치(fetch), 해제(release) 및 리셋(reset)하기 위한 예시적인 신호 흐름을 도시하고 있다.
도 5는 본 개시내용의 구현예에 따라 넌스 테이블에서 이용 가능한 넌스 값을 업데이트하기 위한 예시적인 신호 흐름을 도시하고 있다.
도 6은 본 개시내용의 구현예에 따라 실행될 수 있는 넌스 테이블을 유지하는 예시적인 프로세스를 도시하고 있다.
다양한 도면에서 유사한 도면 부호는 동일한 요소를 나타내고 있다.
도 2는 본 개시내용의 구현예에 따른 예시적인 개념 아키텍처를 도시하고 있다.
도 3은 본 개시내용의 구현예에 따라 넌스 테이블을 초기화하기 위한 예시적인 신호 흐름을 도시하고 있다.
도 4는 본 개시내용의 구현예에 따라 넌스 테이블로부터 넌스 값을 페치(fetch), 해제(release) 및 리셋(reset)하기 위한 예시적인 신호 흐름을 도시하고 있다.
도 5는 본 개시내용의 구현예에 따라 넌스 테이블에서 이용 가능한 넌스 값을 업데이트하기 위한 예시적인 신호 흐름을 도시하고 있다.
도 6은 본 개시내용의 구현예에 따라 실행될 수 있는 넌스 테이블을 유지하는 예시적인 프로세스를 도시하고 있다.
다양한 도면에서 유사한 도면 부호는 동일한 요소를 나타내고 있다.
본 개시내용의 구현예는 블록체인 네트워크에서 동시 트랜잭션 실패를 완화하기 위한 컴퓨터-구현 방법을 포함한다. 더 구체적으로, 본 개시내용의 구현예는 블록체인 네트워크에서 동시 트랜잭션의 프로세싱에서 넌스 충돌(nonce collision)을 회피하기 위해 복수의 프리-파퓰레이팅된(pre-populated) 넌스를 갖는 넌스 테이블에 관한 것이다. 몇몇 구현예에서, 동작은 복수의 넌스 슬롯을 포함하는 넌스 테이블을 초기화하는 것으로서, 각각의 넌스 슬롯은 넌스 인덱스 및 상태와 연관되고, 각각의 넌스 값을 저장하는 것인, 넌스 테이블을 초기화하는 것, 애플리케이션으로부터의 넌스 값에 대한 요청을 수신하고 이에 응답하여 넌스 테이블로부터 넌스 값을 요청하는 것, 요청에 응답하여 넌스 값을 수신하는 것으로서, 넌스 값에 대응하는 넌스 슬롯의 상태가 점유로 설정되는 것인 넌스 값을 수신하는 것, 넌스 값을 사용하는 트랜잭션이 성공 및 실패 중 하나인 것에 응답하여, 트랜잭션이 성공이면, 넌스 슬롯 내에서 넌스 값을 해제하고 상태를 미점유로 설정하는 것, 및 트랜잭션이 실패이면 상태를 미점유로 설정하는 것 중 하나를 실행하는 것을 포함한다.
본 개시내용의 구현예를 위한 추가의 맥락을 제공하기 위해, 그리고 전술된 바와 같이, 합의 네트워크(예를 들어, 피어-투-피어 노드로 이루어진) 및 블록체인 네트워크라 또한 칭할 수 있는 분산 원장 시스템(DLS)은 참여 엔티티가 트랜잭션을 안전하고 변경 불가능하게 수행하고 데이터를 저장하는 것을 가능하게 한다. 블록체인이라는 용어는 일반적으로 비트코인(Bitcoin) 암호 화폐 네트워크와 연관되지만 블록체인은 본 명세서에서 임의의 특정 사용 사례를 참조하지 않고 일반적으로 DLS를 나타내기 위해 사용된다. 전술된 바와 같이, 블록체인 네트워크는 공용 블록체인 네트워크, 사설 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다.
공용 블록체인 네트워크에서, 합의 프로세스는 합의 네트워크의 노드에 의해 제어된다. 예를 들어, 수백개, 수천개, 심지어 수백만개의 엔티티가 공용 블록체인 네트워크에서 협력할 수 있고, 각각의 엔티티는 공용 블록체인 네트워크에서 적어도 하나의 노드를 운영한다. 이에 따라, 공용 블록체인 네트워크는 참여 엔티티에 관하여 공용 네트워크로 고려될 수 있다. 몇몇 예에서, 대부분의 엔티티(노드)는 블록이 유효하게 하기 위해 모든 블록에 서명하고 블록체인 네트워크의 블록체인(분산 원장)에 추가되어야 한다. 예시적인 공용 블록체인 네트워크는 피어-투-피어 지불 네트워크인 비트코인 네트워크를 포함한다. 비트코인 네트워크는 블록체인이라 칭하는 분산 원장을 활용한다. 전술된 바와 같이, 그러나, 블록체인이라는 용어는 일반적으로 비트코인 네트워크를 특히 참조하지 않고 분산 원장을 나타내는 데 사용된다.
일반적으로, 공용 블록체인 네트워크는 공용 트랜잭션을 지원한다. 공용 트랜잭션은 공용 블록체인 네트워크 내의 모든 노드와 공유되고, 전역 블록체인에 저장된다. 전역 블록체인은 모든 노드를 가로질러 복제되는 블록체인이다. 즉, 모든 노드는 전역 블록체인에 관하여 완벽한 상태 합의에 있다. 합의를 달성하기 위해(예를 들어, 블록체인으로의 블록 추가에 대한 동의), 합의 프로토콜이 공용 블록체인 네트워크 내에서 구현된다. 예시적인 합의 프로토콜은 비트코인 네트워크에서 구현된 작업 증명(proof-of-work: POW)을 비한정적으로 포함한다.
일반적으로, 사설 블록체인 네트워크 사설 블록체인 네트워크는 읽기 및 쓰기 권한을 중앙에서 제어하는 특정 엔티티를 위해 제공된다. 엔티티는 어느 노드가 블록체인 네트워크에 참여할 수 있는지를 제어한다. 따라서, 사설 블록체인 네트워크는 누가 일반적으로 네트워크에 참여하도록 허용되는지, 및 이들의 참여의 레벨(예를 들어, 단지 특정 트랜잭션에서만)에 대한 제한을 부여하는 허가된 네트워크라 칭한다. 다양한 유형의 액세스 제어 메커니즘이 사용될 수 있다(예를 들어, 기존 참여자가 새로운 엔티티 추가에 투표하고, 규제 기관이 입회를 제어할 수 있음).
일반적으로, 컨소시엄 블록체인 네트워크는 참여 엔티티 사이에서 사설이다. 컨소시엄 블록체인 네트워크에서, 합의 프로세스는 권한부여된 노드의 세트에 의해 제어되고, 하나 이상의 노드는 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 운영된다. 예를 들어, 열개(10개)의 엔티티(예를 들어, 금융 기관, 보험 회사)의 컨소시엄이 컨소시엄 블록체인 네트워크를 운영할 수 있는 데, 각각의 엔티티는 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 운영한다. 이에 따라, 컨소시엄 블록체인 네트워크는 참여 엔티티에 관하여 사설 네트워크로 고려될 수 있다. 몇몇 예에서, 각각의 엔티티(노드)는 블록이 유효하게 하기 위해 모든 블록에 서명하고 블록체인에 추가되어야 한다. 몇몇 예에서, 적어도 엔티티(노드)의 서브세트(예를 들어, 적어도 7개의 엔티티)는 블록이 유효하게 하기 위해 모든 블록에 서명하고 블록체인에 추가되어야 한다.
본 개시내용의 구현예는 일반적으로 블록체인 네트워크를 참조하여 본 명세서에서 더 상세히 설명된다. 본 개시내용의 구현예들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 고려된다.
전술된 바와 같이, 합의 프로토콜이 블록체인에 블록을 추가하기 위해 블록체인 네트워크 내에서 실행된다. 각각의 블록은 블록체인 네트워크의 엔티티들 사이에 실행되는 트랜잭션의 번들로서 설명될 수 있다. 블록체인 네트워크 내의 다수의 노드는 이들의 블록을 블록체인에 추가하도록 합의 프로토콜을 통해 경쟁한다. 트랜잭션 및 블록은 넌스를 사용하여 기록된다. 즉, 합의 프로토콜에 참여하는 각각의 노드는 넌스를 사용한다. 몇몇 예에서, 넌스는 단지 1회만 사용되는 랜덤(임의의) 숫자(예를 들어, 고정 길이의)이다. 예를 들어, 넌스가 블록체인에 트랜잭션을 성공적으로 기록하는 데 사용되면, 해당 넌스는 다시 사용되지 않는다. 더 상세하게, 블록체인에 쓰여지는 각각의 트랜잭션은 넌스를 사용한다. 넌스는 복수의 방식으로 사용될 수 있다. 예를 들어, 넌스는 트랜잭션 블록의 해시 값에 연접될 수 있고, 따라서 해시가 네트워크의 타겟보다 작거나 같을 것이다. 다른 예로서, 넌스는 해싱될 트랜잭션 값과 연접될 수도 있다.
몇몇 경우에, 트랜잭션은 동시 발생할 수 있다. 결과적으로, 상당한 수의 넌스가 블록체인에 트랜잭션을 기록하기 위해서 동시에 요구될 수 있다. 2개 이상의 노드가 동일한 넌스를 동시에 사용하는 경우가 발생할 수 있다. 하나의 노드가 그 트랜잭션을 블록체인에 추가하는 데 성공하면, 넌스는 더 이상 사용을 위해 유효하지 않고, 다른 노드(들)는 이들의 트랜잭션을 블록체인에 기록하기 위한 시도시에 실패한다.
본 개시내용의 구현예는 상기 맥락의 관점에서 본 명세서에서 더 상세히 설명된다. 더 구체적으로, 그리고 전술된 바와 같이, 본 개시내용의 구현예는 블록체인 네트워크에서 동시 트랜잭션의 프로세싱에서 넌스 충돌을 회피하기 위해 복수의 프리-파퓰레이팅된 넌스를 갖는 넌스 테이블에 관한 것이다. 본 명세서에서 더 상세히 설명된 바와 같이, 넌스 테이블로부터의 넌스가 노드에 의해 사용되는 동안, 넌스가 임의의 다른 노드에 의해 사용을 위해 이용 불가능하도록 선점 모델이 채용된다. 트랜잭션이 성공적이면, 넌스는 넌스 테이블로부터 삭제되고, 새로운 넌스가 그 대신에 제공된다. 트랜잭션이 성공적이지 않으면, 넌스는 사용을 위해 해제되고, 후속의 트랜잭션에서 재사용을 위해 넌스 테이블에 잔류한다.
도 1은 본 개시내용의 구현예를 실행하는 데 사용될 수 있는 예시적인 환경(100)을 도시하고 있다. 몇몇 예에서, 예시적인 환경(100)은 엔티티가 블록체인 네트워크(102)에 참여하는 것을 가능하게 한다. 예시적인 환경(100)은 컴퓨팅 디바이스(106, 108) 및 네트워크(110)를 포함한다. 몇몇 예에서, 네트워크(110)는 근거리 통신망(local area network: LAN), 광역 통신망(wide area network: WAN), 인터넷, 또는 이들의 조합을 포함하고, 웹사이트, 사용자 디바이스(예를 들어, 컴퓨팅 디바이스) 및 백엔드 시스템을 접속한다. 몇몇 예에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다.
도시되어 있는 예에서, 컴퓨팅 시스템(106, 108)은 블록체인 네트워크(102)에서 노드로서 참여를 가능하게 하는 임의의 적절한 컴퓨팅 시스템을 각각 포함할 수 있다. 예시적인 컴퓨팅 디바이스는 서버, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨팅 디바이스 및 스마트폰을 비한정적으로 포함한다. 몇몇 예에서, 컴퓨팅 시스템(106, 108)은 블록체인 네트워크(102)와 상호 작용하기 위한 하나 이상의 컴퓨터-구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제1 엔티티가 하나 이상의 다른 엔티티(예를 들어, 다른 사용자)와의 그 트랜잭션을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은, 제1 엔티티(예를 들어, 사용자 A)의 컴퓨터-구현 서비스를 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제2 엔티티가 하나 이상의 다른 엔티티(예를 들어, 다른 사용자)와의 그 트랜잭션을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은, 제2 엔티티(예를 들어, 사용자 B)의 컴퓨터-구현 서비스를 호스팅할 수 있다.
도 1의 예에서, 블록체인 네트워크(102)는 노드의 피어-투-피어 네트워크로서 표현되고, 컴퓨팅 시스템(106, 108)은 블록체인 네트워크(102)에 참여하는 제1 엔티티 및 제2 엔티티 각각의 노드를 제공한다.
도 2는 본 개시내용의 구현예에 따른 예시적인 개념 아키텍처(200)를 도시하고 있다. 예시적인 개념 아키텍처(200)는 엔티티 계층(202), 호스팅된 서비스 계층(204) 및 블록체인 네트워크 계층(206)을 포함한다. 도시되어 있는 예에서, 엔티티 계층(202)은 3개의 엔티티, Entity_1(E1), Entity_2(E2) 및 Entity_3(E3)을 포함하고, 각각의 엔티티는 각각의 트랜잭션 관리 시스템(208)을 갖는다.
도시되어 있는 예에서, 호스팅된 서비스 계층(204)은 각각의 트랜잭션 관리 시스템(210)을 위한 인터페이스(210)를 포함한다. 몇몇 예에서, 각각의 트랜잭션 관리 시스템(208)은 프로토콜[예를 들어, 하이퍼텍스트 전송 프로토콜 보안(hypertext transfer protocol secure: HTTPS)]을 사용하여 네트워크[예를 들어, 도 1의 네트워크(110)]를 통해 각각의 인터페이스(210)와 통신한다. 몇몇 예에서, 각각의 인터페이스(210)는 각각의 트랜잭션 관리 시스템(208)과 블록체인 네트워크 계층(206) 사이의 통신 접속을 제공한다. 더 구체적으로, 인터페이스(210)는 블록체인 네트워크 계층(206)의 블록체인 네트워크(212)와 통신한다. 몇몇 예에서, 인터페이스(210)와 블록체인 네트워크 계층(206) 사이의 통신은 원격 프로 시저 호출(remote procedure calls: RPC)을 사용하여 수행된다. 몇몇 예에서, 인터페이스(210)는 각각의 트랜잭션 관리 시스템(208)에 대해 블록체인 네트워크 노드를 "호스팅"한다. 예를 들어, 인터페이스(210)는 블록체인 네트워크(212)에 액세스를 위한 애플리케이션 프로그래밍 인터페이스(application programming interface: API)를 제공한다.
본 명세서에 설명된 바와 같이, 블록체인 네트워크(212)는 블록체인(216)에 정보를 변경 불가능하게 기록하는 복수의 노드(214)를 포함하는 피어-투-피어 네트워크로서 제공된다. 단일 블록체인(216)이 개략적으로 도시되어 있지만, 블록체인(216)의 다수의 사본이 제공되고, 블록체인 네트워크(212)를 가로질러 유지된다. 예를 들어, 각각의 노드(214)는 블록체인의 사본을 저장한다. 몇몇 구현예에서, 블록체인(216)은 블록체인 네트워크(212)에 참여하는 2개 이상의 엔티티 사이에서 수행되는 트랜잭션과 연관된 정보를 저장한다.
도 3은 본 개시내용의 구현예에 따라 넌스 테이블(nonceTable)을 초기화하기 위한 예시적인 신호 흐름(300)을 도시하고 있다. 편의상, 신호 흐름(300)은 블록체인 네트워크 내의 구성요소 사이에서 수행되는 것으로서 설명될 것이다. 본 명세서에서 더 상세히 설명하는 바와 같이, 넌스 테이블은 예를 들어, 블록체인 네트워크 내의 블록체인에 트랜잭션을 기록하기 위해 블록체인 네트워크 내의 합의 프로토콜의 실행에 사용될 수 있는 복수의 넌스를 기록한다. 넌스 테이블은 수십개, 수백개, 수천개 또는 임의의 적절한 수의 넌스 값을 저장할 수 있다. 몇몇 예에서, 넌스 테이블의 크기는 예상되는 수, 및/또는 검색될 넌스의 빈도에 기초하여 구성된다. 몇몇 예에서, 넌스 테이블의 크기는 다양한 방식으로 선택될 수 있다. 예를 들어, 크기는 랜덤하게 초기화될 수 있고, 계정 유형에 기초하여 사전결정된다. 다른 예로서, 크기는 넌스 테이블을 초기화하기 위한 요청에 규정될 수 있다. 몇몇 구현예에서, 넌스 테이블은 행을 포함하고, 각각의 행은 넌스 인덱스(nonceIndex), 넌스(nonceValue), 및 넌스 인덱스 상태(nonceIndexStatus)를 기록한다.
도 3의 예에서, 신호 흐름(300)은 애플리케이션(302)(예를 들어, 블록체인 네트워크의 노드 내에서 실행됨), 브리지(304), 및 데이터베이스(306) 사이에 있다. 브리지(304)는 클라이언트측 애플리케이션과 함께 호스팅된다. 데이터베이스(306)는 애플리케이션(302)에 의해 사용되는 넌스 테이블을 저장한다.
몇몇 구현예에서, 애플리케이션(302)은 넌스 테이블을 초기화하기 위한 요청을 송신한다(308). 몇몇 예들에서, 이는 애플리케이션(302)과 연관된 블록체인 계정이 생성된 후에 발생한다. 브리지(304)는 넌스 테이블을 유지하기 위해 블록체인 클라이언트의 모델 및 서비스 구현을 추상화한다. 브리지(304)는 애플리케이션(302)과 데이터베이스(306) 사이에 위치하여 넌스 테이블의 초기화를 용이하게 한다.
몇몇 구현예에서, 브리지(304)는 넌스 테이블 크기를 통해 루핑함으로써 넌스 테이블의 각각의 넌스 인덱스를 초기화한다. 넌스 테이블은 데이터베이스(306)에 저장된다. 브리지(304)는 각각의 넌스 인덱스에 대응하는 행을 삽입한다(310). 각각의 넌스 인덱스는 하나 이상의 그와 연관된 값을 가질 수도 있다. 예시적인 값은 식별자, 계정 어드레스, 넌스 버전, 넌스 인덱스, 넌스, 점유 상태, 및 최종 점유 시간을 비한정적으로 포함한다. 넌스 값에 대응하는 변수는 넌스를 특징화한다. 예를 들어, 식별자는 넌스에 대한 고유 참조이고, 계정 어드레스는 트랜잭션과 연관된 하나 이상의 계정을 나타낼 수도 있으며, 넌스 버전은 넌스의 어떤 변형이 사용되었는지를 지정할 수도 있고, 점유는 트랜잭션을 위한 넌스의 가용성을 나타낸다. 몇몇 예에서, 최종 점유 시간은 타임아웃이 발생했는지 여부를 결정하는 데 사용될 수 있고, 본 명세서에 더 상세히 설명된 바와 같이 해제되어야 한다.
도 4는 본 개시내용의 구현예에 따라 넌스 테이블로부터 넌스 값을 페치, 해제 및 리셋하기 위한 예시적인 신호 흐름(400)을 도시하고 있다. 편의상, 신호 흐름(400)은 블록체인 네트워크 내의 구성요소 사이에서 수행되는 것으로서 설명될 것이다. 도 4의 예에서, 신호 흐름(400)은 애플리케이션(302)(예를 들어, 블록체인 네트워크의 노드 내에서 실행됨), 브리지(304), 데이터베이스(306), 및 블록체인(402) 사이에 있다.
본 개시내용의 구현예에 따르면, 넌스 테이블로부터의 넌스가 노드[예를 들어, 애플리케이션(302)]에 의해 사용되는 동안, 넌스가 임의의 다른 노드에 의해 사용을 위해 이용 불가능하도록 선점 모델이 채용된다. 트랜잭션이 성공적이면, 넌스는 넌스 테이블로부터 삭제되고, 새로운 넌스가 그 대신에 제공된다. 트랜잭션이 성공적이지 않으면, 넌스는 사용을 위해 해제되고, 후속의 트랜잭션에서 재사용을 위해 넌스 테이블에 잔류한다. 넌스를 선점함으로써, 사용 중에, 동시 트랜잭션은 동일한 넌스를 사용하는 것이 불가능하여, 트랜잭션 실패를 회피한다. 몇몇 구현예에서, 그리고 본 명세서에 더 상세히 설명되는 바와 같이, 선점 모델은 페치, 해제 및 리셋의 연산 프리미티브(operation primitive)를 포함한다.
몇몇 구현예에서, 페치 연산은 블록체인 트랜잭션에서 사용될 넌스 값을 얻는다. 애플리케이션(302)은 페치 넌스 메시지를 브리지(304)에 송신한다(410). 이어서, 브리지(304)는 미점유 넌스 인덱스를 요청하기 위해 데이터베이스(306)에 질의한다(412). 넌스를 위해 데이터베이스를 질의하는 것은 이하의 SQL 문장에 의해 실행될 수 있다:
몇몇 예에서, SQL 문장은 점유 상태가 널(null)로 설정되어 있는 모든 넌스 인덱스를 선택하고, 선점될(예를 들어, 점유될) 최소 넌스 인덱스를 선택한다. 선택된 넌스 인덱스의 최종 점유 시간은 각각의 넌스 값이 다른 트랜잭션에 사용되는 것을 방지하기 위해 '현재'(예를 들어, 현재 타임스탬프)로 설정된다.
선점이 성공적이면, 브리지(304)는 선점되었던 넌스 인덱스(예를 들어, 넌스)에 대한 정보를 질의하고(414), 넌스는 애플리케이션(302)에 리턴된다(416). 넌스 인덱스에 대한 정보는 이하의 예시적인 SQL 질의를 사용하여 질의될 수 있다:
예시적인 SQL 문장은 넌스 값에 대한 초기 질의에 지정된 점유 상태에 기초하여 넌스 테이블로부터 모든 넌스 정보를 선택한다.
그러나, 넌스의 검색이 성공적이지 않으면(예를 들어, 모든 넌스 인덱스가 점유됨), 데이터베이스(306)는 0의 업데이트 값을 리턴하고, 브리지(304)는 넌스 테이블의 모든 넌스 인덱스 슬롯이 점유되었음을 리턴하고(418), 예외를 던진다(throws an exception).
선택된 넌스 값은 블록체인(408)에 트랜잭션의 기록을 개시하는 데 사용된다(420). 합의 프로토콜의 실행을 통해, 블록체인(408)은 비동기 메시지를 송신하여 블록체인 네트워크의 노드에 트랜잭션의 상태를 통지한다(422). 이러한 비동기 메시지는 애플리케이션(302)에 의해 수신된다. 블록체인 시스템은 비동기 메시지가 성공적으로 전달되어야 하는 것을 보장하지 않는다. 트랜잭션의 상태를 나타내는 비동기 메시지가 애플리케이션(302)에 리턴되지 않으면, 넌스 인덱스 및 넌스 값의 점유 상태는 리셋될 수 없고, 후속의 트랜잭션과 함께 사용을 위해 이용 불가능한 상태로 유지된다.
몇몇 구현예에서, 애플리케이션(302)은 트랜잭션이 성공 또는 실패했음을 나타내는 메시지를 수신한다. 트랜잭션이 성공적이면, 애플리케이션은 브리지(304)에 통지하고(424), 브리지(304)는 미래의 사용을 위해 넌스 인덱스를 해제한다. 몇몇 예에서, 해제는 넌스를 업데이트하는 것(예를 들어, 넌스의 값을 증분함), 및 점유 상태를 널로 설정하는 것을 포함한다. 넌스 값의 업데이트는 단지 새로운 넌스만이 사용되고 이전에 사용된 넌스는 미래의 트랜잭션을 위해 이용 불가능하게 유지되는 것을 보장한다. 트랜잭션이 성공적이지 않으면, 애플리케이션(302)은 브리지(304)에 통지하고(428), 브리지는 점유 상태를 널로 업데이트함으로써 넌스 인덱스를 리셋한다. 즉, 넌스는 불변 유지되고, 미래의 트랜잭션에서 사용을 위해 다시 이용 가능해진다. 예시적인 제1 및 제2 SQL 문장은 다음과 같이 제공될 수 있다:
예시적인 제1 SQL 문장은 해제를 위해 실행될 수 있고(예를 들어, 트랜잭션 성공에 응답하여), 예시적인 제2 SQL 문장은 리셋을 위해 실행될 수 있다(예를 들어, 트랜잭션 실패에 응답하여).
도 5는 본 개시내용의 구현예에 따라 넌스 테이블에서 이용 가능한 넌스 값을 업데이트하기 위한 예시적인 신호 흐름(500)을 도시하고 있다. 편의상, 신호 흐름(400)은 블록체인 네트워크 내의 구성요소 사이에서 수행되는 것으로서 설명될 것이다. 도 5의 예에서, 신호 흐름(500)은 애플리케이션(302)(예를 들어, 블록체인 네트워크의 노드 내에서 실행됨), 브리지(304), 데이터베이스(306), 및 블록체인(402) 사이에 있다.
전술된 바와 같이, 블록체인(402)은 전달된 메시지가 애플리케이션(302)에 성공적으로 전달되어야 하는 것을 보장하지 않기 때문에, 몇몇 넌스 슬롯이 점유되고, 메시지가 해제/리셋될 때까지 대기하지 않는다. 이 관점에서, 본 개시내용의 구현예는 모든 점유된 넌스 인덱스 슬롯을 주기적으로 체크하는 데몬 태스크(daemon task)를 제공한다. 몇몇 예에서, 각각의 넌스 인덱스 슬롯의 최종 점유 시간은 타임아웃이 발생했는지 여부, 및 데몬 태스크가 넌스 인덱스 슬롯을 해제/리셋해야 하는지 여부를 결정하는 데 사용된다.
도 5의 예에서, 애플리케이션(302)은 브리지(304)에 타이밍된 트리거를 송신한다(510). 이에 응답하여, 브리지는 최종 점유 시간이 널로 설정되지 않은 넌스 인덱스의 리스트를 데이터베이스(306)에 질의한다(512). 이는 선택 문장으로부터 리턴된 각각의 값을 업데이트하기 위해 단일의 방법을 사용함으로써 모든 넌스 인덱스 값이 업데이트되게 한다. 브리지(304)는 데이터베이스(306)로부터 리턴된 리스트 내의 각각의 값을 루핑하여 블록체인(402) 내의 각각의 넌스 값의 실시간 상태를 질의한다(514). 브리지(304)는 업데이트를 수신하고, 블록체인(306)으로부터 리턴된 결과에 기초하여 데이터베이스(306) 내의 최종 점유 시간 상태를 업데이트한다(516). 타임아웃이 발생하면(예를 들어, 현재 시간과 최종 점유 시간 사이의 차이가 임계 시간보다 큼), 브리지(304)는 블록체인(402)의 넌스 슬롯에 대응하는 실시간 상태를 직접 질의하고, 데이터베이스(306)를 업데이트한다. 데이터베이스(306)를 업데이트할 때, 점유 상태는 널로 설정되고, 넌스 값은 블록체인(402)으로부터의 실시간 질의 결과이다.
도 6은 본 개시내용의 구현예에 따라 실행될 수 있는 예시적인 프로세스(600)를 도시하고 있다. 몇몇 구현예에서, 예시적인 프로세스(600)는 하나 이상의 컴퓨팅 디바이스를 사용하여 실행되는 하나 이상의 컴퓨터 실행 가능 프로그램을 사용하여 수행될 수도 있다. 예시적인 프로세스(600)는 전술된 신호 흐름 중 하나 이상에 기초한다. 일반적으로, 예시적인 프로세스는 본 개시내용의 구현예에 따른 넌스 테이블의 사용에 관한 것이다.
넌스 테이블이 초기화된다(602). 예를 들어, 도 3을 참조하여 본 명세서에 설명된 바와 같이, 넌스 테이블은 복수의 넌스 슬롯을 포함하고, 각각의 넌스 슬롯은 넌스 인덱스 및 상태와 연관되며, 각각의 넌스 값을 저장한다. 넌스에 대한 요청이 수신된다(604). 예를 들어, 도 4를 참조하여 본 명세서에 설명된 바와 같이, 요청은 애플리케이션을 수신하고 이에 응답하여, 넌스가 브리지에 의해 넌스 테이블로부터 요청된다. 넌스 값은 요청에 응답하여 수신된다(606). 본 명세서에 설명된 바와 같이, 넌스 값에 대응하는 넌스 슬롯의 상태는 점유되도록 설정된다(예를 들어, 도 4의 페치 연산). 넌스 값을 사용하는 트랜잭션이 성공 및 실패 중 하나인 것에 응답하여, 이하: 트랜잭션이 성공적이면, 넌스 슬롯 내에 넌스 값을 해제하고 상태를 미점유로 설정하는 것, 및 트랜잭션이 실패이면 상태를 미점유로 설정하는 것 중 하나가 실행된다(610). 이는 도 4의 해제 및 리셋 연산을 참조하여 설명된다.
설명된 특징들은 디지털 전자 회로에서, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어에서, 또는 이들의 조합에서 구현될 수도 있다. 장치는 프로그램 가능 프로세서에 의한 실행을 위해 정보 캐리어에(예를 들어, 기계 판독가능한 저장 디바이스에) 실체적으로 구체화된(tangibly embodied) 컴퓨터 프로그램 제품에서 구현될 수도 있고; 방법 단계들은 입력 데이터를 조작하고 출력을 생성함으로써 설명된 구현예의 기능을 수행하기 위해 명령의 프로그램을 실행하는 프로그램 가능 프로세서에 의해 수행될 수도 있다. 설명된 특징들은 데이터 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령을 수신하고 이들에 데이터 및 명령을 전송하도록 결합된 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램에서 유리하게 구현될 수도 있다. 컴퓨터 프로그램은 특정 액티비티를 수행하거나 특정 결과를 유도하기 위해 컴퓨터에서 직접 또는 간접적으로 사용될 수도 있는 명령의 세트이다. 컴퓨터 프로그램은 컴파일링된 언어나 해석된 언어를 포함하여, 임의의 형태의 프로그래밍 언어로 기입될 수도 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴 또는 컴퓨팅 환경에서 사용을 위해 적합한 다른 유닛으로서를 포함하여, 임의의 형태로 배포될 수도 있다.
명령의 프로그램의 실행을 위한 적합한 프로세서는, 예를 들어 범용 및 특수 용도 마이크로프로세서의 모두, 및 임의의 종류의 컴퓨터의 단독 프로세서 또는 다수의 프로세서 중 하나를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 양자 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 요소는 명령을 실행하기 위한 프로세서 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리를 포함할 수도 있다. 일반적으로, 컴퓨터는 또한 데이터 파일을 저장하기 위한 하나 이상의 대용량 저장 디바이스를 포함하거나 또는 그와 통신하도록 동작 가능하게 결합될 수도 있고; 이러한 디바이스는 내장 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 자기 광학 디스크; 및 광학 디스크를 포함한다. 컴퓨터 프로그램 명령 및 데이터를 실체적으로 구체화하기에 적합한 저장 디바이스는 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스를 포함하는 모든 형태의 비휘발성 메모리; 내장 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 자기 광학 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함한다. 프로세서 및 메모리는 응용 주문형 집적 회로(application-specific integrated circuits: ASIC)에 의해 보충되거나 그에 통합될 수도 있다.
사용자와의 상호 작용을 제공하기 위해, 특징들은 사용자에게 정보를 표시하기 위한 음극선관(cathode ray tube: CRT) 또는 액정 디스플레이(liquid crystal display: LCD) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수도 있는 키보드 및 마우스 또는 트랙볼과 같은 포인팅 디바이스를 갖는 컴퓨터 상에서 구현될 수도 있다.
특징들은 데이터 서버와 같은 백엔드 구성요소를 포함하거나, 또는 애플리케이션 서버 또는 인터넷 서버와 같은 미들웨어 구성요소를 포함하거나, 또는 그래픽 사용자 인터페이스 또는 인터넷 브라우저, 또는 이들의 임의의 조합을 갖는 클라이언트 컴퓨터와 같은 프론트 엔드 구성요소를 포함하는 컴퓨터 시스템에서 구현될 수도 있다. 시스템의 구성요소는 통신 네트워크와 같은 임의의 형태 또는 매체의 디지털 데이터 통신에 의해 접속될 수도 있다. 통신 네트워크의 예는 예를 들어, 근거리 통신망(LAN), 광역 통신망(WAN), 및 인터넷을 형성하는 컴퓨터 및 네트워크를 포함한다.
컴퓨터 시스템은 클라이언트와 서버를 포함할 수도 있다. 클라이언트와 서버는 일반적으로 서로 이격되어 있고, 통상적으로 설명된 것과 같은 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터 상에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다.
게다가, 도면에 도시되어 있는 논리 흐름은 바람직한 결과를 달성하기 위해, 도시되어 있는 특정 순서 또는 순차적인 순서를 필요로 하지 않는다. 게다가, 다른 단계들이 제공될 수도 있고, 또는 단계들이 설명된 흐름으로부터 제거될 수도 있으며, 다른 구성요소가 설명된 시스템에 추가되거나 그로부터 제거될 수도 있다. 이에 따라, 다른 구현예는 이하의 청구범위의 범주 내에 있다.
본 개시내용의 다수의 구현예가 설명되었다. 그럼에도, 다양한 수정이 본 개시내용의 사상 및 범주를 벗어나지 않고 이루어질 수도 있다는 것이 이해될 수 있을 것이다. 이에 따라, 다른 구현예는 이하의 청구범위의 범주 내에 있다.
Claims (18)
- 블록체인 네트워크에서 트랜잭션 프로세싱을 위해 넌스 값(nonce value)들을 제공하기 위한 컴퓨터-구현 방법으로서, 상기 컴퓨터-구현 방법은 하나 이상의 프로세서에 의해 실행되고, 상기 컴퓨터-구현 방법은,
복수의 블록체인 트랜잭션들을 프로세싱하는 복수의 참가 노드들을 갖는 블록체인 네트워크에서의 하나 이상의 컴퓨팅 디바이스 상에서, 복수의 넌스 슬롯들을 포함하는 넌스 테이블을 초기화하는 단계로서, 각 넌스 슬롯은, 상기 복수의 블록체인 트랜잭션들 중의 각 블록체인 트랜잭션에서 사용가능한 넌스 값을 저장하며, 각 넌스 인덱스 및 상태와 연관되고, 상기 넌스 값들은 상기 블록체인 네트워크 내의 특정 블록체인에서의 블록체인 트랜잭션들을 기록하기 위한 랜덤 숫자들이고, 상기 상태는 블록체인 트랜잭션에서의 사용을 위한 대응 넌스 값의 가용성을 나타내는 것인 상기 넌스 테이블을 초기화하는 단계;
상기 블록체인 네트워크에서, 상기 블록체인 트랜잭션을 프로세싱하는 애플리케이션으로부터 특정 넌스 값에 대한 제1 요청을 수신하는 단계;
상기 제1 요청을 수신하는 것에 응답하여, 상기 넌스 테이블의 각 넌스 슬롯으로부터 상기 특정 넌스 값에 대한 제2 요청을 생성하고, 상기 각 넌스 슬롯의 상태를 점유(occupied)로 설정하는 단계;
상기 블록체인 네트워크에서, 상기 제2 요청에 응답하여 상기 특정 넌스 값을 수신하는 단계;
하나 이상의 수신된 메시지에 기초한 상기 하나 이상의 컴퓨팅 디바이스에 의하여, 상기 특정 넌스 값을 이용하는 상기 블록체인 트랜잭션이 성공인지 또는 실패인지의 여부를 결정하는 단계;
상기 블록체인 트랜잭션이 성공이라고 결정하는 것에 응답하여,
상기 각 넌스 슬롯 내의 상기 특정 넌스 값을 삭제하는 단계,
상기 삭제 후, 상기 각 넌스 슬롯에 대한 새로운 넌스 값을 생성하는 단계, 및
상기 각 넌스 슬롯의 상태를 미점유(unoccupoed)로 설정하는 단계; 및
상기 블록체인 트랜잭션이 실패라고 결정하는 것에 응답하여,
상기 각 넌스 슬롯의 상태를 미점유로 설정하는 단계,
상기 특정 넌스 값을 해제(release)하는 단계,
상기 각 넌스 슬롯에 상기 특정 넌스 값을 유지하고, 후속 블록체인 트랜잭션에서 상기 특정 넌스 값을 재사용하는 단계
를 포함하는, 블록체인 네트워크에서 트랜잭션 프로세싱을 위해 넌스 값들을 제공하기 위한 컴퓨터-구현 방법. - 제1항에 있어서, 상기 각 넌스 슬롯 내의 상기 특정 넌스 값을 삭제하는 단계는, 상기 넌스 슬롯에 증분된 넌스 값을 저장하는 단계를 포함하는 것인 컴퓨터-구현 방법.
- 제1항에 있어서, 상기 넌스 테이블은 데이터베이스에 저장되고, 상기 애플리케이션과 상기 데이터베이스 사이의 브리지(bridge)는, 넌스 값들에 대한 요청들을 수신하고, 넌스 값들을 상기 애플리케이션에 선택적으로 제공하는 것인 컴퓨터-구현 방법.
- 제1항에 있어서, 상기 블록체인 트랜잭션의 상태는, 타임아웃 이벤트가 발생했는지 여부를 결정하기 위해 주기적으로 트리거링되는 것인 컴퓨터-구현 방법.
- 하나 이상의 프로세서에 결합되고, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금, 블록체인 네트워크들에서 트랜잭션 프로세싱을 위한 넌스 값들을 제공하기 위한 동작들을 수행하게 하는 명령어들이 저장되어 있는 비일시적 컴퓨터-판독가능한 저장 매체로서, 상기 동작들은,
복수의 블록체인 트랜잭션들을 프로세싱하는 복수의 참가 노드들을 갖는 블록체인 네트워크에서의 하나 이상의 컴퓨팅 디바이스 상에서, 복수의 넌스 슬롯들을 포함하는 넌스 테이블을 초기화하는 것으로서, 각 넌스 슬롯은, 상기 복수의 블록체인 트랜잭션들 중의 각 블록체인 트랜잭션에서 사용가능한 넌스 값을 저장하며, 각 넌스 인덱스 및 상태와 연관되고, 상기 넌스 값들은 상기 블록체인 네트워크 내의 특정 블록체인에서의 블록체인 트랜잭션들을 기록하기 위한 랜덤 숫자들이고, 상기 상태는 블록체인 트랜잭션에서의 사용을 위한 대응 넌스 값의 가용성을 나타내는 것인 상기 넌스 테이블을 초기화하는 것;
상기 블록체인 네트워크에서, 상기 블록체인 트랜잭션을 프로세싱하는 애플리케이션으로부터 특정 넌스 값에 대한 제1 요청을 수신하는 것;
상기 제1 요청을 수신하는 것에 응답하여, 상기 넌스 테이블의 각 넌스 슬롯으로부터 상기 특정 넌스 값에 대한 제2 요청을 생성하고, 상기 각 넌스 슬롯의 상태를 점유로 설정하는 것;
상기 블록체인 네트워크에서, 상기 제2 요청에 응답하여 상기 특정 넌스 값을 수신하는 것;
하나 이상의 수신된 메시지에 기초하여, 상기 특정 넌스 값을 이용하는 상기 블록체인 트랜잭션이 성공인지 또는 실패인지의 여부를 결정하는 것;
상기 블록체인 트랜잭션이 성공이라고 결정하는 것에 응답하여,
상기 각 넌스 슬롯 내의 상기 특정 넌스 값을 삭제하는 것,
상기 삭제 후, 상기 각 넌스 슬롯에 대한 새로운 넌스 값을 생성하는 것, 및
상기 각 넌스 슬롯의 상태를 미점유로 설정하는 것; 및
상기 블록체인 트랜잭션이 실패라고 결정하는 것에 응답하여,
상기 각 넌스 슬롯의 상태를 미점유로 설정하는 것,
상기 특정 넌스 값을 해제하는 것,
상기 각 넌스 슬롯에 상기 특정 넌스 값을 유지하고, 후속 블록체인 트랜잭션에서 상기 특정 넌스 값을 재사용하는 것
을 포함하는 것인 비일시적 컴퓨터-판독가능한 저장 매체. - 제5항에 있어서, 상기 각 넌스 슬롯 내의 상기 특정 넌스 값을 삭제하는 것은, 상기 넌스 슬롯에 증분된 넌스 값을 저장하는 것을 포함하는 것인 비일시적 컴퓨터-판독가능한 저장 매체.
- 제5항에 있어서, 상기 넌스 테이블은 데이터베이스에 저장되고, 상기 애플리케이션과 상기 데이터베이스 사이의 브리지는, 넌스 값들에 대한 요청들을 수신하고, 넌스 값들을 상기 애플리케이션에 선택적으로 제공하는 것인 비일시적 컴퓨터-판독가능한 저장 매체.
- 제5항에 있어서, 상기 블록체인 트랜잭션의 상태는, 타임아웃 이벤트가 발생했는지 여부를 결정하기 위해 주기적으로 트리거링되는 것인 비일시적 컴퓨터-판독가능한 저장 매체.
- 시스템에 있어서,
컴퓨팅 디바이스; 및
상기 컴퓨팅 디바이스에 결합되고, 상기 컴퓨팅 디바이스에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금 블록체인 네트워크들에서 트랜잭션 프로세싱을 위한 넌스 값들을 제공하기 위한 동작들을 수행하게 하는 명령어들이 저장되어 있는 컴퓨터-판독가능한 저장 디바이스
를 포함하고, 상기 동작들은,
복수의 블록체인 트랜잭션들을 프로세싱하는 복수의 참가 노드들을 갖는 블록체인 네트워크에서, 복수의 넌스 슬롯들을 포함하는 넌스 테이블을 초기화하는 것으로서, 각 넌스 슬롯은, 상기 복수의 블록체인 트랜잭션들 중의 각 블록체인 트랜잭션에서 사용가능한 넌스 값을 저장하며, 각 넌스 인덱스 및 상태와 연관되고, 상기 넌스 값들은 상기 블록체인 네트워크 내의 특정 블록체인에서의 블록체인 트랜잭션들을 기록하기 위한 랜덤 숫자들이고, 상기 상태는 블록체인 트랜잭션에서의 사용을 위한 대응 넌스 값의 가용성을 나타내는 것인 상기 넌스 테이블을 초기화하는 것;
상기 블록체인 트랜잭션을 프로세싱하는 애플리케이션으로부터 특정 넌스 값에 대한 제1 요청을 수신하는 것;
상기 제1 요청을 수신하는 것에 응답하여, 상기 넌스 테이블의 각 넌스 슬롯으로부터 상기 특정 넌스 값에 대한 제2 요청을 생성하고, 상기 각 넌스 슬롯의 상태를 점유로 설정하는 것;
상기 제2 요청에 응답하여 상기 특정 넌스 값을 수신하는 것;
하나 이상의 수신된 메시지에 기초하여, 상기 특정 넌스 값을 이용하는 상기 블록체인 트랜잭션이 성공인지 또는 실패인지의 여부를 결정하는 것;
상기 블록체인 트랜잭션이 성공이라고 결정하는 것에 응답하여,
상기 각 넌스 슬롯 내의 상기 특정 넌스 값을 삭제하는 것,
상기 삭제 후, 상기 각 넌스 슬롯에 대한 새로운 넌스 값을 생성하는 것, 및
상기 각 넌스 슬롯의 상태를 미점유로 설정하는 것; 및
상기 블록체인 트랜잭션이 실패라고 결정하는 것에 응답하여,
상기 각 넌스 슬롯의 상태를 미점유로 설정하는 것,
상기 특정 넌스 값을 해제하는 것,
상기 각 넌스 슬롯에 상기 특정 넌스 값을 유지하는 것, 및
후속 블록체인 트랜잭션에서 상기 특정 넌스 값을 재사용하는 것
을 포함하는 것인 시스템. - 제9항에 있어서, 상기 각 넌스 슬롯 내의 상기 특정 넌스 값을 삭제하는 것은, 상기 넌스 슬롯에 증분된 넌스 값을 저장하는 것을 포함하는 것인 시스템.
- 제9항에 있어서, 상기 넌스 테이블은 데이터베이스에 저장되고, 상기 애플리케이션과 상기 데이터베이스 사이의 브리지는, 넌스 값들에 대한 요청들을 수신하고, 넌스 값들을 상기 애플리케이션에 선택적으로 제공하는 것인 시스템.
- 제9항에 있어서, 상기 블록체인 트랜잭션의 상태는, 타임아웃 이벤트가 발생했는지 여부를 결정하기 위해 주기적으로 트리거링되는 것인 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/118523 WO2019072287A2 (en) | 2018-11-30 | 2018-11-30 | USING A TABLE OF NUTS TO RESOLVE SIMULTANEOUS BLOCK CHAIN TRANSACTION FAILURE |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102121157B1 true KR102121157B1 (ko) | 2020-06-10 |
Family
ID=66100017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197011526A KR102121157B1 (ko) | 2018-11-30 | 2018-11-30 | 동시 블록체인 트랜잭션 실패를 해결하기 위한 넌스 테이블의 이용 |
Country Status (16)
Country | Link |
---|---|
US (1) | US10540344B2 (ko) |
EP (1) | EP3552167B1 (ko) |
JP (1) | JP6704627B1 (ko) |
KR (1) | KR102121157B1 (ko) |
CN (1) | CN110431580B (ko) |
AU (1) | AU2018348327B2 (ko) |
BR (1) | BR112019007995A2 (ko) |
CA (1) | CA3041211C (ko) |
ES (1) | ES2880453T3 (ko) |
MX (1) | MX2019004669A (ko) |
PH (1) | PH12019500870A1 (ko) |
PL (1) | PL3552167T3 (ko) |
RU (1) | RU2720529C1 (ko) |
SG (1) | SG11201903529TA (ko) |
WO (1) | WO2019072287A2 (ko) |
ZA (1) | ZA201902488B (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11614769B2 (en) * | 2019-07-15 | 2023-03-28 | Ecole Polytechnique Federale De Lausanne (Epfl) | Asynchronous distributed coordination and consensus with threshold logical clocks |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
CN111562947B (zh) * | 2020-04-01 | 2021-08-03 | 支付宝实验室(新加坡)有限公司 | 一种业务处理方法、装置及电子设备 |
CN111506783B (zh) * | 2020-04-08 | 2023-12-22 | 百度在线网络技术(北京)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CN112346825A (zh) * | 2020-11-11 | 2021-02-09 | 湖南智慧政务区块链科技有限公司 | 一种基于位图算法的区块链事务防重机制 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131238A1 (en) * | 2002-01-08 | 2003-07-10 | International Business Machines Corporation | Public key based authentication method for transaction delegation in service-based computing environments |
US20160292672A1 (en) * | 2015-03-31 | 2016-10-06 | Nasdaq, Inc. | Systems and methods of blockchain transaction recordation |
US20180204191A1 (en) * | 2015-07-08 | 2018-07-19 | Barclays Bank Plc | Secure Digital Data Operations |
CN108805569A (zh) * | 2018-05-29 | 2018-11-13 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788700B1 (en) * | 2002-05-15 | 2010-08-31 | Gerard A. Gagliano | Enterprise security system |
US7797751B1 (en) * | 2006-03-27 | 2010-09-14 | Oracle America, Inc. | Nonce structure for storage devices |
US20080066181A1 (en) * | 2006-09-07 | 2008-03-13 | Microsoft Corporation | DRM aspects of peer-to-peer digital content distribution |
US8104073B2 (en) * | 2007-08-10 | 2012-01-24 | Juniper Networks, Inc. | Exchange of network access control information using tightly-constrained network access control protocols |
DE102008046563A1 (de) * | 2008-09-10 | 2010-03-11 | Siemens Aktiengesellschaft | Verfahren zur Datenübertragung zwischen Netzwerkknoten |
KR20120100046A (ko) * | 2011-03-02 | 2012-09-12 | 삼성전자주식회사 | 분산 환경 네트워크에서 컨텐츠의 접근 제어를 위한 장치 및 방법 |
US9210183B2 (en) * | 2013-12-19 | 2015-12-08 | Microsoft Technology Licensing, Llc | Detecting anomalous activity from accounts of an online service |
US10340038B2 (en) * | 2014-05-13 | 2019-07-02 | Nant Holdings Ip, Llc | Healthcare transaction validation via blockchain, systems and methods |
SE542966C2 (en) * | 2015-07-10 | 2020-09-22 | Strawpay AB | Methods and computer programs for efficient payments using digital promissory notes |
EP3411824B1 (en) * | 2016-02-04 | 2019-10-30 | Nasdaq Technology AB | Systems and methods for storing and sharing transactional data using distributed computer systems |
AU2017225932C1 (en) * | 2016-02-29 | 2021-06-24 | Securekey Technologies Inc. | Systems and methods for distributed identity verification |
US11727391B2 (en) * | 2016-04-11 | 2023-08-15 | Nchain Licensing Ag | Computer-implemented methods and systems for validating tokens for blockchain-based cryptocurrencies |
US10204341B2 (en) * | 2016-05-24 | 2019-02-12 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees |
US10447478B2 (en) * | 2016-06-06 | 2019-10-15 | Microsoft Technology Licensing, Llc | Cryptographic applications for a blockchain system |
US10243990B1 (en) * | 2016-09-23 | 2019-03-26 | Apple Inc. | Systems and methods for detecting replay attacks on security space |
CN106815722B (zh) * | 2016-12-22 | 2021-05-07 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 基于区块链的信息处理方法和装置 |
US10275739B2 (en) * | 2017-01-05 | 2019-04-30 | International Business Machines Corporation | Tracking assets with a blockchain |
CN107391320B (zh) * | 2017-03-10 | 2020-07-10 | 创新先进技术有限公司 | 一种共识方法及装置 |
CN108572978A (zh) * | 2017-03-10 | 2018-09-25 | 深圳瀚德创客金融投资有限公司 | 构建用于区块链的倒排索引结构的方法和计算机系统 |
CN107124278B (zh) * | 2017-03-30 | 2021-03-30 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置以及数据共享系统 |
GB201705858D0 (en) * | 2017-04-11 | 2017-05-24 | Nchain Holdings Ltd | Computer-implemented system and method |
CN107392040B (zh) * | 2017-04-28 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种共识验证的方法及装置 |
CN107301546B (zh) * | 2017-05-03 | 2020-10-16 | 北京众享比特科技有限公司 | 随机数生成和应用方法及装置 |
US10348706B2 (en) * | 2017-05-04 | 2019-07-09 | Ernest Brickell | Assuring external accessibility for devices on a network |
CN108009918B (zh) * | 2017-11-23 | 2021-10-26 | 深圳捷汇科技有限公司 | 区块链共识算法交易系统的记账方法及电子设备 |
CN108334307B (zh) * | 2017-12-29 | 2020-11-20 | 北京欧链科技有限公司 | 基于区块链的数据筛选方法和装置 |
CN108389044A (zh) * | 2018-02-28 | 2018-08-10 | 北京比特大陆科技有限公司 | 工作量证明的计算方法和系统、电子设备、程序和介质 |
CN108416578A (zh) * | 2018-03-14 | 2018-08-17 | 郑杰骞 | 一种区块链系统及数据处理方法 |
-
2018
- 2018-11-30 AU AU2018348327A patent/AU2018348327B2/en active Active
- 2018-11-30 KR KR1020197011526A patent/KR102121157B1/ko active IP Right Grant
- 2018-11-30 CN CN201880008623.XA patent/CN110431580B/zh active Active
- 2018-11-30 PL PL18865364T patent/PL3552167T3/pl unknown
- 2018-11-30 ES ES18865364T patent/ES2880453T3/es active Active
- 2018-11-30 EP EP18865364.6A patent/EP3552167B1/en active Active
- 2018-11-30 SG SG11201903529TA patent/SG11201903529TA/en unknown
- 2018-11-30 RU RU2019111932A patent/RU2720529C1/ru active
- 2018-11-30 WO PCT/CN2018/118523 patent/WO2019072287A2/en unknown
- 2018-11-30 CA CA3041211A patent/CA3041211C/en active Active
- 2018-11-30 MX MX2019004669A patent/MX2019004669A/es active IP Right Grant
- 2018-11-30 JP JP2019521362A patent/JP6704627B1/ja active Active
- 2018-11-30 BR BR112019007995-5A patent/BR112019007995A2/pt not_active IP Right Cessation
-
2019
- 2019-04-17 ZA ZA2019/02488A patent/ZA201902488B/en unknown
- 2019-04-22 US US16/390,287 patent/US10540344B2/en active Active
- 2019-04-22 PH PH12019500870A patent/PH12019500870A1/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131238A1 (en) * | 2002-01-08 | 2003-07-10 | International Business Machines Corporation | Public key based authentication method for transaction delegation in service-based computing environments |
US20160292672A1 (en) * | 2015-03-31 | 2016-10-06 | Nasdaq, Inc. | Systems and methods of blockchain transaction recordation |
US20180204191A1 (en) * | 2015-07-08 | 2018-07-19 | Barclays Bank Plc | Secure Digital Data Operations |
CN108805569A (zh) * | 2018-05-29 | 2018-11-13 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CA3041211C (en) | 2020-05-05 |
US20190243820A1 (en) | 2019-08-08 |
PL3552167T3 (pl) | 2021-10-25 |
CN110431580B (zh) | 2023-05-16 |
RU2720529C1 (ru) | 2020-04-30 |
JP2020518872A (ja) | 2020-06-25 |
WO2019072287A2 (en) | 2019-04-18 |
ZA201902488B (en) | 2022-05-25 |
SG11201903529TA (en) | 2019-05-30 |
ES2880453T3 (es) | 2021-11-24 |
CN110431580A (zh) | 2019-11-08 |
PH12019500870A1 (en) | 2019-12-02 |
BR112019007995A2 (pt) | 2019-11-12 |
US10540344B2 (en) | 2020-01-21 |
AU2018348327B2 (en) | 2020-04-09 |
JP6704627B1 (ja) | 2020-06-03 |
CA3041211A1 (en) | 2019-04-18 |
EP3552167B1 (en) | 2021-05-05 |
WO2019072287A3 (en) | 2019-10-03 |
MX2019004669A (es) | 2019-08-21 |
EP3552167A2 (en) | 2019-10-16 |
EP3552167A4 (en) | 2020-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102121157B1 (ko) | 동시 블록체인 트랜잭션 실패를 해결하기 위한 넌스 테이블의 이용 | |
TWI728418B (zh) | 使用智慧型合約執行多方交易的方法和系統 | |
KR102193533B1 (ko) | 블록체인 네트워크에서의 FaaS 플랫폼 | |
US10318475B2 (en) | System and method for persistence of application data using replication over remote direct memory access | |
US20190278765A1 (en) | Shared secret-based blockchain storage | |
US11657035B2 (en) | Methods, devices and systems for real-time checking of data consistency in a distributed heterogenous storage system | |
JP7549137B2 (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
US20190251071A1 (en) | Blockchain data relationship structuring scheme based on binary log replication | |
US11741081B2 (en) | Method and system for data handling | |
US11138231B2 (en) | Method and system for data handling | |
EP3686751A1 (en) | Method and system for data handling | |
WO2024109003A1 (zh) | 一种任务处理方法、装置及节点 | |
CN115455119A (zh) | 日志复制方法、装置和存储介质 | |
Tsaturyan et al. | MochiDB: A Byzantine Fault Tolerant Datastore |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |