KR20220082898A - 분산 네트워크의 계산 결과에 대한 판독 액세스 - Google Patents

분산 네트워크의 계산 결과에 대한 판독 액세스 Download PDF

Info

Publication number
KR20220082898A
KR20220082898A KR1020227016548A KR20227016548A KR20220082898A KR 20220082898 A KR20220082898 A KR 20220082898A KR 1020227016548 A KR1020227016548 A KR 1020227016548A KR 20227016548 A KR20227016548 A KR 20227016548A KR 20220082898 A KR20220082898 A KR 20220082898A
Authority
KR
South Korea
Prior art keywords
execution
nodes
subset
network
read
Prior art date
Application number
KR1020227016548A
Other languages
English (en)
Inventor
도미니크 윌리엄스
얀 카메니쉬
요한 그란스트롬
맥 맥컬리
안드레아스 로즈버그
마키에즈 워스
Original Assignee
디피니티 스티프텅
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디피니티 스티프텅 filed Critical 디피니티 스티프텅
Publication of KR20220082898A publication Critical patent/KR20220082898A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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 involving digital signatures
    • H04L9/3255Cryptographic 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 involving digital signatures using group based signatures, e.g. ring or threshold signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 제1 양상의 일 실시예에 따르면, 복수의 노드를 포함하는 분산 네트워크가 제공된다. 복수의 노드 각각은 자체의 유닛 상태를 포함하는 하나 이상의 계산 유닛을 실행하도록 구성된다. 네트워크는, 복수의 노드의 실행 서브세트에 의해, 결정론적 방식으로 실행 메시지 세트를 개별적으로 실행하여, 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태를 변형하도록 구성된다. 네트워크는 실행 서브세트의 노드에 의해, 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하며, 실행 서브세트의 하나 이상의 노드에 의해, 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 더 구성된다.

Description

분산 네트워크의 계산 결과에 대한 판독 액세스
본 발명은 복수의 노드를 포함하는 분산 네트워크에 관한 것이다. 복수의 노드 각각은 하나 이상의 계산 유닛을 실행하도록 구성된다.
추가 양상은 분산 네트워크, 특히 분산 네트워크의 노드에 의해 계산된 계산 결과에 대한 액세스를 분산 네트워크의 사용자에게 제공하기 위한 대응하는 방법에 관한 것이다. 추가 양상은 분산 네트워크의 노드, 대응하는 컴퓨터 프로그램 제품 및 비일시적 매체에 인코딩된 소프트웨어 아키텍처에 관한 것이다.
분산 네트워크에서 복수의 노드는 분산 방식으로 배열된다. 분산 네트워크 컴퓨팅에서, 소프트웨어와 데이터는 복수의 노드에 분산되어 있다. 노드는 컴퓨팅 리소스를 설정하고 분산 네트워크는 분산 컴퓨팅 기법을 사용할 수 있다.
분산 네트워크의 예는 블록체인 네트워크이다. 블록체인 네트워크는 블록을 기반으로 하는 합의 기반 전자 원장이다. 각각의 블록은 트랜잭션 및 기타 정보를 포함한다. 또한, 각각의 블록은 이전 블록의 해시를 포함하여 블록은 함께 연쇄되어 블록체인에 기록된 모든 트랜잭션에 대한 영구적이고 변경할 수 없는 기록이 생성된다. 트랜잭션은 예컨대, 스마트 계약으로 알려진 작은 프로그램을 포함할 수 있다.
트랜잭션이 블록체인에 기록되려면, 네트워크에 의해 "유효성 검증"되어야 한다. 즉, 네트워크 노드는 블록체인에 기록될 블록에 대한 동의를 얻어야 한다. 이러한 동의는 다양한 합의 프로토콜에 의해 달성될 수 있다.
합의 프로토콜의 일 유형은 작업 증명 합의 프로토콜이다. 작업 증명 합의 프로토콜은 일반적으로 합의 프로토콜에 참여하는 당사자로부터의 몇몇 작업을 필요로 하며, 이는 보통 컴퓨터에 의한 처리 시간에 대응한다. 비트코인과 같은 작업 증명 기반 암호화폐 시스템은 트랜잭션을 검증하고 새로운 블록을 생성하기 위해 계산 집약적인 퍼즐을 푸는 것을 포함한다.
합의 프로토콜의 또 다른 유형은 지분 증명 합의 프로토콜이다. 이러한 지분 증명 프로토콜은 시간 소모적이고 에너지 집약적인 컴퓨팅이 필요하지 않다는 장점이 있다. 지분 증명 기반 블록체인 네트워크에서 예컨대, 다음 블록의 생성자는 랜덤 선택과 네트워크의 각 노드의 지분의 조합을 통해 선택된다.
암호화폐 외에도, 분산 네트워크는 다양한 다른 응용례에 사용될 수 있다. 특히, 분산 네트워크는 분권 및 분산 컴퓨팅 능력 및 서비스를 제공하는 데 사용될 수 있다.
따라서, 기능이 향상된 분산 네트워크가 필요하다.
따라서, 본 발명의 양상의 일 목적은 기능이 향상된 분산 네트워크, 특히 분산 네트워크의 계산 결과에 액세스하기 위해 네트워크 향상된 액세스 기능 또는 액세스 특징을 사용자에게 제공하는 네트워크를 제공하는 것이다.
본 발명의 제1 양상의 실시예에 따르면, 복수의 노드, 특히 복수의 컴퓨팅 노드를 포함하는 분산 네트워크가 제공된다. 복수의 노드 각각은 하나 이상의 계산 유닛을 실행하도록 구성되고 계산 유닛 각각은 자체의 유닛 상태를 포함한다. 네트워크는, 복수의 노드의 실행 서브세트에 의해, 결정론적 방식으로 실행 메시지 세트를 개별적으로 실행하여, 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태를 변형하도록 더 구성된다. 네트워크는, 실행 서브세트의 노드에 의해, 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하고, 실행 서브세트의 하나 이상의 노드에 의해, 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 더 구성된다.
이러한 분산 네트워크는 효율적인 방식으로 분산 네트워크의 계산 결과에 대한 사용자 액세스, 특히 네트워크의 하나 이상의 계산 유닛에 의해 계산되었던 계산 결과에 대한 사용자 액세스를 용이하게 한다. 보다 구체적으로, 계산 결과는 판독 스냅샷에 의해 제공된다. 판독 스냅샷은 분산 네트워크 사용자가 판독할 수 있고 따라서 액세스할 수 있는 스냅샷으로서 정의될 수 있다. 판독 스냅샷은 정기적으로 수행되며 단일의 일관된 시점에서 계산 유닛의 유닛 상태를 기록한다.
계산 유닛은 네트워크의 노드에서 실행되고 자체의 유닛 상태를 갖는 하나의 소프트웨어로 정의될 수 있다. 보다 구체적으로, 계산 유닛은 직교 지속성이 있는 결정론적 프로그램으로 정의될 수 있다. 또한, 네트워크의 각 노드는 하나 이상의 계산 유닛을 실행하므로 하나 이상의 계산 유닛의 유닛 상태를 유지한다.
실시예에 따르면, 실행 서브세트의 계산 유닛의 유닛 상태는 실행 서브세트에 걸쳐 복제된다. 이는 특히 실행 서브세트의 각 노드에서 계산 유닛의 유닛 상태의 공간에서 능동 복제를 수행함으로써 가능해질 수 있다. 실시예에 따르면, 유닛 상태는 특히 입력 큐, 출력 큐, 시스템 상태 및 애플리케이션 또는 사용자 상태를 포함할 수 있다.
일 실시예에 따르면, 네트워크는, 복수의 노드의 합의 서브세트에 의해, 실행 메시지 세트 중 현재 또는 다시 말하면 현재 이용가능한 세트로부터 실행 메시지의 선택에 대한 합의에 도달하도록 구성된 합의 프로토콜을 정기적으로 수행하도록 구성된다.
따라서 현재의 실행 메시지 세트의 처리 및 실행은 실시예에 따른 2단계 접근 방식으로 수행된다.
보다 구체적으로, 제1 단계에서, 노드의 합의 서브세트는 현재 이용가능한 실행 메시지의 선택에 대한 합의에 도달하기 위해 합의 프로토콜을 수행한다. 합의 서브세트의 노드의 수는 특히 한편으로는 효율성 및 다른 한편으로는 보안 면에서 각각의 네트워크의 필요에 따라 선택될 수 있다. 그런 다음, 제2 단계에서, 노드의 실행 서브세트가 결정론적인 방식으로 선택된 실행 메시지의 실행을 수행한다. 실행 서브세트의 노드의 수도 각각의 네트워크의 필요에 따라 선택될 수 있다.
몇몇 실시예에 따르면, 합의 서브세트와 실행 서브세트는 전혀 중첩되지 않을 수 있다. 다른 실시예에 따르면, 합의 및 실행 서브세트는 부분적으로 중첩될 수 있다. 또 다른 실시예에 따르면, 합의 서브세트는 실행 서브세트의 서브세트일 수 있으며, 즉 합의 서브세트의 노드는 실행 서브세트의 노드이기도 하다. 실시예에 따르면, 실행 서브세트의 노드는 네트워크의 서브넷을 형성할 수 있다. 실행 서브세트는 제1 서브세트로도 표시될 수 있고 합의 서브세트는 제2 서브세트로도 표시될 수 있다.
일 실시예에 따르면, 네트워크는 실행 서브세트의 하나 이상의 노드의 계산 유닛에 의해 판독 스냅샷에 대한 계산을 실행하고 계산 결과를 사용자에게 제공하도록 구성된다.
그러한 실시예는 기능이 향상된 액세스를 사용자에게 제공하는 것을 허용한다. 보다 구체적으로, 사용자는 판독 스냅샷에 대해 수행될 계산을 요청할 수 있다. 이를 통해 결과를 사용자에게 제공하기 전에 분류와 같은 동작을 구현할 수 있다.
계산 유닛의 유닛 상태와 대조적으로, 판독 스냅샷에 대한 계산은 실시예에 따라 복제되지 않는다. 오히려, 예를 들어, 사용자에 의해 해당 판독 쿼리를 수신할 때 실행 서브세트의 각 노드에 의해 개별적으로 독립적으로 수행될 수 있다.
일 실시예에 따르면, 네트워크는 실행 서브세트의 하나 이상의 노드에 의해, 특히 실행 서브세트의 하나 이상의 노드의 계산 유닛에 의해, 사용자로부터 판독 쿼리를 수신하고, 판독 쿼리와 연관된 대응하는 계산 유닛의 유닛 상태를 로드하도록 구성된다. 유닛 상태는 특히 판독 스냅샷을 저장하는 각각의 노드의 메모리에서 로드될 수 있으며 따라서 최신 판독 스냅샷의 유닛 상태에 해당할 수 있다. 네트워크는 그 다음에 판독 쿼리로 각각의 계산 유닛을 실행하도록 더 구성된다. 이는 특히 판독 스냅샷에 저장된 계산 유닛의 각각의 유닛 상태에 대한 계산을 포함할 수 있다. 판독 쿼리는 실행 서브세트의 각 노드에 의해 개별적으로 및 독립적으로 실행되며 해당 계산은 실행 서브세트의 노드에 복제되지 않는다.
마지막으로, 판독 쿼리의 결과가 사용자에게 리턴될 수 있다.
이러한 실시예는 또한 향상된 기능이 판독 쿼리를 정의하고 처리할 수 있도록 한다. 판독 쿼리로 계산 유닛을 실행하면 분류, 검색, 필터링 등과 같은 기능을 구현할 수 있다.
판독 쿼리는 일반적으로 계산 유닛의 유닛 상태를 지속적으로 수정하지 않는 쿼리로서 정의될 수 있다. 판독 쿼리는 메모리, 전역 변수 및 테이블과 같은 계산 유닛의 사용자 상태를 일시적으로 수정할 수 있지만, 판독 쿼리가 완전히 처리되면 이러한 수정 사항은 모두 폐기된다.
일 실시예에 따르면, 네트워크는 판독 스냅샷의 하나 이상의 부분을 인증하도록 더 구성된다. 이는 판독 스냅샷의 하나 이상의 인증된 부분을 생성한다.
이러한 인증은 스냅샷에서 사용자의 신뢰와 확신을 향상시킬 수 있다. 보다 구체적으로, 사용자는 판독 스냅샷의 인증된 부분을 검증할 수 있다.
일 실시예에 따르면, 네트워크는 실행 서브세트의 다수의 노드에 의해 판독 스냅샷의 하나 이상의 인증된 부분을 인증하도록 더 구성된다. 이러한 실시예에 따르면, 다수의 노드는 판독 스냅샷의 인증된 부분에 동의해야 한다.
일 실시예에 따르면, 네트워크는, 노드의 다수의 실행 서브세트에 의해, 판독 스냅샷의 하나 이상의 부분에 대한 서명을 생성하고, 사용자가 서명을 사용할 수 있도록 함으로써 판독 스냅샷의 하나 이상의 부분을 인증하도록 더 구성된다.
그러한 서명은 사용자가 스냅샷의 인증된 부분을 검증할 수 있게 한다.
실시예에 따르면, 노드의 실행 서브세트는 하나 이상의 인증된 부분을 인증하기 위해 임계값 서명 알고리즘을 실행하도록 구성된다. 따라서 서명은 임계값 서명으로 구현될 수 있다.
다른 실시예에 따르면, 노드의 실행 서브세트는 다중 서명 알고리즘을 실행하도록 구성될 수 있다.
이러한 다중 서명은 실행 서브세트의 노드가 스냅샷에 공동으로 서명할 수 있도록 하는 디지털 서명이다. 이러한 공동 서명은 일반적으로 실행 서브세트의 모든 노드의 개별 서명의 모음보다 더 간결하다.
또 다른 실시예에 따르면, 노드의 실행 서브세트는 실행 서브세트의 노드에 의해 개별 서명을 수행하도록 구성될 수 있다.
실시예에 따르면, 판독 스냅샷의 하나 이상의 인증된 부분은 유닛 상태의 변수이다.
일 실시예에 따르면, 네트워크는 실행 서브세트의 노드에 의해 유닛 상태의 판독 스냅샷을 캐시 메모리에 저장하도록 더 구성된다.
이러한 접근 방식은 속도 및 효율성 면에서 유리하다.
일 실시예에 따르면, 네트워크는, 실행 서브세트의 노드에 의해, 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태의 복구 스냅샷을 정기적으로 생성하고, 실행 서브세트의 다수의 노드에 의해, 복구 스냅샷을 인증하도록 더 구성된다.
이러한 복구 스냅샷은 전체 스냅샷으로도 표시될 수 있다. 복구 스냅샷은 노드를 복원하는 데 필요한 실행 서브세트의 노드의 모든 상태를 포함하는 스냅샷으로 정의될 수 있다. 이는 특히 메시징 구성요소의 모든 데이터와 모든 입력 블록을 포함할 수 있다.
일 실시예에 따르면, 네트워크는 복구 스냅샷을 해싱하도록 구성된다. 이러한 해싱은 복구 스냅샷을 인증하고 검증을 허용하는 효율적인 방법이다.
일 실시예에 따르면, 네트워크는 적어도 후속 복구 스냅샷이 생성될 때까지 복구 스냅샷을 지속적으로 저장하도록 구성된다.
이는 네트워크 노드와 해당 상태가 항상 복구될 수 있다는 것을 보장한다.
일 실시예에 따르면, 네트워크는 제1 레이트로 판독 스냅샷을 수행하고 제2 레이트로 복구 스냅샷을 수행하도록 구성되며, 제1 레이트는 제2 레이트보다 높다.
그러한 실시예는 몇 가지 이점을 제공한다. 한편으로는 네트워크의 계산 결과에 적시에, 즉 제1 레이트에 해당하는 업데이트 레이트로 액세스할 수 있다. 다른 한편으로는, 실행 서브세트의 노드에 대한 전체 복구가 항상 가능하다는 것을 여전히 보장한다.
일 실시예에 따르면, 실행 메시지는 실행될 모든 메시지를 포함할 것이고 특히 네트워크의 계산 유닛 간에 교환되는 유닛 대 유닛 메시지 및 네트워크의 사용자로부터 수신된 변형 쿼리를 포함할 것이다. 인그레스 메시지로도 표시될 수 있는 변형 쿼리는 예를 들어, 일부 계산 작업을 수행하기 위해 네트워크의 계산 유닛으로 어드레싱되는 실행 요청일 수 있다.
일 실시예에 따르면, 합의 서브세트의 각각의 노드는 합의 프로토콜을 수행하도록 구성된 합의 구성요소를 포함한다.
실시예에 따르면, 실행 서브세트의 각각의 노드는 실행 메시지의 선택을 실행하도록 구성된 실행 구성요소 및 합의 구성요소로부터 실행 메시지의 선택을 수신하고 실행 메시지의 선택을 실행 구성요소에 제공하도록 구성된 메시징 구성요소를 포함한다. 또한, 각각의 노드는 판독 스냅샷을 관리하고 저장하도록 구성된 상태 관리자 구성요소, 네트워크의 사용자로부터의 판독 쿼리를 처리하도록 구성된 상태 판독기 구성요소 및/또는 네트워크의 사용자로부터의 변형 쿼리를 처리하도록 구성된 인그레스 메시지 핸들러 구성요소를 포함할 수 있다.
이러한 구성요소는 분산 네트워크의 다양한 기능의 효율적인 구현을 가능하게 한다.
일 실시예에 따르면, 네트워크는 증가하는 높이 인덱스(N)를 가진 순차적인 순서로 복수의 처리 루프를 수행하도록 구성되며, N은 증가하는 정수이다. 복수의 처리 루프는, 제1 루프 단계에서, 합의 프로토콜을 수행하고, 제2 루프 단계에서, 실행 메시지의 선택을 개별적으로 실행하며, 제3 루프 단계에서, 판독 스냅샷을 생성하도록 구성된다. 또한, 네트워크는 높이 인덱스(N)를 가진 처리 루프 동안 이전 높이 인덱스, 특히 이전 높이 인덱스(N-1)의 끝에서 생성된 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 구성된다. 즉, 현재 처리 루프 동안, 사용자는 이전 처리 루프의 결과의 스냅샷에 액세스할 수 있다. 다시 말해서, 판독 스냅샷은 다음 처리 루프를 동시에 실행하면서 하나의 처리 루프 또는 루프 주기 동안 각각의 계산 유닛의 판독 상태를 고정시킨다.
추가 실시예에 따르면, 합의 프로토콜은, 현재의 실행 메시지 세트로부터 실행 메시지를 수신하고 처리하며, 사전정의된 합의 메커니즘에 따라 실행 메시지로부터 입력 블록의 큐를 생성하며, 입력 블록의 큐를 메시징 프로토콜에 제공하도록 구성된다. 메시징 구성요소에 의해 실행되는 메시징 프로토콜은 입력 블록을 처리하고 스케줄러에 의해 실행을 위해 입력 블록의 실행 메시지를 스케줄링하도록 구성된다. 메시징 프로토콜은 합의 프로토콜로부터 수신된 입력 블록에 의해 유리하게 클로킹될 수 있다. 이는 입력 블록의 효율적이고 동기식 처리를 가능하게 한다. 또한, 상태 관리자 구성요소는 입력 블록의 처리 경계에서 판독 스냅샷을 생성하도록 유리하게 구성될 수 있다.
일 실시예에 따르면, 합의 프로토콜은 입력 블록에 하나 이상의 실행 파라미터를 추가하도록 더 구성된다. 실행 파라미터는 예컨대, 랜덤 시드, 지정된 실행 시간 및/또는 높이 인덱스를 포함할 수 있다.
이러한 실행 파라미터는 입력 블록 및 해당 메시지 처리의 효율성 및/또는 보안을 더욱 용이하게 하고 향상시킬 수 있다.
예컨대, 필요한 경우 실행시 의사 랜덤성을 달성하는 데 랜덤 시드가 사용될 수 있다. 높이 인덱스는 예를 들면, 입력 블록의 순차 처리를 가능하게 하기 위해 입력 블록의 오름차순 인덱스일 수 있다.
추가 실시예에 따르면, 네트워크는 사전정의된 선출 방식에 따라 복수의 노드로부터 커미티의 구성원을 선출하고 선출된 커미티의 구성원과 합의 프로토콜을 수행하도록 구성될 수 있다. 이러한 실시예에 따르면 선출된 구성원은 합의 서브세트를 형성한다.
실시예에 따르면, 네트워크는 합의 프로토콜로서 지분 증명 합의 프로토콜을 수행하도록 구성된다.
지분 증명 합의 프로토콜은 실행 메시지(인터 서브넷 메시지 및 변형 쿼리)의 선택 및 처리 순서, 특히 추가 처리를 위해 생성될 다음 입력 블록에 대한 합의에 도달하는 것을 목표로 한다.
추가 실시예에 따르면, 분산 네트워크는 복수의 서브넷을 포함한다. 복수의 노드 각각은 복수의 서브넷 중 하나에 할당된다. 복수의 노드 각각은 메인넷 프로토콜 클라이언트 및 서브넷 프로토콜 클라이언트를 실행하도록 구성된다. 서브넷 프로토콜 클라이언트는 합의 프로토콜을 정기적으로 수행하고, 실행 메시지의 선택을 개별적으로 실행하며, 판독 스냅샷을 정기적으로 생성하고, 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 구성된다. 메인넷 프로토콜 클라이언트는 구성 데이터를 복수의 서브넷에 배포하도록 구성된다.
실시예에 따르면, 서브넷 각각은 서브넷에 걸쳐 계산 유닛의 세트, 특히 계산 유닛의 상태를 복제하도록 구성된다. 결과적으로 각각의 서브넷의 계산 유닛은 정직하게 동작한다면 항상 동일한 상태를 갖는다. 상이한 서브넷, 특히 상이한 서브넷의 계산 유닛은 메시징 프로토콜 및 합의 프로토콜을 통해 인터 서브넷 메시지를 교환함으로써 서로 통신할 수 있다.
몇몇 실시예에 따르면, 각각의 서브넷의 모든 노드는 합의 프로토콜에 참여할 수 있으므로 합의 서브세트를 형성할 수 있다. 다른 실시예에 따르면, 합의 프로토콜은 사전정의된 선출 방식에 따라 서브넷의 복수의 노드로부터 커미티의 구성원을 선출하고 커미티의 선출된 구성원과 합의 프로토콜을 수행하도록 구성될 수 있다.
이러한 네트워크는 커미티가 서브넷의 전체 노드 세트보다 훨씬 작을 수 있으므로 높은 트랜잭션 레이트와 짧은 완료 시간을 달성할 수 있다. 이러한 실시예는 수백 또는 수천 개의 노드를 포함하는 대형 서브넷에 특히 유용하다. 그런 다음 합의 서브세트를 형성하는 커미티는 예로서 20-60개의 노드만 포함할 수 있다. 따라서 커미티는 서브넷의 모든 노드가 수반되는 경우보다 더 효율적으로 기능할 수 있다. 이러한 커미티는 입력 블록을 공증할 권한이 있으므로 공증 커미티라고도 할 수 있다.
몇몇 실시예에 따르면 임계값 릴레이 방식이 사용될 수 있다. 보다 구체적으로, 본 발명의 실시예에 따른 네트워크는 임계값 릴레이, 각각의 서브넷의 랜덤으로 선택된 노드의 후속 공증 커미티에 의해 유지되는 분산 랜덤 비컨을 사용할 수 있다. 랜덤 비컨의 출력은 예를 들어, 블록 제안자의 순위를 매기고 새로운 세대의 커미티를 구성하기 위해 시스템에서 엔트로피로서 사용된다. 이러한 임계값 릴레이 방식은 예를 들어, Timo Hanke, Mahnush Movahedi 및 Dominic Williams의 문서, 디피니티 기술 개요 시리즈, 합의 시스템, Rev.l, https://dfinity.org/static/dfinity-consensus-0325c35128c72b42df7dd30c22c41208.pdf에 설명된다.
일 실시예에 따르면, 네트워크는 네트워킹 프로토콜을 실행하도록 구성된 네트워킹 구성요소를 더 포함한다. 네트워킹 프로토콜은 노드 대 노드 통신을 수행하도록 구성된 유니캐스트 구성요소, 인트라 서브넷 통신을 수행하도록 구성된 브로드캐스트 구성요소 및/또는 인터 서브넷 통신을 수행하도록 구성된 크로스넷 구성요소를 포함할 수 있다.
본 발명의 방법 양상의 일 실시예에 따르면, 분산 네트워크의 사용자에게 분산 네트워크에 의해 계산된 계산 결과에 대한 액세스를 제공하기 위한 컴퓨터로 구현된 방법이 제공된다. 분산 네트워크는 복수의 노드를 포함한다. 방법은, 복수의 노드 각각에서, 하나 이상의 계산 유닛을 실행하는 단계와, 실행 서브세트의 노드에 의해, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하는 단계와, 복수의 노드의 합의 서브세트에 의해 현재의 실행 메시지 세트로부터 실행 메시지의 선택 및 처리 순서에 대한 합의에 도달하도록 구성된 합의 프로토콜을 정기적으로 수행하는 단계를 포함한다. 방법은 처리 순서로의 실행 메시지의 선택을 복수의 노드의 실행 서브세트에 의해 결정론적 방식으로 개별적으로 실행하는 추가 단계를 포함한다. 이것은 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태를 변형한다. 방법은 실행 서브세트의 노드에 의해 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하고 실행 서브세트의 하나 이상의 노드에 의해 판독 스냅샷에 대한 액세스를 사용자에게 제공하는 추가 단계를 포함한다.
본 발명의 다른 양상의 일 실시예에 따르면, 분산 네트워크의 노드가 제공된다.
본 발명의 다른 양상의 일 실시예에 따르면, 분산 네트워크를 작동시키기 위한 컴퓨터 프로그램 제품이 제공된다. 컴퓨터 프로그램 제품은 프로그램 명령어가 구현된 컴퓨터 판독가능 저장 매체를 포함하며, 프로그램 명령어는 분산 네트워크의 복수의 노드 중 하나 이상에 의해 실행가능하여 복수의 노드 중 하나 이상이 본 발명의 방법 양상의 단계들을 수행하게 한다.
본 발명의 다른 양상의 일 실시예에 따르면, 비일시적 컴퓨터 판독가능 매체 상에 인코딩된 소프트웨어 아키텍처가 제공된다. 소프트웨어 아키텍처는 분산 네트워크의 하나 이상의 노드를 작동하도록 구성된다. 인코딩된 소프트웨어 아키텍처는 복수의 노드 중 하나 이상에 의해 실행가능하여 복수의 노드 중 하나 이상이 본 발명의 방법 양상의 단계들을 포함하는 방법을 수행하게 하는 프로그램 명령어를 포함한다.
본 발명의 일 양상의 특징 및 이점은 본 발명의 다른 양상에 적절하게 적용될 수 있다.
다른 유리한 실시예는 종속항 및 아래의 설명에 나열되어 있다.
본 발명은 보다 잘 이해될 것이며, 위에서 제시된 것 이외의 목적은 다음의 상세한 설명으로부터 명백해질 것이다. 이러한 설명은 첨부 도면을 참조한다.
도 1은 본 발명의 일 실시예에 따른 분산 네트워크의 예시적인 도면을 도시한다.
도 2는 네트워크의 예시적인 노드 상에서 실행되는 계산 유닛을 보다 상세한 방식으로 예시한다.
도 3은 복수의 서브넷을 포함하는 본 발명의 일 실시예에 따른 분산 네트워크의 예시적인 도면을 도시한다.
도 4는 도 3의 분산 네트워크 상에서 실행되는 계산 유닛을 보다 상세한 방식으로 예시한다.
도 5는 도 3의 네트워크의 서브넷에서 수신되는 인터 서브넷 메시지의 개략도를 도시한다.
도 6은 서브넷 프로토콜 클라이언트의 프로토콜 구성요소의 개략적인 블록도를 도시한다.
도 7은 메시징 프로토콜 및 합의 프로토콜의 작업 흐름 및 관련 구성요소의 예시적인 시각화를 도시한다.
도 8은 상태 관리자 구성요소의 보다 상세한 실시예를 도시한다.
도 9는 실행 주기 및 대응하는 판독 주기의 타이밍도를 예시한다.
도 10은 메시징 구성요소 및 실행 구성요소에 의해 수행되는 입력 블록의 블록별 처리를 간략하고 개략적인 방식으로 예시한다.
도 11은 분산 네트워크의 사용자에게 계산 결과에 대한 액세스를 제공하기 위한 컴퓨터로 구현된 방법의 방법 단계들을 도시한다.
도 12는 본 발명의 실시예에 따른 방법의 추가 방법 단계들의 흐름도를 도시한다.
도 13은 본 발명의 일 실시예에 따라 네트워크의 각각의 노드에서 실행되는 주요 프로세스를 예시한다.
도 14는 인터 서브넷 및 인트라 서브넷 메시지의 교환에 수반되는 주요 계층을 예시하는 계층 모델을 도시한다.
도 15는 본 발명의 일 실시예에 따른 계산 유닛의 보다 상세한 예시를 도시한다.
도 16은 본 발명의 예시적인 실시예에 따른 합의 구성요소에 의한 입력 블록의 생성을 예시한다.
도 17은 네트워킹 구성요소의 보다 상세한 도면을 도시한다.
도 18은 본 발명의 일 실시예에 따른 노드의 예시적인 실시예를 도시한다.
도 19는 메시지를 실행하기 위한 계산 유닛의 상이한 부분의 조정을 예시한다.
발명을 수행하기 위한 모드
먼저, 본 발명의 실시예의 몇몇 일반적인 양상 및 용어가 소개될 것이다.
실시예에 따르면, 분산 네트워크는 분산 방식으로 배열된 복수의 노드를 포함한다. 이러한 분산 네트워크 컴퓨팅에서, 소프트웨어와 데이터는 복수의 노드에 분산된다. 노드는 컴퓨팅 리소스를 설정하고 분산 네트워크는 특히 분산 컴퓨팅 기법을 사용할 수 있다.
실시예에 따르면, 분산 네트워크는 블록체인 네트워크로서 구현될 수 있다. "블록체인"이라는 용어는 모든 형태의 전자, 컴퓨터 기반의 분산 원장을 포함할 것이다. 일부 실시예에 따르면, 블록체인 네트워크는 작업 증명 블록체인 네트워크(proof-of-work blockchain network)로서 구현될 수 있다. 다른 실시예에 따르면, 블록체인 네트워크는 지분 증명 블록체인 네트워크(proof-of-stake blockchain network)로서 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 분산 네트워크(100)의 예시적인 블록도를 도시한다.
분산 네트워크(100)는 네트워크 노드(10) 또는 컴퓨팅 노드(10)로도 표시될 수 있는 복수의 노드(10)를 포함한다. 복수의 노드(10) 각각은 하나 이상의 계산 유닛을 실행하도록 구성된다. 실시예에 따르면, 계산 유닛은 하나의 소프트웨어, 특히 자체의 유닛 상태를 포함하거나 갖는 하나의 소프트웨어로서 이해될 것이다.
네트워크(100)의 복수의 노드(10)는 상이한 서브세트 및/또는 서브넷에 할당될 수 있다. 이러한 할당은 시간이 지남에 따라 변경될 수 있다.
이 실시예에 따르면, 네트워크(100)는 노드(10)의 합의 서브세트(SS1) 및 노드(10)의 실행 서브세트(SS2)를 포함한다.
노드(10)에서 실행되는 계산 유닛은 계산 작업을 수행하기 위해 네트워크(100)의 사용자에 의해 사용될 수 있다. 네트워크(100)의 계산 유닛은 특히 현재의 실행 메시지 세트로부터의 실행 메시지를 실행할 수 있다. 실행 메시지는 특히 네트워크의 계산 유닛 간에 교환되는 유닛 대 유닛 메시지 및/또는 인그레스(ingress) 메시지, 즉 외부 소스, 특히 네트워크의 사용자로부터 수신되는 메시지를 포함할 수 있다. 네트워크(100)는 각각의 현재의 실행 메시지 세트로부터 실행 메시지의 선택 및 처리 순서에 대한 합의에 도달하기 위해 먼저 합의 프로토콜이 수행되도록 구성된다. 합의 프로토콜은 유리하게는 네트워크(100)의 모든 노드에 의해 수행되는 것이 아니라 네트워크(100)의 노드(10)의 서브세트에 의해서만 수행되며, 이는 이하에서 합의 서브세트(SS1)로 표시된다. 합의 서브세트(SS1)는 합의 서브세트로도 표시될 수 있다. 따라서 합의 서브세트(SS1)의 노드는 현재의 실행 메시지 세트로부터의 실행 메시지의 선택 및 처리 순서에 대한 합의에 도달하기 위해 합의 프로토콜을 실행하도록 구성된다.
실행 메시지의 실행은 또한 유리하게는 네트워크(100)의 모든 노드에 의해 수행되는 것이 아니라 네트워크(100)의 노드(10)의 서브세트에 의해서만 수행된다. 이 서브세트는 이하에서 실행 서브세트(SS2)로 표시되고 실행 서브세트(SS2)로도 표시될 수 있다.
그런 다음 실행 서브세트(SS2)의 계산 유닛은 이전 합의 단계에서 동의한 처리 순서로 실행 메시지의 선택을 개별적으로 실행한다. 실행 서브세트(SS2)의 계산 유닛 각각은 결정론적 방식으로 실행을 수행하고 그에 의해 실행 서브세트(SS2)의 대응하는 계산 유닛의 유닛 상태를 변형한다.
실시예에 따르면, 유닛 상태는 계산 유닛에 의해 사용되는 모든 데이터 또는 정보, 특히 계산 유닛이 변수에 저장하는 데이터뿐만 아니라 계산 유닛이 원격 호출로부터 얻는 데이터로도 이해되어야 한다. 유닛 상태는 특히 각각의 노드의 제각기의 메모리 위치에 있는 저장 위치를 나타낼 수 있다. 계산 유닛의 실행시 임의의 주어진 지점에서, 이들 메모리 위치의 내용을 실시예에 따라 유닛 상태라고 한다. 계산 유닛은 특히 스테이트풀(stateful) 계산 유닛으로 구현될 수 있는데, 즉, 계산 유닛은 선행 이벤트 또는 사용자 상호작용을 기억하도록 실시예에 따라 설계된다.
실시예에 따르면, 네트워크의 각 노드는 다른 노드의 클록과 대략적으로 동기화된 로컬 클록을 유지한다고 가정된다.
도 2는 네트워크(100)의 노드(10) 상에서 실행되는 계산 유닛(15)을 보다 상세한 방식으로 예시한다. 보다 구체적으로, 도 2는 5개의 계산 유닛(15), 보다 구체적으로 계산 유닛(CUss21, CUss22, CUss23, CUss24 및 CUss25)의 세트가 실행되는 도 1의 서브세트(SS2)의 노드(10)를 도시한다. 계산 유닛(CUss21, CUss22, CUss23, CUss24 및 CUss25)의 세트는 서브세트(SS2)의 각 노드(10)에서 실행된다. 더욱이, 계산 유닛(CUss21, CUss22, CUss23, CUss24 및 CUss25)의 세트는 정직하게 동작한다면 계산 유닛(CUss21, CUss22, CUss23, CUss24 및 CUss25) 각각이 동일한 유닛 상태를 갖도록 전체 서브세트(SS2)에 걸쳐 복제된다. 이것은 특히 서브세트(SS2)의 노드(10) 각각에서 계산 유닛(CUss21, CUss22, CUss23, CUss24 및 CUss25)의 유닛 상태의 공간에서 능동 복제(active replication)를 수행함으로써 구현될 수 있다.
도 3은 본 발명의 일 실시예에 따른 분산 네트워크(300)의 예시적인 블록도를 도시한다.
분산 네트워크(300)는 복수의 노드(10)를 포함한다.
이 실시예에 따르면, 복수의 노드(10)는 복수의 서브넷(11)에 분산되어 있다. 도 1의 예에서, SNA, SNB, SNC 및 SND로 표시된 4개의 서브넷(11)이 제공된다. 네트워크(100)는 각각의 서브넷(11) 내의 인트라 서브넷 통신을 위한 통신 링크(12) 및 서브넷(11) 중 서로 다른 서브넷 사이의 인터 서브넷 통신을 위한 통신 링크(13)를 포함한다. 따라서, 통신 링크(12)는 인트라 서브넷 또는 P2P(Peer-to-Peer) 통신 링크로도 표시될 수 있으며 통신 링크(13)는 인터 서브넷 또는 SN2SN(Subnet-to-Subnet) 통신 링크로도 표시될 수 있다.
복수의 서브넷(11) 각각은 각각의 서브넷(11)의 각 노드(10)에서 계산 유닛의 세트를 실행하도록 구성된다.
본 발명의 실시예에 따르면 서브넷(11)은 각각의 서브넷(11)에 걸쳐 계산 유닛 세트를 복제하도록 구성된다. 보다 구체적으로, 서브넷(11)은 각각의 서브넷(11)에 걸쳐 계산 유닛의 유닛 상태를 복제하도록 구성된다.
네트워크(100)는 특히 지분 증명 블록체인 네트워크일 수 있다.
지분 증명(PoS)은 블록체인 네트워크가 노드가 블록체인의 다음 블록을 생성할 수 있게 되는 분산 합의에 도달하는 방법을 설명한다. PoS 방법은 가중된 랜덤 선택(weighted random selection)을 사용할 수 있으며, 이에 의해 개별 노드의 가중치는 특히 각각의 노드의 자산("지분")에 따라 결정될 수 있다.
실시예에 따르면 서브넷에 의해 생성되고 서명된 아티팩트가 완전히 신뢰될 수 있도록 각 서브넷의 노드 중 최대 1/3(3분의 1)이 손상되었다고 가정한다.
도 4는 네트워크(300)의 노드(10)에서 실행되는 계산 유닛(15)을 보다 상세한 방식으로 예시한다. 보다 구체적으로, 도 4는 5개의 계산 유닛(15), 보다 구체적으로 계산 유닛(CUA1, CUA2, CUA3, CUA4 및 CUA5)의 세트가 실행되는 도 3의 서브세트(SNA)의 노드(10)를 좌측(401)에 도시한다. 계산 유닛(CUA1, CUA2, CUA3, CUA4 및 CUA5)의 세트는 서브넷(SNA)의 각 노드(10)에서 실행된다. 또한, 계산 유닛(CUA1, CUA2, CUA3, CUA4 및 CUA5)의 세트는 계산 유닛(CUA1, CUA2, CUA3, CUA4 및 CUA5) 각각이 동일한 유닛 상태를 갖도록 전체 서브넷(SNA)에 걸쳐 복제된다. 이것은 특히 서브넷(SNA)의 노드(10) 각각에서 계산 유닛(CUA1, CUA2, CUA3, CUA4 및 CUA5)의 유닛 상태의 공간에서 능동 복제를 수행함으로써 구현될 수 있다.
또한, 도 4는 4개의 계산 유닛(15), 보다 구체적으로 계산 유닛(CUB1, CUB2, CUB3 및 CUB4)의 세트가 실행되는 도 3의 서브넷(SNB)의 노드(10)를 우측(402)에 도시한다. 계산 유닛(CUB1, CUB2, CUB3 및 CUB4)의 세트는 서브넷(SNB)의 각 노드(10)에서 실행된다. 또한, 계산 유닛(CUB1, CUB2, CUB3 및 CUB4)의 세트는 예컨대, 전술한 바와 같이 유닛 상태의 공간에서 능동 복제를 수행함으로써 계산 유닛(CUB1, CUB2, CUB3 및 CUB4) 각각이 동일한 유닛 상태를 갖도록 전체 서브넷(SNB)에 걸쳐 복제된다.
다시 도 3을 참조하면, 네트워크(300)는 메시징 프로토콜 및 합의 프로토콜을 통해 서브넷(SNA, SNB, SNC 및 SND) 간에 인터 서브넷 메시지(16)를 교환하도록 구성된다. 합의 프로토콜은 각각의 수신 서브넷에서 인터 서브넷 메시지(16)의 처리 순서에 대한 합의에 도달하도록 구성된다. 예를 들어, 서브넷(SNB)을 참조하면, 서브넷(SNA, SNC 및 SND)으로부터 인터 서브넷 메시지(16)를 수신한다. 합의 프로토콜은 이들 인터 서브넷 메시지(16)를 수신하고 처리하며 사전정의된 합의 알고리즘 또는 합의 메커니즘을 수행하여 수신된 인터 서브넷 메시지(16)의 처리 순서에 대한 합의에 도달한다.
실시예에 따르면, 네트워크(300)는 각 서브넷에서 개별적으로 합의 프로토콜을 실행하도록 구성될 수 있다. 즉, 서브넷(SNA, SNB, SNC 및 SND) 각각은 다른 서브넷과 별개로 및 독립적으로 자체의 합의 프로토콜을 실행한다. 따라서, 서브넷(SNA, SNB, SNC 및 SND) 각각은 수신된 메시지를 어떤 순서로 처리하는지를 다른 서브넷과 독립적으로 자체적으로 결정할 수 있다. 따라서 서브넷(SNA, SNB, SNC 및 SND) 각각은 수신된 인터 서브넷 메시지(16)의 처리 순서에 따라 서브넷별로 합의에 도달한다. 그러한 합의는 또한 로컬 합의 또는 서브넷 합의로 간주될 수 있다.
이러한 개념은 도 5를 참조하여 보다 상세히 설명된다.
도 5는 도 3의 SNB인 서브넷(11)에서 수신되는 인터 서브넷 메시지(16)의 개략도를 도시한다.
서브넷(SNB)은 서브넷(SNA)으로부터 인터 서브넷 메시지(SNA-SNB), 서브넷(SNC)으로부터 인터 서브넷 메시지(SNC-SNB) 및 서브넷(SND)으로부터 인터 서브넷 메시지(SND-SNB)를 수신한다. 인터 서브넷 메시지의 이들 풀은 서브넷(SNB)에서 합의 프로토콜을 국부적으로 실행하는 합의 구성요소(30)(CSNB)에 의해 처리된다. 따라서 합의 구성요소(30)는 서브넷 합의 구성요소로 표시될 수 있다.
합의 구성요소(30)는 사전정의된 합의 알고리즘 또는 메커니즘에 따라 인터 서브넷 메시지로부터 입력 블록(IB)의 큐를 생성하고 메시징 프로토콜을 실행하고 입력 블록(IB)을 더 처리하도록 구성된 메시징 구성요소(31)(MSNB)에 입력 블록(IB)의 큐를 제공한다.
실시예에 따르면 각각의 서브넷(11)의 노드(10) 각각은 합의 프로토콜에 참여할 수 있다. 이러한 실시예에 따르면, 서브넷(11) 각각은 예를 들어, 10개 내지 100개의 노드, 특히 20개 내지 50개의 노드를 포함할 수 있다. 이러한 수는 보안과 효율성 사이에 유리한 절충안을 제공할 수 있다.
다른 실시예에 따르면, 합의 프로토콜은 사전정의된 선출 방식에 따라 각각의 서브넷(11)의 복수의 노드(10)로부터 커미티의 구성원을 선출하고 선출된 커미티의 구성원하고만 합의 프로토콜을 수행하도록 구성될 수 있다. 이러한 방안은 노드 수가 더 많은 서브넷, 예컨대, 1000개 이상의 노드가 있는 서브넷에 특히 유용하다.
도 6은 서브넷 프로토콜 클라이언트, 예컨대, 도 13에 도시된 서브넷 프로토콜 클라이언트(42)의 프로토콜 구성요소(600)의 개략적인 블록도를 도시한다.
도 6의 완전한 화살표는 유닛 대 유닛 메시지 및 인그레스 메시지를 포함하는 실행 메시지와 관련이 있다. 인그레스 메시지는 특히 사용자로부터의 변형 쿼리일 수 있다. 점선 화살표는 시스템 정보와 관련이 있다.
프로토콜 구성요소(600)는 메시징 프로토콜을 실행하도록 구성된 메시징 구성요소(61) 및 실행 메시지를 실행하기 위한, 특히 유닛 대 유닛 메시지 및/또는 변형 쿼리를 실행하기 위한 실행 프로토콜을 실행하도록 구성된 실행 구성요소(62)를 포함한다. 프로토콜 구성요소(600)는 합의 프로토콜을 실행하도록 구성된 합의 구성요소(63), 네트워킹 프로토콜을 실행하도록 구성된 네트워킹 구성요소(64), 상태 관리자 프로토콜을 실행하도록 구성된 상태 관리자 구성요소(65), 크로스 서브넷 전송 프로토콜을 실행하도록 구성된 X-Net 구성요소(66) 및 네트워크의 외부 사용자로부터 수신된 인그레스 메시지를 처리하도록 구성된 인그레스 메시지 핸들러 구성요소(67)를 더 포함한다. 프로토콜 구성요소(600)는 추가로 암호화 구성요소(68)를 포함한다. 암호화 구성요소(68)는 예를 들어, 도 13을 참조하여 후술될 보안 애플리케이션(43)으로서 구현될 수 있는 보안 구성요소(611)와 협력한다. 프로토콜 구성요소(600)는 사용자로부터 판독 쿼리 또는 다시 말해 판독 요청을 수신하도록 구성된 상태 판독기 구성요소(69)를 더 포함한다.
상태 판독기 구성요소(69)는 상태 관리자 구성요소(65)와 협력하도록 구성된다.
상태 판독기 구성요소(69)에 의해 수신되고 처리되는 판독 쿼리는 특히 비변형 쿼리로 구현되며, 즉 이들은 계산 유닛의 유닛 상태를 지속적으로 변경하지 않는다. 반면에, 인그레스 메시지 핸들러 구성요소(67)로부터 수신되고 합의 구성요소(63)를 통과하는 인그레스 메시지는 특히 변형 쿼리로서 구현될 수 있으며, 즉 이들은 변형 쿼리를 실행하고 있는 각각의 계산 유닛의 유닛 상태를 변경한다. 판독 쿼리는 합의 구성요소(63)를 거칠 필요가 없기 때문에, 이들은 각 서브넷의 임의의 노드에서 비동기식으로 만들어질 수 있으므로 훨씬 더 빠를 수 있다.
또한, 서브넷 프로토콜 클라이언트(42)는 도 13을 참조하여 설명된 메인넷 프로토콜 클라이언트(41)의 일부일 수 있는 판독기 구성요소(610)와 협력할 수 있다. 판독기 구성요소(610)는 메인넷에 의해 저장되고 배포되는 정보를 각각의 서브넷 프로토콜 클라이언트(42)에 제공할 수 있다. 이는 서브넷에 대한 노드 할당, 노드 공개 키, 서브넷에 대한 계산 유닛의 할당 등을 포함한다.
메시징 구성요소(61) 및 실행 구성요소(62)는 이들 구성요소 내의 모든 계산, 데이터 및 상태가 각각의 서브넷의 모든 노드, 보다 구체적으로 각각의 서브넷의 모든 정직한 노드에 걸쳐 동일하게 복제되도록 구성된다. 이는 이들 구성요소의 웨이브 패턴 배경으로 표시된다.
이러한 동일한 복제는 한편으로 메시징 구성요소(61)로의 입력 스트림이 각각의 서브넷에 의해 동의되고 따라서 모든 노드에 대해 보다 구체적으로는 모든 정직한 노드에 의해 동일함을 보장하는 합의 구성요소(63)에 의해 실시예에 따라 달성된다. 다른 한편으로는, 이것은 메시징 구성요소(61) 및 실행 구성요소(62)가 결정론적이고 복제된 계산을 수행하도록 구성된다는 사실에 의해 달성된다.
X-Net 전송 구성요소(66)는 메시지 스트림을 다른 서브넷으로 보내고 다른 서브넷으로부터 메시지 스트림을 수신한다.
대부분의 구성요소는 암호화 알고리즘을 실행하기 위해 암호화 구성요소(68)에 액세스하고 구성 정보를 읽기 위해 메인넷 판독기(610)에 액세스한다.
실행 구성요소(62)는 메시징 구성요소(61)로부터 계산 유닛의 유닛 상태 및 계산 유닛에 대한 착신 메시지를 수신하고, 발신 메시지 및 계산 유닛의 업데이트된 유닛 상태를 리턴한다. 실행을 수행하는 동안, 처리된 메시지(쿼리)의 가스(gas) 또는 연료 소비도 측정할 수 있다.
메시징 구성요소(61)는 합의 구성요소(63)로부터 수신된 입력 블록에 의해 클로킹된다. 즉, 각 입력 블록마다, 메시징 구성요소(61)는 다음과 같은 단계를 수행한다. 각각의 입력 블록을 파싱하여 계산 유닛에 대한 메시지를 획득한다. 또한 메시지를 상이한 계산 유닛의 각각의 입력 큐로 라우팅하고 스케줄러에 의해 각각의 계산 유닛에 할당된 용량에 따라 실행될 메시지를 스케줄링한다. 그 다음, 실행 구성요소(62)를 사용하여 대응하는 계산 유닛에 의해 메시지를 처리하고, 그 결과 전송될 메시지가 각각의 계산 유닛의 출력 큐에 추가된다. 그러나, 메시지가 동일한 서브넷의 계산 유닛으로 향하는 경우 해당 계산 유닛의 입력 큐에 직접 넣을 수 있다. 메시징 구성요소(61)는 최종적으로 계산 유닛의 출력 큐의 메시지를 수신 계산 유닛이 위치한 서브넷에 대한 메시지 스트림으로 라우팅하고 이들 메시지 스트림을 인증될, 즉 각각의 서브넷에 의해 서명될 상태 관리자 구성요소(65)에 전달한다.
상태 관리자 구성요소(65)는 인증 구성요소(65a)를 포함한다. 인증 구성요소(65a)는 각각의 서브넷의 출력 스트림을 인증하도록 구성된다. 이것은 예를 들어, 각각의 서브넷의 계산 유닛의 그룹 서명에 의해 수행될 수 있다.
인증 구성요소(65a)는 유닛 상태의 소정 변수, 특히 아래에서 더 상세히 설명되는 바와 같이 유닛 상태의 스냅샷의 소정 변수를 인증하도록 더 구성될 수 있다.
도 7은 메시징 프로토콜, 합의 프로토콜 및 관련 구성요소, 예를 들어, 도 6의 메시징 구성요소(61) 및 합의 구성요소(63)의 작업흐름(700)에 대한 예시적인 시각화를 도시한다. 보다 구체적으로, 도 7은 서브넷(SNB)과 서브넷(SNA 및 SNC) 간에 교환되는 인터 서브넷 메시지의 작업흐름을 시각화한다. 또한, 서브넷(SNB)은 복수의 사용자(U)와 인그레스 메시지를 교환한다.
도 7의 우측 하단부터 시작하면, 복수의 입력 스트림(701, 702 및 703)이 합의 구성요소(63)에 의해 수신된다. 합의 구성요소(63)는 서브넷(SNB)의 서브넷 클라이언트에 의해 실행되는 서브넷 합의 구성요소이다. 입력 스트림(701)은 서브넷(SNA)으로부터 서브넷(SNB)으로의 인터 서브넷 메시지(711)를 포함한다. 입력 스트림(702)은 서브넷(SNC)으로부터 서브넷(SNB)으로의 인터 서브넷 메시지(712)를 포함한다. 입력 스트림(703)은 복수의 사용자(U)로부터 서브넷(SNB)으로의 인그레스 메시지(713)를 포함한다.
인터 서브넷 메시지(711 및 712)는 상이한 서브넷의 계산 유닛 간에 교환될 유닛 대 유닛 메시지 및 시그널링 메시지를 포함한다. 시그널링 메시지는 유닛 대 유닛 메시지의 수신을 확인응답하거나 확인응답하지 않는 데 사용된다. 메시징 구성요소(61)는 시그널링 메시지를 수신 서브넷으로부터 대응하는 송신 서브넷으로, 즉, 이 예에서는 서브넷(SNB)에서 서브넷(SNA 및 SNC)으로 전송하도록 구성된다. 메시징 구성요소(61)는 이 예에 따라 각각의 유닛 대 유닛 메시지에 대해 확인응답 메시지가 수신될 때까지 전송된 유닛 대 유닛 메시지를 저장하도록 구성된다. 이것은 보장된 전달을 제공한다.
합의 구성요소(63)는 서브넷(SNA, SNC)의 인터 서브넷 메시지(711, 712) 및 사용자(U)의 인그레스 메시지(713)를 수신 및 처리하고 대응하는 합의 프로토콜에 의해 실행되는 사전정의된 합의 메커니즘에 따라 인터 서브넷 메시지(711, 712) 및 인그레스 메시지(713)로부터 입력 블록(720)의 큐를 생성하도록 구성된다. 합의에 의해 생성된 각각의 입력 블록(720)은 인그레스 메시지(713)의 세트, 인터 서브넷 메시지(711, 712)의 세트 및 실행 파라미터(714)(EP)를 포함한다. 실행 파라미터(714)(EP)는 특히 랜덤 시드, 지정된 실행 시간 및/또는 높이 인덱스를 포함할 수 있다. 합의 구성요소(63)는 또한 서브넷의 현재 부하에 기초하여 모든 입력 블록의 메시지 수를 변경할 수 있다.
합의 구성요소(63)는 그 다음에 입력 블록(720)의 큐를 메시징 프로토콜을 실행하고 입력 블록(720)을 처리하도록 구성된 메시징 구성요소(61)에 제공한다.
메시징 프로토콜 및 메시징 구성요소(61)는 합의 구성요소(63)로부터 수신된 입력 블록(720)에 의해 클로킹된다.
수신된 입력 블록을 처리하기 전에, 메시징 구성요소(61)는 하나 이상의 입력 체크를 포함하는 하나 이상의 전처리 단계를 수행할 수 있다. 입력 체크는 입력 체크 구성요소(740)에 의해 수행될 수 있다.
입력 체크는 실시예에 따라 서로 다른 입도(granularity)로 수행될 수 있다. 처음에, 전체 입력 블록에 대해 입력 체크가 수행될 수 있다. 이러한 체크는 입력 블록 체크로도 표시될 수 있다. 이들은 다음 입력 블록의 높이 체크를 포함할 수 있다. 다음 입력 블록의 높이가 다음 순서로 예상된 높이보다 낮으면, 폐기된다. 입력 블록이 다음 순서로 예상된 높이가 아니면, 메시징 구성요소(61)는 노드 캐치업 프로토콜을 트리거할 수 있다. 입력 블록이 다음 순서이면, 메시징 구성요소(61)에 의해 추가로 처리된다.
입력 블록에 있는 상이한 유형의 메시지(시그널링 메시지, 인그레스 메시지, 유닛 대 유닛 메시지)는 함께 그룹화될 수 있다.
입력 체크는 메시징 구성요소가 현재 과부하 상태인지 그리고 처리를 수행할 용량이 충분하지 않은지 여부를 체크하기 위한 과부하 체크를 더 포함할 수 있다. 예를 들어, 유도 풀의 관련 큐가 가득 차면, 해당 메시지가 거부될 수 있다. 추가 입력 체크는 순차 전달 체크를 포함할 수 있다. 순차 전달 요구사항을 충족하기 위해, 메시지에 예컨대, 시퀀스 번호를 사용하여 주석을 추가할 수 있다. 시퀀스 번호가 있는 메시지가 수신되면, 메시징 구성요소(61)는 예상 번호가 있는지 여부를 체크할 수 있고, 그렇지 않은 경우 이를 거부할 수 있다. 또한, 입력 체크 구성요소(740)는 타깃 목적지의 유효성 체크, 즉, 메시지가 해당 서브넷에서 활성인 계산 유닛을 타깃으로 하는지 여부의 체크를 수행할 수 있다.
입력 체크가 성공적으로 통과된 경우, 각각의 입력 블록(720)의 메시지는 메시징 구성요소(61)에 의해 추가로 처리될 수 있고 대응하는 메시지는 유도 풀 구성요소(731)의 유도 풀에 있는 대응하는 큐에 부가될 수 있다. 메시징 구성요소(61)의 유도 풀 구성요소(731)는 입력 체크 구성요소(740)를 성공적으로 통과했고 그에 따라 추가 처리를 위해 메시징 구성요소(61)에 의해 수락된 입력 블록 및 입력 메시지를 수신한다.
일반적으로, 메시징 구성요소(61)는 인그레스 메시지, 시그널링 메시지 및 인터 서브넷 메시지를 적절하게 유도 풀 구성요소(731)에 배치함으로써 입력 블록(720)을 전처리한다. 서브넷 스트림의 시그널링 메시지는 제거될 수 있는 출력 큐의 메시지의 확인응답으로서 처리된다.
이 예에서, 유도 풀 구성요소(731)는 서브넷 대 유닛 큐(SNA-B1, SNC-B1, SNA-B2 및 SNC-B2) 및 사용자 대 유닛 큐(U-B1 및 U-B2)를 포함한다.
이들 전처리 단계에 이어, 메시징 구성요소(61)는 단일 실행 주기 동안 가능한 한 많은 유도 풀을 실행하기 위해 실행 구성요소(62)(도 6 참조)를 호출하여 지정된 실행 시간과 랜덤 시드를 추가 입력으로서 제공한다. 실행 주기에 이어, 결과적인 메시지의 출력 큐가 출력 큐 구성요소(733)에 공급된다. 초기에 출력 큐 구성요소(733)는 유닛 대 유닛 및 유닛 대 사용자 출력 큐, 이 예에서 유닛 대 유닛 출력 큐(B1-A1, B1-C2, B2-A2 및 B2-C3) 및 유닛 대 사용자 출력 큐(B1-U1 및 B2-U4)를 포함한다. 예로서, 메시지(B1-A1)는 서브넷(SNB)의 계산 유닛(B1)에서 서브넷(SNA)의 계산 유닛(A1)으로의 메시지를 나타낸다. 다른 예로서, 메시지(B1-U1)는 서브넷(SNB)의 계산 유닛(B1)에서 사용자(U1)로의 메시지를 나타낸다.
출력 큐 구성요소(733)는 예컨대, 도 6에 도시된 바와 같이 인증 구성요소(65a)에 의해 인증되고 다른 구성요소에 의해 전파될 서브넷별 출력 스트림의 세트를 형성함으로써 메시지의 결과 출력 큐를 후처리한다. 이 예에서, 서브넷별 출력 스트림(SNB-SNA, SNB-SNC 및 SNB-U)이 제공된다.
메시징 구성요소(61)는 각각의 서브넷의 계산 유닛의 상태/유닛 상태, 이 예에서 서브넷(SNB)의 계산 유닛(B1 및 B2)의 상태를 저장하도록 구성된 상태 저장 구성요소(732)를 더 포함한다. 해당 유닛 상태는 각각의 계산 유닛의 작업 메모리이다.
메시징 구성요소(61)는 소정의 시스템 상태를 결정론적으로 변경하는 것을 다룬다. 각 라운드에서, 실행 구성요소(62)는 각각의 계산 유닛의 상태를 읽고 업데이트함으로써 유도 풀로부터 소정 메시지를 실행하고 실행된 계산 유닛이 전송하고자 하는 임의의 발신 메시지를 리턴할 것이다. 이들 메시지는 네트워크의 계산 유닛 사이의 유닛 대 유닛 메시지를 초기에 포함하는 출력 큐 구성요소(733)로 이동한다. 동일한 서브넷의 계산 유닛 사이의 인트라 서브넷 메시지는 각각의 서브넷 내에서 내부적으로 라우팅 및 배포될 수 있는 반면, 인터 서브넷 메시지는 서브넷 목적지에 의해 분류된 출력 스트림으로 라우팅된다.
또한, 어떤 메시지가 처리되었는지 시스템의 나머지 부분에 알리기 위해 실시예에 따라 두 가지 상태가 유지될 수 있다. 제1 상태는 인터 서브넷 메시지에 대해 유지되고 제2 상태는 인그레스 메시지에 대해 유지될 수 있다.
도 8은 상태 관리자 구성요소(800), 예컨대, 도 6의 상태 관리자 구성요소(65)의 보다 상세한 실시예를 도시한다.
상태 관리자 구성요소(800)는 저장 구성요소(810), 인증 구성요소(820) 및 동기화 구성요소(830)를 포함한다. 저장 구성요소(810)는 판독기 데이터(811), 즉 판독 쿼리에 이용가능한 데이터 및 상태 판독기 구성요소(69)가 액세스할 수 있는 데이터를 저장하도록 구성된다.
판독기 데이터(811)는 특히 상태 판독기 구성요소(69)를 통해 사용자로부터 제출된 판독 쿼리에 대한 데이터를 포함하는 판독 스냅샷을 포함한다. 판독 스냅샷은 각각의 노드의 계산 유닛의 최신 유닛 상태뿐만 아니라 인증 구성요소(820)에 의해 인증된 유닛 상태의 하나 이상의 인증된 변수도 포함한다. 인증 구성요소(820)는 도 6의 인증 구성요소(65a)에 대응할 수 있다.
보다 구체적으로, 인증 구성요소(820)는 유닛 상태의 하나 이상의 부분 또는 다시 말해 서브세트, 특히 변수를 인증하도록 구성된다. 인증은 특히 명목상 블록 처리 경계에서 메시징 구성요소(61)에 의해 트리거될 수 있다. 유닛 상태의 하나 이상의 부분만, 특히 하나 이상의 인증된 변수만 인증하고 전체 유닛 상태는 인증하지 않으면, 노드의 효율성과 속도가 증가한다. 이들 인증된 부분 또는 인증된 변수의 경우 단일 노드에서만 읽는 것으로 충분하지만, 사용자는 스냅샷의 인증되지 않은 부분의 정확성에 대한 신뢰를 향상시키기 위해 실행 서브세트의 추가 노드에 추가 판독 쿼리를 제공할 수 있다. 더욱이, 사용자는 관심 있는 계산 유닛의 상태를 보유하는 인증 노드와 대화했음을 확인할 수 있다.
실시예에 따르면, 인증 구성요소(820)는 하나 이상의 인증된 부분을 인증하기 위해 임계값 서명 알고리즘을 실행하도록 구성된다. 다른 실시예에 따르면, 인증 구성요소(820)는 다중 서명 알고리즘을 실행하도록 구성될 수 있다. 또 다른 실시예에 따르면, 인증 구성요소(820)는 실행 서브세트의 노드에 의해 개별 서명을 수행하도록 구성될 수 있다.
저장 구성요소(810)는 추가 데이터, 특히 복구 스냅샷(812)을 저장하도록 더 구성된다. 이러한 복구 스냅샷(812)은 전체 스냅샷으로도 표시될 수 있다. 실시예에 따르면, 복구 스냅샷은 그 서브넷 또는 실행 서브세트의 노드를 복원하는 데 필요한 각각의 서브넷 또는 실행 서브세트의 노드의 모든 상태를 포함한다. 복구 스냅샷은 특히 모든 유닛 상태를 포함하는 메시징 구성요소(61)의 모든 데이터를 포함한다. 복구 스냅샷은 합의 구성요소(63)에 의해 제공되는 모든 입력 블록을 더 포함한다. 입력 블록을 포함하는 복구 스냅샷이 주어지면, 메시징 구성요소(61)는 해당 높이까지의 모든 입력 블록을 재생함으로써 서브넷의 임의의 블록 높이에 대한 상태를 복구할 수 있다. 다른 노드가 이를 수행할 수 있도록 하기 위해, 복구 스냅샷은 실시예에 따라 실행 서브세트 또는 서브넷에 의해 인증될 것이다. 실시예에 따르면, 입력 블록은 이미 합의 구성요소(63)에 의해 인증되었으므로, 복구 스냅샷의 입력 블록에 대한 추가 인증은 생략될 수 있다. 실시예에 따르면, 복구 스냅샷은 해싱될 수 있다. 일 실시예에 따르면, 저장 구성요소(810)는 적어도 후속 복구 스냅샷이 만들어질 때까지 복구 스냅샷을 지속적으로 저장한다.
도 9는 도 6의 메시징 구성요소(61) 및 실행 구성요소(62)에 의해 수행되는 실행 주기뿐만 아니라 상태 관리자 구성요소(65) 및 상태 판독기 구성요소(69)에 의해 수행되는 대응하는 판독 주기의 타이밍도를 예시한다. x 축은 시간 t를 나타낸다.
도 7을 참조하여 설명된 바와 같이, 메시지 구성요소는 합의 구성요소에 의해 생성된 입력 블록(IB)에 의해 클로킹된다. 입력 블록은 실행 높이 또는 높이 인덱스로 표시되는 연속 순서로 합의 구성요소에 의해 번호가 매겨지고 메시징 구성요소에 의해 그 순서대로 처리된다. 시점 tN-2, tN-1 및 tN은 각각 실행 높이가 N-2, N-1 및 N인 각각의 블록의 처리 시작을 나타낸다.
새로운 입력 블록이 메시징 구성요소(61)에서 처리되기 전에 매번, 메시징 구성요소(61)는 상태 관리자(800)의 저장 하위 구성요소(810)에 계산 유닛의 최신 유닛 상태의 스냅샷(SS)을 전송한다. 그 다음에 이 스냅샷(SS)은 현재 입력 블록의 처리 및 실행 중에 예컨대, 저장 하위 구성요소(810)의 캐시 메모리에 저장되고 상태 판독기 구성요소(69)를 통해 스냅샷의 정보에 대한 액세스를 사용자에게 제공하는 데 사용될 수 있다. 따라서 이러한 실시예에 따르면 현재 처리 중인 입력 블록과 최신 스냅샷(SS)의 현재 이용가능한 스냅샷 정보 사이에 하나의 높이 인덱스 지연이 항상 존재한다. 예로서, 높이 인덱스가 N인 입력 블록을 처리하고 실행하는 동안, 이용가능한 스냅샷(SSN-1)은 높이 인덱스가 N-1인 입력 블록 처리가 끝날 때 스냅샷 정보에 대한 액세스를 제공한다. 따라서, 판독 높이는 현재 실행 높이보다 한 블록 또는 한 높이 인덱스 뒤에 있다.
입력 블록을 처리하고 실행하는 동안, 스냅샷은 고정된 것으로 간주될 수 있으며, 즉, 저장된 스냅샷 정보는 입력 블록을 실행하는 동안 변경되지 않는다.
이러한 접근 방식은 사용자에게 계산 유닛의 최신 계산 결과에 대한 액세스를 제공하는 명쾌하고 효율적인 방법을 제공한다. 보다 구체적으로, 사용자는 낮은 지연으로 상태 판독기 구성요소(69)를 통해 판독 쿼리를 수행할 수 있다. 더욱이, 그러한 접근 방식은 사용자에게 각각의 계산 유닛의 적어도 부분적으로 인증된 계산 결과에 대한 액세스를 제공하는 것을 허용한다.
실시예에 따르면, 상태 판독기 구성요소(800)는 또한 최신 스냅샷의 스냅샷 데이터에 대한 일부 처리를 수행하거나 트리거할 수 있다. 보다 구체적으로, 판독 쿼리는 또한 계산 유닛에 의한 판독 스냅샷의 데이터에 대한 또는 데이터를 이용한 계산 실행을 포함할 수 있다.
판독 쿼리는 일반적으로 실시예에 따른 시스템 상태에 영향을 미칠 수 없지만, 그럼에도 불구하고 실시예에 따른 계산 유닛의 사용자 상태, 예컨대, 계산 유닛의 메모리 및 테이블을 일시적으로 수정할 수 있다. 그러나, 판독 쿼리가 완전히 처리되면 이러한 수정이 모두 폐기된다. 스냅샷 데이터의 이러한 처리는 예를 들어, 사용자에게 리턴하기 전에 결과를 분류하거나 필터링하는 것과 같은 동작을 구현하는 데 사용될 수 있다.
도 10은 메시징 구성요소(61) 및 실행 구성요소(62)에 의해 수행되는 입력 블록의 블록별 처리를 간략하고 개략적인 방식으로 도시한다. 위에서 설명된 바와 같이, 여러 실행 메시지가 함께 그룹화되어 블록을 형성하지만, 실행 메시지는 블록 내에서 논리적 순서를 유지한다. 변형으로 표시될 수도 있는 실행 메시지의 예는 다음과 같다:
- 사용자(U)는 인수(X)를 사용하여 계산 유닛(B)에서 방법(M)의 실행을 요청한다.
- 개발자(V)는 초기 상태(S)를 가진 계산 유닛(D)의 설치를 요청한다.
- 개발자(V)는 상태 전이 함수(S
Figure pct00001
S')를 사용하여 계산 유닛(D)에서 계산 유닛(D')으로의 업그레이드를 요청한다.
- 개발자(V)는 계산 유닛(D)의 제거를 요청한다.
실행 메시지는 순서대로 처리되지만 판독 쿼리는 순서가 필요하지 않으며 여러 판독 쿼리가 동시에 처리될 수 있다.
이 예에 따르면 기본 분산 네트워크의 노드, 특히 각각의 서브넷의 노드의 실행 서브세트가 3개의 노드(노드 1, 노드 2 및 노드 3)를 포함한다고 가정한다. 3개의 노드 각각은 3개의 계산 유닛(CUA, CUB 및 CUC)의 복제를 실행한다. 블록(N)의 실행을 시작하기 전에, 블록(N-1)의 실행의 최신 유닛 상태의 스냅샷이 판독 스냅샷으로서 저장된다. 현재 블록(N)의 처리 및 실행 동안, 상태 관리자 구성요소(800)의 저장 구성요소(810)에 의해 저장된 이용가능한 스냅샷은 높이 또는 높이 인덱스(N-1 이하)를 갖는 스냅샷을 포함한다. 따라서, 상태 판독기는 높이 인덱스 K<N의 스냅샷을 읽을 수 있다. 몇몇 실시예에 따르면 하나보다 많은 높이 또는 높이 인덱스의 스냅샷이 저장될 수 있지만, 다른 실시예에 따르면 최신 높이 인덱스(N-1), 즉 현재 처리된 입력 블록의 높이 인덱스 이전의 높이 인덱스의 스냅샷만 저장된다.
도 11은 분산 네트워크의 사용자에게 계산 결과에 대한 액세스를 제공하기 위한 컴퓨터로 구현된 방법의 방법 단계들을 도시한다. 계산 결과는 분산 네트워크, 보다 구체적으로 분산 네트워크에서 실행되는 하나 이상의 계산 유닛에 의해 계산되었다.
단계(1110)에서, 복수의 노드의 각각의 노드는 결정론적이고 복제된 방식으로 하나 이상의 계산 유닛을 실행한다. 하나 이상의 계산 유닛 각각은 자체의 유닛 상태를 포함한다.
단계(1110)는 연속적으로 수행되는 일반적인 단계로 간주될 수 있다.
단계(1120 내지 1160)는 실행 메시지의 처리 및 실행을 예시하고 연속적인 방식으로 루프로 반복될 수 있다.
단계(1120)에서, 네트워크 또는 네트워크의 노드는 실행될 실행 메시지 세트를 수신한다.
단계(1130)에서, 복수 노드의 합의 서브세트는 합의 프로토콜을 수행한다. 합의 프로토콜은 현재의 실행 메시지 세트로부터의 실행 메시지의 선택 및 처리 순서에 대한 합의에 도달하도록 구성된다. 현재의 실행 메시지 세트는 전술한 바와 같이 유닛 대 유닛 메시지 및 인그레스 메시지를 포함할 수 있다. 합의 프로토콜에 의해 복수의 노드의 합의 서브세트는 실행 메시지의 선택 및 처리 순서에 동의한다.
단계(1140)에서, 노드의 실행 서브세트는 결정론적 방식으로 동의된 처리 순서대로 선택되었던 실행 메시지를 개별적으로 실행한다. 이것은 실행에 수반된 하나 이상의 계산 유닛의 유닛 상태를 변형한다.
단계(1150)에서, 실행 서브세트의 노드는 실행 서브세트의 하나 이상의 계산 유닛의 최신 유닛 상태의 판독 스냅샷을 만든다. 최신 판독 스냅샷은 실행 메시지의 계산 결과를 포함한다. 판독 스냅샷의 생성은 노드의 실행 서브세트에 의한 판독 스냅샷의 하나 이상의 부분의 인증을 추가로 포함할 수 있다. 인증은 특히 실행 서브세트의 노드에 의해 임계값 서명 알고리즘을 실행함으로써 수행될 수 있다.
단계(1160)에서, 실행 서브세트의 하나 이상의 노드는 실행 서브세트의 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷 및 그와 함께 해당 계산 유닛의 최신 계산 결과에 대한 사용자 액세스를 하나 이상의 사용자에게 제공한다.
도 12는 본 발명의 추가 실시예에 따른 방법의 방법 단계들의 흐름도를 도시한다.
방법은 증가하는 높이 인덱스(N)를 가진 순차적인 순서로 복수의 처리 루프(1210)를 수행한다. N은 증가하는 정수, 즉, 0, 1, 2, 3 ...N이다. 처리 루프(1210)는 제1 루프 단계(1211), 제2 루프 단계(1212) 및 제3 루프 단계(1213)를 포함한다.
제1 루프 단계(1211)에서, 네트워크의 노드의 합의 서브세트는 현재의 실행 메시지 세트의 선택 및 처리 순서에 대한 합의에 도달하기 위해 합의 프로토콜을 수행한다.
제2 루프 단계(1212)에서, 실행 서브세트, 예를 들어, 서브넷의 노드의 계산 유닛은 실행 메시지 선택을 결정론적 방식으로 개별적으로 실행한다.
제3 루프 단계(1213)에서, 실행 서브세트의 노드는 판독 스냅샷을 만들고 이를 예컨대, 각각의 노드의 캐시 메모리에 저장한다. 또한, 실행 서브세트의 노드는 판독 스냅샷의 하나 이상의 부분을 인증할 수 있다.
그 다음, 방법은 후속 높이 인덱스를 갖는 다른 입력 블록이 처리되는 후속 처리 루프(1210)로 계속된다. 이 후속 처리 루프 동안 최신 판독 스냅샷은 판독 단계(1220)에 이용가능하다. 보다 구체적으로, 높이 인덱스(N)를 갖는 처리 루프 동안, 실행 서브세트의 하나 이상의 노드는 이전 높이 인덱스(N-1)를 가진 루프의 끝에서 생성된 판독 스냅샷에 대한 액세스를 사용자에게 제공할 수 있다. 판독 단계(1220)는 사용자에 의해 하나 이상의 인증된 부분, 예컨대, 인증된 변수의 검증을 포함할 수 있다.
판독 스냅샷은 모든 처리 루프(1210)의 끝에서, 특히 후속 입력 블록의 처리 사이의 블록 경계에서, 따라서 제1 레이트로 정기적으로 수행된다. 제1 레이트는 특히 입력 블록에 의해 결정되고 트리거될 수 있다는 점에 유의해야 한다. 제1 레이트는 실시예에 따라 고정된 시간 간격을 가질 필요는 없지만, 시간 간격은 시간에 따라 변할 수 있다.
각각의 처리 루프 후에, 단계(1230)에서, 각각의 노드는 카운터를 트리거하고 카운터가 만료되었는지 여부를 체크한다. 카운터는 다양한 방식으로 구현될 수 있다. 특히, 사전정의된 수의 처리 루프(1210) 이후에, 예컨대, 처리 루프(1210) 이후에 만료되도록 프로그래밍될 수 있다.
카운터가 만료된 경우, 예컨대, 100번째 처리 루프마다, 해당 노드는 단계(1240)에서 전체 스냅샷으로도 표시될 수 있는 복구 스냅샷을 수행한다. 이러한 복구 스냅샷은 예컨대, 노드 장애 또는 시스템 장애의 경우 노드를 복구하는 데 필요한 모든 데이터를 포함한다. 그 다음, 단계(1250)에서 카운터가 리셋된다.
시스템 또는 노드 장애의 경우, 복구 단계(1260)에서 노드를 복구하기 위해 복구 스냅샷이 사용될 수 있다.
복구 스냅샷은 제2 레이트로 수행된다. 언급한 바와 같이, 복구 스냅샷은 x번째에만, 예컨대, 100번째 처리 루프마다 수행된다. 따라서 제1 레이트는 제2 레이트보다 높다.
도 13은 본 발명의 일 실시예에 따른 네트워크(100, 300)의 각 노드(10)에서 실행되는 주요 프로세스를 도시한다. 본 발명의 실시예에 따른 네트워크의 네트워크 클라이언트는 노드(10)가 네트워크에 참여하는 데 필요한 프로토콜 구성요소의 세트이다. 실시예에 따르면, 각각의 노드(10)는 메인넷 및 최대 하나의 서브넷의 구성원이며, 이는 각 노드가 메인넷용 클라이언트 및 가능하게는 서브넷용 클라이언트를 실행한다는 것을 의미한다.
노드 관리자(40)는 메인넷 프로토콜 클라이언트(41), 서브넷 프로토콜 클라이언트(42) 및 보안 애플리케이션(43)을 시작, 재시작 및 업데이트하도록 구성된다.
실시예에 따르면, 복수의 서브넷(11) 각각은 대응하는 노드(10)에서 별개의 서브넷 프로토콜 클라이언트(42)를 실행하도록 구성된다. 메인넷 프로토콜 클라이언트(41)는 특히 구성 데이터를 복수의 서브넷(11)에 배포하도록 구성된다. 메인넷 프로토콜 클라이언트(41)는 특히 시스템 계산 유닛만을 실행하고, 임의의 사용자 제공 계산 유닛은 실행하지 않도록 구성될 수 있다. 메인넷 프로토콜 클라이언트(41)는 메인넷의 로컬 클라이언트이고 서브넷 프로토콜 클라이언트(42)는 서브넷의 로컬 클라이언트이다.
보안 애플리케이션(43)은 노드(10)의 비밀 키를 저장하고 이들로써 모든 동작을 수행한다.
보안 애플리케이션(43)은 노드에 의해 보유된 비밀 키를 보호하도록 구성된다. 보다 구체적으로, 비밀 키는 별개의 실행 환경(별개의 프로세스 또는 별개의 가상 머신(VM))에서 보유되고 처리된다. 보안 애플리케이션(43)은 제한되고 제어된 인터페이스로 작동하도록 구성되어 비밀 키가 이들 인터페이스를 통해 추출될 수 없다. 실시예에 따르면, 보안 애플리케이션은 하드웨어 보안 모듈(HSM)처럼 동작하거나 HSM과 유사하게 동작하도록 구성된다. 따라서 보안 애플리케이션(43)은 소프트웨어 HSM으로 표시될 수 있다.
도 14는 인터 서브넷 및 인트라 서브넷 메시지의 교환에 수반되는 주요 계층을 예시하는 계층 모델(1400)을 도시한다. 계층 모델(1400)은 인터 서브넷 통신을 위한 상위 계층으로서 기능하도록 구성된 메시징 계층(51)을 포함한다. 보다 구체적으로, 메시징 계층(51)은 서로 다른 서브넷의 계산 유닛 사이에서 인터 서브넷 메시지를 라우팅하도록 구성된다. 또한, 메시징 계층(51)은 네트워크의 사용자로부터 네트워크의 계산 유닛으로 인그레스 메시지를 라우팅하도록 구성된다.
계층 모델(1400)은 상이한 서브넷으로부터의 인터 서브넷 메시지와 인그레스 메시지를 수신하고 특히 처리 순서에 동의함으로써 그 다음에 각각의 서브넷에 의해 추가 처리되는 일련의 입력 블록에 이들을 구조화하도록 구성된 복수의 합의 계층(52)을 더 포함한다. 또한, 계층 모델(1400)은 단일 서브넷의 노드 간의 통신을 구조화하고 구동하도록 구성된 P2P(peer-to-peer) 계층(53)을 포함한다.
실시예에 따르면, 네트워크는 복수의 추가 계층, 특히 네트워크의 계산 유닛 상에서 실행 메시지를 실행하도록 구성된 실행 계층을 포함할 수 있다.
이하 메인넷 프로토콜 클라이언트(41)와 서브넷 프로토콜 클라이언트(42) 사이의 상호작용이 더 자세히 설명된다(도 13 참조). 메인넷 프로토콜 클라이언트(41)는 서브넷에 대한 구성 정보를 포함하는 다수의 레지스트리를 관리한다. 이들 레지스트리는 메인넷 상의 계산 유닛에 의해 구현되며, 모든 노드가 메인넷에 참여하므로 이들 레지스트리에 대한 액세스는 상태 판독 동작으로 간단히 구현될 수 있다.
즉, 메인넷 판독기(610)(도 6 참조)는 실제로 메인넷 프로토콜 클라이언트(41)의 하위 구성요소일 수 있으므로 이 구성요소와의 상호작용은 메인넷 및 서브넷 클라이언트가 실행되는 2개의 격리된 환경 사이의 상호작용을 초래한다.
도 15는 본 발명의 일 실시예에 따른 계산 유닛(1500)의 보다 상세한 예시를 도시한다.
계산 유닛(1500)은 입력 큐(1501), 출력 큐(1502), 사용자 또는 애플리케이션 상태(1503) 및 시스템 상태(1504)를 포함한다.
계산 유닛의 모든 입력 큐(1501)는 집합적으로 유도 풀을 구성하지만, 입력 큐는 계산 유닛의 상태의 일부이다. 출력 큐(1502)는 아마도 다른 서브네트워크 상의 다른 계산 유닛에 전달되어야 하는 메시지를 포함한다.
사용자 상태(1503)는 모듈 각각의 인스턴스와 함께 계산 유닛 및 이의 종속 모듈의 기능을 구현하는 주요 웹 어셈블리(Web Assembly: WASM) 모듈로 구성된다. WASM 모듈 인스턴스는 메모리, 전역 변수 및 테이블로 구성된다.
시스템 상태(1504)는 계산 유닛의 코드에 의해 자유롭게 수정될 수 없다. 이는 메타 데이터, 계산 유닛을 대신하여 시스템에 의해 유지되는 기타 상태, 특히 WASM 모듈의 컴파일된 형식, 및 아직 처리되지 않은 메시지에 대한 컨텍스트 및 콜백을 포함한다.
도 16은 본 발명의 실시예에 따른 분산 네트워크에서의 블록 생성을 도시한다. 블록은 특히 도 7에 도시된 입력 블록(720)일 수 있는데 이는 합의 프로토콜, 특히 로컬 서브넷 합의 프로토콜을 실행하는 합의 구성요소(63)에 의해 생성된다.
이 예시적인 실시예에서 3개의 입력 블록(1601, 1602 및 1603)이 도시된다. 블록(1601)은 복수의 트랜잭션, 즉 트랜잭션(tx1.1, tx1.2) 및 가능하게는 점으로 표시된 추가 트랜잭션을 포함한다. 블록(1602)은 또한 복수의 트랜잭션, 즉 트랜잭션(tx2.1, tx2.2) 및 가능하게는 점으로 표시된 추가 트랜잭션을 포함한다. 블록(1603)은 또한 복수의 트랜잭션, 즉 트랜잭션(tx3.1, tx3.2) 및 가능하게는 점으로 표시된 추가 트랜잭션을 포함한다. 입력 블록(1601, 1602 및 1603)은 함께 연쇄되어 있다. 보다 구체적으로, 블록 각각은 이전 블록의 블록 해시를 포함한다. 이것은 현재 블록을 이전 블록(들)에 암호화 방식으로 연결한다.
실시예에 따르면 트랜잭션은 인터 서브넷 메시지, 인그레스 메시지 및 시그널링 메시지일 수 있다.
실시예에 따르면, 입력 블록(1601, 1602 및 1603)은 지분 증명 합의 프로토콜에 의해 생성될 수 있다.
그러나, 합의 구성요소에 의해 생성된 입력 블록은 실시예에 따라 함께 연쇄될 필요가 없다는 점에 유의해야 한다. 오히려, 수신된 메시지의 처리 순서에 대해 서브넷의 노드 간에 일종의 합의에 도달하는 임의의 합의 프로토콜이 실시예에 따라 사용될 수 있다.
도 17은 네트워킹 프로토콜을 실행하도록 구성된 네트워킹 구성요소(1700)의 보다 상세한 도면을 도시한다. 네트워킹 구성요소(1700)는 예를 들어, 도 6에 도시된 네트워킹 구성요소(64)의 보다 상세한 실시예일 수 있다. 네트워킹 구성요소(1700)는 노드 대 노드 통신을 수행하도록 구성된 유니캐스트 구성요소(1710), 인트라 서브넷 통신을 수행하도록 구성된 브로드캐스트 구성요소(1720) 및 인터 서브넷 통신을 수행하도록 구성된 크로스넷 구성요소(1730)를 포함한다.
이제 도 18을 참조하면, 본 발명의 실시예에 따라 예컨대, 도 1의 네트워크(100)의 네트워크 노드(10)의 보다 상세한 블록도가 도시된다. 네트워크 노드(10)는 컴퓨팅 기능을 수행할 수 있고 따라서 일반적으로 컴퓨팅 시스템 또는 컴퓨터로서 구현될 수 있는 컴퓨팅 노드를 설정한다. 네트워크 노드(10)는 예를 들어, 서버 컴퓨터일 수 있다. 네트워크 노드(10)는 분산 네트워크에 의해 계산된 계산 결과에 대한 액세스를 분산 네트워크의 사용자에게 제공하기 위한 컴퓨터로 구현된 방법을 수행하도록 구성될 수 있다. 네트워크 노드(10)는 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성을 사용하여 동작할 수 있다.
네트워크 노드(10)는 컴퓨터 시스템에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 시스템 실행 가능 명령어의 일반적인 맥락으로 서술될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 로직, 데이터 구조 등을 포함할 수 있다. 네트워크 노드(10)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 네트워크 노드(10)의 구성요소는 하나 이상의 프로세서 또는 프로세싱 유닛(1815), 시스템 메모리(1820), 및 시스템 메모리(1820)를 비롯한 다양한 시스템 구성요소를 프로세서(1815)에 결합하는 버스(1816)를 포함할 수 있지만, 이들로 제한되는 것은 아니다.
버스(1816)는 메모리 버스 또는 메모리 제어기, 주변기기 버스, 가속 그래픽 포트 및 임의의 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 포함하는 여러 유형의 버스 구조 중 임의의 유형의 버스 구조 중 하나 이상을 나타낸다. 제한이 아닌 예로서, 이러한 아키텍처는 산업 표준 아키텍처(Industry Standard Architecture)(ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture)(MCA) 버스, 향상된 ISA(Enhanced ISA)(EISA) 버스, 비디오 전자공학 표준 협회(Video Electronics Standards Association)(VESA) 로컬 버스 및 주변 구성요소 상호연결(Peripheral Component Interconnect)(PCI) 버스를 포함한다.
네트워크 노드(10)는 전형적으로 다양한 컴퓨터 시스템 판독가능 매체를 포함한다. 이러한 매체는 네트워크 노드(10)에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 착탈식 및 비착탈식 매체 모두를 포함한다.
시스템 메모리(1820)는 랜덤 액세스 메모리(random access memory)(RAM)(1821) 및/또는 캐시 메모리(1822)와 같은 휘발성 메모리의 형태의 컴퓨터 시스템 판독가능 매체를 포함할 수 있다. 네트워크 노드(10)는 다른 착탈식/비착탈식의 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예로서, 비착탈식의 비휘발성 자기 매체(도시되지 않으며 전형적으로 "하드 드라이브"라고 호칭함)로부터 판독하고 이에 기록하기 위한 저장 시스템(1823)이 제공될 수 있다. 도시되지는 않았지만, 착탈식의 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터 판독하고 이에 기록하기 위한 자기 디스크 드라이브 및 CD-ROM, DVD-ROM 또는 다른 광학 매체와 같은 착탈식의 비휘발성 광학 디스크로부터 판독하거나 이에 기록하기 위한 광학 디스크 드라이브가 제공될 수 있다. 이러한 사례에서, 각각은 하나 이상의 데이터 매체 인터페이스에 의해 버스(1816)에 연결될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(1820)는 본 발명의 실시예의 기능을 수행하도록 구성된 한 세트(예를 들어, 적어도 하나의) 프로그램 모듈을 갖는 적어도 하나의 컴퓨터 프로그램 제품을 포함할 수 있다.
제한이 아닌 예로서 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈 및 프로그램 데이터뿐만 아니라, 한 세트(적어도 하나)의 프로그램 모듈(1831)을 갖는 프로그램/유틸리티(1830)가 메모리(1820)에 저장될 수 있다. 각각의 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈, 및 프로그램 데이터 또는 이들의 일부 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈(1831)은 일반적으로 본 명세서에 설명된 바와 같은 본 발명의 실시예의 기능 및/또는 방법론을 수행한다. 프로그램 모듈(1831)은 특히 분산 네트워크에 의해 계산된 계산 결과에 대한 액세스를 분산 네트워크의 사용자에게 제공하기 위한 컴퓨터로 구현된 방법의 하나 이상의 단계, 예를 들어 위에서 설명한 바와 같은 방법의 하나 이상의 단계를 수행할 수 있다.
네트워크 노드(10)는 또한 키보드 또는 포인팅 디바이스와 같은 하나 이상의 외부 디바이스(1817) 및 디스플레이(1818)와 통신할 수 있다. 이러한 통신은 입출력(input/output)(I/O) 인터페이스(1819)를 통해 발생할 수 있다. 또한, 네트워크 노드(10)는 네트워크 어댑터(1841)를 통해 근거리 네트워크(local area network)(LAN), 일반 광역 네트워크(wide area network)(WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)와 같은 하나 이상의 네트워크(1840)와 통신할 수 있다. 실시예에 따르면, 네트워크(1840)는 특히 복수의 네트워크 노드(10)를 포함하는 분산 네트워크, 예를 들어 도 1에 도시된 바와 같은 네트워크(100)일 수 있다. 도시된 바와 같이, 네트워크 어댑터(1841)는 버스(1816)를 통해 네트워크 노드(10)의 다른 구성요소와 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 구성요소가 네트워크 노드(10)와 함께 사용될 수 있다는 것을 이해해야 한다.
도 19는 실행 구성요소(62)(도 6 참조)가 메시지(M)를 실행하기 위해 계산 유닛의 상이한 부분을 조정하는 방법을 예시한다.
하나의 입력 큐로부터 하나의 메시지(M)를 실행하기 위해, 실행 구성요소(62)는 메시징 구성요소(61)의 스케줄러(1901)로부터의 데이터 및 M의 다양한 필드를 사용하여 유닛 상태의 다른 부분을 조정하고 컴파일된 코드의 올바른 부분을 실행한다.
실행 구성요소(62)는 다음과 같이 입력(1902)을 수신한다: 랜덤성, 시간 및 높이는 스케줄러에 의해 제공된다. 메시지 페이로드는 메시지 M에서 직접 가져오고, 즉, 시스템에 의해 해석되지 않는다. 어드레싱과 지불도 M 내의 정보의 일부이다. 마지막으로, 실행하는 방법도 M에 지정된다.
컴파일된 코드(1903)는 시스템 API(1904)를 통해 시스템과 상호작용하는데, 이는 입력에 액세스하고, 메시지를 보내고(출력 큐, 컨텍스트 및 콜백과 상호작용함) 현재 메시지에 응답하며(컨텍스트와 상호작용함), 메시지에서 잔액으로 지불금을 이체하는 기능을 제공한다.
실시예에 따르면, 실행 구성요소(62)는 가스 구성요소로도 표시될 수 있는 연료 구성요소(1905)를 포함할 수 있다. 컴파일된 코드와 시스템 API는 한계에 도달하면 실행을 종료하는 연료 구성요소에 의해 계측된다. 소비된 연료의 양은 실행을 호출한 스케줄러(1901)에도 다시 제공된다.
컴파일된 코드는 로드 및 저장이 올바른 영구 메모리 위치로 이동하고 호출 간에 전역 변수가 지속되며 테이블이 사용될 때 올바른 기능이 실행되는 것을 보장하는 특정 모듈 인스턴스와 쌍으로 실행된다.
본 발명의 양상은 시스템, 특히 복수의 서브넷을 포함하는 분산 네트워크, 방법 및/또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 프로세서로 하여금 본 발명의 양상을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령어를 갖는 컴퓨터 판독가능 저장 매체(또는 매체들)를 포함할 수 있다.
컴퓨터 판독가능 저장 매체는 명령어 실행 디바이스에 의해 사용하기 위한 명령어를 보유하고 저장할 수 있는 유형의 디바이스일 수 있다. 컴퓨터 판독가능 저장 매체는, 예를 들어, 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스 또는 전술한 것의 임의의 적합한 조합일 수 있지만, 이에 제한되는 것은 아니다. 본 명세서에서 사용된 바와 같은 컴퓨터 판독가능 저장 매체는 전파 또는 다른 자유롭게 전파하는 전자기파, 도파관 또는 다른 전송 매체를 통해 전파하는 전자기파(예를 들어, 광섬유 케이블을 통과하는 광 펄스) 또는 전선을 통해 전송되는 전기 신호와 같은, 일시적 신호 그 자체인 것으로 해석되지 않아야 한다.
본 명세서에서 설명된 컴퓨터 판독가능 프로그램 명령어는 컴퓨터 판독가능 저장 매체로부터 각자의 컴퓨팅/프로세싱 디바이스로, 또는 네트워크, 예를 들어, 인터넷, 근거리 네트워크, 광역 네트워크 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 네트워크는 구리 전송 케이블, 광학 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버를 포함할 수 있다. 각각의 컴퓨팅/프로세싱 디바이스에서 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독가능 프로그램 명령어를 수신하고 컴퓨터 판독가능 프로그램 명령어를 각자의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독가능 저장 매체에 저장하기 위해 포워딩한다.
본 발명의 동작을 수행하기 위한 컴퓨터 판독가능 프로그램 명령어는 어셈블러 명령어, 명령어 집합 아키텍처(instruction-set-architecture)(ISA) 명령어, 머신 명령어, 머신 종속 명령어, 마이크로코드, 펌웨어 명령어, 상태 설정 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 통상의 절차적 프로그래밍 언어를 비롯한 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성된 소스 코드 또는 객체 코드일 수 있다.
본 발명의 양상은 본 발명의 실시예에 따른 방법, 네트워크, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 본 명세서에서 설명된다.
본 발명의 실시예에 따른 컴퓨터 판독가능 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래머블 데이터 프로세싱 장치의 프로세서에 제공되어 머신을 생성하여, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령어가 흐름도 및/또는 블록도의 블록 또는 블록들에서 명시된 기능/작용을 구현하기 위한 수단을 생성하도록 할 수 있다. 이들 컴퓨터 판독가능 프로그램 명령어는 또한 컴퓨터, 프로그래머블 데이터 프로세싱 장치 및/또는 다른 디바이스에게 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 저장 매체에 저장되어, 명령어가 저장된 컴퓨터 판독가능 저장 매체는 흐름도 및/또는 블록도의 블록 또는 블록들에서 명시된 기능/작용의 양상을 구현하는 명령어를 포함하는 제조 물품을 포함하도록 할 수 있다.
컴퓨터 판독가능 프로그램 명령어는 또한 컴퓨터, 다른 프로그래머블 데이터 프로세싱 장치 또는 다른 디바이스에 로딩되어 일련의 동작 단계가 컴퓨터, 다른 프로그래머블 장치 또는 다른 디바이스에서 수행되게 하여, 컴퓨터, 다른 프로그래머블 장치 또는 다른 디바이스에서 실행되는 명령어가 흐름도 및/또는 블록도의 블록 또는 블록들에서 명시된 기능/작용을 구현하도록 컴퓨터로 구현된 프로세스를 생성하게 할 수 있다.
도면에서 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른 네트워크, 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능성 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도에서 각각의 블록은 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 명령어의 모듈, 세그먼트 또는 부분을 나타낼 수 있다. 일부 대안적인 구현에서, 블록에서 언급된 기능은 도면에서 언급된 순서를 벗어나 발생할 수 있다. 예를 들어, 연속적으로 도시된 두 개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 또는 블록은 연루된 기능성에 따라 때로는 역순으로 실행될 수 있다.
본 발명의 바람직한 실시예가 현재 도시되고 설명되었지만, 본 발명은 이것으로 제한되지 않고, 이와 달리 후속하는 청구범위의 범주 내에서 다양하게 구현되고 실시될 수 있다는 것을 명백히 이해해야 한다.

Claims (28)

  1. 복수의 노드를 포함하는 분산 네트워크로서,
    상기 복수의 노드 각각은 하나 이상의 계산 유닛을 실행하도록 구성되고 상기 계산 유닛 각각은 자체의 유닛 상태를 포함하며,
    상기 네트워크는,
    상기 복수의 노드의 실행 서브세트에 의해, 결정론적 방식으로 실행 메시지 세트를 개별적으로 실행하여, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태를 변형하고,
    상기 실행 서브세트의 노드에 의해, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷(read snapshot)을 정기적으로(regularly) 생성하며,
    상기 실행 서브세트의 하나 이상의 노드에 의해, 상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 구성되는
    분산 네트워크.
  2. 제1항에 있어서,
    상기 네트워크는, 상기 복수의 노드의 합의 서브세트(consensus subset)에 의해, 상기 실행 메시지 세트 중 현재 이용가능한 세트로부터 실행 메시지의 선택에 대한 합의에 도달하도록 구성된 합의 프로토콜을 정기적으로 수행하도록 구성되는
    분산 네트워크.
  3. 제1항 또는 제2항에 있어서,
    상기 네트워크는,
    상기 실행 서브세트의 하나 이상의 노드의 계산 유닛에 의해, 상기 판독 스냅샷에 대한 계산을 실행하고,
    상기 계산 유닛에 의해, 상기 계산의 결과를 사용자에게 제공하도록 구성되는
    분산 네트워크.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 네트워크는,
    상기 실행 서브세트의 하나 이상의 노드에 의해, 사용자로부터 판독 쿼리를 수신하고,
    상기 하나 이상의 노드에 의해, 상기 판독 쿼리와 연관된 대응하는 계산 유닛의 유닛 상태를 로드하며,
    상기 판독 쿼리로 상기 계산 유닛을 실행하고,
    상기 하나 이상의 노드에 의해, 상기 판독 쿼리의 결과를 리턴하도록 구성되며, 상기 판독 쿼리는 상기 유닛 상태를 지속적으로 변경하지 않는
    분산 네트워크.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 네트워크는 상기 판독 스냅샷의 하나 이상의 부분을 인증하여 상기 판독 스냅샷의 하나 이상의 인증된 부분을 생성하도록 더 구성되는
    분산 네트워크.
  6. 제5항에 있어서,
    상기 네트워크는 상기 실행 서브세트의 다수의 노드에 의해 상기 판독 스냅샷의 상기 하나 이상의 인증된 부분을 인증하도록 더 구성되는
    분산 네트워크.
  7. 제5항 또는 제6항에 있어서,
    상기 네트워크는,
    다수의 상기 실행 서브세트에 의해, 상기 판독 스냅샷의 상기 하나 이상의 인증된 부분에 대한 서명을 생성하고,
    사용자가 상기 서명을 사용할 수 있도록 함으로써
    상기 판독 스냅샷의 상기 하나 이상의 부분을 인증하도록 더 구성되는
    분산 네트워크.
  8. 제7항에 있어서,
    상기 서명은 적어도 상기 실행 서브세트의 다수의 노드의 임계값 서명, 다중 서명 또는 개별 서명의 모음인
    분산 네트워크.
  9. 제5항 내지 제8항 중 어느 한 항에 있어서,
    상기 판독 스냅샷의 상기 하나 이상의 인증된 부분은 상기 유닛 상태의 변수인
    분산 네트워크.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 네트워크는 상기 실행 서브세트의 노드에 의해 상기 유닛 상태의 상기 판독 스냅샷을 캐시 메모리에 저장하도록 더 구성되는
    분산 네트워크.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 네트워크는,
    상기 실행 서브세트의 노드에 의해, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 상기 유닛 상태의 복구 스냅샷을 정기적으로 생성하고,
    상기 실행 서브세트의 다수의 노드에 의해, 상기 복구 스냅샷을 인증하도록 구성되는
    분산 네트워크.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 네트워크는 적어도 후속 복구 스냅샷이 생성될 때까지 상기 복구 스냅샷을 지속적으로 저장하도록 구성되는
    분산 네트워크.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    상기 네트워크는 제1 레이트로 상기 판독 스냅샷을 수행하고 제2 레이트로 상기 복구 스냅샷을 수행하도록 구성되며, 상기 제1 레이트는 상기 제2 레이트보다 높은
    분산 네트워크.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    상기 실행 메시지는 상기 네트워크의 계산 유닛 간에 교환되는 유닛 대 유닛 메시지 및 상기 네트워크의 사용자로부터 수신된 변형 쿼리를 포함하는
    분산 네트워크.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 합의 서브세트의 각각의 노드는 상기 합의 프로토콜을 수행하도록 구성된 합의 구성요소를 포함하고,
    상기 실행 서브세트의 각각의 노드는,
    상기 실행 메시지의 선택을 실행하도록 구성된 실행 구성요소,
    상기 합의 구성요소로부터 상기 실행 메시지의 선택을 수신하고 상기 실행 메시지의 선택을 상기 실행 구성요소에 제공하도록 구성된 메시징 구성요소,
    상기 판독 스냅샷을 관리하고 저장하도록 구성된 상태 관리자 구성요소,
    상기 네트워크의 사용자로부터의 판독 쿼리를 처리하도록 구성된 상태 판독기 구성요소, 및/또는
    상기 네트워크의 사용자로부터의 변형 쿼리를 처리하도록 구성된 인그레스 메시지 핸들러 구성요소를 포함하는
    분산 네트워크.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서,
    상기 네트워크는 증가하는 높이 인덱스(N)를 가진 순차적인 순서로 복수의 처리 루프를 수행하도록 구성되며, N은 증가하는 정수이며,
    상기 복수의 처리 루프는,
    제1 루프 단계에서, 상기 합의 프로토콜을 수행하고,
    제2 루프 단계에서, 상기 실행 메시지의 선택을 개별적으로 실행하며,
    제3 루프 단계에서, 상기 판독 스냅샷을 생성하고,
    상기 높이 인덱스(N)를 가진 상기 처리 루프 동안 이전 높이 인덱스, 특히 이전 높이 인덱스(N-1)의 끝에서 생성된 상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 구성되는
    분산 네트워크.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 합의 프로토콜은,
    현재의 실행 메시지 세트로부터 상기 실행 메시지를 수신하고 처리하며,
    사전정의된 합의 메커니즘에 따라 상기 실행 메시지로부터 입력 블록의 큐를 생성하며,
    상기 입력 블록의 큐를 메시징 프로토콜에 제공하도록 구성되고,
    상기 메시징 프로토콜은 상기 입력 블록을 처리하고 실행을 위해 상기 입력 블록의 실행 메시지를 스케줄링하도록 구성되는
    분산 네트워크.
  18. 제17항에 있어서,
    상기 메시징 프로토콜은 상기 합의 프로토콜로부터 수신된 상기 입력 블록에 의해 클로킹되도록 구성되고,
    상기 상태 관리자 구성요소는 상기 입력 블록의 처리 경계에서 상기 판독 스냅샷을 생성하도록 구성되는
    분산 네트워크.
  19. 제17항 또는 제18항에 있어서,
    상기 합의 프로토콜은 상기 입력 블록에 하나 이상의 실행 파라미터를 추가하도록 더 구성되고,
    상기 실행 파라미터는,
    랜덤 시드,
    지정된 실행 시간, 및
    높이 인덱스
    로 구성된 그룹으로부터 선택되는
    분산 네트워크.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서,
    상기 분산 네트워크는 복수의 서브넷을 포함하고,
    상기 복수의 노드 각각은 상기 복수의 서브넷 중 하나에 할당되며,
    상기 복수의 노드 각각은 메인넷 프로토콜 클라이언트 및 서브넷 프로토콜 클라이언트를 실행하도록 구성되고,
    상기 서브넷 프로토콜 클라이언트는,
    상기 합의 프로토콜을 정기적으로 수행하고,
    상기 실행 메시지의 선택을 개별적으로 실행하며,
    상기 판독 스냅샷을 정기적으로 생성하고,
    상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 구성되며,
    상기 메인넷 프로토콜 클라이언트는 상기 복수의 서브넷에 구성 데이터를 배포하도록 구성되는
    분산 네트워크.
  21. 분산 네트워크의 사용자에게 상기 분산 네트워크에 의해 계산된 계산 결과에 대한 액세스를 제공하기 위한 컴퓨터로 구현된 방법으로서,
    상기 분산 네트워크는 복수의 노드를 포함하고,
    상기 방법은,
    상기 복수의 노드 각각에서, 하나 이상의 계산 유닛을 실행하는 단계 - 상기 하나 이상의 계산 유닛 각각은 자체의 유닛 상태를 포함함 - 와,
    상기 복수의 노드의 실행 서브세트에 의해, 결정론적 방식으로 실행 메시지 세트를 개별적으로 실행하여, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태를 변형하는 단계와,
    상기 실행 서브세트의 노드에 의해, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하는 단계와,
    상기 실행 서브세트의 하나 이상의 노드에 의해, 상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  22. 제21항에 있어서,
    상기 복수의 노드의 합의 서브세트에 의해, 상기 실행 메시지 세트 중 현재 세트로부터 실행 메시지의 선택에 대한 합의에 도달하도록 구성된 합의 프로토콜을 정기적으로 수행하는 단계를 더 포함하는
    컴퓨터로 구현된 방법.
  23. 제22항에 있어서,
    상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하는 단계는,
    상기 판독 스냅샷에 대한 계산을 실행하는 단계와,
    상기 계산의 결과를 리턴하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  24. 제22항 또는 제23항에 있어서,
    상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하는 단계는,
    사용자로부터 판독 쿼리를 수신하는 단계와,
    상기 판독 쿼리와 연관된 대응하는 계산 유닛의 유닛 상태를 로드하는 단계와,
    상기 판독 쿼리로 상기 계산 유닛을 실행하는 단계와,
    상기 판독 쿼리의 결과를 리턴하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  25. 제22항 내지 제24항 중 어느 한 항에 있어서,
    상기 판독 스냅샷의 하나 이상의 부분을 인증하여 상기 판독 스냅샷의 하나 이상의 인증된 부분을 생성하는 단계를 더 포함하는
    컴퓨터로 구현된 방법.
  26. 분산 네트워크용 노드로서,
    상기 노드는,
    하나 이상의 계산 유닛을 실행 - 상기 계산 유닛 각각은 자체의 유닛 상태를 포함함 - 하고,
    실행 메시지 세트를 결정론적 방식으로 개별적으로 실행하여, 상기 하나 이상의 계산 유닛의 유닛 상태를 변형하며,
    상기 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하고,
    상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하도록 구성되는
    분산 네트워크용 노드.
  27. 분산 네트워크를 작동시키기 위한 컴퓨터 프로그램 제품으로서,
    상기 분산 네트워크는 복수의 노드를 포함하고, 상기 복수의 노드 각각은 하나 이상의 계산 유닛을 실행하도록 구성되고 상기 계산 유닛 각각은 자체의 유닛 상태를 포함하며, 상기 컴퓨터 프로그램 제품은 프로그램 명령어가 구현된 컴퓨터 판독가능 저장 매체를 포함하며, 상기 프로그램 명령어는 복수의 노드 중 하나 이상에 의해 실행가능하여 상기 복수의 노드 중 하나 이상이 방법을 수행하게 하며, 상기 방법은,
    상기 복수의 노드의 실행 서브세트에 의해, 결정론적 방식으로 실행 메시지 세트를 개별적으로 실행하여, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태를 변형하는 단계와,
    상기 실행 서브세트의 노드에 의해, 상기 실행 서브세트의 상기 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하는 단계와,
    상기 실행 서브세트의 하나 이상의 노드에 의해, 상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  28. 분산 네트워크의 노드를 작동시키기 위한 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 프로그램 제품은 프로그램 명령어가 구현된 컴퓨터 판독가능 저장 매체를 포함하며, 상기 프로그램 명령어는 상기 노드에 의해 실행가능하여 상기 노드가 방법을 수행하게 하며, 상기 방법은,
    하나 이상의 계산 유닛을 실행하는 단계 - 상기 계산 유닛 각각은 자체의 유닛 상태를 포함함 - 와,
    결정론적 방식으로 실행 메시지 세트를 개별적으로 실행하여, 상기 하나 이상의 계산 유닛의 유닛 상태를 변형하는 단계와,
    상기 하나 이상의 계산 유닛의 유닛 상태의 판독 스냅샷을 정기적으로 생성하는 단계와,
    상기 판독 스냅샷에 대한 액세스를 사용자에게 제공하는 단계를 포함하는
    컴퓨터 프로그램 제품.
KR1020227016548A 2019-10-18 2019-10-18 분산 네트워크의 계산 결과에 대한 판독 액세스 KR20220082898A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2019/078409 WO2021073756A1 (en) 2019-10-18 2019-10-18 Read access for computational results of a distributed network

Publications (1)

Publication Number Publication Date
KR20220082898A true KR20220082898A (ko) 2022-06-17

Family

ID=68296491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227016548A KR20220082898A (ko) 2019-10-18 2019-10-18 분산 네트워크의 계산 결과에 대한 판독 액세스

Country Status (5)

Country Link
US (1) US20220377133A1 (ko)
EP (1) EP4038862A1 (ko)
JP (1) JP2023506115A (ko)
KR (1) KR20220082898A (ko)
WO (1) WO2021073756A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113886495B (zh) * 2021-09-30 2024-05-24 支付宝(杭州)信息技术有限公司 验证区块链数据的方法、装置、电子设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2986164C (en) * 2015-05-26 2021-11-30 T0.Com, Inc. Obfuscation of intent in transactions using cryptographic techniques
US10523421B2 (en) * 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
CN107528882B (zh) * 2017-07-14 2020-12-25 创新先进技术有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备

Also Published As

Publication number Publication date
WO2021073756A1 (en) 2021-04-22
US20220377133A1 (en) 2022-11-24
EP4038862A1 (en) 2022-08-10
JP2023506115A (ja) 2023-02-15

Similar Documents

Publication Publication Date Title
US11222006B2 (en) Methods and apparatus for a distributed database that enables deletion of events
Stevens et al. The first collision for full SHA-1
CN108062672B (zh) 一种基于区块链智能合约的流程调度方法
US11924326B2 (en) Blockchain platform service
Huang et al. Elastic resource allocation against imbalanced transaction assignments in sharding-based permissioned blockchains
CN112347184A (zh) 分叉处理方法以及区块链节点
Huang et al. Denial-of-service threat to Hadoop/YARN clusters with multi-tenancy
US20220383304A1 (en) Distributed network with consensus mechanism
CN113939821A (zh) 用于在工作量证明区块链网络上进行非并行挖掘的系统和方法
Li et al. A survey of state-of-the-art sharding blockchains: Models, components, and attack surfaces
CN113923217B (zh) 一种基于dag的异步拜占庭共识方法及系统
De la Rocha et al. Hierarchical consensus: A horizontal scaling framework for blockchains
KR20220082898A (ko) 분산 네트워크의 계산 결과에 대한 판독 액세스
CN110570309B (zh) 用于更换区块链网络的领导者的方法和系统
US20230291656A1 (en) Operation of a distributed deterministic network
EP4042660B1 (en) Messaging in distributed networks
US20230266994A1 (en) Migration of computational units in distributed networks
CN111984202A (zh) 一种数据处理方法、装置、电子设备和存储介质
WO2019200461A1 (en) Method and system for performing an action requested by a blockchain
Ying et al. A Novel Transaction Processing Model for Sharded Blockchain
Ramezan et al. A Multi-Class Blockchain Services Framework for Communication Networks
Blockchains Elastic Resource Allocation Against Imbalanced Transaction Assignments in Sharding-Based
KR20220079984A (ko) 분산 네트워크에서 리소스 사용에 대한 과금
EP4360032A1 (en) Systems and methods for transaction validation in layer 2

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal