KR102680150B1 - 거래 시스템을 구현하는 네트워크 노드들의 서브세트 내의 컨텍스트 기반 필터링 - Google Patents

거래 시스템을 구현하는 네트워크 노드들의 서브세트 내의 컨텍스트 기반 필터링 Download PDF

Info

Publication number
KR102680150B1
KR102680150B1 KR1020217010877A KR20217010877A KR102680150B1 KR 102680150 B1 KR102680150 B1 KR 102680150B1 KR 1020217010877 A KR1020217010877 A KR 1020217010877A KR 20217010877 A KR20217010877 A KR 20217010877A KR 102680150 B1 KR102680150 B1 KR 102680150B1
Authority
KR
South Korea
Prior art keywords
network
peer
events
subset
network nodes
Prior art date
Application number
KR1020217010877A
Other languages
English (en)
Other versions
KR20210068039A (ko
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 KR20210068039A publication Critical patent/KR20210068039A/ko
Application granted granted Critical
Publication of KR102680150B1 publication Critical patent/KR102680150B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • 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/104Peer-to-peer [P2P] networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Technology Law (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

방법은, P2P 네트워크 내의 제1 네트워크 노드 서브세트에서, 제1 외부 컴퓨팅 장치로부터 수신된 요청에 기반하여, 제1 메시지 타입을 갖는 제1 메시지를 생성하는 단계; 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트들을 상기 P2P 네트워크에 제출하는 단계; 및 상기 제1 이벤트들 내의 타임스탬프에 관한 합의에 도달하는 것을 시도하기 위해 적어도 하나의 방향성 비순환 그래프를 사용하는 단계를 포함한다. 방법은 또한, 제2 네트워크 노드 서브세트에서, 상기 P2P 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트들을 수신하고, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트들에 대해 필터링하는 단계; 및 상기 제2 네트워크 노드 서브세트 중의 하나의 네트워크 노드가, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트를 수신할 때, 상기 페이로드를 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지로 변환하는 단계를 포함한다.

Description

거래 시스템을 구현하는 네트워크 노드들의 서브세트 내의 컨텍스트 기반 필터링
본 출원은, 전체가 본 명세서에 참조로 통합되고, 발명의 명칭이 "CONTEXT BASED FILTERING WITHIN SUBSETS OF NETWORK NODES IMPLEMENTING A TRADING SYSTEM"이고, 2018년 10월 23일자로 출원된 미국 특허 가출원 제62/749,528호(대리인 번호 270.024USPR)에 대한 우선권을 주장한다.
시장과 거래소는, 매수자와 매도인 간의 주식, 통화, 채권, 상품 등의 거래를 위해 사용된다.
피어-투-피어 네트워크에서 통신가능하게 결합된 다수의 네트워크 노드를 포함하는 시스템이 개시된다. 네트워크 노드는 제1 네트워크 노드 서브세트 및 제2 네트워크 노드 서브세트를 포함한다. 제1 네트워크 노드 서브세트는 적어도 제1 외부 컴퓨팅 장치와 인터페이싱하도록 구성된다. 제2 네트워크 노드 서브세트는 적어도 제2 외부 컴퓨팅 장치와 인터페이싱하도록 구성된다. 제1 네트워크 노드 서브세트는 제1 외부 컴퓨팅 장치로부터 수신된 요청에 기반하여 제1 메시지 타입을 갖는 제1 메시지를 생성하도록 구성된다. 제1 네트워크 노드 서브세트는 제1 이벤트를 피어-투-피어 네트워크에 제출하도록 구성되고, 제1 이벤트는 제1 메시지 타입에 기반하는 페이로드(payload)를 갖는다. 네트워크 노드는 제1 이벤트 내의 타임스탬프에 관한 합의(consensus)에 도달하는 것을 시도하기 위해 적어도 하나의 방향성 비순환 그래프(directed acyclic graph; DAG)를 사용하도록 구성된다. 제2 네트워크 노드 서브세트는 피어-투-피어 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트를 수신하고 제1 메시지 타입에 기반하여 페이로드를 갖는 제1 이벤트에 대해 필터링하도록 구성된다. 제2 네트워크 노드 서브세트는, 제1 이벤트가 제1 메시지 타입에 기반하는 페이로드를 갖는 경우 상기 페이로드를, 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지로 변환하도록 구성된다.
방법이 또한, 개시된다. 방법은, 제1 외부 컴퓨팅 장치로부터 수신된 요청에 기반하여, 피어-투-피어 네트워크 내의 제1 네트워크 노드 서브세트에서 제1 메시지 타입을 갖는 제1 메시지를 생성하는 단계를 포함한다. 방법은 또한, 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트를 피어-투-피어 네트워크에 제출하는 단계를 포함한다. 방법은 또한, 제1 이벤트 내의 타임스탬프에 관한 합의(consensus)에 도달하는 것을 시도하기 위해 적어도 하나의 방향성 비순환 그래프(directed acyclic graph; DAG)를 사용하는 단계를 포함한다. 방법은 또한, 제2 네트워크 노드 서브세트에서, 피어-투-피어 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트를 수신하고, 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트에 대해 필터링하는 단계를 포함한다. 방법은 또한, 제2 네트워크 노드 서브세트 중 하나의 노드가, 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트를 수신하는 경우 상기 페이로드를 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지로 변환하는 단계를 포함한다.
도면들은 오로지 실시예를 도시하는 것이며, 따라서 발명의 범위를 제한하는 것이 아님을 유의하면서, 실시예들은 첨부되는 도면을 사용하여 추가적으로 구체적이며 세부적으로 설명될 것이다.
도 1은 컨텍스트 기반 필터링을 수행하는 네트워크 노드 서브세트를 갖는 분산형 거래 시스템의 예시적인 실시예를 도시하는 블록도이다.
도 2a는 컨텍스트 기반 필터링을 수행하는 네트워크 노드 서브세트를 갖는 분산형 거래 시스템 내에서 사용된 네트워크 노드의 예시적인 실시예를 도시하는 블록도이다.
도 2b는 피어-투-피어 네트워크에 의해 수신된 주문을 매칭하는 주문 관리 시스템의 예시적인 실시예를 도시하는 블록도이다.
도 2c는 엔드-사용자 장치로부터 주문을 수신하고 주문을 피어-투-피어 네트워크로 전송하는 클라이언트를 구현하는 컴퓨팅 장치의 예시적인 실시예를 도시하는 블록도이다.
도 3a는 거래 시스템을 구현하는 네트워크 노드 서브세트 내의 컨텍스트 기반 필터링을 위한 예시적인 방법을 도시하는 흐름도이다.
도 3b는 거래 시스템을 구현하는 네트워크 노드 서브세트 내의 컨텍스트 기반 필터링을 위한 다른 예시적인 방법을 도시하는 흐름도이다.
도 4는 본 명세서의 일부 실시예에서 이용될 수 있는 예시적인 컴퓨터 시스템을 도시하는 블록도이다.
통상적인 관례에 따라, 다양하게 설명된 특징들은 축적에 맞게 도시되지는 않지만, 실시예들과 관련된 구체적인 특징들을 강조하도록 도시되었다.
후술할 상세한 설명에서는, 상세한 설명의 일부에 해당하고, 구체적이고 예시적으로 실시예들이 도시되는 첨부된 도면을 참조한다. 하지만, 다른 실시예들이 이용될 수 있고, 논리적, 기계적 및 전기적 변경이 이루어질 수 있음을 이해해야 한다. 또한, 도면과 명세서에 제시된 방법은 개별 단계가 수행될 수 있는 시계열적 순서를 제한하는 것으로 해석되지 않아야 한다. 따라서, 이하의 상세한 설명은 한정하는 것으로 여겨지지 않는다.
본 명세서에서 사용되는 용어 "주문(order)"은, 거래 또는 거래를 개시하기 위한 요청을 설명하는 데이터를 개시하기 위한 요청을 지칭한다. 주문은, 증권, 증권형 토큰(security token), 유틸리티 토큰, 채권, 화폐(가상화폐 또는 명목화폐), 펀드(가령 ETFs(exchange traded funds), 뮤추얼 펀드, 인덱스 펀드, 오픈-엔드 펀드, 클로즈드-엔드 펀드, 하이일드 채권 펀드, 회사채 펀드, 지방채 펀드, 국채 펀드, 채권형 펀드, 머니 마켓 펀드, 밸런스 펀드(balanced fund), 주식형 펀드, 고정 수입형 펀드, 글로벌 펀드, 국제 펀드, 특수 펀드, 인덱스 펀드, 원자재 펀드, 통화 펀드 및/또는 부동산 펀드) 및/또는 다른 자산을 포함하지만 이로서 제한되지 않는 임의의 타입의 자산을 거래하기 위한 요청일 수 있다. 예컨대, 주문은 매수, 매도 및/또는 보류 주문 중 적어도 하나일 수 있다. 예컨대, 주문은 하나 이상의 당사자가 거래를 하기 위한 정보, 가령 주문의 유형(매수, 매도, 보류 등), 거래되는 자산의 표시 및/또는 거래되는 자산의 수량을 포함할 수 있다. 주문은 또한, 선택적 특성, 가령 제한 가격, 중지 가격, 조건부 트리거 요구사항, 주문의 지속기간(예컨대, 유효 시간), 주문이 부분적으로 채워졌는지 여부 등을 나타낼 수 있다.
분산형(decentralized) 거래 시스템은, 엔드 사용자(주문을 입력하는 자)와 주문 관리 시스템 사이의 중개자로서 역할을 하는 노드들의 피어-투-피어 네트워크를 사용하여 구현될 수 있다. 거래 시스템에서 주문 관리 시스템은 주문이 언제 이루어졌는지, 예컨대 주문이 거래 시스템에 수신된 시간에 적어도 부분적으로 기반하여 (주문의 실행을 위한 준비를 함에 있어서) 서로에 대해 주문을 매칭할 수 있다. 선택적으로, 매칭은 또한, 주문이 이루어진 시간에 추가적으로 주문의 속성을 포함하는 다른 기준에 기반하여 발생한다. 전통적인 중앙 집중형 거래 시스템에서, 단일 엔티티는 모든 거래를 수신하고 거래를 쉽게 그리고 시간 순서로 정렬한다. 분산형 거래 시스템에서, 다양한 네트워크 노드로부터 수신된 주문을 시간 순서로 정렬하는 공정한 방식이 매칭 동안에 공정함을 제공하기 위해 바람직하다. 이는 특히, 네트워크 노드들이, 분산형 거래 시스템 내에서 신호들의 전파 지연 및 다른 지연에 있어서 큰 차이를 갖는 광대한 영역에 걸쳐 분산되어 있는 경우 중요하다. 따라서, 트레이딩 시스템에서 무신뢰(trustless), 합의 기반 공정한 순서화를 구현하는 것이 바람직할 수 있다. 추가로, 예컨대 규제 목적을 위해, 거래 시스템에서 거래의 감사가능한(auditable) 기록을 유지하는 것이 바람직할 수 있다.
분산형 원장은, 분산형 거래 시스템에서 거래의 감사가능한 기록을 유지하거나 및/또는 합의 기반의 공정한 순서화를 제공하는데 사용될 수 있다. 본 명세서에서 사용되는 "합의 기반 공정한 순서화(ordering)"는, 노드들의 네트워크 내에서 이벤트들의 시간적 순서에 대한 노드들의 네트워크 내에서의 일정 수준의 합의를 지칭한다. 분산형 원장(distributed ledger)은 다수의 상호접속된 네트워크 노드들에 걸쳐 분산된 전자 원장이며, 네트워크 노드들 중 둘 이상은 원장의 사본을 저장할 수 있다. 예컨대, 분산형 원장은 DAG, 예컨대 IOTA 또는 해시그래프(hashgraph)를 사용하여 구현될 수 있다. 합의는 작업에 대한 증명(proof-of-work) 없이 DAG에서 도달될 수 있고, 지분의 증명(proof-of-stake)을 사용할 수 있다.
해시그래프는 피어-투-피어(P2P) 네트워크의 네트워크 노드들이 서로와 정보를 교환하기 위한 가십 프로토콜(gossip protocol)을 사용하는 플랫폼/라이브러리이다. 즉, 정보(가십)는, 각각의 네트워크 노드가 무작위로 다른 네트워크 노드를 반복적으로 선택하고 그들이 인지한 모든 것을 알려줌으로써 전파된다. 이러한 정보의 교환은, 거래에 관한 정보(가십)만을 공유하는 것에 추가로 네트워크 노드들이 또한, 가십 자체의 이력(가십에 관한 가십)에 관한 정보를 공유하는, '가십에 관한 가십(gossip about gossip)' 프로토콜을 사용하여 해시그래프 데이터 구조(즉, 누가 누구에게 가십을 하였는지 및 어떤 순서로 하였는지를 기록하는 데이터 구조)를 자동으로 확립한다.
구체적으로, 거래("메시지"나 "페이로드"로도 지칭됨)를 노드들 사이에서 공유하는 것("가십")은 아래와 같이 구현될 수 있다. 노드가 다른 노드로부터 거래를 수신할 때, 노드는 그것이 언제 발생했는지의 기록을 생성할 수 있다. 이후, 네트워크 노드는 다른 노드로 거래를 (예컨대, 가십 명령(gossip mandate)으로서) 전달할 뿐만 아니라, 노드는 또한, 언제 지금 전달하는 거래가 수신되었는지를 특정하는 기록을 생성하고 외부로 발설할 것이다. 네트워크 노드는 "온전한(naked)" 거래를 발설하는 대신에 "이벤트"로 지칭되는 데이터 구조에 임의의 수의 거래를 집어넣을 것이다. 거래 페이로드에 추가로, 노드는 노드가 생성한 2개의 해시: (1) 네트워크 노드가 다른 노드로부터 수신한 가장 최근의 이벤트의 해시; 및 (2) 네트워크 노드가 수신한 가장 최근의 이벤트의 해시를 그것이 생성한 임의의 이벤트에 추가할 수 있다. 노드는 또한, (이벤트가 언제 피어-투-피어 네트워크에 제출되는지의) 타임스탬프를 추가하고, 그것을 다른 노드에 발설(gossip out)하기 전에 완전한 이벤트 구조에 디지털 서명을 할 수 있다.
이러한 가십 프로세스는 고도로 조직화되고, 문서화되며, 효율적이다. 2개의 해시는 새로운 이벤트의 모든 수신자가, 내부의 거래에 대해 다른 노드들이 알고 있는 것들을 재구성하는 것을 허용한다. 이는 네트워크 노드가 어떤 거래가 발생했고, 거래가 언제 발생했는지를 빠르게 알 수 있도록 한다. 이러한 정보는 노드들의 P2P 네트워크에서 이벤트들의 시간적 순서에 관한 합의에 매우 빠르게 도달하는데 사용될 수 있다.
(노드들의 P2P 네트워크 내의) 모든 네트워크 노드가 해시그래프의 동일한 사본을 갖는 경우, 거래의 시간적 순서는 해시그래프에 기반하여 임의의 결정론적 함수(deterministic function)를 사용하여 결정될 수 있다. 해시그래프의 사본이 (예컨대, 최근의 거래(들)가 모든 네트워크 노드에 의해 아직 수신되지 않아서) 상이한 경우, 합의는 가상 투표를 사용하여 노드들의 P2P 네트워크에 의해 도달될 수 있다. 모든 네트워크 노드는 (예컨대, 거래의 순서화와 관련하여) 어떻게 다른 네트워크 노드가 투표할 지를 (해시그래프에 기반하여) 계산/시뮬레이션할 수 있기 때문에, 네트워크 노드는 거래의 타임스탬프에 대해 실제로 투표할 필요가 없다. 즉, 투표는 가상이다. 따라서, 네트워크 노드는 가상 투표로 일련의 선택을 사용하여 거래의 타임스탬프에 기반하여 거래의 시간적 순서를 결정할 수 있다. 예컨대, 가상 투표는 하나 이상의 아웃라이어 표들을 폐기하는 것 및/또는 노드들의 P2P 네트워크 내의 이벤트의 타임스탬프의 중간값(median)을 취하는 것을 포함할 수 있다. 비록 타임스탬프의 중간값이 선호되지만, 타임스탬프의 평균이나 높은/낮은 중간점이 사용될 수 있다. 본 명세서에서 사용되는 용어 "합의(consensus)"는 적어도 압도적 과반(supermajority)((2/3)+1), 단순 과반((1/2)+1), 또는 네트워크 노드들에서 활성인 네트워크 노드들의 다른 미리정의된 퍼센티지에 의한 합의를 가리킬 수 있다. 즉, 용어 "합의"는 노드들의 네트워크에서 네트워크 노드들의 100%를 요구하는 것이 아니다.
예컨대, 본 명세서에서 참조되는 해시그래프는, 본 명세서에 참조로 통합되는 그 명칭이 "THE SWIRLDS HASHGRAPH CONSENSUS ALGORITHM: FAIR, FAST, BYZANTINE FAULT TOLERANCE"이고, 2016년 5월 31자로 Leemon Baird가 작성한 Swirlds Tech Report(http://www.swirlds.com/downloads/SWIRLDS-TR-2016-01.pdf에서 이용가능함)에 기술되는 바와 같이 동작한다.
DAG(예컨대, 해시그래프)는, 노드들의 P2P 네트워크를 사용하여 구현된 분산형 거래 시스템에서 클라이언트로부터 공정한 순서화(예컨대, 수신된 매수/매도/보류 주문 및 (주문 관리 시스템)으로부터의 (선택적 실행 리포트)의 순서화)를 제공하기 위해 사용될 수 있다. 예컨대, DAG를 구현하는 네트워크 노드는, 시장 거래 요청(주문)이 분산형 거래 시스템 내의 다양한 네트워크 노드들에서 수신된 시간적 순서 (및/또는 주문의 타임스탬프)에 대한 합의에 도달하기 위해 함께 작업할 수 있다. 예컨대, 네트워크 노드는 이후 순서화된 데이터를 생성하고 서로 간의 순서화된 데이터를 검증(verify)할 수 있다. 순서화된 데이터는 이후 주문을 서로 매칭 (및 선택적으로 실행)하기 위해 주문 관리 시스템에 의해 사용될 수 있다.
예컨대, 제1 네트워크 노드 서브세트는 클라이언트(들)(예컨대, 웹 클라이언트(들))로부터 새로운 주문을 수신하고 주문을 피어-투-피어 네트워크에 제출하는 거래 서비스 노드들이다. 피어-투-피어 네트워크는 새로운 주문이 수신된 시간적 순서 및/또는 피어-투-피어 네트워크에서의 타임스탬프의 수신에 관한 합의에 도달할 수 있다. 게이트웨이 노드는 피어-투-피어 네트워크로부터 출력된 새로운 주문에 대해 컨텍스트적으로 필터링하고 이들을 주문 관리 시스템에 전달하는 제2 네트워크 노드 서브세트이다. 게이트웨이 노드는 또한, 주문 관리 시스템으로부터 주문 실행 리포트를 수신하고, 이를 피어-투-피어 네트워크에 제출할 수 있다. 거래 서비스 노드는 실행 리포트에 대해 컨텍스트적으로 필터링 및 (이를 클라이언트에 전달)할 수 있다. 바람직하게는, 제1 네트워크 노드 서브세트는 제2 네트워크 노드 서브세트와 상호 배타적이지만, (적어도 하나의 거래 서비스 노드가 게이트웨이 노드이기도 한) 다른 구성이 가능하다.
용어 "선행 매매(front running)" 및 이의 변형들은 대형 진행 거래에 대한 비공개 지식으로부터 이익을 취하기 위해 새로운 주문을 넣는 것을 지칭한다. 공정한 순서화가 없다면, 분산형 주문 시스템은, 네트워크 노드들 중 적어도 하나가 (예컨대, 프로세싱 로드, 네트워크 혼잡, 하드웨어 오작동 등에 기반하여) 더 빠르게 실행되거나 및/또는 피어들보다 주문 관리 시스템에 지리적으로 더 인접한 경우 선행 매매에 취약해질 수 있다. 본 명세서에 설명된 분산형 거래 시스템은 (예컨대, 주문이 노드들의 네트워크에서 수신된 시간과 관련하여) 새로운 주문의 공정한 순서화를 제공하기 때문에, 선행 매매를 방지하는 이점을 갖는다.
본 명세서에 설명된 분산형 거래 시스템의 다른 이점은, DAG가 새로운 주문 (및 선택적으로 실행 리포트)가 DAG에서 수신된 시간 및/또는 시간적 순서에 관한 합의에 도달하기 때문에 거래들의 감사가능한 기록이 자동으로 생성된다. 이 데이터는 시스템의 사기(fraud)를 감소시키고, (예컨대, 증권거래위원회(SEC) 및/또는 금융 산업 규제 기관(FINRA)에 의한) 다양한 규제사항을 준수하는 것을 돕는데 사용될 수 있다.
본 시스템과 방법은 거래 시스템에 관하여 설명되지만, 본 시스템과 방법은, 무신뢰(trustless), 합의 기반 공정한 순서화를 제공하고, 선택적으로 분산형 시스템에서 거래들의 감사가능한 기록을 유지하기 위해 다른 컨텍스트에서 사용될 수 있음을 유의해야 한다.
도 1은 컨텍스트 기반 필터링을 수행하는 네트워크 노드 서브세트(102-104)를 갖는 분산형 거래 시스템(100)의 예시적인 실시예를 도시하는 블록도이다. 분산형 거래 시스템(100)은 다수의 네트워크 노드(가령, N개의 거래 서비스 노드(102), M개의 게이트웨이 노드(103) 및 임의의 수량의 선택적인 옵저버 노드(104A-C)), 적어도 하나의 클라이언트(110), 및 적어도 하나의 주문 관리 시스템(112)을 포함한다. 분산형 거래 시스템(100)은 임의의 수(N)의 거래 서비스 노드(102) 및 임의의 수(M)의 게이트웨이 노드(103)를 포함할 수 있다(여기서 M은 N과 동일하거나 동일하지 않을 수 있다).
실시예에서, 네트워크 노드(102)는 분산형 원장을 구현하는 피어-투-피어 네트워크(114)에서 서로 통신가능하게 결합된다. 바람직하게는, 피어-투-피어 네트워크(114)는 사설 원장(private ledger)을 구현하지만(예컨대, 해시그래프 라이브러리를 구현하는 사설 피어-투-피어 네트워크(114)), 공개 원장(public ledger)이 사용되는 다른 구성(예컨대, 해시그래프 플랫폼/라이브러리를 구현하는 공개 Hedera 피어-투-피어 네트워크(114))이 가능하다. 네트워크 노드(102-104)는 피어-투-피어 네트워크(114)에 참여할 때 추가적인 보안 프로토콜, 예컨대 암호, 암호화 키 등의 교환을 구현할 수 있다.
실시예에서, 네트워크 노드(102-104), 클라이언트(110)를 구현하는 컴퓨팅 장치 및/또는 다른 주문 관리 시스템(112)은 임의의 모바일 컴퓨팅 장치, 가령 휴대전화, 태블릿 컴퓨터, 휴대용 미디어 장치, 휴대용 게임 장치, 노트북 컴퓨터, 차량 기반 컴퓨터 등이거나, 또는 비-모바일 장치, 가령 전용 단말, 공용 단말, 키오스크, 서버 또는 데스크탑 컴퓨터일 수 있다. 네트워크 노드들(102-104) 각각과, 클라이언트(110)를 구현하는 외부 컴퓨팅 장치 및/또는 주문 관리 시스템(112)은 단일 물리적 하우징 또는 다수의 물리적 하우징 내에 하우징될 수 있다.
실시예에서, 네트워크 노드(102-104) 각각과, 클라이언트(110)를 구현하는 외부 컴퓨팅 장치 및/또는 주문 관리 시스템(112)은 유사한 컴포넌트를 가질 수 있다. 실시예에서, 네트워크 노드(102-104) 각각과, 클라이언트(110)를 구현하는 외부 컴퓨팅 장치 및/또는 주문 관리 시스템(112)은, 적어도 하나의 메모리, 적어도 하나의 프로세서, 적어도 하나의 선택적 디스플레이 장치, 적어도 하나의 선택적 입력 장치, 적어도 하나의 선택적 네트워크 인터페이스 및 적어도 하나의 전원을 포함한다.
피어-투-피어 네트워크(114)의 네트워크 노드들(102-104)은, 적어도 하나의 네트워크 노드(102-104)에 저장된 적어도 하나의 해시그래프 데이터 구조를 구축하기 위한 정보를 공유할 수 있다(일부 구성에서, 별도의 해시그래프 데이터 구조가 생성되고 네트워크 노드(102-104) 각각에 선택적으로 저장된다). 해시그래프 데이터 구조(들)은, 피어-투-피어 네트워크(114)에서 네트워크 노드(102-104)에 의해 형성된 합의에 기반하여 피어-투-피어 네트워크(114)에서 새로운 주문이 수신된 시간적 순서의 기록으로서의 역할을 할 수 있다. 피어-투-피어 네트워크(114)에서의 네트워크 노드들(102-104)은 각각 합의에 도달하기 위한 기능을 포함하는 해시그래프 라이브러리를 구현할 수 있다. 추가로, 네트워크 노드들(102-104)은 또한, 네트워크 노드(102-104)의 각 타입의 특정 기능과 관련된 이벤트들 내의 페이로드를 신속히 식별하기 위해, 네트워크 노드(102-104) 사이에 전달된 이벤트를 컨텍스트적으로 필터링하도록 구성될 수 있다.
실시예에서, 네트워크 노드(102-104)는 네트워크(106)를 사용하여 통신가능하게 결합된다. 실시예에서, 유선 및 무선 네트워크의 임의의 조합이 네트워크 노드(102-104)를 함께 결합하는데 사용될 수 있다. 실시예에서, 네트워크 노드(102-104)는 적어도 하나의 로컬 영역 네트워크(LAN), 적어도 하나의 광대역 네트워크(WAN) 또는 인터넷 중 적어도 하나를 통해 통신가능하게 결합된다. 실시예에서, 로컬 영역 네트워크, 광대역 네트워크 및 인터넷의 임의의 조합이 네트워크 노드(102-104)를 함께 결합하는데 사용된다. 피어-투-피어 네트워크(114)의 네트워크 노드(102-104)는 전세계에 걸쳐 물리적으로 분산될 수 있음을 유의해야 한다.
클라이언트(110)(예컨대, 웹 클라이언트)는 컴퓨팅 장치 상에서 실행되는 하나 이상의 프로세서에 의해 실행되는 명령어 세트일 수 있다. 클라이언트(110)는 엔드 사용자 장치, 예컨대 모바일 컴퓨팅 장치 및/또는 비-모바일 장치와 통신할 수 있다. 클라이언트(110)는 주문을 입력하기 위한 사용자 인터페이스를 사용자에게 제시할 수 있다. 사용자 인터페이스는 주문의 유형(매수, 매도, 보류 등), 자산 식별자(예컨대, CUSIP(Committee on Uniform Securities Identification Procedures) 번호, 티커 심볼 등), 거래되는 자산의 수량, 제한 가격, 정지 가격, 조건부 트리거링 요구사항, 주문의 지속시간(예컨대, 유효 시간), 및/또는 주문이 부분적으로 채워졌는지를 나타내는 필드들을 포함할 수 있다. 사용자는 새로운 주문 요청에 관한 관련 정보(예컨대, 주문 속성)을 입력하기 위해 클라이언트에 의해 제시된 사용자 인터페이스와 상호작용할 수 있다.
실시예에서, 클라이언트(110)는, 예컨대 네트워크(미도시)를 통해 적어도 하나의 거래 서비스 노드(102)에 통신가능하게 결합된 제1 외부 컴퓨팅 장치 상에 구현된다. 선택적으로, 클라이언트(110)는 제1 인터페이스(108)를 통해 적어도 하나의 거래 서비스 노드(102)와 통신한다. 제1 인터페이스(108)는 데이터, 예컨대 매체, VPN, WAN, 링크를 송신하는데 사용되는 통신 계층(예컨대, 네트워크 계층 및/또는 물리적인 계층)일 수 있다. 제1 인터페이스(108)는, 거래 서비스 노드(102)에서 (프로세서 상에) 실행되거나 및/또는 클라이언트(110)의 일부로서 명령어를 포함할 수 있다. 실시예에서, 제1 인터페이스(108)는 어떻게 클라이언트(110)가 거래 서비스 노드(102)와 통신하는지와 관련된 함수들의 라이브러리(예컨대, 애플리케이션 프로그래밍 인터페이스)를 이용할 수 있다. 예컨대, 라이브러리는 거래 서비스 노드(102) 상에서 또는 클라이언트(110)의 일부로서 실행될 수 있다. 실시예에서, 제1 인터페이스(108)는, 전송 세션(transport session), 예컨대 TLS(Transport Layer Security), 웹 소켓 또는 HTTPS(Hyper Text Transfer Protocol Secure) 세션을 개시, 사용 및/또는 종료하는 명령어를 포함할 수 있다.
클라이언트(110)는 (사용자로부터의 입력에 기반하여 생성되는) 새로운 주문 요청을, 예컨대 제1 인터페이스(102)를 통해 거래 서비스 노드(102) 중 하나로 전송할 수 있다. (가령, 시장 타이밍이 사용자에게 중요한 경우의) 실시예에서, 각각의 새로운 주문 요청은, 클라이언트(110)로부터 분산형 거래 시스템(100) 내에서 거래 서비스 노드(102) 중 하나로 즉시 전송될 수 있다. 대안으로, 새로운 주문 요청은 클라이언트(110)로부터 거래 서비스 노드(102) 중 하나로 일괄적으로 전송될 수 있다.
거래 서비스 노드(102)는, 예컨대 브로커-딜러, 수탁자(custodian), 또는 임의의 다른 타입의 금융 서비스 엔티티에 의해 또는 그를 위하여 소유 및/또는 동작되는 피어-투-피어 네트워크(114) 내의 제1 컴퓨팅 장치 서브세트일 수 있다. 거래 서비스 노드(102)는, 예컨대 선택적 제1 인터페이스(108)를 통해 클라이언트(110)로부터 새로운 주문 요청을 수신하도록 구성될 수 있다. 새로운 주문 요청을 수신하면, 거래 서비스 노드(102)는 새로운 주문 요청에 대한 프로세싱을 수행하도록 구성될 수 있다. 실시예에서, 프로세싱은 클라이언트(110)로부터의 새로운 주문 요청으로부터 새로운 주문 단일 메시지를 생성하는 것을 포함한다. 실시예에서, 새로운 주문 요청은 임의의 적절한 포맷으로 수신될 수 있다. 실시예에서, 새로운 주문 단일 메시지는, 제1 포맷, 예컨대 FIX(Financial Information eXchange) 메시지의 시리얼화된 버전으로 모델링된 JSON(JavaScript Object Notation)으로 생성될 수 있다.
거래 서비스 노드(102)는, 예컨대 피어-투-피어 네트워크(114)에 제출된 (이벤트 내의) 새로운 주문 단일 메시지의 타임스탬프에 관한 합의를 형성하기 위해 피어-투-피어 네트워크(114)에 제출된 이벤트 내의 페이로드로서 새로운 주문 단일 메시지를 삽입하도록 구성될 수 있다. 따라서, 실시예에서 이벤트 내의 페이로드는 FIX 새로운 주문 단일 메시지의 JSON 표현일 수 있다.
실시예에서, 이벤트를 피어-투-피어 네트워크(114)에 제출하는 것은, 거래 서비스 노드(102)가 (피어-투-피어 네트워크(114)의 네트워크 노드(102-104) 상에서 실행되는) 해시그래프 라이브러리 내의 제출 함수로 새로운 주문 단일 메시지를 전달하는 것을 포함할 수 있다. 일단 호출되면, 제출 함수는 거래 서비스 노드(102)가, 피어-투-피어 네트워크(114) 내의 다른 네트워크 노드(102-104)로 (페이로드로서 새로운 주문 단일 메시지를 갖는) 이벤트를 전송하도록 야기할 수 있다. 이벤트는 (1) 다른 노드(102-104)로부터 수신된 주문 서비스 노드(102)의 가장 최근의 이벤트의 해시; 및 (2) 주문 서비스 노드(102)가 생성한 가장 최근의 이벤트의 해시를 포함할 수 있다. 이벤트는 또한, 피어-투-피어 네트워크(114)로의 제출의 타임스탬프 및/또는 디지털 서명을 포함할 수 있다.
피어-투-피어 네트워크(114) 내의 각각의 네트워크 노드(102-104)가 이벤트를 수신함에 따라, 수신하는 네트워크 노드(102-104)에 저장된 해시그래프 데이터는 이벤트에 기반하여 업데이트된다. 가상 투표에 후속하여 수신 노드(102-104)에서 해시그래프 라이브러리는 하기의 인수(argument) 중 하나 이상으로 반환 거래 함수(예컨대, handleTransaction())를 호출할 수 있다: (1) 이벤트 내의 페이로드 (또는 페이로드로부터 유도된 데이터); (2) 이벤트 내의 타임스탬프에 대해 (피어-투-피어 네트워크(114)에 의해) 합의가 도달되었는지를 나타내는 불리안(Boolean) 인수(예컨대, isConsensus flag); (3) 이벤트로부터의 타임스탬프; (4) 이벤트 ID; 및/또는 (5) 어드레스. 반환 거래 함수(예컨대, handleTransaction())는 피어-투-피어 네트워크(114)에서의 각각의 네트워크 노드(102-104) 상에서 해시그래프 라이브러리로부터 분리된 애플리케이션에서 구현될 수 있다. 어떻게 구현되는지에 따라, 반환 거래 함수(예컨대, handleTransaction())가 호출된 네트워크 노드(102-104)는 이벤트의 페이로드를 상이하게 프로세싱할 수 있다. 예컨대, 네트워크 노드(102-104)는 하기에 설명되는 것처럼, 특정 타입(들)의 페이로드(들)을 갖지만 다른 것들은 갖지 않는 이벤트에 대해 컨텍스트적으로 필터링할 수 있다.
게이트웨이 노드(103)는, 예컨대 브로커-딜러, 수탁자, 또는 임의의 다른 타입의 금융 서비스 엔티티에 의해 또는 그를 위하여 소유 및/또는 동작되는 피어-투-피어 네트워크(114) 내의 제2 컴퓨팅 장치 서브세트일 수 있다. 이들은 피어-투-피어 네트워크(114)의 일부이기 때문에, 게이트웨이 노드(103)는 피어-투-피어 네트워크(114)에 제출된 이벤트를 수신하도록 구성될 수 있다. 게이트웨이 노드(103)는 상이한 타입의 페이로드를 포함하는 이벤트를 수신할 수 있지만, 모든 타입의 페이로드 중 하나의 서브세트를 갖는 이벤트에 대해서만 컨텍스트적으로 필터링할 수 있다. 실시예에서, 피어-투-피어 네트워크(114)로부터 출력되고 피어-투-피어 네트워크(114)에 제출된 이벤트 내의 페이로드의 타입은 새로운 주문 단일 메시지, 실행 리포트, 주문 취소 요청 및/또는 주문 상태 요청을 포함한다(다만, 이로서 제한되지 않는다).
본 명세서에서 사용되는 컨텍스트적 필터링(contextual filtering)은 피어-투-피어 네트워크(114)로부터 수신된 이벤트 내의 페이로드를 (네트워크 노드(102-104) 중 하나에 의해) 식별, 선택, 결정, 유도, 조사, 확인, 액세싱, 해소, 선택, 분리 및/또는 그 외의 프로세싱하는 것을 지칭한다. 실시예에서, 게이트웨이 노드(103)는, (피어-투-피어 네트워크(114)에 제출된 이벤트 내의) 새로운 주문 단일 메시지 페이로드에 대해 컨텍스트적으로 필터링할 수 있지만, 실행 리포트 페이로드에 대해서는 필터링하지 않는다. 대안으로, 게이트웨이 노드(103)는 새로운 주문 단일 메시지 페이로드, 주문 취소 요청 페이로드, 및 주문 상태 요청 페이로드를 갖는 이벤트에 대해 컨텍스트적으로 필터링할 수 있지만, 다른 타입의 페이로드(예컨대, 실행 리포트 페이로드)에 대해서는 필터링하지 않는다. 선택적으로, 게이트웨이 노드(103)는 또한, 합의가 이벤트 내의 타임스탬프에 대해 도달되었는지, 예컨대, 수신된 이벤트 내의 isConsensus 플래그가 참(true)인지에 기반하여 이벤트들을 컨텍스트적으로 필터링할 수 있다.
페이로드 타입에 기반한 컨텍스트적 필터링은, (수신된 이벤트 내의 페이로드 또는) 수신된 이벤트에 포함된 타입 필드에 기반하여 수행될 수 있다. 실시예에서, 게이트웨이 노드(103)는, 페이로드 또는 이벤트 내의 필드가 페이로드를 새로운 주문 단일 메시지로 식별한다고 결정하는 것에 응답하여 추가적인 프로세싱을 위해 새로운 주문 단일 메시지 페이로드에 대해 컨텍스트적으로 필터링(예컨대, 식별)할 수 있다. 즉, 게이트웨이 노드(103)는 페이로드 타입을 결정하기 위해 컨텍스트적 필터링 동안에 이벤트 페이로드의 컨텐츠를 검사/분석/해석할 수 있다.
이벤트의 페이로드 (또는 이벤트 내의 페이로드)가 네트워크 노드(102-104)에 대한 정확한 타입인 경우 (및 선택적으로 타임스탬프에 대한 합의가 도달한 경우) 네트워크 노드(102-104) 내의 반환 거래 함수는 페이로드를 더 프로세싱할 수 있다. 실시예에서, 게이트웨이 노드(103)가 새로운 주문 단일 메시지 페이로드를 갖는 이벤트 및 (선택적으로 합의가 도달된 타임스탬프)를 수신하는 경우, 게이트웨이 노드(103)는 새로운 주문 단일 메시지 페이로드를 제2 포맷(예컨대, FIX)으로 변환하고, 예컨대, FIX 세션에서 그것을 주문 관리 시스템(112)에 전송하도록 구성될 수 있다.
게이트웨이 노드(103)는, (피어-투-피어 네트워크(114)로부터) 컨텍스트적으로 필터링하지 않는 페이로드를 갖고, (그리고 선택적으로 합의에 이르지 않은 타임스탬프를 갖는) 이벤트를 수신할 수 있음을 유의해야 한다. 컨텍스트적으로 필터링하지 않는 페이로드를 갖거나 (또는, 선택적으로 합의에 이르지 않은 타임스탬프를 갖는) 이벤트를 수신하면, 게이트웨이 노드(103) 내의 반환 거래 함수는, 해시그래프 라이브러리가 이벤트를 (가십 프로토콜에 의해 표시되는) 추가 노드들(102-104)에 전달할 수 있을 지라도, 추가적인 행위를 취하지 않을 수 있다.
게이트웨이 노드(103)는, 주문 관리 시스템(112)으로 연결하는 액터 싱글턴(actor singleton)(게이트웨이 노드(103) 중 하나에서 실행되는 서비스 상의 단일 액티브 실행 스레드)을 지정하는 클러스터링 소프트웨어(예컨대, Akka 라이브러리)를 추가적으로 실행할 수 있다. (액터 싱글턴을 실행하는) 게이트웨이 노드(103)의 실행이 중단되는 경우, 클러스터링 소프트웨어는 새로운 액터 싱글턴이 실행될 수 있는 새로운 게이트웨이 노드(103)를 자동으로 지정할 수 있다. FIX 프로토콜은 시퀀스 번호를 포함한 실행 상태에 관한 메타데이터를 저장할 수 있어서 FIX 세션은 새로운 액터 싱글턴 상에서 복원될 수 있다. 실시예에서, 게이트웨이 노드(103) 중 적어도 하나(예컨대, 전부)는 FIX 세션 메타데이터를 저장하는 데이터베이스(미도시)와 통신할 수 있다. 실시예에서, 분산형 거래 시스템(100)은 리던던시(redundancy)를 위해 3개의 게이트웨이 노드(103)의 클러스터를 포함할 수 있다. 또한, 한번에 오로지 하나의 액터 싱글턴이 주문 관리 시스템(112)과 통신할 지라도 (액터 싱글턴 스레드를 실행하지 않는) 다른 게이트웨이 노드(103)는 피어-투-피어 네트워크(114) 내의 다른 네트워크 노드들(102-104)과의 합의에 도달하는데 여전히 참여할 수 있다.
실시예에서, 주문 관리 시스템(112)은 적어도 하나의 게이트웨이 노드(103)에 통신가능하게 결합된다. 선택적으로, 주문 관리 시스템(112)은 제2 인터페이스(109)를 통해 적어도 하나의 게이트웨이 노드(103)와 통신할 수 있다. 제2 인터페이스(109)는 예컨대 매체, VPN, WAN, Link와 같은 데이터를 전송하는데 사용되는 통신 계층(예컨대, 네트워크 계층 및/또는 물리적 계층)일 수 있다. 제2 인터페이스(109)는 게이트웨이 노드(103) 및/또는 주문 관리 시스템(112)에서 (프로세서 상에서) 실행되는 명령어를 포함할 수 있다. 실시예에서, 적어도 하나의 게이트웨이 노드(103)는 제1 포맷(예컨대, JSON 포맷)인 새로운 주문 단일 메시지 페이로드를 갖는 이벤트를 수신할 수 있고, 페이로드를 제2 포맷(예컨대, FIX 포맷)으로 변환할 수 있다. FIX 프로토콜은 증권 거래 및 시장에 관한 실시간의 정보 교환을 위해 사용된다. 실시예에서, 제2 인터페이스(109)는 전송 세션, 예컨대 FIX 세션을 개시, 사용 및/또는 종료하는 명령어를 포함할 수 있다.
주문 관리 시스템(112)은 주문서(order book)를 유지할 수 있다. 본 명세서에서 사용되는 용어 "주문서"는 주문의 집합을 지칭한다. 주문서는 메모리, 예컨대 하나 이상의 디스크 드라이브, 플래시 드라이브, 하나 이상의 데이터베이스, 하나 이상의 표, 하나 이상의 파일, 로컬 캐시 메모리, 프로세서 캐시 메모리, 관계형 데이터베이스 및/또는 플랫 데이터베이스 등에 저장될 수 있다. 주문서의 주문은 거래 실행을 위해 함께 매칭될 수 있다.
실시예에서, 유선 및 무선 네트워크의 임의의 조합(미도시)이 주문 관리 시스템(112)을 적어도 하나의 게이트웨이 노드(103)에 통신가능하게 결합하는데 사용될 수 있다. 실시예에서, 주문 관리 시스템(112)은 적어도 하나의 로컬 영역 네트워크(LAN), 적어도 하나의 광대역 네트워크(WAN) 또는 인터넷 중 적어도 하나를 통해 적어도 하나의 게이트웨이 노드(103)에 통신가능하게 결합된다. 선택적으로, 임의의 수량의 중개자 장치가 주문 관리 시스템(112)과, 통신가능하게 결합되는 게이트웨이 노드(103) 사이의 통신 경로에 배치될 수 있고, 중개자 장치(들)는 주문 관리 시스템(112) 및 게이트웨이 노드(103) 사이의 메시지(예컨대, FIX 메시지)의 전달, 릴레이 및/또는 라우팅을 수행한다. 주문 관리 시스템(112)은 피어-투-피어 네트워크(114)에서 다수의 게이트웨이 노드(103)에 통신가능하게 결합될 수 있다.
주문 관리 시스템(112)은 (예컨대, FIX 프로토콜에 따라) 적어도 하나의 게이트웨이 노드(103)로부터 새로운 주문 단일 메시지를 수신하도록 구성될 수 있다. 새로운 주문 단일 메시지를 수신하면, 주문 관리 시스템(112)은, 주문의 타입(매수, 매도, 보류 등), 자산 식별자(예컨대, CUSIP 번호, 티커 심볼 등), 거래될 자산의 수량, 제한 가격, 정지 가격, 조건부 트리거링 요구사항, 거래의 지속시간(예컨대, 유효시간) 및/또는 주문이 부분적으로 채워졌는지 여부에 기초하여 주문을 (서로에 대해) 매칭할 수 있다. 주문이 성공적으로 매칭된다면, 주문 관리 시스템(112)은 새로운 주문 단일 메시지에 의해 요청된 거래를 실행할 수 있다. 대안으로, 주문 관리 시스템(112)은 실행을 위한 다른 장치(미도시), 예컨대, 자산 교환 장치로 매칭된 메시지를 전송할 수 있다.
일단 실행되면, 주문 관리 시스템(112)은 실행 리포트를 생성할 수 있다. 실행 리포트는 실행의 타임스탬프, 예상되는 결산일, 자산 식별자(예컨대, CUSIP 번호, 티커 심볼 등), 수량, 가격, 주문의 타입, 진행 금액, 부과되는 커미션 및/또는 거래 실행을 위해 부과되는 다른 수수료 중 임의의 것을 포함할 수 있다. 대안으로, 거래의 실행이 다른 장치(예컨대, 자산 교환 장치)에 의해 수행되는 경우, 실행 리포트는 실행 장치에 의해 생성되고 실행 장치로부터 수신될 수 있다. 주문 관리 시스템(112)은, 실행 리포트를 게이트웨이 노드(103) 중 하나, 예컨대, 새로운 주문 단일 메시지를 전송한 것과 동일하거나 상이한 게이트웨이 노드(103)로 송신할 수 있다. 실시예에서, 주문 관리 시스템(112)은 새로운 주문 단일 메시지가 수신된 것과 동일한 FIX 세션 상에서 실행 리포트를 송신할 수 있다. 따라서, 실행 리포트는 새로운 주문 단일 메시지와 반대인 방향으로 제2 인터페이스를 통해 이동할 수 있다. 선택적으로, 주문 관리 시스템(112)은 다수의 실행된 주문에 대한 정보를 포함하는 단일 실행 리포트를 생성할 수 있다.
게이트웨이 노드(103)는 (예컨대, FIX 세션 상에서) 실행 리포트를 수신하고 실행 리포트를 제2 포맷(예컨대, FIX 포맷)으로부터 제1 포맷(예컨대, JSON)으로 변환하도록 구성될 수 있다. 각각의 게이트웨이 노드(103)는 또한, 예컨대, 피어-투-피어 네트워크(114)에서 네트워크 노드(102-104) 상에 실행되는 해시그래프 라이브러리 내의 제출 함수를 호출함으로써, 피어-투-피어 네트워크(114)에 제출되는 이벤트 내에 페이로드로서 변환된 실행 리포트를 삽입하도록 구성될 수 있다. 이벤트는, (1) 게이트웨이 노드(103)가 다른 노드(102-104)로부터 수신한 가장 최근의 이벤트의 해시; 및 (2) 게이트웨이 노드(103)가 생성한 가장 최근의 이벤트의 해시를 포함할 수 있다. 이벤트는 또한, 피어-투-피어 네트워크(114)로의 제출의 타임스탬프 및/또는 디지털 서명을 포함할 수 있다.
실시예에서, 피어-투-피어 네트워크(114)는 (비록 실행 리포트 페이로드를 갖는 이벤트 내의 타임스탬프에 대한 합의가 도달될 수 있더라도) 실행 리포트 페이로드를 갖는 이벤트들에 대한 전송 메커니즘으로서의 역할을 주로 할 수 있다. 따라서, 각각의 게이트웨이 노드(103)는, (1) 새로운 주문 단일 메시지 페이로드 및/또는 합의가 이루어진 타임스탬프를 갖는 수신된 이벤트에 대해 컨텍스트적으로 필터링하고; (2) 새로운 주문 단일 메시지를 제1 포맷(예컨대, FIX의 JSON 표현)으로부터 제2 포맷(예컨대, FIX)으로 변환하고; (3) 주문 관리 시스템(112)에 (예컨대, 제2 포맷인) 새로운 주문 단일 메시지를 제출하고; (4) (예컨대, FIX 세션에서) 주문 관리 시스템(112)으로부터 실행 리포트를 수신하고; (5) 수신된 실행 리포트를 제2 포맷(예컨대, FIX)으로부터 제1 포맷(예컨대, FIX의 JSON 표현)으로 변환하고; (6) (예컨대, 제1 포맷인) 실행 리포트 페이로드를 갖는 이벤트를 (예컨대, 주로 전송 메커니즘으로서) 피어-투-피어 네트워크(114)에 제출하도록 구성될 수 있다.
거래 서비스 노드(102)는, 피어-투-피어 네트워크(114)의 일부이기 때문에, 피어-투-피어 네트워크(114)에 제출된 이벤트들을 수신할 수 있다. 거래 서비스 노드(102)에서 이벤트를 수신하면, 거래 서비스 노드(102) 내의 반환 거래 함수(예컨대, handleTransaction())는 다음의 인자 중 하나 이상으로 호출될 수 있다: (1) 이벤트 내의 페이로드 (또는 페이로드로부터 유도된 데이터); (2) 이벤트 내의 타임스탬프에 대해 피어-투-피어 네트워크(114)에 의한 합의가 이루어졌는지를 나타내는 불리안 인자(예컨대, isConsensus); (3) 이벤트로부터의 타임스탬프; (4) 이벤트 ID; 및/또는 (5) 어드레스. 반환 거래 함수(예컨대, handleTransaction())는 피어-투-피어 네트워크(114) 내의 각각의 거래 노드(102-104) 상의 해시그래프 라이브러리로부터 분리된 애플리케이션에서 구현될 수 있다.
실시예에서, 거래 서비스 노드(102)는 (피어-투-피어 네트워크(114)로 제출된 이벤트 내의) 실행 리포트 페이로드에 대해 컨텍스트적으로 필터링할 수 있지만, 새로운 주문 단일 메시지 페이로드, 주문 취소 요청 페이로드 또는 주문 상태 요청 페이로드를 필터링하지 않는다. 선택적으로, 거래 서비스 노드(102)는 또한, 이벤트 내의 타임스탬프에 대한 합의가 이루어졌는지 여부, 예컨대 수신된 이벤트 내의 isConsensus 플래그가 참(true)인지에 기반하여 이벤트를 컨텍스트적으로 필터링할 수 있다.
거래 서비스 노드(102)는 이벤트 또는 페이로드 내의 필드가 페이로드를 실행 리포트 페이로드로 식별한다고 결정하는 것에 기반하여 실행 리포트 페이로드를 갖는 이벤트에 대해 컨텍스트적으로 필터링할 수 있다. 즉, 거래 서비스 노드(102)는 페이로드 타입을 결정하기 위해 컨텍스트적 필터링 동안에 이벤트 페이로드의 컨텐츠를 검사/분석/해석할 수 있다.
거래 서비스 노드(102) 중 하나가 실행 리포트 페이로드를 갖는 이벤트를 식별하는 경우(그리고 선택적으로 타임스탬프에 대한 합의가 도달된 경우), 거래 서비스 노드(102)는 실행 리포트 페이로드에 기반하여 알림(notification)을 생성하고, 알림을 예컨대, TLS, 웹 소켓 또는 HTTPS 세션에서 클라이언트(110)로 전송하도록 구성될 수 있다. 이벤트 내의 실행 리포트 페이로드는 제1 포맷(예컨대, FIX 메시지의 JSON 표현)일 수 있는 한편, 알림은 상이한 포맷일 수 있다.
거래 서비스 노드(102)는 (피어-투-피어 네트워크(114)로부터) 그것이 컨텍스트적으로 필터링하지 않는 페이로드를 갖고 (선택적으로 합의가 이루어지지 않은 타임스탬프를 갖는) 이벤트를 수신할 수 있다. 그것이 컨텍스트적으로 필터링하지 않는 페이로드를 갖고 (선택적으로 합의가 이루어지지 않은 타임스탬프를 갖는) 이벤트를 수신하면, 거래 서비스 노드(102) 내의 반환 거래 함수는, 해시그래프 라이브러리가 이벤트를 (가십 프로토콜에 의해 표시되는) 추가 노드(102-104)로 전달할 수 있을 지라도, 추가적인 행위를 취하지 않을 수 있다.
따라서, 각각의 거래 서비스 노드(102)는, (1) 클라이언트(110)로부터 새로운 주문 요청을 수신하고; (2) 새로운 주문 요청에 기반하여 제1 포맷(예컨대, FIX 메시지의 JSON 표현)으로 새로운 주문 요청을 생성하고; (3) 피어-투-피어 네트워크(114)로 (새로운 주문 요청에 기반하여 생성된) 새로운 주문 단일 메시지 페이로드를 갖는 이벤트를 제출하고; (4) 실행 리포트 페이로드를 갖는 (선택적으로, 합의가 도달된 타임스탬프를 갖는) 수신된 이벤트에 대해 컨텍스트적으로 필터링하고; (5) 실행 리포트 페이로드를 갖는 이벤트에 기반하여 알림을 생성하고; 및/또는 (6) 하나 이상의 클라이언트(110)로 알림을 전송하도록 구성될 수 있다.
선택적으로, 거래 서비스 노드(102)는 (클라이언트(110)로부터의 각각의 새로운 주문 요청으로부터) 생성한 각각의 새로운 주문 단일 메시지의 상태를 추적할 수 있다. 따라서, 각각의 거래 서비스 노드(102)는 선택적으로, 새로운 주문 단일 메시지 페이로드를 갖는 수신된 이벤트 내의 실행 리포트 페이로드를, 그것이 이전에 생성하고 피어-투-피어 네트워크(114)에 제출한 이벤트들과 연관시킬 수 있다.
(실행 리포트 페이로드를 갖는 이벤트와 연관된) 새로운 주문 단일 메시지 페이로드를 갖는 이벤트를 송신한 것과 동일하거나 상이한 거래 서비스 노드(102)가 실행 리포트 페이로드를 갖는 이벤트를 수신 및 프로세싱할 수 있음을 또한, 유의해야 한다. 클라이언트(110)는 알림을 수신하거나, 이를 (예컨대, 사용자 인터페이스에서) 사용자에게 제시하거나, 및/또는 알림을 예컨대, 전화, 텍스트, 이메일 등을 통해 사용자에게 전송할 수 있다.
선택적으로, 다양한 사용자들은, 예컨대 사용자 인터페이스, 클라이언트(110) 및/또는 API를 통해 거래 서비스 노드(102) 중 하나 이상 및 그들이 분산형 거래 시스템(100)의 일부로서 생성한 데이터에 액세스할 수 있다. 상이한 사용자들은 거래 서비스 노드(들)(102)에서 상이한 특권을 가질 수 있다. 실시예로, 개인 투자자는 그들 자신을 위해 주문 요청을 배치, 수정, 상태를 수신 및/또는 취소하는 것을 허용하는 제한된 특권을 가질 수 있다. 하지만, 기관 투자자, 브로커-딜러 및/또는 수탁자는, 그들 자신 또는 그들의 고객을 위해 배치된 주문 요청을 배치, 수정, 상태를 수신 및/또는 취소하는 것을 허용하는 더 광범위한 특권을 가질 수 있다. 아울러, 관리자는 그들이 임의의 주문 요청을 배치. 수정, 상태를 수신 및/또는 취소하는 것을 허용하는 관리자 특권을 선택적으로 가질 수 있다.
거래 서비스 노드(102) 및 게이트웨이 노드(103)에 추가로, 피어-투-피어 네트워크(114)는 하나 이상의 옵저버(observer) 노드(104)를 포함할 수 있다. 옵저버 노드(104)는 관리 기능(예컨대, 관리 노드(104A)), 규제 기능(예컨대, 규제 노드(104B), 아카이브(archival) 기능 및/또는 디지털 서명 기능을 수행할 수 있다.
선택적인 적어도 하나의 관리 노드(104A)는 피어-투-피어 네트워크(114)에서 옵저버 노드(104) 타입일 수 있다. 관리 노드(104A)는 분산형 거래 시스템(100)의 관리자 또는 제3자 데이터 서비스 제공자에 의해 또는 이들을 위해 소유 및/또는 동작될 수 있다. 피어-투-피어 네트워크(114) 내의 오로지 페이로드 타입의 서브세트만을 갖는 이벤트들에 대해 컨텍스트적으로 필터링하는 거래 서비스 노드(102) 및 게이트웨이 노드(103)에 대조적으로, 관리 노드(104A)는 피어-투-피어 네트워크(114)에 제출된 모든 타입의 페이로드를 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있다. 대안으로, 관리 노드(104A)는 피어-투-피어 네트워크(114)에 제출된 페이로드 타입의 서브세트만을 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있다. 추가로, 관리 노드(104A)는 피어-투-피어 네트워크(114)에 제출된 이벤트들의 옵저버일 수 있지만, (비록, 관리 노드(104A)는 피어-투-피어 네트워크(114) 외부의 시스템 및/또는 다른 컴퓨팅 장치와 통신할 수 있지만) 바람직하게는 어떠한 이벤트도 피어-투-피어 네트워크(114)에 제출하지 않는다.
관리 노드(104A)는 분산형 거래 시스템(100)에서 거래와 관련된 하나 이상의 서비스를 제공할 수 있다. 서비스는 관리 노드(104A)에서 적어도 하나의 프로세서 상에서 실행되는 명령어 세트일 수 있다. 실시예에서, 관리 노드(104A)는 고객 계좌의 잔고를 계산 및/또는 업데이트하는 계좌 서비스를 실행할 수 있다. 계좌 서비스는 피어-투-피어 네트워크(114)에 제출된 실행 리포트 페이로드 및/또는 새로운 주문 단일 메시지 페이로드를 갖는 이벤트에 대해 컨텍스트적으로 필터링할 수 있다.
실시예에서, 제한 없이, 고객 계좌는 지갑(wallet)을 이용할 수 있다. 용어 "지갑"은, 디지털 자산, 가령 보안 토큰(102)을 저장 및/또는 관리하는데 사용되는 소프트웨어 프로그램, 디지털 파일 및/또는 메모리를 가리킨다. 실시예에서, 지갑은 하나 이상의 개인 키(private key), 하나 이상의 개인 키로부터 유도된 하나 이상의 공개 키(public key) 및/또는 하나 이상의 개인 키 및/또는 하나 이상의 공개 키로부터 유도된 하나 이상의 거래 어드레스에 의해 정의될 수 있다. 실시예에서, 지갑은, 각각이 하나 이상의 자식(child) 및/또는 손자(grandchild) 계좌 키를 가질 수 있는 하나 이상의 개인 계좌 키 (및 선택적으로 대응하는 공개 계좌 키)에 의해 정의될 수 있다.
실시예에서, 관리 노드(104A)는 증권 소유권의 변경을 기록하는 명의 개서 대리 서비스(transfer agent service)를 실행할 수 있다. 실시예에서, 명의 개서 대리 서비스는 (1) 신탁 자산(custodial asset)에 대한 수익 소유권, 및/또는 (2) 고객이 직접 보유한 자산에 대한 등록된 소유권의 변경을 기록할 수 있다. 실시예에서, 명의 개서 대리 서비스는, 예컨대 제3자 시스템에 일괄적으로 다수의 실행 리포트를 주기적으로 전송함으로써, (피어-투-피어 네트워크(114) 외부의) 제3자 시스템에 (예컨대, 실행 리포트에 기반하여) 실행된 거래를 보고할 수 있다. 명의 개서 대리 서비스는 새로운 주문 단일 메시지 페이로드 및/또는 피어-투-피어 네트워크(114)에 제출된 실행 리포트 페이로드를 갖는 이벤트에 대해 컨텍스트적으로 필터링할 수 있지만, 주문 상태 요청 및/또는 주문 취소 요청에 대해서는 필터링하지 않을 수 있다.
선택적인 적어도 하나의 규제 노드(104B)는 피어-투-피어 네트워크(114)에서 옵저버 노드(104) 타입일 수 있다. 규제 노드(104B)는 하나 이상의 규제 기관, 예컨대, SEC 및/또는 FINRA에 의해 또는 이들을 위해 소유 및/또는 운영될 수 있다. 관리 노드(104A)와 유사하게, 규제 노드(104B)는, 피어-투-피어 네트워크(114)로 제출된 모든 타입의 페이로드를 갖는 이벤트에 대해 컨텍스트적으로 필터링할 수 있다. 대안으로, 규제 노드(104B)는 오로지 피어-투-피어 네트워크(114)에 제출된 페이로드 타입의 서브세트에 대해서만 컨텍스트적으로 필터링할 수 있다. 게다가, 규제 노드(104B)는 피어-투-피어 네트워크(114)에 제출된 이벤트의 옵저버일 수 있지만, (비록 규제 노드(104B)는 피어-투-피어 네트워크(114) 외부의 다른 컴퓨팅 장치 및/또는 시스템과 통신할 수 있지만) 바람직하게는 어떠한 이벤트도 피어-투-피어 네트워크(114)에 제출하지 않는다.
규제 노드(104B)는, 관련 증권법과 규제사항을 준수하기 위해 분산형 거래 시스템(100)에서의 거래를 모니터링하는 규제 서비스를 실행할 수 있다. 규제 서비스는, 피어-투-피어 네트워크(114)로부터 출력된 실행 리포트 페이로드 및/또는 새로운 주문 메시지 페이로드를 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있다. 실시예에서, 규제 서비스는 (규제 노드(104B)가 피어-투-피어 네트워크(114)를 구현하는 네트워크 노드들(102-104) 중 하나이기 때문에) 해시그래프를 작성할 수 있다. 규제 노드(104B)는 또한, 피어-투-피어 네트워크(114)에서 거래에 대한 적어도 하나의 디지털 서명된 해시를 (피어-투-피어 네트워크(114) 내의 적어도 하나의 다른 네트워크 노드(102-104)로부터) 수신할 수 있다. 실시예에서, 규제 서비스는, 주문이 주문 관리 시스템(112)의 주문서에 배치되었는지 여부 및/또는 피어-투-피어 네트워크(114)에 의해 결정된 것과 동일한 시간적 순서로 실행되었는지 여부를 결정하기 위해, 해시그래프로부터 결정된 거래의 시간적 순서를, 적어도 하나의 다른 네트워크 노드(102-104)로부터 디지털 서명된 해시(들)과 비교할 수 있다.
따라서, 분산형 거래 시스템(100)은 중앙집중형 거래 시스템 (및 다른 분산형 거래 시스템)에 비해 몇몇 이점을 제공하는 피어-투-피어 네트워크(114)를 이용할 수 있다. 예컨대, 분산형 거래 시스템(100)은 피어-투-피어 네트워크(114)에서 발생하는 거래들의 시간적 순서, 예컨대 새로운 주문 단일 메시지 페이로드를 갖는 이벤트들이 피어-투-피어 네트워크(114)에 의해 수신된 시간적 순서에 대한 합의에 도달함으로써 공정한 순서화를 제공할 수 있다. 네트워크 노드(102-104) 각각은, 피어-투-피어 네트워크(114)에서 거래들을, 예컨대 이벤트가 피어-투-피어 네트워크(114)에 제출된 시간적 순서를 순서화하는데 사용될 수 있는 정보(예컨대, 합의가 이루어진 이벤트 타임스탬프)를 포함할 수 있다. (예컨대, 주문이 피어-투-피어 네트워크(114)에 의해 수신된 타임스탬프와 관련하여) 새로운 주문의 공정한 순서화를 제공함으로써, 선행 매매(front running)를 방지하는 이점을 갖는다.
추가로, 피어-투-피어 네트워크(114) 내의 네트워크 노드(102-104)에 의해 구축된 해시그래프(들)은 피어-투-피어 네트워크(114)에 거래의 기록을 보존할 수 있다. 대안으로, 피어-투-피어 네트워크(114) 내의 하나 이상의 네트워크 노드(102-104)(예컨대, 관리 노드(104A))는 예컨대, 전통적인 데이터베이스 또는 블록체인, 가령 비트코인 블록체인에 저장을 위해 거래의 해시를 주기적으로 디지털 서명할 수 있다. 해시그래프 및/또는 디지털 서명된 해시는, 예컨대 실시간, 거의 실시간, 또는 비-실시간으로 (규제 준수를 위해 )규제 기관(regulatory authority) 또는 다른 제3자에 의해 사용될 수 있다.
도 2a는 컨텍스트 기반 필터링을 수행하는 네트워크 노드(102-104)의 서브세트를 갖는 분산형 거래 시스템(100) 내에서 사용되는 네트워크 노드(200)의 예시적인 실시예를 도시하는 블록도이다. 네트워크 노드(200)는 적어도 하나의 메모리(202), 적어도 하나의 프로세서(204), 선택적인 적어도 하나의 DAG 모듈(206), 선택적인 컨텍스트 필터링 모듈(208), 선택적인 적어도 하나의 디스플레이 장치(210), 선택적인 적어도 하나의 입력 장치(212), 선택적인 네트워크 인터페이스(214) 및 선택적인 전원(216)을 포함한다. 실시예에서, 네트워크 노드(200)는 피어-투-피어 네트워크(114) 내에서 거래 서비스 노드(102), 게이트웨이 노드(103), 관리 노드(104A), 및/또는 규제 노드(104B)를 구현하는데 사용될 수 있다.
실시예에서, 적어도 하나의 메모리(202)는 정보를 저장하기 위한 임의의 장치, 메커니즘 또는 채워진 데이터 구조일 수 있다. 실시예에서, 적어도 하나의 메모리(202)는 임의의 타입의 휘발성 메모리, 비휘발성 메모리, 및/또는 동적 메모리이거나 이를 포함할 수 있다. 예컨대, 적어도 하나의 메모리(202)는 랜덤 액세스 메모리, 메모리 저장 장치, 광학 메모리 장치, 자기 매체(magnetic media), 플로피 디스크, 자기 테이프, 하드드라이브, EPROMs(erasable programmable read-only memories), EEPROMs(electrically erasable programmable read-only memories) 및/또는 광학 매체(가령, 컴팩트 디스크, DVDs, 블루레이 디스크) 등일 수 있다. 일부 실시예에 따르면, 적어도 하나의 메모리(202)는 하나 이상의 디스크 드라이브, 플래시 드라이브, 하나 이상의 데이터베이스, 하나 이상의 테이블, 하나 이상의 파일, 로컬 캐시 메모리, 프로세서 캐시 메모리, 관계형 데이터베이스 및/또는 플랫 데이터베이스 등을 포함할 수 있다. 추가로, 통상의 기술자라면 적어도 하나의 메모리(202)로 사용될 수 있는 정보를 저장하기 위한 다수의 추가적인 장치 및 기술을 인식할 것이다. 적어도 하나의 메모리(202)는 적어도 하나의 프로세서(204) 상에서 하나 이상의 애플리케이션 또는 모듈을 실행하기 위한 명령어를 저장하는데 사용될 수 있다. 예컨대, 적어도 하나의 메모리(202)는, 선택적인 적어도 하나의 DAG 모듈(206) 및/또는 선택적인 적어도 하나의 컨텍스트 필터링 모듈(208)의 기능을 실행하는데 필요한 명령어들의 전부 또는 일부를 하우징하기 위해 하나 이상의 실시예에서 사용될 수 있다.
실시예에서, 적어도 하나의 프로세서(204)는 임의의 알려진 프로세서, 가령 범용 프로세서(GPP), 특수 목적용(가령, FPGA(field-programmable gate array), ASIC(application-specific integrated circuit) 또는 다른 집적 회로 또는 회로부), 또는 임의의 프로그램가능한 로직 장치일 수 있다. 실시예에서, 선택적인 적어도 하나의 DAG 모듈(206) 및/또는 선택적인 적어도 하나의 컨텍스트 필터링 모듈(208)은 적어도 하나의 프로세서(204) 및 적어도 하나의 메모리(202)에 의해 구현된다.
실시예에서, 선택적인 적어도 하나의 디스플레이 장치(210)는 발광 다이오드(LED), 액정 디스플레이(LCD), LED 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 전자 인크(e-ink) 디스플레이, FED(field emission display), SED(surface-conduction electron-emitter display) 또는 플라즈마 디스플레이 중 적어도 하나를 포함한다. 실시예에서, 선택적인 적어도 하나의 입력 장치(212)는, 터치스크린(용량성 및 저항성 터치스크린을 포함함), 터치패드, 용량성 버튼, 기계 버튼, 스위치, 다이얼, 키보드, 마우스, 카메라, 바이오메트릭 센서/스캐너 등 중 적어도 하나를 포함한다. 실시예에서, 선택적인 적어도 하나의 디스플레이 장치(210) 및 선택적인 적어도 하나의 입력 장치(212)는 컴퓨팅 장치(104A)와의 사용자 상호작용을 위해 인간 기계 인터페이스(human machine interface; HMI)로 조합된다.
실시예에서, 적어도 하나의 선택적인 네트워크 인터페이스(214)는 네트워크와의 통신을 위한 적어도 하나의 광학 안테나를 포함하거나 이에 연결되어 있다. 실시예에서, 적어도 하나의 광학 네트워크 인터페이스(214)는, 이더넷 인터페이스, 셀룰러 RAT(radio access technology) 라디오(radio), Wi-Fi 라디오, 블루투스 라디오, NFC(near field communication) 라디오 중 적어도 하나를 포함한다. 실시예에서, 적어도 하나의 선택적인 네트워크 인터페이스(214)는, LAN 또는 WAN을 사용하여 원격 서버와 충분한 속도의 셀룰러 데이터 연결(모바일 인터넷)을 확립하도록 구성된 셀룰러 RAT 통신을 포함한다. 실시예에서, 셀룰러 무선 액세스 기술은, PCS(Personal Communication Services), SMR(Specialized Mobile Radio) 서비스, ESMR(Enhanced Special Mobile Radio) 서비스, AWS(Advanced Wireless Services), CDMA(Code Division Multiple Access), GSM(Global System for Mobile Communications) 서비스, W-CDMA(Wideband Code Division Multiple Access), UMTS(Universal Mobile Telecommunications System), WiMAX(Worldwide Interoperability for Microwave Access), 3GPP(3rd Generation Partnership Projects) LTE(Long Term Evolution), HSPA(High Speed Packet Access), 3G, 4G, 5G 등 또는 다른 적절한 통신 서비스나 이들의 조합 중 적어도 하나를 포함한다. 실시예에서, 적어도 하나의 선택적인 네트워크 인터페이스(214)는 광대역 네트워크보다는, 원격 서버와 통신하는 무선 로컬 영역 네트워크와 통신하도록 구성된 Wi-Fi(IEEE 802.11) 라디오를 포함한다. 실시예에서, 적어도 하나의 선택적인 네트워크 인터페이스(214)는, 가령 패시브 근거리 통신(near field communication; NFC) 태그, 액티브 NFC 태그, 패시브 RFID(radio frequency identification) 태그, 액티브 라디오 주파수 식별(radio frequency identification) 태그, 근접 카드(proximity card), 또는 다른 개인 영역 네트워크 디바이스와 같은 근거리 통신으로 제한된 근거리 무선 통신 장치를 포함한다. 실시예에서, 동일한 적어도 하나의 선택적 네트워크 인터페이스(214)는 또한, 네트워크(가령 NFC 결제 단말)에 대한 외부 게이트웨이 장치와의 통신을 위해 사용된다.
실시예에서, 적어도 하나의 선택적인 전원(216)은 네트워크 노드(200)의 다양한 컴포넌트에 전력을 제공하는데 사용된다.
피어-투-피어 네트워크(114) 내의 각각의 네트워크 노드(200)는 적어도 하나의 클라이언트(110)로부터 수신된 새로운 주문의 시간적 순서화에 참여할 수 있다. 순서화는 각각의 네트워크 노드(200)에 의해 구축된 DAG(예컨대, 해시그래프 데이터 구조)에 기반할 수 있다. 선택적인 DAG 모듈(206)은 (1) (예컨대, 네트워크 노드(200) 상에서 실행되는 해시그래프 라이브러리 내의 제출 함수를 사용하여) 새로운 주문을 피어-투-피어 네트워크(114)에 제출하거나; (2) (예컨대, 피어-투-피어 네트워크(114) 내의 다른 네트워크 노드에서 수신된 새로운 주문을 포함하는) 피어-투-피어 네트워크(114)로부터 수신된 이벤트에 기반하여 DAG 데이터 구조(예컨대, 해시그래프)를 구축하거나; 및/또는 (3) 피어-투-피어 네트워크(114)에서 발행하는 이벤트들의 시간적 순서, 예컨대 DAG 데이터 구조(예컨대, 해시그래프)에 기반하여 피어-투-피어 네트워크(114)에서 새로운 주문이 수신된 시간적 순서를 결정하는데 사용될 수 있다. 선택적 DAG 모듈(206)은 피어-투-피어 네트워크(114) 내에서 다른 네트워크 노드(102-104)에 데이터를 전송 및 그로부터 데이터를 수신하기 위해 네트워크 인터페이스(214)를 이용할 수 있다.
피어-투-피어 네트워크(114) 내의 각각의 네트워크 노드(200)는 또한, 컨텍스트 필터링 모듈(208)을 포함할 수 있다. 모듈에 배치된 네트워크 노드(200)의 타입에 따라, 각각의 네트워크 노드(200) 내의 컨텍스트 필터링 모듈(208)은, 하나 이상의 페이로드의 타입을 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있다. 예컨대, 각각의 네트워크 노드(200)는 피어-투-피어 네트워크(114)에 제출된 모든 타입의 페이로드를 갖는 이벤트를 수신할 수 있지만, 페이로드의 타입의 서브세트만을 갖는 이벤트들을 선택적으로 프로세싱할 수 있다. 실시예에서, 거래 서비스 노드(102) 내의 컨텍스트 필터링 모듈(208)은, 피어-투-피어 네트워크(114)로부터 출력된 실행 리포트 페이로드를 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있지만, 다른 타입의 페이로드들을 필터링하지 않을 수 있다. 대안으로 또는 추가로, 게이트웨이 노드(103) 내의 컨텍스트 필터링 모듈(208)은, 주문 취소 요청 페이로드 및/또는 주문 상태 요청 페이로드(하지만 여전히 페이로드 타입 전부보다는 적은 페이로드)를 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있다. 실시예에서, 옵저버 노드(104) 내의 컨텍스트 필터링 모듈(208)은, 새로운 주문 단일 메시지 페이로드 및 실행 리포트 페이로드 (그리고 선택적으로 주문 취소 요청 페이로드 및/또는 주문 상태 요청 페이로드)를 갖는 이벤트들에 대해 컨텍스트적으로 필터링할 수 있다.
도 2b는 피어-투-피어 네트워크(114)에 의해 수신된 주문을 매칭하는 주문 관리 시스템(112)의 예시적인 실시예를 도시하는 블록도이다. 주문 관리 시스템(112)은 적어도 하나의 메모리(202), 적어도 하나의 프로세서(204), 선택적인 적어도 하나의 디스플레이 장치(210), 선택적인 적어도 하나의 입력 장치(212), 선택적인 네트워크 인터페이스(214) 및 선택적인 전원(216)을 포함하고, 이는 도 2a에서 네트워크 노드(200)와 함께 설명된 것과 유사한 원리 및 방법에 따라 동작한다.
네트워크 노드(200)와는 달리, 주문 관리 시스템(112)은 매칭 모듈(207)을 포함할 수 있다. 새로운 주문 단일 메시지를 수신하면, 매칭 모듈(207)은, 주문의 유형(매수, 매도, 보류 등), 자산 식별자(예컨대, CUSIP(Committee on Uniform Securities Identification Procedures) 번호, 티커 심볼 등), 거래되는 자산의 수량, 제한 가격, 정지 가격, 조건부 트리거링 요구사항, 주문의 지속시간(예컨대, 유효 시간), 및/또는 주문이 부분적으로 채워졌는지에 기반하여 (다른 주문에 대해) 새로운 주문을 매칭할 수 있다. 주문 관리 시스템(112)은, (네트워크 노드(102-104) 각각에 대해 일관된 단일 주문에서 순서화된) 순서화된 시장 거래 요청을 서로에 대해 매칭하도록 구성될 수 있다. 새로운 주문 단일 메시지는 게이트웨이 노드(103)에 의해 주문 관리 시스템(112)으로 송신된다. 실시예에서, 송신 게이트웨이 노드(103)는 또한, 피어-투-피어 네트워크(114)에 의해 새로운 주문 단일 메시지가 수신된 시간적 순서를 표시할 수 있다.
(예컨대, 주문서에서의) 주문이 매칭 모듈(207)에 의해 성공적으로 매칭되면, 주문 관리 시스템(112)은 (예컨대, FIX 포맷인) 새로운 주문 단일 메시지에 의해 요청된 거래를 실행할 수 있다. 대안으로, 주문 관리 시스템(112)은, 실행을 위해 다른 장치(미도시), 예컨대 자산 교환 장치로 매칭된 메시지를 송신할 수 있다.
네트워크 노드(200)와는 달리, 주문 관리 시스템(112)은 또한, 실행된 거래에 대한 실행 리포트를 생성 (또는 다른 장치로부터 수신)하는 실행 리포트 모듈(209)을 포함할 수 있다. 실행 리포트는 실행의 타임스탬프, 예상된 결제일, 자산 식별자(예컨대, CUSIP 번호, 티커 심볼 등), 수량, 가격, 주문의 타입, 진행 금액, 부과된 커미션 및/또는 부과된 다른 수수료 중 임의의 것을 포함할 수 있다. 대안으로, 거래의 실행이 다른 장치(예컨대, 자산 교환 장치)에 의해 수행된다면, 실행 리포트는 실행 장치에 의해 생성되고 그로부터 수신될 수 있다. 주문 관리 시스템(112)은 게이트웨이 노드(103) 중 하나, 예컨대 실행 리포트와 연관된 새로운 주문 단일 메시지를 송신한 것과 동일하거나 상이한 게이트웨이 노드(103)로 실행 리포트를 송신할 수 있다.
도 2c는, 피어-투-피어 네트워크(114)로 주문을 전송하고 엔드-사용자 장치로부터 주문을 수신하는 클라이언트(110)를 구현하는 컴퓨팅 장치(201)의 예시적인 실시예를 도시하는 블록도이다. (예컨대, 모바일 또는 비-모바일 컴퓨팅 장치인) 컴퓨팅 장치(201)는, 적어도 하나의 메모리(202), 적어도 하나의 프로세서(204), 선택적인 적어도 하나의 디스플레이 장치(210), 선택적인 적어도 하나의 입력 장치(212), 선택적인 네트워크 인터페이스(214) 및 선택적인 전원(216)을 포함하고, 이는 도 2a 및 2b에서 각각 네트워크 노드(200) 및 주문 관리 시스템(112)과 함께 설명된 것과 유사한 원리 및 방법에 따라 동작한다.
컴퓨팅 장치(201)는 사용자 인터페이스를 사용자에게 제시하는 웹 클라이언트를 구현할 수 있다. 사용자 인터페이스는, 예컨대 주문의 유형(매수, 매도, 보류 등), 자산 식별자(예컨대, CUSIP 번호, 티커 심볼 등), 거래될 자산의 수량, 제한 가격, 정지 가격, 조건부 트리거링 요구사항, 거래의 지속시간(예컨대, 유효시간) 및/또는 주문이 부분적으로 채워졌는지 여부와 같은 새로운 주문 요청과 관련된 필드를 포함할 수 있다. 사용자는, 예컨대 입력 장치(212)를 통해 새로운 주문 요청에 관한 관련 정보(예컨대, 주문 속성)를 입력하기 위해 클라이언트에 의해 제시되는 사용자 인터페이스와 상호작용할 수 있다. 사용자 입력을 수신하면, 컴퓨팅 장치(201)는 새로운 주문 요청을 생성하고, 피어-투-피어 네트워크(114)에서 거래 서비스 노드(102)로 이를 송신할 수 있다.
도 3a는 거래 시스템(100)을 구현하는 네트워크 노드(102-104)의 서브세트 내에서의 컨텍스트 기반 필터링을 위한 예시적인 방법(300A)을 도시하는 흐름도이다. 실시예에서, 적어도 2개의 상이한 네트워크 노드 서브세트 (및 선택적으로 2개보다 많은 서브세트)가 피어-투-피어 네트워크(114)를 구현하는데 사용된다. 다수의 노드(102-104) 각각은, 피어-투-피어 네트워크(114) 내의 이벤트들의 순서에 관한 합의, 예컨대 피어-투-피어 네트워크(114)에 이벤트가 언제 제출되었는지를 나타내는 타임스탬프에 관한 합의를 구축하기 위해 해시그래프를 구축한다. 각각의 네트워크 노드(102-104)는 적어도 하나의 메모리에 저장된 명령어를 실행하는 적어도 하나의 프로세서를 포함할 수 있다.
바람직하게는, 제1 네트워크 노드 서브세트(102-104)(예컨대, 거래 서비스 노드(102))는 제2 네트워크 노드 서브세트(102-104)(예컨대, 게이트웨이 노드(103))와 상호 배타적이지만, (제1 서브세트 내의 적어도 하나의 네트워크 노드(102-104)가 또한, 제2 서브세트 내에 있는) 다른 구성들이 가능하다. 피어-투-피어 네트워크(114)에 추가로, 거래 시스템(100)은 적어도 제1 외부 컴퓨팅 장치(110)(예컨대, 클라이언트(110)를 구현하는 컴퓨팅 장치(201)) 및 제2 외부 컴퓨팅 장치(112)(예컨대, 주문 관리 시스템(112))를 포함할 수 있다.
예시적인 방법(300A)은, 제1 네트워크 노드 서브세트(102-104) (중 적어도 하나)가 제1 외부 컴퓨팅 장치(110)로부터 수신된 요청에 기반하여 제1 메시지 타입을 갖는 제1 메시지를 생성하는 블록(302)에서 시작된다. 실시예에서, 요청은 새로운 주문 요청, 주문 취소 요청 및/또는 주문 상태 요청이다. 새로운 주문 요청 (및/또는 후속 이벤트 및/또는 새로운 주문 요청에 기반하여 생성된 페이로드)은 주문의 유형(매수, 매도, 보류 등), 자산 식별자(예컨대, CUSIP(Committee on Uniform Securities Identification Procedures) 번호, 티커 심볼 등), 거래되는 자산의 수량, 제한 가격, 정지 가격, 조건부 트리거링 요구사항, 주문의 지속시간(예컨대, 유효 시간), 및/또는 주문이 부분적으로 채워질 수 있는지를 나타내는 필드를 포함할 수 있다.
선택적으로, 제1 외부 컴퓨팅 장치(110)는 제1 인터페이스(108)를 통해 제1 네트워크 노드 서브세트(102)와 통신한다. 제1 인터페이스(108)는, 데이터, 예컨대 매체, VPN, WAN, 링크를 전송하는데 사용되는 통신 계층(예컨대, 네트워크 계층 및/또는 물리적 계층)일 수 있다. 제1 인터페이스(108)는, 제1 외부 컴퓨팅 장치(110)의 일부로서 및/또는 제1 네트워크 노드 서브세트(102)에서 (프로세서 상에) 실행되는 명령어를 포함할 수 있다. 실시예에서, 제1 인터페이스(108)는 제1 외부 컴퓨팅 장치(110)가 어떻게 제1 네트워크 노드 서브세트(102)와 통신하는지에 관련된 함수들의 라이브러리(예컨대, 애플리케이션 프로그래밍 인터페이스)를 이용할 수 있다. 실시예에서, 제1 인터페이스(108)는 전송 세션, 예컨대 TLS(Transport Layer Security), 웹 소켓, 또는 HTTPS 세션을 개시, 사용 및/또는 종료하는 명령어를 포함할 수 있다.
예시적인 방법(300A)은 제1 이벤트들이 피어-투-피어 네트워크(114)에 제출되는 블록(304)으로 진행하며, 상기 제1 이벤트들은 제1 메시지 타입에 기반하는 페이로드를 갖는다. 따라서, 제1 이벤트를 네트워크 노드(102-104)에 제출하는 것은 제1 네트워크 노드 서브세트가: (1) 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트를 생성하는 것과; (2) 제1 이벤트를 다른 네트워크 노드(102-104) 등으로 전송하는, 피어-투-피어 네트워크(114) 내의 다른 네트워크 노드(102-104)로 제1 이벤트를 전송하는 것 중 하나를 포함할 수 있다.
제1 이벤트는 (제1 네트워크 노드 서브세트(102) 중 하나에서 실행되는) 해시그래프 라이브러리 내의 제출 함수로 제1 메시지(예컨대, 새로운 주문 단일 메시지)를 전달함으로써 생성될 수 있다. (제1 메시지 타입에 기반한) 페이로드에 추가로, 각각의 제1 이벤트는 (1) 다른 노드(102-104)로부터 수신된 제1 네트워크 노드 서브세트 중 하나(102)의 해시; (2) 제1 네트워크 서브세트 중 하나(102)가 생성한 가장 마지막 이벤트의 해시; 및/또는 (3) 피어-투-피어 네트워크(114)로의 제출의 타임 스탬프 및/또는 디지털 서명을 포함할 수 있다.
예시적인 방법(300A)은, 적어도 하나의 DAG(directed acyclic graph)가 제1 이벤트 내의 타임스탬프에 관한 합의에 도달하기 위해 사용되는 블록(306)으로 진행한다. 실시예에서, DAG는 해시그래프이다. 제1 이벤트들이 피어-투-피어 네트워크(114) 내의 네트워크 노드들(102-104) 사이에서 통신됨에 따라, 각각의 네트워크 노드(102-104)에 저장된 해시그래프 데이터 구조는 메시지로 업데이트된다. 상술한 바와 같이, 피어-투-피어 네트워크(114) 내에서 전달된 이벤트들에 기초하여 가상 투표를 사용하여 합의에 도달할 수 있다.
예시적인 방법(300A)은, 네트워크 노드들(102-104) 내의 제2 네트워크 노드 서브세트(103) (중 적어도 하나)가 피어-투-피어 네트워크(114)로부터 다수의 페이로드 타입을 갖는 이벤트들을 수신하고, (예컨대, 적어도 임의의 다른 타입의 페이로드가 아닌) 적어도 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트에 대해 필터링하는 블록(308)으로 진행한다. 실시예에서, 피어-투-피어 네트워크(114)로 제출되고 그로부터 출력된 이벤트들은 새로운 주문 단일 메시지들, 실행 리포트들, 주문 취소 요청 및/또는 주문 상태 요청을 포함하지만 (이들로 제한되지 않는) 페이로드 타입을 갖는다.
필터링은 (예컨대, 제1 이벤트와 같은 이벤트를 수신하면) 하기의 인자 중 하나 이상으로, (수신 노드(102-104)에서의 해시그래프 라이브러리 내의) 반환 거래 함수(예컨대, handleTransaction())를 호출함으로써 수행될 수 있다: (1) 제1 이벤트 내의 페이로드 (또는 페이로드로부터 유도된 데이터); (2) 제1 이벤트 내의 타임스탬프에 대해 (피어-투-피어 네트워크(114)에 의한) 합의가 이루어졌는지를 나타내는 불리안 인자(예컨대, isConsensus); (3) 제1 이벤트로부터의 타임스탬프; (4) 제1 이벤트에 대한 이벤트 ID; 및/또는 (5) 어드레스. 반환 거래 함수(예컨대, handleTransaction())는, 피어-투-피어 네트워크(114)에서 각 거래 노드(102-104) 상의 해시그래프 라이브러리로부터 분리된 애플리케이션에서 구현될 수 있다.
실시예에서, 제1 네트워크 노드 서브세트(예컨대, 게이트웨이 노드(103))는 제1 메시지 타입에 기반한 페이로드를 갖는 제1 이벤트에 대해 필터링할 수 있지만, 적어도 하나의 다른 타입의 페이로드를 갖는 이벤트에 대해 필터링하지 않는다. 예컨대, 제2 네트워크 노드 서브세트(103)는 새로운 주문 단일 메시지 페이로드 (및 선택적으로 주문 취소 요청 페이로드 및/또는 주문 상태 요청 페이로드)를 갖는 이벤트들에 대해 필터링할 수 있지만, 주문 실행 리포트 페이로드에 대해서는 필터링하지 않는다. 따라서, 제2 네트워크 노드 서브세트(103)는 페이로드 타입을 결정하기 위해 필터링 동안에 (예컨대, 제1 이벤트 내의) 이벤트 페이로드의 컨텐츠를 검사/분석/해석할 수 있다. 선택적으로, 제2 네트워크 노드 서브세트(예컨대, 게이트웨이 노드(103))는 또한, 이벤트 내의 타임스탬프에 대한 합의가 이루어졌는지 여부, 예컨대, 수신된 이벤트 내의 isConsensus 플래그가 참인지 여부에 기반하여 이벤트들을 컨텍스트적으로 필터링할 수 있다.
예시적인 방법(300A)은, 제2 네트워크 노드 서브세트(103) 중 하나가 제1 메시지 타입에 기반한 페이로드 (및 선택적으로 합의가 이루어진 타임스탬프)를 갖는 제1 이벤트를 수신할 때, 네트워크 노드(103)가 페이로드를, 예컨대 Fix 세션에서 제2 외부 컴퓨팅 장치(112)로 전송된 (제1 이벤트의 페이로드에 기반하는) 제2 페이지로 변환할 수 있는 블록(310)으로 진행한다. 네트워크 노드(103)는 제1 이벤트의 페이로드를 제1 포맷(예컨대, JSON 새로운 주문 단일 메시지)으로부터 제2 포맷(예컨대, FIX 새로운 주문 단일 메시지)으로 변환할 수 있다.
선택적으로, 제2 네트워크 노드 서브세트(103)는 제2 인터페이스(109)를 통해 제2 외부 컴퓨팅 장치(112)와 통신할 수 있다. 제2 인터페이스(109)는, 데이터를 전송하는데 사용되는 통신 계층(예컨대, 네트워크 계층 및/또는 물리적 계층), 예컨대, 매체, VPN, WAN, 링크일 수 있다. 제2 인터페이스(109)는 제2 외부 컴퓨팅 장치(112)의 일부로서 및/또는 제2 네트워크 노드 서브세트(103)에서 (프로세서 상에서) 실행되는 명령어를 포함할 수 있다. 실시예에서, 제2 인터페이스(109)는 예컨대, FIX 세션과 같은 교환 프로토콜 세션을 개시, 사용 및/또는 종료하는 명령어를 포함할 수 있다.
제2 네트워크 노드 서브세트(103)는, 그에 대해 컨텍스트적으로 필터링하지 않는 페이로드 및 (선택적으로 합의가 도달되지 않은 타임스탬프를 갖는) 이벤트들을 (피어-투-피어 네트워크(114)로부터) 수신할 수 있다. 컨텍스트적으로 필터링하지 않는 페이로드 (또는 선택적으로 합의가 이루어지지 않은 타임스탬프)를 갖는 이벤트를 수신하면, 각 노드(103)의 반환 거래 함수는, 비록 해시그래프 라이브러리가 이벤트를 (가십 프로토콜로 표시되는) 추가 노드(102-104)로 전달할 수 있을 지라도 추가적인 행위를 취하지 않을 수 있다.
도 3b는 거래 시스템(100)을 구현하는 네트워크 노드 서브세트들(102-104) 내에서의 컨텍스트 기반 필터링을 위한 다른 예시적인 방법(300B)을 도시하는 흐름도이다. 도 3a의 방법(300A)과 마찬가지로, 적어도 2개의 상이한 네트워크 노드 서브세트 (및 선택적으로 3개 이상)는, 도 3b의 방법(300B)을 수행하는 피어-투-피어 네트워크(114)를 구현하는데 사용된다. 다수의 노드(102-104) 각각은 피어-투-피어 네트워크(114) 내의 이벤트들의 순서화에 관한 합의, 예컨대 이벤트들이 언제 피어-투-피어 네트워크(114)에 제출되었는지를 나타내는 타임스탬프에 관한 합 의를 구축하기 위해 해시그래프를 구축할 수 있다. 각각의 네트워크 노드(102-104)는 적어도 하나의 메모리 상에 저장된 명령어를 실행하는 적어도 하나의 프로세서를 포함할 수 있다. 선택적으로, 도 3b의 방법(300B)은, 동일한 제1 네트워크 노드 서브세트(102-104)(예컨대, 거래 서비스 노드(102)), 제2 네트워크 노드 서브세트(102-104)(예컨대, 게이트웨이 노드(103)), 제1 외부 컴퓨팅 장치(110)(예컨대, 클라이언트(110)를 구현하는 컴퓨팅 장치(201)) 및 제2 외부 컴퓨팅 장치(112)(예컨대, 주문 관리 시스템(112))를 사용하여, 도 3a의 방법(300A)에 대해 순차적으로 및/또는 병렬로 수행될 수 있다.
예시적인 방법(300)은, (피어-투-피어 네트워크(114) 내의) 제2 네트워크 노드 서브세트(103) (중 적어도 하나가) 제2 외부 컴퓨팅 장치(112)로부터 제3 메시지들을 수신하고, 이들을 제4 메시지 타입을 갖는 제4 메시지들로 변환하는 블록(312)으로 진행한다. 실시예에서, 제2 네트워크 노드 서브세트는 제2 포맷인(예컨대, FIX 포맷인) 제3 메시지들(예컨대, 실행 리포트)을 제1 포맷인(예컨대, FIX 포맷의 JSON 표현인) 제4 메시지들(예컨대, 실행 리포트)로 변환하도록 구성될 수 있다. 실행 리포트는, 실행의 타임스탬프, 예상되는 결제일, 자산 식별자(예컨대, CUSIP(Committee on Uniform Securities Identification Procedures) 번호, 수량, 가격, 주문의 타입, 진행 금액, 부과되는 커미션 및/또는 거래 실행을 위해 부과되는 다른 수수료 중 임의의 것을 포함할 수 있다. 선택적으로, 제3 메시지들은 전술한 바와 같이 제2 인터페이스(109)를 통해 송신될 수 있다.
예시적인 방법(300)은, 제4 메시지 타입에 기반하는 페이로드를 갖는 제2 이벤트들이 피어-투-피어 네트워크(114)에 제출되는 블록(314)으로 진행한다. 따라서, 제2 이벤트를 네트워크 노드들(102-104)에 제출하는 것은, 제2 네트워크 노드 서브세트(103) 중 하나가: (1) 제4 메시지 타입에 기반하는 페이로드를 갖는 제2 이벤트를 생성하는 것; 및 (2) 제2 이벤트를 다른 네트워크 노드(102-104)로 전송하는, 피어-투-피어 네트워크(114) 내의 다른 네트워크 노드(102-104)에 제2 이벤트를 전송하는 것을 포함할 수 있다.
제2 이벤트는 (제2 네트워크 노드 서브세트(103) 중 하나에서 실행되는) 해시그래프 라이브러리 내의 제출 함수에 제4 메시지(예컨대, 실행 리포트)를 전달함으로써 생성될 수 있다. (제4 메시지 타입에 기반한) 페이로드에 추가로, 각각의 제2 이벤트는, (1) 제2 네트워크 노드 서브세트(103) 중 하나가 다른 노드(102-104)로부터 수신한 가장 마지막 이벤트의 해시; (2) 제2 네트워크 노드 서브세트(103) 중 하나가 생성한 가장 마지막 이벤트의 해시; 및/또는 (3) 피어-투-피어 네트워크(114)로의 제출의 타임스탬프 및/또는 디지털 서명을 포함할 수 있다.
예시적인 방법(300)은, 제1 네트워크 노드 서브세트(102) (중 적어도 하나)가 피어-투-피어 네트워크(114)로부터 상이한 페이로드 타입을 갖는 이벤트들을 수신하고, 제4 메시지 타입에 기반한 페이로드를 갖지만 (예컨대, 다른 타입의 페이로드를 갖지 않는) 제2 이벤트들에 대해 필터링하는 블록(316)으로 진행한다. 실시예에서, 피어-투-피어 네트워크(114)로 제출되고 그로부터 출력된 이벤트들은, 새로운 주문 단일 메시지, 실행 리포트, 주문 취소 요청 및/또는 다른 상태 요청을 포함하지만 (이들로 제한되지 않는) 페이로드 타입을 갖는다.
필터링은 (예컨대, 제2 이벤트와 같은 이벤트를 수신하면) 하기의 인자 중 하나 이상으로, (수신 노드(102-104)에서의 해시그래프 라이브러리 내의) 반환 거래 함수(예컨대, handleTransaction())를 호출함으로써 수행될 수 있다: (1) 제2 이벤트 내의 페이로드 (또는 페이로드로부터 유도된 데이터); (2) 제2 이벤트 내의 타임스탬프에 대해 (피어-투-피어 네트워크(114)에 의한) 합의가 이루어졌는지를 나타내는 불리안 인자(예컨대, isConsensus); (3) 제2 이벤트로부터의 타임스탬프; (4) 제2 이벤트에 대한 이벤트 ID; 및/또는 (5) 어드레스. 반환 거래 함수(예컨대, handleTransaction())는, 피어-투-피어 네트워크(114)에서 각 거래 노드(102-104) 상의 해시그래프 라이브러리로부터 분리된 애플리케이션에서 구현될 수 있다.
실시예에서, 제1 네트워크 노드 서브세트(예컨대, 거래 서비스 노드(102))는 제4 메시지 타입에 기반한 페이로드를 갖는 제2 이벤트에 대해 필터링할 수 있지만, 적어도 하나의 다른 타입의 페이로드를 갖는 이벤트에 대해 필터링하지 않는다. 예컨대, 제1 네트워크 노드 서브세트(102)는 실행 리포트 페이로드를 갖는 이벤트에 대해 필터링할 수 있지만, 새로운 주문 단일 메시지 페이로드, 주문 취소 요청 페이로드 및/또는 주문 상태 요청 페이로드에 대해서는 필터링하지 않는다. 따라서, 제1 네트워크 노드 서브세트(102)는 페이로드 타입을 결정하기 위해 필터링 동안에 (예컨대, 제2 이벤트 내의) 이벤트 페이로드의 컨텐츠를 검사/분석/해석할 수 있다. 선택적으로, 제1 네트워크 노드 서브세트(예컨대, 거래 서비스 노드(102))는 또한, 이벤트 내의 타임스탬프에 대한 합의가 이루어졌는지 여부, 예컨대, 수신된 이벤트 내의 isConsensus 플래그가 참인지 여부에 기반하여 이벤트들을 컨텍스트적으로 필터링할 수 있다.
예시적인 방법(300)은, 제1 네트워크 노드 서브세트(102) 중 하나가, 제4 메시지 타입에 기반한 페이로드 (및 선택적으로 합의가 이루어진 타임스탬프)를 갖는 제2 이벤트를 수신할 때, 네트워크 노드(102)가 제2 이벤트에 기반하여 알림을 생성하고, 알림을 예컨대, TLS, 웹 소켓 또는 HTTPS 세션에서 제1 외부 컴퓨팅 장치(110)로 송신할 수 있는 블록(318)으로 진행한다. 알림은 제2 이벤트의 페이로드와는 상이한 포맷으로 생성될 수 있다. 선택적으로, 제1 네트워크 노드 서브세트(102)는 전술한 바와 같이 제1 인터페이스(108)를 통해 제1 외부 컴퓨팅 장치(110)와 통신할 수 있다.
본 명세서에 소개된 기술은 특수 목적용 하드웨어(가령 회로부)로서, 소프트웨어 및/또는 펌웨어와 적절하게 프로그래밍된 프로그램가능한 회로부, 또는 특수 목적용 및 프로그램가능한 회로부의 조합으로서 구체화될 수 있다. 따라서, 실시예들은 프로세스를 수행하기 위해 컴퓨터 (또는 다른 전자 장치)를 프로그래밍하는데 사용될 수 있는 저장된 명령어를 갖는 기계 판독가능한 매체를 포함할 수 있다. 기계 판독가능한 매체는 예컨대, 플로피 디스켓, 광학 디스크, CD-ROMs(compact disc read-only memories), 자기 광학 디스크, ROMs(read-only memories), RAMs(random access memories), EPROMs(erasable programmable read-only memories), EEPROMs(electrically erasable programmable read-only memories), 자기 또는 광학 카드, 플래시 메모리, 또는 전자식 명령어를 저장하기에 적절한 다른 타입의 매체/기계판독가능한 매체를 포함할 수 있다.
컴퓨터 시스템 개관
본 명세서의 실시예는, 전술한 다양한 단계 및 동작을 포함한다. 다양한 이러한 단계 및 동작은 하드웨어 구성요소에 의해서 실시될 수 있거나 기계-실행 가능 명령어들로 구현될 수 있고, 이는, 명령어로 프로그래밍된 범용의 또는 특별한 목적의 프로세서가 상기 단계를 실시하게 하기 위해서 사용될 수 있다. 대안적으로, 단계가 하드웨어, 소프트웨어, 및/또는 펌웨어의 조합에 의해서 실시될 수 있다. 따라서, 도 4는 본 명세서의 일부 실시예와 함께 이용될 수 있는 예시적인 컴퓨터 시스템(400)을 보여주는 블록도이다. 본 예에 따라, 컴퓨터 시스템(400)은 인터커넥트(402), 적어도 하나의 프로세서(404), 적어도 하나의 통신 포트(406), 적어도 하나의 주 메모리(408), 적어도 하나의 분리 가능한 저장 매체(410), 적어도 하나의 ROM(412), 및 적어도 하나의 대용량 저장 장치(414)를 포함한다.
적어도 하나의 프로세서(404)는 임의의 알려진 프로세서일 수 있다. 적어도 하나의 통신 포트(406)는, 예를 들어, 모뎀-기반 다이얼 접속 연결과 함께 이용되는 RS-232 포트, 10/100 이더넷 포트, 또는 구리 또는 섬유를 이용하는 기가비트 포트 중 임의의 것일 수 있거나 포함할 수 있다. 적어도 하나의 통신 포트(406)의 특성은, 근거리 네트워크(LAN), 광역 네트워크(WAN), 또는 컴퓨터 시스템(400)이 연결되는 임의의 네트워크에 따라서 선택될 수 있다. 적어도 하나의 주 메모리(408)가 RAM(Random Access Memory), 또는 당업계에 일반적으로 알려진 임의의 다른 동적 저장 장치(들)일 수 있다. 적어도 하나의 리드 온리 메모리(412)는, 적어도 하나의 프로세서(80)를 위한 명령어와 같은 정적인 정보를 저장하기 위한 PROM(Programmable Read Only Memory) 칩과 같은 임의의 정적 저장 장치(들)일 수 있다.
적어도 하나의 대량 저장 장치(414)를 이용하여 정보 및 명령어를 저장할 수 있다. 예를 들어, SCSI 드라이브들의 Adaptec® 패밀리와 같은 하드 디스크, 광학 디스크, RAID(Redundant Array of Independent Disk)와 같은 디스크의 어레이, 가령 RAID 드라이브들의 Adaptec 패밀리, 또는 임의의 다른 대용량 저장 장치가 이용될 수 있다. 인터커넥트(402)는 하나 이상의 버스, 브릿지, 제어기, 어댑터, 및/또는 점-대-점 연결일 수 있거나 포함할 수 있다. 인터커넥트(402)는 적어도 하나의 프로세서(404)를 다른 메모리, 저장부, 및 통신 블록과 통신 가능하게 커플링시킨다. 인터커넥트(402)는, 사용되는 저장 장치에 따라서, PCI/PCI-X 또는 SCSI 기반의 시스템 버스일 수 있다. 적어도 하나의 분리 가능한 저장 매체(410)는 외장 하드-드라이브, 플로피 디스크, CD-ROM(Compact Disc-Read Only Memory), CD-RW(Compact Disc-Re-Writable), DVD-ROM(Digital Video Disc-Read Only Memory) 중의 임의의 종류일 수 있다.
전술한 구성요소는 일부 가능한 유형을 예시하기 위한 것이다. 전술한 예가 단지 예시적인 실시예이기 때문에, 전술한 예가 어떠한 방식으로도 개시 내용을 제한하지 않아야 한다.
술어
본원의 전체를 통해서 사용된 용어, 약어 및 문구에 관한 간단한 정의를 이하에서 제공한다.
"결정한다(determining)"라는 용어는 계산, 컴퓨팅, 생성, 프로세싱, 도출, 조사, 참조(예를 들어, 표, 데이터베이스 또는 다른 데이터 구조의 참조), 확인, 및 기타를 포함할 수 있다. 또한, "결정한다"는 수신(예를 들어, 정보 수신), 평가(예를 들어, 메모리 내의 데이터 평가), 및 기타를 또한 포함할 수 있다. 또한, "결정한다"는 해결, 선별, 선택, 구축, 및 기타를 포함할 수 있다.
"기반하는(based on)"이라는 문구는 달리 명시되지 않는 한 "~만을 기초로 한"을 의미하지 않는다. 다시 말해서, "기반하는"이라는 문구는 "~만을 기반으로 하는" 및 "적어도 ~를 기반으로 하는"의 모두를 설명한다. 또한, "기반하는"이라는 문구는 중간 단계를 배제하지 않고, 예를 들어 A가 C를 기반으로 한다는 것이, B가 C를 기반으로 하는 것 그리고 A가 B를 기반으로 하는 것을 의미할 수 있다. 또한, "및/또는"이라는 용어는 "및" 또는 "또는"을 의미한다. 예컨대, "A 및/또는 B"는 "A", "B", 또는 "A 및 B"를 의미할 수 있다. 또한, "A, B 및/또는 C"는 "A 단독", "B 단독", "C 단독", "A 및 B", "A 및 C", "B 및 C" 또는 "A, B 및 C"를 의미할 수 있다.
"연결된(connected)", "결합된(coupled)" 및 "통신 가능하게 결합된(communicatively coupled)"이라는 용어 그리고 관련 용어는 동작적인 의미로 사용되고, 반드시 직접적인 물리적 연결 또는 커플링으로 제한되는 것은 아니다. 따라서, 예를 들어, 2개의 디바이스가 직접적으로 또는 하나 이상의 중간 매체 또는 장치를 통해서 연결될 수 있다. 또 다른 예로, 장치는, 서로 어떠한 물리적 연결도 공유하지 않으면서, 정보가 서로 간에 전달될 수 있는 방식으로 커플링될 수 있다. 본원에서 제공된 개시 내용을 기초로, 당업자는 전술한 정의에 따른 연결 또는 커플링이 존재하는 다양한 방식을 이해할 것이다.
"실시예에서(in examples)", "예시적인 실시예에서(in example embodiments)", "일부 실시예에서", "일부 실시예에 따라", "도시된 실시예에서", "다른 실시예에서", "실시예" 등과 같은 문구는 일반적으로 상기 문구 다음에 나오는 특정 특징, 구조 또는 특성이 본 개시 내용의 적어도 하나의 실시예에 포함된다는 것, 그리고 본 개시 내용의 하나 초과의 실시예에 포함될 수 있다는 것을 의미한다. 또한, 상기 문구가 반드시 동일한 실시예 또는 다른 실시예를 언급하는 것은 아니다.
명세서에서 구성요소 또는 특성이 포함될 수 있다는("may," "can," "could," 또는 "might") 것 또는 특성을 갖는다는 것을 기술하는 경우에, 상기 특정 구성요소 또는 특징이 포함될 것 또는 특성을 가질 것이 요구되는 것은 아니다.
"응답하는(responsive)"이라는 용어는 완전히 또는 부분적으로 응답하는 것을 포함한다.
"모듈" 이라는 용어는 소프트웨어, 하드웨어, 또는 펌웨어(또는 이들의 임의의 조합) 구성요소를 광범위하게 지칭한다. 모듈은 전형적으로, 특정 입력(들)을 사용하여 유용한 데이터 또는 기타 출력을 생성할 수 있는 기능적 구성요소이다. 모듈은 독립적일 수도 있고 아닐 수도 있다. ("애플리케이션"으로도 지칭되는) 애플리케이션 프로그램이 하나 이상의 모듈을 포함할 수 있거나, 모듈이 하나 이상의 애플리케이션 프로그램을 포함할 수 있다.
"네트워크"라는 용어는 일반적으로 정보를 교환할 수 있는 상호 연결된 장치의 그룹을 지칭한다. 네트워크는 근거리 네트워크(LAN)에 있는 몇 대의 개인용 컴퓨터만큼 작을 수 있거나, 전 세계 컴퓨터 네트워크인, 인터넷만큼 클 수도 있다. 본원에서 사용되는 바와 같이, "네트워크"는 하나의 주체로부터 다른 주체로 정보를 전송할 수 있는 임의의 네트워크를 포함하도록 의도된다. 일부 경우에는, 네트워크가, 다양한 네트워크 사이의 그리고 네트워크 간의 통신을 돕기 위해서 동작될 수 있는 게이트웨이를 통해서 연결된, 다수의 네트워크로, 심지어 다수의 이질적인 네트워크, 예를 들어 하나 이상의 경계 네트워크, 음성 네트워크, 광대역 네트워크, 금융 네트워크, 서비스 제공 업체 네트워크, ISP(Internet Service Provider) 및/또는 PSTN(Pubic Switched Telephone Network)을 포함할 수 있다.
또한, 예시를 위해서, 본 개시 내용의 다양한 실시예가 현대의 컴퓨터 네트워크 내의 컴퓨터 프로그램, 물리적 구성요소 및 논리적 상호 작용의 맥락에서 설명되었다. 중요하게는, 이들 실시예가 현대의 컴퓨터 네트워크 및 프로그램과 관련하여 본 개시 내용의 다양한 실시예를 설명하지만, 본원에서 설명된 방법 및 장치가, 당업자가 이해할 수 있는 바와 같이, 다른 시스템, 장치 및 네트워크에도 동일하게 적용될 수 있다. 따라서, 본 개시 내용의 실시예의 예시된 적용예는 제한을 의미하는 것이 아니라, 예시적인 것이다. 본 개시 내용의 실시예가 적용될 수 있는 다른 시스템, 장치, 및 네트워크는 예를 들어 다른 유형의 통신 및 컴퓨터 장치 및 시스템을 포함한다. 보다 구체적으로, 실시예는 통신 시스템, 서비스, 및 셀 폰 네트워크 및 호환 가능 디바이스와 같은 디바이스에 적용 가능하다. 또한, 실시예는 개인용 컴퓨터로부터 대규모 네트워크 메인프레임 및 서버에 이르는 모든 레벨의 컴퓨팅에 적용 가능하다.
결론적으로, 본 명세서의 내용은, 거래 시스템을 구현하는 네트워크 노드 서브세트들 내의 컨텍스트 기반 필터링을 위한 신규한 시스템, 방법, 및 장치를 제공한다. 본 개시 내용의 하나 이상의 실시예에 대한 상세한 설명을 앞서서 제공하였지만, 개시 내용의 사상으로부터 벗어나지 않고도, 다양한 대안, 수정 및 등가물이 당업자에게 명백할 것이다. 예컨대, 전술한 실시예들이 특정 특징들을 언급하지만, 본 개시 내용의 범위는 또한, 상이한 특징들의 조합을 갖는 실시예 및 설명된 특징들의 전부를 포함하지 않는 실시예를 포함한다. 따라서, 본 개시 내용의 범위는, 청구 범위의 범위 내에 포함되는 그러한 모든 대안, 수정 및 변형을, 그 모든 균등물과 함께 포함하도록 의도된다. 그에 따라, 전술한 설명은 제한적인 것으로 간주되지 않아야 한다.
예시적인 실시예
실시예 1은, 시스템으로서, 피어-투-피어(peer-to-peer; P2P) 네트워크에서 통신가능하게 결합된 복수의 네트워크 노드들을 포함하되, 상기 네트워크 노드들은 제1 네트워크 노드 서브세트 및 제2 네트워크 노드 서브세트를 포함하고; 상기 제1 네트워크 노드 서브세트는, 적어도 하나의 제1 외부 컴퓨팅 장치와 인터페이싱하도록 구성되고; 상기 제2 네트워크 노드 서브세트는, 적어도 하나의 제2 외부 컴퓨팅 장치와 인터페이싱하도록 구성되고; 상기 제1 네트워크 노드 서브세트는, 상기 제1 외부 컴퓨팅 장치로부터 수신된 요청에 기반하여 제1 메시지 타입을 갖는 제1 메시지를 생성하도록 구성되고; 상기 제1 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 페이로드(payload)를 갖는 제1 이벤트들을 상기 피어-투-피어 네트워크에 제출하도록 구성되고; 상기 네트워크 노드들은, 상기 제1 이벤트들 내의 타임스탬프에 관한 합의에 도달하는 것을 시도하기 위해 적어도 하나의 방향성 비순환 그래프(directed acyclic graph; DAG)를 사용하도록 구성되고; 상기 제2 네트워크 노드 서브세트는, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트들을 수신하고, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트들에 대해 필터링하도록 구성되며; 상기 제2 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트가 수신될 때, 상기 페이로드를 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지로 변환하도록 구성되는, 시스템을 포함한다.
실시예 2는 실시예 1에 있어서, 상기 제2 네트워크 노드 서브세트는 상기 제2 외부 컴퓨팅 장치로부터 제3 메시지를 수신하고, 상기 제3 메시지를 제4 메시지 타입을 갖는 제4 메시지로 변환하도록 구성되고, 상기 제2 네트워크 노드 서브세트는, 상기 제4 메시지 타입에 기반하는 페이로드를 갖는 제2 이벤트를 상기 피어-투-피어 네트워크에 제출하도록 구성되고, 상기 제1 네트워크 노드 서브세트는, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트들을 수신하고, 상기 제4 메시지 타입에 기반하는 페이로드를 갖는 제2 이벤트들에 대해 필터링하도록 구성되며; 상기 제1 네트워크 노드 서브세트는, 상기 제4 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트가 수신될 때, 상기 제2 이벤트에 기반하여 알림(notification)을 생성하고, 상기 알림을 상기 제1 외부 컴퓨팅 장치로 전송하도록 구성되는, 시스템을 포함한다.
실시예 3은, 실시예 2에 있어서, 상기 제1 메시지는 상기 제2 메시지와는 상이한 포맷이고, 상기 제3 메시지는 상기 제4 메시지와 상이한 포맷인, 시스템을 포함한다.
실시예 4는, 실시예 1 내지 3 중 어느 하나에 있어서, 상기 제2 네트워크 노드 서브세트는, 합의에 도달한 타임스탬프를 갖는 제1 이벤트들에 대해 필터링하도록 구성되는, 시스템을 포함한다.
실시예 5는, 실시예 1 내지 4 중 어느 하나에 있어서, 상기 제2 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트에 대해 필터링할 때 상기 제1 이벤트의 페이로드를 분석하도록 구성되는, 시스템을 포함한다.
실시예 6은, 실시예 1 내지 5 중 어느 하나에 있어서, 상기 제1 네트워크 노드 서브세트 및 상기 제2 네트워크 노드 서브세트는 상호 배타적인, 시스템을 포함한다.
실시예 7은, 실시예 1 내지 6 중 어느 하나에 있어서, 상기 방향성 비순환 그래프는 IOTA 또는 해시그래프(Hashgraph)인, 시스템을 포함한다.
실시예 8은, 실시예 1 내지 7 중 어느 하나에 있어서, 상기 네트워크 노드들은, 서버, 개인용 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터 또는 스마트폰 중 적어도 하나로부터 선택되는, 시스템을 포함한다.
실시예 9는, 실시예 1 내지 8 중 어느 하나에 있어서, 상기 네트워크 노드들은 세계 전역에 걸쳐 물리적으로 분산되는, 시스템을 포함한다.
실시예 10은, 실시예 1 내지 9 중 어느 하나에 있어서, 상기 네트워크 노드들은 적어도 하나의 유선 네트워크 또는 적어도 하나의 무선 네트워크 중 적어도 하나를 사용하여 통신가능하게 결합되는, 시스템을 포함한다.
실시예 11은, 방법으로서, 피어-투-피어 네트워크 내의 제1 네트워크 노드 서브세트에서, 제1 외부 컴퓨팅 장치로부터 수신된 요청에 기반하여, 제1 메시지 타입을 갖는 제1 메시지를 생성하는 단계; 상기 제1 메시지 타입에 기반하는 페이로드(payload)를 갖는 제1 이벤트들을 상기 피어-투-피어 네트워크에 제출하는 단계; 상기 제1 이벤트들 내의 타임스탬프에 관한 합의에 도달하는 것을 시도하기 위해 적어도 하나의 방향성 비순환 그래프(directed acyclic graph; DAG)를 사용하는 단계; 제2 네트워크 노드 서브세트에서, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트들을 수신하고, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트들에 대해 필터링하는 단계; 및 상기 제2 네트워크 노드 서브세트 중의 하나의 네트워크 노드가, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트를 수신할 때, 상기 페이로드를 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지로 변환하는 단계를 포함하는 방법을 포함한다.
실시예 12는, 실시예 11에 있어서, 상기 제2 네트워크 노드 서브세트에서, 상기 제2 외부 컴퓨팅 장치로부터 제3 메시지를 수신하고, 상기 제3 메시지를 제4 메시지 타입을 갖는 제4 메시지로 변환하는 단계; 상기 제4 메시지 타입에 기반하는 페이로드를 갖는 제2 이벤트를 상기 피어-투-피어 네트워크에 제출하는 단계; 상기 제1 네트워크 노드 서브세트에서, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입을 갖는 이벤트들을 수신하고, 상기 제4 메시지 타입에 기반하는 페이로드를 갖는 제2 이벤트들에 대해 필터링하는 단계; 상기 제1 네트워크 노드 서브세트 중의 하나의 네트워크 노드가, 상기 제4 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트를 수신할 때, 상기 제2 이벤트에 기반하여 알림(notification)을 생성하고, 상기 알림을 상기 제1 외부 컴퓨팅 장치로 전송하는 단계를 더 포함하는 방법을 포함한다.
실시예 13은, 실시예 11 또는 12에 있어서, 상기 제1 메시지는 상기 제2 메시지와는 상이한 포맷이고, 상기 제3 메시지는 상기 제4 메시지와 상이한 포맷인, 방법을 포함한다.
실시예 14는, 실시예 11 내지 13 중 어느 하나에 있어서, 상기 제2 네트워크 노드 서브세트는, 합의에 도달한 타임스탬프를 갖는 제1 이벤트들에 대해 필터링하도록 구성되는, 방법을 포함한다.
실시예 15는, 실시예 11 내지 14 중 어느 하나에 있어서, 상기 제2 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 페이로드를 갖는 제1 이벤트에 대해 필터링할 때 상기 제1 이벤트의 페이로드를 분석하도록 구성되는, 방법을 포함한다.
실시예 16은, 실시예 11 내지 15 중 어느 하나에 있어서, 상기 제1 네트워크 노드 서브세트 및 상기 제2 네트워크 노드 서브세트는 상호 배타적인, 방법을 포함한다.
실시예 17은, 실시예 11 내지 16 중 어느 하나에 있어서, 상기 방향성 비순환 그래프는 IOTA 또는 해시그래프(Hashgraph)인, 방법을 포함한다.
실시예 18은, 실시예 11 내지 17 중 어느 하나에 있어서, 상기 네트워크 노드들은, 서버, 개인용 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터 또는 스마트폰 중 적어도 하나로부터 선택되는, 방법을 포함한다.
실시예 19는, 실시예 11 내지 18 중 어느 하나에 있어서, 상기 네트워크 노드들은 세계 전역에 걸쳐 물리적으로 분산되는, 방법을 포함한다.
실시예 20은, 실시예 11 내지 19 중 어느 하나에 있어서, 상기 네트워크 노드들은 적어도 하나의 유선 네트워크 또는 적어도 하나의 무선 네트워크 중 적어도 하나를 사용하여 통신가능하게 결합되는, 방법을 포함한다.

Claims (20)

  1. 시스템으로서,
    피어-투-피어(peer-to-peer; P2P) 네트워크에서 통신가능하게 결합된 네트워크 노드들을 포함하되, 상기 네트워크 노드들은 제1 네트워크 노드 서브세트 및 제2 네트워크 노드 서브세트를 포함하고;
    상기 제1 네트워크 노드 서브세트는, 적어도 하나의 제1 외부 컴퓨팅 장치와 인터페이싱하도록 구성되고;
    상기 제2 네트워크 노드 서브세트는, 적어도 하나의 제2 외부 컴퓨팅 장치와 인터페이싱하도록 구성되고;
    상기 제1 네트워크 노드 서브세트는, 상기 제1 외부 컴퓨팅 장치로부터 수신된 요청들에 기반하여 제1 메시지 타입을 갖는 제1 메시지들을 생성하도록 구성되고;
    상기 제1 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 페이로드들(payloads)을 갖는 제1 이벤트들을, 상기 피어-투-피어 네트워크에 제출하도록 구성되고;
    상기 네트워크 노드들은, 상기 제1 이벤트들 내의 타임스탬프들에 관한 합의(consensus)에 도달하는 것을 시도하기 위해, 적어도 하나의 방향성 비순환 그래프(directed acyclic graph; DAG)를 사용하도록 구성되고;
    상기 제2 네트워크 노드 서브세트는, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입들을 갖는 이벤트들을 수신하고, 상기 제1 메시지 타입에 기반하는 상기 페이로드들을 갖는 제1 이벤트들 중의 어느 하나에 대해 필터링하도록 구성되며;
    상기 제2 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 상기 페이로드들을 갖는 제1 이벤트들 중의 어느 하나가 수신될 때, 상기 페이로드들을 상기 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지들로 변환하도록 구성되는, 시스템.
  2. 제1항에 있어서,
    상기 제2 네트워크 노드 서브세트는, 상기 제2 외부 컴퓨팅 장치로부터 제3 메시지들을 수신하고, 상기 제3 메시지들을 제4 메시지 타입을 갖는 제4 메시지들로 변환하도록 구성되고,
    상기 제2 네트워크 노드 서브세트는, 상기 제4 메시지 타입에 기반하는 페이로드들을 갖는 제2 이벤트들을 상기 피어-투-피어 네트워크에 제출하도록 구성되고,
    상기 제1 네트워크 노드 서브세트는, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입들을 갖는 이벤트들을 수신하고, 상기 제4 메시지 타입에 기반하는 상기 페이로드들을 갖는 제2 이벤트들 중의 어느 하나에 대해 필터링하도록 구성되며;
    상기 제1 네트워크 노드 서브세트는, 상기 제4 메시지 타입에 기반하는 상기 페이로드들을 갖는 제1 이벤트들 중의 어느 하나가 수신될 때, 상기 제2 이벤트들 중의 적어도 하나의 이벤트에 기반하여 알림(notification)을 생성하고, 상기 알림을 상기 제1 외부 컴퓨팅 장치로 전송하도록 구성되는, 시스템.
  3. 제2항에 있어서,
    상기 제1 메시지들은 상기 제2 메시지들과는 상이한 포맷이고, 상기 제3 메시지들은 상기 제4 메시지들과 상이한 포맷인, 시스템.
  4. 제1항에 있어서,
    상기 제2 네트워크 노드 서브세트는, 합의(consensus)에 도달한 타임스탬프들을 갖는 제1 이벤트들 중의 어느 하나에 대해 필터링하도록 구성되는, 시스템.
  5. 제1항에 있어서,
    상기 제2 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 페이로드들을 갖는 제1 이벤트들 중의 어느 하나에 대해 필터링할 때, 상기 제1 이벤트들의 페이로드들을 분석하도록 구성되는, 시스템.
  6. 제1항에 있어서,
    상기 제1 네트워크 노드 서브세트 및 상기 제2 네트워크 노드 서브세트는, 상호 배타적인, 시스템.
  7. 제1항에 있어서,
    상기 적어도 하나의 방향성 비순환 그래프는 IOTA 또는 해시그래프(Hashgraph)인, 시스템.
  8. 제1항에 있어서,
    상기 네트워크 노드들은, 서버, 개인용 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터 또는 스마트폰 중 적어도 하나로부터 선택되는, 시스템.
  9. 제1항에 있어서,
    상기 네트워크 노드들은 전세계에 걸쳐(globally) 물리적으로 분산되는, 시스템.
  10. 제1항에 있어서,
    상기 네트워크 노드들은 적어도 하나의 유선 네트워크 또는 적어도 하나의 무선 네트워크 중 적어도 하나를 사용하여 통신가능하게 결합되는, 시스템.
  11. 네트워크 노드들의 시스템으로 수행되는 방법으로서,
    피어-투-피어 네트워크 내의 상기 네트워크 노드들의 제1 네트워크 노드 서브세트에서, 제1 외부 컴퓨팅 장치로부터 수신된 요청들에 기반하여, 제1 메시지 타입을 갖는 제1 메시지들을 생성하는 단계;
    상기 제1 메시지 타입에 기반하는 페이로드들(payloads)을 갖는 제1 이벤트들을 상기 피어-투-피어 네트워크에 제출하는 단계;
    상기 제1 이벤트들 내의 타임스탬프에 관한 합의(consensus)에 도달하는 것을 시도하기 위해 적어도 하나의 방향성 비순환 그래프(directed acyclic graph; DAG)를 사용하는 단계;
    상기 네트워크 노드들의 제2 네트워크 노드 서브세트에서, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입들을 갖는 이벤트들을 수신하고, 상기 제1 메시지 타입에 기반하는 상기 페이로드들을 갖는 제1 이벤트들 중의 어느 하나에 대해 필터링하는 단계; 및
    상기 제2 네트워크 노드 서브세트 중의 하나의 네트워크 노드가, 상기 제1 메시지 타입에 기반하는 페이로드들을 갖는 제1 이벤트들 중의 어느 하나를 수신할 때, 상기 페이로드들을 제2 외부 컴퓨팅 장치로 전송되는 제2 메시지들로 변환하는 단계
    를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제2 네트워크 노드 서브세트에서, 상기 제2 외부 컴퓨팅 장치로부터 제3 메시지들을 수신하고, 상기 제3 메시지들을 제4 메시지 타입을 갖는 제4 메시지들로 변환하는 단계;
    상기 제4 메시지 타입에 기반하는 페이로드들을 갖는 제2 이벤트들을 상기 피어-투-피어 네트워크에 제출하는 단계;
    상기 제1 네트워크 노드 서브세트에서, 상기 피어-투-피어 네트워크로부터 상이한 페이로드 타입들을 갖는 이벤트들을 수신하고, 상기 제4 메시지 타입에 기반하는 페이로드들을 갖는 제2 이벤트들 중의 어느 하나에 대해 필터링하는 단계;
    상기 제1 네트워크 노드 서브세트 중의 하나의 네트워크 노드가, 상기 제4 메시지 타입에 기반하는 페이로드들을 갖는 제1 이벤트들 중의 어느 하나를 수신할 때, 상기 제2 이벤트들 중의 적어도 하나의 이벤트에 기반하여 알림(notification)을 생성하고, 상기 알림을 상기 제1 외부 컴퓨팅 장치로 전송하는 단계
    를 더 포함하는, 방법.
  13. 제12항에 있어서,
    상기 제1 메시지들은 상기 제2 메시지들과는 상이한 포맷이고, 상기 제3 메시지들은 상기 제4 메시지들과 상이한 포맷인, 방법.
  14. 제11항에 있어서,
    상기 제2 네트워크 노드 서브세트는, 합의(consensus)에 도달한 타임스탬프들을 갖는 제1 이벤트들 중의 어느 하나에 대해 필터링하도록 구성되는, 방법.
  15. 제11항에 있어서,
    상기 제2 네트워크 노드 서브세트는, 상기 제1 메시지 타입에 기반하는 상기 페이로드들을 갖는 제1 이벤트들 중의 어느 하나에 대해 필터링할 때, 상기 제1 이벤트들의 페이로드들을 분석하도록 구성되는, 방법.
  16. 제11항에 있어서,
    상기 제1 네트워크 노드 서브세트 및 상기 제2 네트워크 노드 서브세트는, 상호 배타적인, 방법.
  17. 제11항에 있어서,
    상기 적어도 하나의 방향성 비순환 그래프는 IOTA 또는 해시그래프(Hashgraph)인, 방법.
  18. 제11항에 있어서,
    상기 네트워크 노드들은, 서버, 개인용 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터 또는 스마트폰 중 적어도 하나로부터 선택되는, 방법.
  19. 제11항에 있어서,
    상기 네트워크 노드들은 전세계에 걸쳐(globally) 물리적으로 분산되는, 방법.
  20. 제11항에 있어서,
    상기 네트워크 노드들은 적어도 하나의 유선 네트워크 또는 적어도 하나의 무선 네트워크 중 적어도 하나를 사용하여 통신가능하게 결합되는, 방법.
KR1020217010877A 2018-10-23 2019-10-08 거래 시스템을 구현하는 네트워크 노드들의 서브세트 내의 컨텍스트 기반 필터링 KR102680150B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862749528P 2018-10-23 2018-10-23
US62/749,528 2018-10-23
PCT/US2019/055229 WO2020086261A1 (en) 2018-10-23 2019-10-08 Context based filtering within subsets of network nodes implementing a trading system

Publications (2)

Publication Number Publication Date
KR20210068039A KR20210068039A (ko) 2021-06-08
KR102680150B1 true KR102680150B1 (ko) 2024-07-02

Family

ID=70280969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217010877A KR102680150B1 (ko) 2018-10-23 2019-10-08 거래 시스템을 구현하는 네트워크 노드들의 서브세트 내의 컨텍스트 기반 필터링

Country Status (6)

Country Link
US (1) US11699184B2 (ko)
EP (1) EP3871400A1 (ko)
JP (1) JP7389114B2 (ko)
KR (1) KR102680150B1 (ko)
SG (1) SG11202103504UA (ko)
WO (1) WO2020086261A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL3851974T3 (pl) * 2020-01-20 2024-03-04 Decard Ag System i sposób realizowania algorytmu konsensusu skierowanego grafu acyklicznego (dag) za pośrednictwem protokołu gossip
US20240340354A1 (en) * 2021-08-04 2024-10-10 Sony Group Corporation Method and publisher-subscriber network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
WO2018007828A2 (en) 2016-07-08 2018-01-11 Kalypton International Limited Distributed transaction processing and authentication system
JP2018528555A (ja) 2015-08-28 2018-09-27 スワールズ,インコーポレイテッド ネットワーク内の分散データベースのための方法及び装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69023705T2 (de) 1989-05-25 1996-07-04 Reuters Ltd Verteiltes System und Verfahren zum Herstellen von Geschäftsbeziehungen zwischen Käufern und Verkäufern.
US5077665A (en) 1989-05-25 1991-12-31 Reuters Limited Distributed matching system
US5924083A (en) 1996-05-29 1999-07-13 Geneva Branch Of Reuters Transaction Services Limited Distributed matching system for displaying a book of credit filtered bids and offers
US10366452B2 (en) 2013-11-07 2019-07-30 Chicago Mercantile Exchange Inc. Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance
WO2017123849A1 (en) 2016-01-14 2017-07-20 Ab Initio Technology Llc Recoverable stream processing
US11977549B2 (en) * 2016-09-15 2024-05-07 Oracle International Corporation Clustering event processing engines
PT3539026T (pt) 2016-11-10 2022-03-08 Swirlds Inc Métodos e aparelhos para uma base de dados distribuída que inclui entradas anónimas
US20190354518A1 (en) * 2018-05-01 2019-11-21 Michael Zochowski Chain mesh network for decentralized transaction systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018528555A (ja) 2015-08-28 2018-09-27 スワールズ,インコーポレイテッド ネットワーク内の分散データベースのための方法及び装置
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
WO2018007828A2 (en) 2016-07-08 2018-01-11 Kalypton International Limited Distributed transaction processing and authentication system

Also Published As

Publication number Publication date
KR20210068039A (ko) 2021-06-08
US11699184B2 (en) 2023-07-11
SG11202103504UA (en) 2021-05-28
EP3871400A1 (en) 2021-09-01
JP7389114B2 (ja) 2023-11-29
JP2022505665A (ja) 2022-01-14
WO2020086261A1 (en) 2020-04-30
US20200126155A1 (en) 2020-04-23

Similar Documents

Publication Publication Date Title
US10965446B2 (en) Blockchain-based automated user matching
US10558820B2 (en) System and method for maintaining a segregated database in a multiple distributed ledger system
US11030681B2 (en) Intermediate blockchain system for managing transactions
EP3568824B1 (en) Systems and methods for issuing and tracking digital tokens within distributed network nodes
CN111770102B (zh) 一种区块链跨链方法、装置、计算机设备及存储介质
US20130290226A1 (en) System and method for social graph and graph assets valuation and monetization
KR20190099076A (ko) 전자 어음 관리 방법, 장치 및 기록매체
US20180322485A1 (en) Ledger management systems and methods
JP2021533502A (ja) 取引検証方法、装置、記憶媒体及び電子機器
US20240013303A1 (en) Systems and methods of creating order lifecycles via daisy chain linkage
US10764163B2 (en) Determining an event history for an event processed by a plurality of communicating servers via a central event data log
US11570214B2 (en) Crowdsourced innovation laboratory and process implementation system
CN110572457B (zh) 基于区块链的资源申请方法及装置、电子设备、存储介质
US20230011047A1 (en) Federated personally identifiable information (pii) service
KR102680150B1 (ko) 거래 시스템을 구현하는 네트워크 노드들의 서브세트 내의 컨텍스트 기반 필터링
KR20220071241A (ko) 컴퓨터-구현 시스템 및 방법
CN114066451A (zh) 管理资金交易的方法和系统、电子设备
US12020222B1 (en) Apparatuses, methods, and computer program products for event-based payment orchestration
US11853316B1 (en) System and method for the creation and management of privacy-preserving audits
US20240303665A1 (en) Systems and methods for distributed blockchain monitoring and inherent latency compensation
US20240257085A1 (en) Token Account Payment Computing System
Franco Distributed Ledger for Insurance Information Sharing
WO2023059429A1 (en) Event-based triggers of cryptocurrency transactions

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right