KR102565577B1 - 네트워크 코딩을 활성화하기 위한 네트워크 파라미터의 최적화 - Google Patents

네트워크 코딩을 활성화하기 위한 네트워크 파라미터의 최적화 Download PDF

Info

Publication number
KR102565577B1
KR102565577B1 KR1020207001864A KR20207001864A KR102565577B1 KR 102565577 B1 KR102565577 B1 KR 102565577B1 KR 1020207001864 A KR1020207001864 A KR 1020207001864A KR 20207001864 A KR20207001864 A KR 20207001864A KR 102565577 B1 KR102565577 B1 KR 102565577B1
Authority
KR
South Korea
Prior art keywords
period
node
nodes
transactions
network
Prior art date
Application number
KR1020207001864A
Other languages
English (en)
Other versions
KR20200019727A (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 KR20200019727A publication Critical patent/KR20200019727A/ko
Application granted granted Critical
Publication of KR102565577B1 publication Critical patent/KR102565577B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0075Transmission of coding parameters to receiver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/14Relay systems
    • H04B7/15Active relay systems
    • H04B7/155Ground-based stations
    • H04B7/15521Ground-based stations combining by calculations packets received from different stations before transmitting the combined packets as part of network coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0076Distributed coding, e.g. network coding, involving channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/38Flow control; Congestion control by adapting coding or compression rate
    • 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/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/03Data mining
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Finance (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 노드들의 네트워크― 각각의 노드는 다른 노드들에 대한 하나 이상의 연결을 가짐 ―에서 트랜잭션을 전파하기 위한 방법 및 장치에 관한 것이다. 방법은, 일정 기간에 걸쳐 복수의 착신 트랜잭션을 수신하는 단계; 네트워크 코딩을 사용하여 복수의 착신 트랜잭션을 결합해서 복합 메시지를 생성하는 단계; 복합 메시지를 네트워크 내의 하나 이상의 노드에 송신하는 단계; 및 평형 상수 파라미터 및 복수의 착신 트랜잭션 중에서 해당 기간에 걸쳐 수신되는 트랜잭션들의 카운트에 기초하여 조정된 기간을 결정하는 단계를 포함한다.

Description

네트워크 코딩을 활성화하기 위한 네트워크 파라미터의 최적화
본 발명은 일반적으로 네트워크에서 트랜잭션을 전파하는 것에 관한 것으로, 특히 트랜잭션 처리 속도를 향상시키는 방법 및 장치에 관한 것이다.
본 명세서에 있어서는, '블록체인(blockchain)'이라는 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledgers)을 포함한다는 의미로 사용한다. 이는 컨센서스-기반의 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함하지만, 이에 한정되는 것은 아니다. 다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 용례는 비트코인(Bitcoin) 원장이다. 본 명세서에서는 편의 및 예시의 목적으로 비트코인이 언급될 수 있지만, 본 발명은 비트코인 블록체인에 사용하는 것으로 한정되지 않으며 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위 내에 있는 것이라는 점에 유의해야 한다.
블록체인은, 결국 트랜잭션들로 구성된 블록들로 구성되는 컴퓨터-기반의 탈-중앙집중형 분산 시스템으로 구현된 컨센서스-기반의 전자 원장이다. 각각의 트랜잭션(Tx)은 블록체인 시스템 참여자들 사이의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 블록이 이전 블록의 해시를 포함하므로, 블록들이 함께 연쇄되어 그 개시 이래로 블록체인에 작성된 모든 트랜잭션의 영구적인 불변의 레코드를 생성한다. 트랜잭션은 그 입력 및 출력에 내재된 스크립트라고 하는 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 비트코인 플랫폼의 경우, 이러한 스크립트는 스택-기반 스크립팅 언어를 사용해서 작성된다.
새로운 트랜잭션을 수신하는 네트워크 노드는 해당 트랜잭션을 네트워크 내의 다른 노드들에 신속하게 푸시하려 할 것이다. 새로운 트랜잭션을 다른 노드들에 전송하기 전에, 이 새로운 트랜잭션은 "유효성 검증(validate)"되는데, 이는 해당 트랜잭션이 가용 블록체인 프로토콜에 따라 적절한 트랜잭션의 기본 요건을 충족하는지를 확인하기 위해 새로운 트랜잭션이 일련의 기준에 대하여 검사됨을 의미한다.
트랜잭션이 블록체인에 작성되게 하기 위해, 트랜잭션들을 수집해서 블록을 형성하도록 설계된 노드("채굴자(miner)" 또는 "채굴 노드(mining node)")에 의해 트랜잭션이 블록에 통합된다. 이후, 채굴자는 노드에 대하여 "작업 증명(proof of work)"을 완료하려고 시도한다. 블록체인 네트워크 전체의 채굴자들은 먼저 트랜잭션들의 블록을 모으고 해당 블록에 대한 연계된 작업 증명을 완료하기 위해 경쟁한다. 성공적인 채굴자는 그 확인된 블록을 블록체인에 추가하고, 해당 블록은 블록체인의 복사본을 유지하는 다른 노드들이 그들의 레코드를 업데이트할 수 있도록 네트워크를 통해 전파된다. 블록을 수신하는 노드들도 해당 블록 및 그 안의 모든 트랜잭션들을 "유효성 검증"해서 프로토콜의 형식적 요건에 준거하고 있는지를 확인한다.
비트코인과 같은 블록체인-기반 네트워크를 사용해서 광범위한 암호화-보안된 교환(환전)의 사용을 가능하게 또는 용이하게 하는 것이 유리할 것이다. 이러한 교환은, 예를 들어, 신용 카드 거래와 같은 지불 처리와 관련될 수 있다. 그러나, 초당 약 3개의 트랜잭션 처리량은 현재 초당 약 50,000개의 트랜잭션량으로 운영되는 이러한 전자 지불을 다루기에는 불충분하다. 블록체인 네트워크의 속도와 연관되는 병목(bottleneck) 중 하나는 트랜잭션의 전파(propagation)이다. 트랜잭션을 수신하는 각각의 노드는 트랜잭션을 유효성 검증하고 나서 피어(peer) 노드에 송신한다. 실제로, 비트코인 프로토콜에 있어서, 노드는 트랜잭션 리스트를 포함하는 INV 메시지를 피어 노드에 송신하고, INV 메시지에서 통고되는 트랜잭션들의 일부 서브세트를 선택하는 GETDATA 응답 메시지를 수신할 것이다. 이후, 노드는 요청된 트랜잭션을 피어 노드에 송신한다. 이 프로세스는 노드가 연결된 각각의 피어 노드에 대하여 수행된다.
따라서, 현재 블록체인의 능력을 제한하고 있는 속도 및 확장성 제약에 대한 해법을 찾아서 트랜잭션 전파 속도를 향상시킴으로써 다량의 트랜잭션을 처리하는 것이 바람직할 것이다. 블록체인과 관련되든, 아니면 다른 용례들과 관련되든 간에, 노드들의 네트워크에서 트랜잭션의 전파에 더욱 일반적으로 적용할 수 있는 해법을 찾는 것이 바람직할 것이다.
그래서, 이러한 해법이 고안되었다.
따라서, 본 발명에 따르면, 첨부된 청구항들에서 정의되는 바와 같은 방법 및 장치가 제공된다.
본원은 트랜잭션(TX)들의 신속한 전파를 가능하게 하는 방법 및 장치를 설명 및 개시한다. 일부 실시예에 있어서, 노드는 네트워크 코딩의 사용을 선택적으로 활성화해서 피어 노드에 송신하기 위한 단일 메시지에 트랜잭션을 결합한다. 네트워크 코딩의 선택적인 사용은 노드가 잠재적인 병목이라고 결정하는 것에 기초할 수 있다. 해법은 일부 구현예에 있어서는 블록체인 네트워크의 맥락에서 적용될 수 있다.
부가적인 또는 대안적인 양태에 있어서, 본원은 노드들의 네트워크― 각각의 노드는 다른 노드들에 대한 하나 이상의 연결을 가짐 ―에서 트랜잭션을 전파하기 위한 컴퓨터-구현 방법을 설명한다. 노드들 중 하나의 노드에서 구현되는 방법은, 노드들 중 하나의 노드가 트랜잭션의 전파에 대한 병목이라고 결정하는 단계; 제1 기간(time period)에 걸쳐, 노드들의 네트워크에서 하나 이상의 제1 노드로부터 복수의 새로운 트랜잭션을 수신하는 단계; 네트워크 코딩 및 로컬 인코딩 벡터를 사용해서 복수의 새로운 트랜잭션을 결합해서 메시지를 생성하는 단계; 및 복수의 새로운 트랜잭션을 노드들의 네트워크에서 하나 이상의 제2 노드에 송신하는 대신에, 메시지 및 글로벌 인코딩 벡터를 하나 이상의 제2 노드에 송신하는 단계를 포함한다.
부가적인 또는 대안적인 양태에 있어서, 본원은 프로세서, 메모리, 네트워크 인터페이스, 및 프로세서에 의한 실행시에, 본 명세서에서 설명되는 방법들 중 하나 이상의 방법을 수행하게 하는 명령어를 포함하는 애플리케이션을 포함하는 노드를 설명한다.
일부 구현예에 있어서, 방법 또는 노드는, 노드로의 인-링크(in-link)의 개수 및 노드로부터의 아웃-링크(out-link)의 개수를 평가하고, 인-링크의 개수가 아웃-링크의 개수를 초과할 경우 노드가 병목이라고 결정함으로써, 노드가 병목이라고 결정한다. 복수의 새로운 트랜잭션 중 제1 트랜잭션을 수신할 때 평가가 이루어질 수 있다. 다른 구현예에 있어서는, 시간에 따른 인-링크의 카운트 및 아웃-링크의 카운트를 추적하는 것을 통해 평가가 이루어질 수 있고, 이때, 인-링크의 개수는 평균 개수이고 아웃-링크의 개수는 평균 개수이다. 일부 예시적인 구현예에 있어서, 노드는 복수의 새로운 트랜잭션 중 제1 트랜잭션을 수신하는 것에 응답하여 노드가 병목이라는 결정을 개시한다.
일부 구현예에 있어서, 결합하는 것 및 송신하는 것은 정지 조건이 충족되었다고 결정하는 것에 응답하여 수행된다. 정지 조건은, 일 실시예에 있어서, 복수의 새로운 트랜잭션 중 제1 트랜잭션의 수신 또는 노드들 중 상기 하나의 노드가 병목이라는 결정 이래로 기간의 만료이다. 다른 실시예에 있어서, 정지 조건은 복수의 새로운 트랜잭션이 새로운 트랜잭션의 최대 개수에 도달했다는 것이다.
일부 구현예에 있어서, 메시지는 복수의 새로운 트랜잭션 중 최장 트랜잭션보다 길지 않은 길이를 갖는다.
부가적인 또는 대안적인 양태에 있어서, 본원은 노드들의 네트워크― 각각의 노드는 다른 노드들에 대한 하나 이상의 연결을 가짐 ―에서 트랜잭션을 전파하기 위한 노드를 설명한다. 노드는 프로세서; 메모리; 네트워크 인터페이스; 및 프로세서-실행 가능 명령어를 포함하는 애플리케이션을 포함한다. 명령어는, 프로세서에 의한 실행시에, 프로세서로 하여금, 일정 기간에 걸쳐 복수의 착신(incoming) 트랜잭션을 수신하게 하고; 네트워크 코딩을 사용하여 복수의 착신 트랜잭션을 결합해서 복합 메시지를 생성하게 하고; 복합 메시지를 네트워크 내의 하나 이상의 노드에 송신하게 하고; 평형 상수 파라미터 및 복수의 착신 트랜잭션 중에서 해당 기간에 걸쳐 수신되는 트랜잭션들의 카운트에 기초하여 조정된 기간을 결정하게 한다.
또 다른 부가적인 또는 대안적인 양태에 있어서, 본원은 노드들의 네트워크― 각각의 노드는 다른 노드들에 대한 하나 이상의 연결을 가짐 ―에서 트랜잭션을 전파하는 컴퓨터-구현 방법을 설명한다. 노드들 중 하나의 노드에서 구현되는 방법은, 일정 기간에 걸쳐 복수의 착신 트랜잭션을 수신하는 단계, 네트워크 코딩을 사용하여 복수의 착신 트랜잭션을 결합해서 복합 메시지를 생성하는 단계, 복합 메시지를 네트워크 내의 하나 이상의 노드에 송신하는 단계, 및 평형 상수 파라미터 및 복수의 착신 트랜잭션 중에서 해당 기간에 걸쳐 수신되는 트랜잭션들의 카운트에 기초하여 조정된 기간을 결정하는 단계를 포함한다.
일부 구현예는 수신하는 단계, 결합해서 복합 메시지를 생성하는 단계 및 송신하는 단계를 조정된 기간을 사용해서 되풀이하여 반복하는 단계 및 후속 반복에서 사용하기 위해 각각의 반복 이후의 추가적인 조정된 기간을 결정하는 단계를 포함한다.
일부 구현예에 있어서, 조정된 기간을 결정하는 단계는 트랜잭션들의 카운트로 나눈 평형 상수 파라미터에 기초하여 조정된 기간을 결정하는 단계를 포함한다. 경우에 따라, 결정에는 조정된 기간이 하회할 수 없는 최소 기간 및 조정된 기간이 상회할 수 없는 최대 기간이 적용된다.
일부 구현예는 복수의 조정된 기간에 기초하여 평균 기간을 결정하는 단계 및 평균 기간을 노드들 중 상기 하나의 노드의 메모리에 저장하는 단계를 포함한다. 경우에 따라, 평균 기간은 노드들의 네트워크에서 하나 이상의 이웃 노드에 송신된다.
일부 구현예는 노드들 중 상기 하나의 노드에 대한 하나 이상의 링크에 대한 하나 이상의 처리량 추정치에 기초하여 평형 상수 파라미터를 초기화하는 단계를 포함한다. 또 다른 구현예는 추정된 초기 기간 및 트랜잭션들의 추정된 초기 카운트에 기초하여 평형 상수 파라미터를 초기화하는 단계를 포함할 수 있다.
일부 구현예는 일정 기간 동안 수신되는 트랜잭션들의 카운트가 네트워크 코딩을 사용하기 위한 최소 카운트를 초과함을 판정하는 단계를 포함하고, 결합해서 복합 메시지를 생성하는 단계 및 송신하는 단계는 해당 판정에 대하여 조건부이다.
부가적인 또는 대안적인 양태에 있어서, 본원은 노드들의 네트워크 내에서 트랜잭션을 전파하기 위한 프로세서 실행 가능 명령어를 저장하는 비일시적인 프로세서 판독 가능 매체를 설명하고, 프로세서 실행 가능 명령어는, 노드들 중 하나의 노드의 프로세서에 의한 실행시에, 프로세서로 하여금 본 명세서에서 설명되는 방법들 중 하나 이상의 방법을 수행하게 한다.
본 명세서에서 설명되는 많은 예시적인 구현예들에 있어서는, 블록체인 트랜잭션을 구체적으로 참조하고 있지만, 본 명세서에서 설명되는 방법 및 장치는 비-블록체인 트랜잭션 전파와 관련하여 구현 및 적용될 수 있음을 이해할 것이다.
본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 블록체인과 연계되는 예시적인 네트워크를 도시한다.
도 2는 입력 버퍼 및 출력 버퍼가 있는 예시적인 노드를 개략적으로 도시한다.
도 3은 네트워크 내의 노드들의 간략화된 예시적인 네트워크를 도시한다.
도 4는 다른 시간에서의 도 3의 네트워크를 도시한다.
도 5는 예시적인 네트워크의 일부를 개략적으로 도시한다.
도 6은 인-링크들 및 하나의 아웃-링크가 있는 노드를 도시한다.
도 7은 노드들의 네트워크에서 트랜잭션을 전파하기 위한 예시적인 프로세스를 흐름도 형태로 도시한다.
도 8은 노드들의 네트워크에서 트랜잭션을 전파하기 위한 예시적인 다른 프로세스를 흐름도 형태로 도시한다.
도 9는 트랜잭션을 전파하기 위한 노드들의 네트워크의 실시예를 도시한다.
도 10은 조정 가능한 기간으로 네트워크 코딩을 사용해서 트랜잭션을 전파하기 위한 예시적인 방법을 흐름도 형태로 도시한다.
도 11은 조정 가능한 기간으로 네트워크 코딩을 사용해서 트랜잭션을 선택적으로 전파하기 위한 예시적인 방법을 흐름도 형태로 도시한다.
도 12는 예시적인 블록체인 노드를 블록도 형태로 도시한다.
본원에 있어서, "및/또는(and/or)"이라는 용어는, 열거된 요소들 중 어느 하나를 단독으로 포함하거나, 임의의 하위-조합을 포함하거나, 또는 요소들을 모두 포함하되, 추가적인 요소들을 반드시 제외하는 것은 아닌, 열거된 요소들의 가능한 모든 조합 및 하위-조합을 포함하기 위한 것이다.
본원에 있어서, "... 또는 ... 중 적어도 하나(at least one of ... or ...)"라는 문구는, 열거된 요소들 중 어느 하나를 단독으로 포함하거나, 임의의 하위-조합을 포함하거나, 또는 요소들을 모두 포함하되, 임의의 추가적인 요소들을 반드시 제외하는 것은 아니며, 또한 반드시 요소들을 모두 필요로 하는 것은 아닌, 열거된 요소들의 어느 하나 이상을 포함하기 위한 것이다.
먼저, 본 명세서에서는 블록체인 네트워크(100)라고 인용될 수 있는 블록체인과 연계되는 예시적인 네트워크를 블록도 형태로 도시하는 도 1을 참조한다. 블록체인 네트워크(100)는 초대 없이 또는 다른 맴버들의 동의 없이 누구나 가담할 수 있는 피어-투-피어(peer-to-peer) 개방형 멤버십 네트워크이다. 블록체인 네트워크(100)가 동작하고 있는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치는 블록체인 네트워크(100)에 참여할 수 있다. 이러한 분산 전자 장치를 노드(102)라고 할 수 있다. 블록체인 프로토콜은, 예를 들어, 비트코인 프로토콜 또는 다른 암호화폐일 수 있다.
블록체인 프로토콜을 실행하고 블록체인 네트워크(100)의 노드(102)를 형성하는 전자 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버와 같은 컴퓨터, 스마트폰과 같은 모바일 장치, 스마트 워치와 같은 웨어러블 컴퓨터 또는 그 밖의 전자 장치를 포함하는 다양한 유형으로 될 수 있다.
블록체인 네트워크(100)의 노드(102)들은 유선 및 무선 통신 기술을 포함할 수 있는 적절한 통신 기술을 사용해서 서로 연결된다. 많은 경우에, 블록체인 네트워크(100)는 적어도 부분적으로 인터넷을 통해 구현되고, 노드(102)들 중 일부는 지리적으로 분산된 장소에 위치될 수 있다.
노드(102)들은 체인에 이전 블록의 해시를 각각 포함하는 블록들로 그룹화된 블록체인 상에 모든 트랜잭션의 글로벌 원장을 유지한다. 글로벌 원장은 분산 원장이며, 각각의 노드(102)는 글로벌 원장의 전체 복사본 또는 부분 복사본을 저장할 수 있다. 글로벌 원장에 영향을 미치는 노드(102)에 의한 트랜잭션들은 다른 노드(102)들에 의해 검증되어 글로벌 원장의 유효성이 유지된다. 비트코인 프로토콜을 사용하는 것과 같이, 블록체인 네트워크를 구현하고 동작하는 세부내용이 당업자에게 이해될 것이다.
각각의 트랜잭션은 하나 이상의 입력 및 하나 이상의 출력을 갖는 것이 일반적이다. 입력 및 출력에 내재된 스크립트는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 트랜잭션의 출력은 트랜잭션의 결과로서 가치가 전송된 어드레스일 수 있다. 이후, 해당 가치는 아직 소비되지 않은 트랜잭션 출력(UTXO)으로서 해당 출력 어드레스와 연계된다. 이후, 후속 트랜잭션은 해당 어드레스를 해당 가치를 소비 또는 분산하기 위해 입력으로서 참조할 수 있다.
노드(102)들은 그 기능에 따라 서로 다른 유형 또는 카테고리로 될 수 있다. 노드(102)와 연계되는 4가지의 기본 기능, 즉 지갑, 채굴, 전체 블록체인 정비, 및 네트워크 라우팅이 존재한다고 제안되어 있다. 이들 기능의 변형이 있을 수도 있다. 노드(102)들은 해당 기능들 중 하나 이상을 가질 수 있다. 예를 들어, "풀 노드(full node)"는 4가지 기능을 모두 제공한다. 라이트웨이트 노드(lightweight node)는, 예를 들어, 디지털 지갑으로 구현될 수 있으며, 단지 지갑 기능 및 네트워크 라우팅 기능만을 특정할 수 있다. 디지털 지갑은, 전체 블록체인을 저장하기보다는, 블록들에 질의할 때 인덱스로서 기능하는 블록 헤더들을 계속 추적할 수 있다. 노드(102)들은 TCP/IP(Transmission Control Protocol)와 같은 연결형 프로토콜을 사용해서 서로 통신한다.
대부분의 블록체인 네트워크에서는, 운영하는 프로토콜에 관계없이, 미확인 트랜잭션들의 풀(통상적으로 "멤풀(mempool)"이라고 함)을 유지하는 모든 노드가 새로운 블록에 포함되기를 기다리는 트랜잭션들의 최신의 정확한 데이터베이스를 갖도록 새로운 트랜잭션들이 네트워크를 통해 신속하게 전파되게 하는 것이 유리하다. 채굴 노드는 이 미확인 트랜잭션들의 풀을 이용해서 잠재적인 새로운 블록을 구축한다. 경우에 따라, 채굴 노드는 미확인 트랜잭션들을 채굴을 위한 새로운 블록에 모을 수 있도록 전체 멤풀을 로컬로 유지한다. 일부 실시형태에 있어서, 멤풀은 노드(유효성 검증 노드 등으로 불릴 수 있음)들의 별도의 네트워크에 의해 관리 및 유지될 수 있으며, 해당 노드들은 채굴 노드들이 블록을 채굴하려고 시도할 수 있게 미확인 트랜잭션 세트를 멤풀로부터 채굴 노드들에게 송신할 수 있다. 일부 구현예에 있어서, 멤풀은 복수의 노드들 사이에서 분산 해시 테이블에 저장될 수 있다. 구조와 관계없이, 임의의 새로운 트랜잭션이 네트워크를 통해 전파되어 가능한 빨리 필요한 노드들에 도달하는 것이 바람직하다. 또한, 성공적으로 채굴된 임의의 새로운 블록들이 네트워크를 통해 가능한 신속하게 전파되어 고아(orphan) 블록의 발생을 줄이는 것이 바람직하다.
현재의 비트코인 네트워크 구현예들에 있어서는, 실시예로서, 새로운 트랜잭션을 수신하는 각각의 노드는 트랜잭션을 유효성 검증하고 나서, 각각의 노드가 연결된 모든 노드들 중 새로운 트랜잭션을 아직 수신하지 않은 노드들에 송신한다. 비트코인의 경우, 노드들은 TCP/IP(Transmission Control Protocol)를 사용한다. 새로운 트랜잭션을 수신한 노드는 이용 가능한 새로운 트랜잭션(들)에 관한 데이터를 가진 각각의 피어 노드에 INV 메시지를 송신하고, 새로운 트랜잭션(들)을 수신하고자 하는 각각의 노드로부터 GETDATA 메시지를 수신할 것이다. 이후, 해당 노드는 트랜잭션을 요청한 각각의 노드에 트랜잭션을 (별도의) TCP 메시지로 송신한다.
이제, 입력 버퍼(202) 및 출력 버퍼(204)가 있는 예시적인 노드(200)를 개략적으로 도시하는 도 2를 참조한다. 예시적인 노드(200)는 intA, intB, intC, intD 등으로 인용되는 다수의 피어 노드와의 네트워크 인터페이스를 갖는다. 입력 버퍼(202)는 다수의 피어 노드로부터의 착신 트랜잭션들을 도시하고, 출력 버퍼(204)는 특정한 수신 트랜잭션들을 각각의 인터페이스를 통해 피어 노드들에 전송하는 것을 도시한다. 네트워크 패킷들은 노드(200)의 운영 체제에 의해 제공되는 프리미티브(primitive)에 따라 애플리케이션-레벨에서 직렬로 송신 및 수신된다. 트랜잭션 x가 단일의 Ethernet(이더넷)/IP 패킷에 적합하다고 가정하면, m개의 피어로의 그 전송은 m개의 서로 다른 출력 패킷들의 버퍼링을 필요로 한다. 입력 네트워크 패킷 및 출력 네트워크 패킷은, 기타 정보와 함께, 직렬화된 트랜잭션 및 송신/수신 피어로의 TCP/IP 연결을 나타내는 논리적 인터페이스 ID를 포함할 것이다.
착신 트랜잭션이 처리될 것으로 예상되는 시간은 입력 큐 L i 의 평균 길이(패킷 단위)에 의존하는 반면, 처리된 트랜잭션이 정확하게 전송될 것으로 예상되는 시간은 출력 큐 L o 의 평균 길이에 의존한다. 따라서, 효율적인 트랜잭션 중계는 L i 값 및 L o 값 모두의 감소에 의존한다. 그러나, 피어들에 대한 선택적인 트랜잭션 중계를 위한 확률적 모델은 L o 에 직접적으로 영향을 미치고, 유도에 의해 L i 에도 영향을 미친다.
현재의 비트코인 구현예에 있어서, INVGETDATA 메시지 패킷은 트랜잭션과 동일한 방식으로 I/O 버퍼에서 대기되며, 전송 및 수신 지연에 심각한 영향을 준다.
보다 다량의 신속한 트랜잭션에 대하여 블록체인을 사용하는 제안이 있다. 예를 들어, 지불을 처리하기 위해 블록체인을 사용하는 것이 고려되고 있다. 지불 처리는, 예를 들어, 신용 카드 거래를 포함할 수 있다. 이러한 트랜잭션의 양은 현재의 블록체인 네트워크 구현예에 대해서는 압도적이다. 따라서, 노드들 사이에서 트랜잭션을 송신하는 것과 같은 통신을 처리하기 위한 블록체인 네트워크의 능력을 향상시키는 방법 및 장치를 제공하는 것이 유리할 것이다.
본원의 일 양태에 따르면, 블록체인 노드는 특정 기간에 걸쳐 새로운 트랜잭션들을 버퍼링하고 나서, 네트워크 코딩을 사용해서 해당 트랜잭션들을 나중에 하나 이상의 다른 블록체인 노드에 송신되는 단일의 메시지로 결합한다. 즉, 블록체인 노드는 새로운 트랜잭션들을 인코딩해서, 새로운 트랜잭션들을 풀릴 수 있는 방식으로 혼합하되, 결합된 메시지를 생성하는 메시지를 생성한다. 결합된 메시지는 트랜잭션들 중 가장 큰 트랜잭션의 크기에 작은 오버헤드를 더한 것이다.
블록체인 노드가 네트워크 코딩을 사용하면, 노드는 TCP/IP INVGETDATA 메시지에 의존하지 않아도 되는데, 그 이유는 노드가 수신하고 싶어하는 새로운 트랜잭션들의 서브세트를 선별하는 대신, 노드가 모든 새로운 트랜잭션들을 인코딩된 메시지 형태로 송신할 것이기 때문이다.
이제, 블록체인 네트워크(300) 내의 노드들의 간략화된 예시적인 네트워크를 도시하는 도 3을 참조한다. 각각의 노드는 네트워크 단말(즉, 블록체인 노드)을 나타내지만, 에지들은 노드들 사이의 링크를 나타낸다. 이 예시의 목적상, 각각의 링크마다 한 번에 단일 비트를 송신 또는 수신할 수 있다고 가정한다.
노드들 중 2개는 2개의 새로운 트랜잭션 Tx1 및 Tx2를 수신하는 소스로서 S1 및 S2로 표시된다. 이 예시적인 블록체인 네트워크(300)에 있어서는, 각각의 노드가 미확인 트랜잭션들의 멤풀을 유지하므로, 노드가 새로운 트랜잭션을 수신할 경우에는, 새로운 트랜잭션이 네트워크를 통해 다른 모든 노드들에 전파된다. 각각의 노드는 새로운 트랜잭션들을 유효성 검증해서 그들 각각의 로컬 멤풀에 저장하고, 아직 새로운 트랜잭션들을 갖고 있지 않은 임의의 피어 노드들에 새로운 트랜잭션들을 전달한다. 블록체인 네트워크(300)의 피어-투-피어 특성으로 인해, 모든 노드가 새로운 트랜잭션을 동시에 수신하는 것은 아니며, 이는 새로운 트랜잭션이 네트워크(300) 내의 모든 노드에 도달하는 데 약간의 시간이 걸릴 것임을 의미한다. 예를 들어, 현재의 비트코인 네트워크 구현예에 있어서는, 새로운 유효한 트랜잭션이 비트코인 네트워크의 90%의 노드들에 도달하는 데 평균 3.5초가 걸리게 된다. 이론상, 트랜잭션의 전송이 네트워크의 모든 노드에 도달하는 것이 즉각적이었으면, 예컨대 t=0이었으면, 네트워크는 이중 소비(double spending) 공격의 가능성으로부터 보호될 것이다. 따라서, 블록체인 네트워크의 처리량을 향상시키는 것이 전체 시스템의 확장성 및 신뢰성을 허용하는 핵심 요소이다.
블록체인 네트워크(300)의 노드들 중 2개는 수신기로서 R1 및 R2로 표시된다. 노드 I1 및 I2는 멤풀의 복사본을 저장할 수도, 또는 저장하지 않을 수도 있는 중간 노드를 나타내지만, 더욱 중요하게는 시간 T에서의 네트워크(300)에 대한 병목을 나타낸다. 노드 I1이 2개의 새로운 트랜잭션 Tx1 및 Tx2를 수신할 경우, 대략적으로 동시에, 해당 노드는 어느 트랜잭션을 먼저 송신할지를 결정해야 한다. 즉, I1로부터 I2까지의 발신(outgoing) 에지는 적어도 시간 T에서 병목이다.
네트워크 코딩을 사용하면, 노드 I1은 새로운 트랜잭션 Tx1 및 Tx2를, Tx1 및 Tx2 중 더 큰 것과 동일한 크기의 복합 메시지 M으로 결합할 수 있다. 해당 노드는 메시지 M을 노드 I2에 송신하고 나서, 메시지 M을 수신기 R1 및 R2로 전달한다. 수신기 R1 및 R2는 개별 트랜잭션들 Tx1 및 Tx2을 복구할 수 있다. 예를 들어, 수신기 R1은 Tx1 및 M을 수신할 것이다. M이 Tx1 및 Tx2의 결합에 기초하기 때문에, R1은 Tx2를 도출하기 위한 방정식 (Tx1, Tx1+Tx2)만 풀면 된다. 반대로, R2는 Tx2를 수신할 것이고, Tx1을 도출하기 위해 방정식 (Tx2, Tx1+Tx2)를 풀어야 한다.
네트워크의 구성 및 임의의 주어진 시간에 트랜잭션이 생성되는 위치에 따라, 병목은 시간의 경과에 따라 나타나거나 또는 사라질 수 있다. 병목은, 네트워크의 성능을 크게 제한하는, 특히 블록체인 네트워크의 경우에는, 트랜잭션들(또는 블록들)의 전송 속도를 느리게 하는 노드들 사이의 링크(에지)이다. 그러나, 병목(노드들 사이의 링크)의 소스는 노드이다.
이제, 시간 T'에 동일한 블록체인 네트워크(300)를 도시하는 도 4를 참조한다. 이 실시예에 있어서, 트랜잭션 Tx1은 노드 R1에서 수신되고, 트랜잭션 Tx3은 노드 I2에서 수신된다. 이 경우, 노드 I1에서 다시 병목이 생기지만, 이번에는 Tx2 및 Tx3이 모두 동시에 노드 I1에 도달함으로 인해, 노드 I1과 노드 S1 사이의 링크에 대하여 병목이 생긴다. 네트워크 코딩을 사용해서, 노드 I1은 Tx2 및 Tx3을 메시지 M'로 결합할 수 있다.
한 가지 옵션은 모든 노드가 네트워크 코딩을 모든 상황에 적용하도록 하는 것이다. 그러나, 당시에 유리할 것으로 예상될 수 있는 특정 노드에서 네트워크 코딩을 선택적으로 적용함으로써 성능을 더욱 향상시키는 것이 가능할 수도 있다. 일 실시예로서, 노드가 임의의 정해진 시점에 병목을 나타내는지의 여부를 결정할 수 있으면, 해당 노드는 네트워크 코딩을 메시지의 전송에 선택적으로 또는 적응적으로 적용할 수 있지만, 병목이 아니면 일반적인 트랜잭션 전송을 사용할 수 있다.
따라서, 노드는 정해진 시점에 병목 가능성이 있는지의 여부를 평가 또는 결정하도록 구성될 수 있다. 어떤 의미에서는, 이것은 인-링크와 아웃-링크 사이의 균형에 기초하여 결정될 수 있다. 즉, 정해진 시점에, 노드는 하나 이상의 링크를 통해 트랜잭션들을 수신할 수 있으며, 해당 트랜잭션들을 하나 이상을 링크를 통해 송신하려 할 수 있다. 노드들 사이의 연결(즉, 에지)은 네트워크에서의 트래픽의 흐름에 따라 임의의 정해진 시점에 인-링크 또는 아웃-링크로서 기능할 수 있다. 경우에 따라, 인-링크의 개수는 "팬-인(fan-in)"이라고 인용될 수 있으며, 아웃-링크의 개수는 "팬-아웃(fan-out)"이라고 인용될 수 있다.
일 구현예에 있어서, 블록체인 네트워크에서의 노드들 중 적어도 일부는 제1 이웃 노드들에 대한 팬-인 링크 및 팬-아웃 링크의 상대적인 개수를 추적하는 테이블 또는 다른 데이터 구조를 유지한다. 도 5는 제1 노드 I1 및 제2 노드 I2가 각각 임의의 정해진 시간에 해당 노드에 대한 팬-인 수량 및 팬-아웃 수량을 식별하는 테이블 또는 다른 데이터 구조를 로컬로 저장하는 예시적인 네트워크의 일부를 개략적으로 도시한다. 상대적인 팬-인 개수 및 팬-아웃 개수에 기초하여, 노드는 병목 가능성이 있는지의 여부를 결정할 수 있다. 일반적으로, 해당 결정은 인-링크의 개수(팬-인)가 아웃-링크의 개수(팬-아웃)를 초과하는지의 여부에 기초할 수 있으며, 이 경우, 초과할 때 노드는 병목일 수 있다.
예시적인 일 구현예에 있어서, 노드가 병목인지의 여부에 대한 평가는 기간 ΔT에 걸쳐 행해진다. 테이블에서의 수량들은 기간 ΔT 동안의 평균 팬-인 및 팬-아웃일 수 있다.
또한, 일부 구현예에 있어서는, 결정이 네트워크 토폴로지의 인식에 부분적으로 기초할 수도 있다. 예를 들어, 주변 노드인 노드는 병목일 가능성이 낮지만, 중간 노드인 노드는 적어도 어떤 경우에는 병목일 가능성이 높다.
또 다른 구현예에 있어서, 노드가 병목인지의 여부에 대한 결정은 출력 큐의 상태에 기초할 수 있거나, 또는 시간의 경과에 따른 출력 큐에서의 백로그(backlog)의 평가에 기초할 수 있다.
병목의 결정 또는 식별은, 일부 구현예에 있어서는, 상기 인자들의 조합 또는 하위-조합을 포함하는 것일 수 있다.
네트워크 코딩이 당시의 주요 패킷-교환 네트워킹의 대안으로서 개발된 것은 거의 20여년 전이다. 네트워크 코딩은 네트워크를 링크 능력을 갖는 직접적인 그래프 (N,L)로서 모델링하여, 노드 n∈N이 브로드캐스트 능력 h를 달성하는 속도로 일련의 수신기 R⊆N에 정보를 통신할 수 있음을 입증하고, 여기서, h는 네트워크의 내부 노드들에서 인코딩을 제공한 임의의 r∈R과 s 사이의 최소 절단(minimum cut)의 값이다.
절단 C는 그래프 G=(V,E)의 정점 V를 2개의 분리된 부분 집합 S 및 T로 양분한 것으로 정의된다. 절단 C=(S,T)의 절단 세트는 S에 하나의 종점이 있고 T에 다른 종점이 있는 에지들의 집합 이다.
네트워크 코딩을 위한 예시적인 방법론은, 본 명세서에 참조로 포함되는, The University (2003), v.41, pp. 40-49의 통신, 제어 및 컴퓨팅에 대한 연례 앨러튼 컨퍼런스 회의(Proceedings of the annual Allerton conference on communication control and computing)에서의 "Practical Network Coding"에서 P.A. Chou, Y. Wu, 및 K. Jain에 의해 설명되었다. 이 방법론은 네트워크 토폴로지 또는 인코딩 또는 디코딩 기능에 대한 임의의 중앙집중형 지식에 대한 필요성을 제거했다. Chou에 따르면, 네트워크 N은 단위 용량 에지 (e), 송신기 s∈V, 및 특정 개수의 수신기 T⊆E를 갖는 비순환 그래프 G=(V,E)로서 표현될 있다. 노드 v=in(e)에 대한 각각의 에지 e∈E 출력은 v에 진입하는 에지 e'에 대한 심볼 y(e')의 선형 결합인 심볼 y(e)를 갖는다. 도 6은 노드(v) 및 출력 y(e)를 도시한다. 특히, 출력은 다음 식에 의해 정해진다:
여기서, y(ei')=xi, i=1, ..., h, 및 벡터 me는 에지 e에 대한 노드 v에서 인코딩 함수를 나타내는 로컬 인코딩 벡터이고, h는 브로드캐스트 능력을 송신기와 수신기 사이의 임의의 절단에서 최소 에지 개수로서 나타낸다.
Chou에 따르면, 임의의 에지 e∈E에 대한 출력 y(e)는 소스 심볼의 선형 결합 y(e)=이고, 계수 g(e)=[g1(e), ..., gh(e)]의 h-차원 벡터는 g(e)=에 의해 재귀적으로 취득될 수 있고, 여기서 에지 ei'에 대한 g(ei')는 i-차 단위 벡터로 시작된다. 벡터 g(e)를 e에 따른 글로벌 인코딩 벡터라고 할 수 있다. 그 h 착신 에지를 따라 하기의 심볼을 수신하는 임의의 노드 t는:
글로벌 인코딩 벡터의 매트릭스 Gt가 랭크 h를 가질 경우, 소스 심볼 x1, ..., xh를 복구할 수 있다. 이러한 상기의 실시예에 있어서, 블록체인 트랜잭션 네트워크 코딩에 적용되는 트랜잭션은 어레이 [x1, ..., xh]에 저장된다. 자세한 내용은 Chou에서 확인된다.
발신 에지 e에 대한 글로벌 인코딩 벡터는 착신 에지 e'의 글로벌 인코딩 벡터의 로컬 인코딩에 기초하는 것으로 특정될 수 있다.
네트워크 코딩은 네트워크를 통해 트랜잭션을 전파하는 데 사용될 수 있음을 이해할 것이다. 또한, 네트워크 코딩은 미확인 트랜잭션들의 분산 해시 테이블을 구현하도록 설계되는 오버레이 네트워크 내에서 사용될 수 있으며, 각각의 트랜잭션은 분산 해시 테이블 내에 용장성(redundancy)을 확보하기 위해 적어도 2개의 노드에 의해 저장된다. 이 경우, 네트워크 코딩은 트랜잭션을 저장을 위해 2개 이상의 노드에 송신하는 데 사용될 수 있다. 그러나, 네트워크 코딩의 사용은 트랜잭션을 저장하는 2개 이상의 노드의 손실로부터 복구할 수 있다는 추가적인 장점을 제공할 수 있다. 중간 노드가 트랜잭션과 관련된 결합된 데이터를 포함하는 하나 이상의 메시지를 수신했기 때문에, 누락된 트랜잭션은 네트워크 코딩 메시지로부터 복구될 수 있다.
이제, 블록체인 네트워크에서 트랜잭션을 전파하기 위한 예시적인 프로세스(700)를 흐름도 형태로 도시하는 도 7을 참조한다. 프로세스(700)는 블록체인 네트워크의 노드에 의해 구현된다. 노드는, 이 맥락에서는, 블록체인 네트워크에서의 채굴 노드, 풀 노드, 유효성 검증 노드, 또는 다른 유형의 이산 블록체인 노드를 의미하는 것으로 이해될 수 있다. 노드는 블록체인 프로토콜을 구현하는 네트워크 연결(들), 컴퓨팅 리소스, 및 실행 소프트웨어를 갖는 컴퓨팅 장치이다.
동작(702)에 있어서, 노드는 시간 T에 네트워크에서 노드가 잠재적인 병목인 것으로 결정한다. 이 결정은, 전술한 바와 같이, 시간 T에 팬-인 및 팬-아웃 비교에 기초할 수 있다. 예를 들어, 시간 T에 팬-인이 팬-아웃을 초과하면, 노드는 노드가 병목인 것으로 결정할 수 있다. 노드가 병목인지의 여부를 결정함에 있어서 다른 인자들이 대안으로서 또는 부가적으로 취해질 수 있다. 실시예들은 일정 기간에 걸친 평균 팬-인 및 팬-아웃, 네트워크 토폴로지에서의 노드 위치, 노드의 출력 큐의 현재 또는 과거의 상태, 또는 수신 트랜잭션을 전파하기 위한 노드 능력과 관련된 임의의 다른 인자를 포함한다.
노드가 병목인 것으로 결정했으면, 동작(704)에서, 노드는 기간 ΔT에 걸쳐 트랜잭션들을 축적한다. 해당 기간은 소정 길이의 시간일 수 있다. 일부 예시적인 구현예에 있어서, 기간은 네트워크 트래픽 측정치, 지리적 정보, 또는 둘 모두에 기초하여 달라질 수 있다. 기간은 고정된 시간이 아니라, 오히려 최소 개수의 트랜잭션이 수신될 때까지 트랜잭션의 축적이 발생할 수 있으며, 또한 축적된 트랜잭션이 너무 오랫동안 유지되지 않도록 최대 시간이 적용될 수 있다.
동작(706)에서, 노드가 축적한 복수의 트랜잭션은 네트워크 코딩을 사용해서 단일의 메시지로 결합된다. 메시지는, 일부 구현예에 있어서는, 가장 긴 트랜잭션만큼 긴 길이를 가질 수 있다. 메시지는, 일부 구현예에 있어서는, 가장 긴 트랜잭션보다 길지 않은 길이(비트 단위)를 가질 수 있다. 메시지는 로컬 인코딩 벡터 및 네트워크 코딩 알고리즘을 사용해서 생성된다.
이후, 동작(708)에서, 노드는 메시지 및 글로벌 인코딩 벡터를 하나 이상의 노드에 송신한다. 메시지는 실제 트랜잭션을 송신하는 대신 송신된다. 즉, 노드는 복수의 축적된 트랜잭션을 송신하지 않으며, 대신, 그 모든 아웃-링크 상의 피어 노드들에 메시지 및 글로벌 인코딩 벡터를 송신한다.
이제, 블록체인 네트워크에서 트랜잭션을 전파하기 위한 예시적인 방법(800)을 흐름도 형태로 도시하는 도 8을 참조한다. 앞서 주지된 바와 같이, 방법(800)은 복수의 인-링크 및 아웃-링크를 갖는 블록체인 노드에서 구현될 수 있다.
동작(802)에서, 블록체인 노드는 트랜잭션을 수신한다. 수신 트랜잭션은 인-링크를 통해 수신된다. 블록체인은 트랜잭션을 프로토콜 요건에 대하여 유효성 검증해서 트랜잭션이 적절한지를 확인할 수 있다. 동작(804)에서, 노드는 트랜잭션에 대하여 노드가 병목인지의 여부를 결정할 수 있다. 결정은 그 당시의 인-링크(팬-인)와 아웃-링크(팬-아웃) 사이의 균형의 평가에 기초할 수 있다. 결정은, 전술한 바와 같이, 다른 인자들에 기초할 수 있다.
노드가 병목이 아니라고 결정되면, 동작(806)에서, 통상 그렇듯이, 트랜잭션을 블록체인 네트워크에서 그 아웃-링크 상의 하나 이상의 피어 노드에 전달한다. 그러나, 노드가 병목 가능성이 있다고 결정되면, 동작(807)에서, 노드는 트랜잭션을 메모리(예를 들어, 버퍼 또는 다른 메모리 요소)에 저장한다.
이후, 노드는, 동작(808)에 의해 나타내진 바와 같이, 계속해서 트랜잭션들을 수신하고, 정지 조건이 충족되었다고 결정될 때까지 해당 트랜잭션들을 저장한다. 이 실시예에 있어서, 정지 조건은 기간 ΔT가 경과한 경우이다. 기간은, 예를 들어, 노드가 병목이라는 결정으로부터, 또는 동작(802)에서의 제1 트랜잭션의 수신으로부터 시작될 수 있다. 기간을 대신하여 다른 조건들, 즉, 예를 들어, 메모리에 최대의 트랜잭션 개수의 축적, 또는 상기 인자들의 임의의 조합이 사용될 수 있다.
정지 조건이 충족되면, 예컨대, 이 경우에는 ΔT가 경과하면, 노드는, 동작(812)에 의해 지시된 바와 같이, 네트워크 코딩 및 로컬 인코딩 벡터를 사용해서 저장된 트랜잭션으로부터 메시지 M을 구축한다. 동작(814)에서, 노드는 이 메시지 및 글로벌 인코딩 벡터를 그 모든 아웃-링크를 통해 다른 노드들에 송신한다.
네트워크 코딩을 위한 조정 가능한 기간(Adjustable time period for network coding)
일부 구현예에 있어서, 기간 ΔT는 고정되지 않을 수 있다. 즉, 노드는 네트워크의 특성 또는 노드 내외로의 트랜잭션 트래픽에 기초하여 때때로 ΔT를 조정할 수 있다. 일부 실시형태에 있어서, 기간 ΔT는 해당 기간이 현재 트래픽 레벨에 지속적으로 적응하도록 각각의 ΔT가 만료된 후에 조정될 수 있다. 일부 실시형태에 있어서, 기간 ΔT에 대한 임의의 조정은 최소 기간과 최대 기간 이내로 제한된다. 일부 구현예에 있어서, 기간 ΔT는, 예를 들면, 매 2번째, 5번째, 10번째, 또는 다른 차수의 기간 이후에, 또는 결정된 조정치가 임계 수량 또는 백분율 이상으로 기간을 변경할 때마다, 주기적으로만 조정될 수 있다.
트래픽 조건에 적응하도록, 노드는 "처리량(throughput)"의 개념으로 작업할 수 있다. 노드는 네트워크 내의 복수의 다른 노드들에 대한 인-링크 및 아웃-링크를 가질 수 있다. 이제, 예시적인 노드들의 네트워크(900)를 개략적으로 도시하는 도 9를 참조한다. 노드(N3)는 노드들(N1, N2, N4, N5 및 N6)에 대한 인-링크 및 아웃-링크를 갖는다. 이들 노드는 (논리적) 제1 이웃으로서 특정될 수 있다. 일반적으로, 노드는 그 제1 이웃을 인식하고 있다. 즉, 해당 노드들은 트랜잭션을 (네트워크의 노드들 중 다른 노드를 통해 라우팅하지 않고) 직접적으로 수신할 수 있거나, 또는 트랜잭션을 직접적으로 송신할 수 있는 노드이다. "제1 이웃(first neighbour)"은 반드시 지리적으로 근접한 것은 아니며, (다른 노드를 통하지 않고) 다수의 네트워크 요소 및 링크를 통과해서 도달할 수 있다는 점에 유의한다.
노드(N3)는 하기의 예시적인 표와 같이, 노드(N3)에 로컬로 저장되는 표에서의 그 제1 이웃들을 추적할 수 있다:
상기 실시예에 있어서, 노드(N3)는 표에서 노드들로부터 각각의 인-링크를 통해 수신되는 메시지의 크기(si) 및 표에서 노드들로 각각의 아웃-링크를 통해 송신되는 메시지의 크기(so)를 추적한다. 링크의 처리량은 입력과 출력 사이에 균등하게 할당되는 것으로 가정될 수 있으며, 즉 해당 가정이 항상 참일 수는 없더라도, 채널의 대역폭은 균등하게 분할된다. 그러나, 해당 가정에 기초하여, 분석 기간 동안의 링크 또는 채널의 처리량 Tr이 다음 식에 의해 주어질 수 있다:
즉, 처리량 Tr은 링크를 통해 송신 또는 수신되는 총 데이터량 이상이어야 한다.
인-링크 및 아웃-링크에 대한 균등한 처리량의 가정이 실제 구현예에서는 고려되지 않을 수도 있음을 이해할 것이다. 따라서, 균형 파라미터 γ∈[0,1]은 다음과 같이 입력/출력 처리량 비율로 정의될 수 있다:
(입력)
(출력)
상기 식에 있어서, 파라미터 ΔT는 송신/수신된 메시지의 크기가 측정되는 기간을 나타낸다. 상기 식은 채널 또는 링크의 실제 최대 처리량 Tr을 나타내는 것이 아니라, 링크 또는 채널의 처리량 Tr이 적어도 실제 사용 데이터로 표시되는 것(실제로 송신/수신된 메시지의 크기)만큼 커야 한다는 것을 보여주고 있음을 이해할 것이다. 따라서, 일부 사례에 있어서, 링크의 처리량 Tr은 링크를 통해 송신 및 수신되는 메시지의 크기의 측정치와 같이, 과거 사용 데이터에 기초하여 추정될 수 있다.
링크의 처리량 Tr은 일부 다른 경험적 데이터를 사용해서 추정될 수 있다. 예를 들어, TCP/IP에 기초하여 운영되는 네트워크(즉, 비트코인이 일 예시임)의 경우, TCP 수신 윈도우(Receive Window)(RWIN) 및 왕복 시간(Round Trip Time)(RTT)을 사용해서 링크의 처리량을 결정할 수 있다. RWIN은 송신자에게 어떠한 접수통지도 송신하지 않고 노드가 수신할 수 있는 데이터의 양을 나타내며, 네트워크에 의해 사용되는 가용 통신 프로토콜에 의해 정의될 수 있다. RTT는 무시해도 될 만한 크기의 메시지에 대하여 링크의 일단에 있는 노드로부터 링크의 타단에 있는 노드로 이동했다가 다시 돌아오는 데 필요한 시간의 측정치이며, 때때로 핑(ping) 메시지 등으로 인용될 수도 있다.
또한, 사전 설정된 또는 소정의 추정치 또는 다른 처리량 추정 소스를 사용해서 이웃 노드들로부터 처리량 정보를 취득하는 것을 포함하여, 처리량 Tr을 결정하기 위한 다른 메커니즘이 이용될 수도 있다.
본원의 일부 구현예에 있어서, 노드는 그 다양한 링크들의 처리량 추정치에 관한 로컬에 저장된 정보를 유지할 수 있다. 링크들은 제1 이웃 노드들에 대한 링크일 수 있다. 예를 들어, 상기의 표 1은 다음과 같이 각각의 링크에 대한 처리량 추정치와 관련된 칼럼을 추가하도록 수정될 수 있다:
노드는 그 가용 링크들의 중간 또는 평균 처리량을 추가로 결정할 수 있다.
전술한 바와 같이, 네트워크 코딩은, 개별 메시지를 전파하는 대신, 노드로부터 아웃-링크를 통해 송출되게 되는 복합 메시지 M을 생성하기 위해 기간 ΔT 동안 수신되는 일련의 트랜잭션들을 결합하는 것을 포함할 수 있다. 본원의 일부 구현예에 있어서, 기간 ΔT는 적어도 부분적으로 처리량 및 수신된 트랜잭션들의 수에 기초할 수 있다.
처리량은 전술한 바와 같이, 노드의 가용 링크들의 중간 또는 평균 처리량에 기초하여 설정될 수 있다.
대안으로서, 일부 사례에 있어서, 노드는 네트워크에 관한 일부 가정에 기초하여 처리량을 글로벌 추정 처리량 값으로 초기화할 수 있다. 예를 들어, 기간 ΔT는 먼저 사전 설정된 값으로 초기화될 수 있으며, 트랜잭션의 수는 추정된 처리량을 결정할 수 있는 추정된 사전 설정된 값으로 설정된다. 비트코인 네트워크의 특정한 실시예에 있어서, 사전 설정된 기간 ΔT는 3.5초일 수 있는 데, 그 이유는 이것이 비트코인 네트워크에서 트랜잭션이 90%의 노드들에 도달하는 데 필요한 대략적인 시간이기 때문이다. 다른 구현예들에 있어서는, 기간 ΔT가 다른 값으로 초기화될 수 있다. 또한, 기간 ΔT에 수신될 수 있는 트랜잭션의 수도 마찬가지로 초기에 사전 설정된 값으로 가정될 수 있다. 비트코인 네트워크의 특정한 실시예에 있어서, 트랜잭션의 개수 N은, 평균 블록(현재의 비트코인 구현예에 있어서)이 약 2000개의 트랜잭션을 포함하고 2000개를 3.5로 나누면 대략 500개가 된다는 것에 기초하여, 500개로 초기화될 수 있다. 다른 구현예들에 있어서는, 다른 초기화 값들이 사용될 수 있다.
기간 ΔT 및 트랜잭션 개수에 대하여 초기값들을 선택하면, 이들 파라미터들간의 관계가 기간 ΔT와 트랜잭션의 개수의 곱으로서 확립될 수 있다.
여기서, K는 기간 ΔT 및 트랜잭션의 개수 N에 대한 반비례 상수로 설정된다. 상기의 식에 있어서, ΔT0은 기간 ΔT에 대한 초기화된 값이고, N0은 수신된 트랜잭션의 개수에 대한 초기화된 값이다. 다른 실시형태들에 있어서, 상수 K는 전술한 바와 같이, 다른 가정 또는 측정에 기초하여 초기화될 수 있다. 상수 K는 N과 ΔT 사이의 반비례 관계와 관련되는 한 처리량 Tr과 관련되고, N개의 트랜잭션이 각각 특정 크기를 가지면, N개의 트랜잭션은 특정 데이터량, 예컨대, ΔT 기간 동안 수신되는 si를 누적적으로 나타낸다. 경우에 따라, 상수 K는 추정된 또는 목표 처리량 Tr에 부분적으로 기초하여 결정될 수 있다.
처리량 Tr의 개념과 상수 K 사이의 관계는 다음 식으로 설명된다:
초기 상수 K를 결정하면, 노드는 ΔT 동안 그 인-링크에서 실제로 수신되는 트랜잭션의 개수를 모니터링해서 ΔT를 조정할지의 여부를 결정한다. 적어도 하나의 구현예에 있어서, ΔT의 조정은 적어도 하나의 이전의 ΔT에서 수신되는 트랜잭션의 개수 및 상수 K에 기초한다. 예를 들어, ΔTi를 결정하기 위한 하나의 메커니즘은 다음 식에 의해 주어진다:
여기서, i는 인덱스이다. 이 간략화된 실시예에 있어서, 시간 i에 대한 ΔT는 직전의 ΔT에서 수신되는 트랜잭션의 개수에 기초하며, K는 상수이다. 어떤 의미에서, K는 기간과 트랜잭션의 개수의 곱에 기초하는 한 평형 상수로 표시될 수 있으며, 일정 기간에 평형 상수를 충족시키기에는 너무 적은 트랜잭션이 수신되면, 평형 상수를 유지하려고 해당 기간이 길어질 수 있다.
다른 예시적인 구현예들에 있어서, 수신된 트랜잭션의 개수는 이전의 기간 ΔTi-1 단독에만 기초하는 것이 아니라, 대신에 2개 이상의 이전의 기간들의 평균에 기초할 수 있다. 경우에 따라, 평균은 가중 평균으로 결정되어, 보다 최근의 기간일수록 더 큰 가중치를 부여할 수 있다.
예시적인 다른 구현예들에 있어서는, 처리량도 마찬가지로 다수의 인자들 중 어느 하나에 기초하여 시간에 따라 조정될 수 있다. 일 실시예에 있어서, 상수 K는 하나 이상의 이웃 노드들로부터의 중간 또는 평균 처리량 값에 기초하여 초기화될 수 있다.
이제, 네트워크 코딩을 사용해서 노드들의 네트워크에서 트랜잭션을 전파하기 위한 하나의 예시적인 방법(1000)을 흐름도 형태로 도시하는 도 10을 참조한다. 방법(1000)은 노드들의 네트워크에서 노드들 중 하나의 노드에서 구현된다. 이 실시예에 있어서, 노드는 트랜잭션을 전파하기 위해 네트워크 코딩을 사용하도록 구성된다.
동작(1002)에서, 특정 파라미터들이 초기화될 수 있다. 예를 들어, 초기 기간 ΔT0이 소정의 값으로 설정될 수 있다. 전술한 바와 같이, 경우에 따라, 초기 기간 ΔT0은 이웃 노드들에 의해 사용되는 현재 기간 ΔT로부터 도출되는 값으로 설정될 수 있다. 경우에 따라, 초기 기간은 소정의 처리량 값과 예상 트랜잭션 개수에 기초하여 계산될 수 있다. 상기의 조합들을 포함하는 다른 메커니즘들이 초기 기간 ΔT0을 결정하는 데 사용될 수 있다.
선택적으로, 해당 파라미터가 초기 기간 ΔT0 또는 상수 K, 즉 평형 상수를 결정하는 데 사용되면, 트랜잭션의 개수 N0이 초기화될 수도 있다. 경우에 따라, 트랜잭션의 개수 N0은, 예를 들어, 다음과 같은 식을 사용해서 상수 K를 결정하는 데 사용될 수 있다.
경우에 따라, 트랜잭션의 개수 N0은, 예를 들어, 다음과 같은 식을 사용해서, 소정의 상수 K를 사용하여 초기 기간 ΔT0을 결정하기 위한 기준으로서 사용될 수 있다:
`
상수 K는 초기 기간 ΔT0 및 트랜잭션의 개수 N0을 사용해서 결정될 수 있지만, 일부 다른 경우들에 있어서는, 사전 설정된 또는 소정의 평형 상수 값으로 설정될 수 있다. 사용되는 네트워크 또는 프로토콜에 대한 변경이 트랜잭션의 양 및/또는 처리량에 영향을 줄 수 있는 노드에 대한 링크들의 가능한 특성에 영향을 미치면, 네트워크가 변경됨에 따라 노드가 상수 K의 소정의 값을 업데이트할 수 있다. 경우에 따라, 상수 K는 경험적으로 결정될 수 있다. 예를 들어, 상수 K는 처리량에 관한 과거 데이터를 사용해서 결정될 수 있다. 다른 실시예에 있어서, 상수 K는 전술한 바와 같이, 왕복 시간 테스트에 기초하여 결정될 수 있다. 또 다른 실시예에 있어서, 상수 K는 하나 이상의 이웃 노드에서의 처리량에 관한 데이터에 기초하여 결정될 수 있다. 예시로서, 현재의 노드는 그 이웃 노드들과 연계되는 처리량 값들의 평균을 내고, 이를 이용해서 상수 K에 도달하도록 평형 상수를 추정할 수 있다.
동작(1004)에서, 적어도 초기 기간 ΔT0 및 상수 K를 초기화하면, 노드는 그 인-링크 상에서 트랜잭션을 수신한다. 트랜잭션은 해당 노드의 메모리에 버퍼링된다. 동작(1006)에 의해 지시된 바와 같이, 노드는 기간 ΔTi가 만료될 때까지 그 인-링크 상에서 트랜잭션을 계속해서 수신 및 보유한다. i는 단순히 인덱스이고 i는 초기에 0으로 설정되어 있음을 이해할 것이다.
기간이 만료되면, 동작(1008)에서, 네트워크 코딩을 사용해서 트랜잭션이 송신된다. 이는 네트워크 코딩 동작을 이용하여 트랜잭션들을 결합해서 메시지 M을 생성하는 것 및 노드의 아웃-링크를 통해 해당 메시지를 송신하는 것을 포함한다.
동작(1010)에서, 인덱스 i가 증분되고 나서, 동작(1012)에서, 노드가 기간 ΔTi를 업데이트한다. 이 실시예에 있어서, 업데이트된 기간 ΔTi는 상수 K를 이전의 기간 ΔTi-1 동안 수신된 트랜잭션들의 실제 개수 또는 카운트로 나눈 것에 기초한다. 기간 ΔTi에 대한 조정은, 상회할 수 없는 최대치 또는 하회할 수 없는 최소치와 같이, 특정한 제약을 받을 수 있다. 일부 구현예에 있어서, 조정은 하나 이상의 이전의 기간 및 해당 기간에 수신한 트랜잭션의 카운트에 기초할 수 있다. 일부 구현예에 있어서, 예를 들어, 반복당 특정 백분율 이내의 변화와 같이, 상이한 또는 추가적인 제약이 기간 ΔTi에 대한 조정에 부과될 수 있다.
이 실시예에 있어서, 노드는 각각의 반복에 있어서 네트워크 코딩을 사용하여 트랜잭션을 송신한다. 다른 예시적인 구현예에 있어서, 노드는 일정 기간에 트랜잭션의 수량이 네트워크 코딩의 사용을 정당화할 때 네트워크 코딩을 선택적으로 사용할 수 있다. 이제, 노드들의 네트워크에서 트랜잭션을 전파하기 위한 예시적인 방법(1100)을 흐름도 형태로 도시하는 도 11을 참조한다.
동작들(1102, 1104 및 1106)은 전술한 도 10의 동작들(1002, 1004 및 1006)에 대응한다. 동작(1108)에서, 노드는 네트워크 코딩을 사용하여 정당화하기에 충분한 수의 트랜잭션이 기간 ΔTi 동안 수신되었는지의 여부를 평가한다. 일부 실시예에 있어서, 이 평가는 수신된 트랜잭션의 개수 Ni를 네트워크 코딩의 사용을 위해 규정된 최소 트랜잭션 개수 Nmin과 비교하는 것을 수반할 수 있다. 최소치가 충족되면, 동작(1112)에서, 네트워크 코딩을 사용해서 트랜잭션이 송신된다. 최소치가 충족되지 않으면, 동작(1110)에서, 일반적인 비-네트워크-코딩 전송을 사용해서 트랜잭션이 송신된다.
동작들(1114 및 1116)은 전술한 도 10의 동작들(1010 및 1012)에 대응한다.
예시적인 방법들(1000 및 1100)의 다양한 동작들 또는 단계들은 프로세스의 동작 원리를 바꾸지 않고 변경될 수 있으며, 경우에 따라, 생략될 수 있음을 이해할 것이다. 또한, 프로세스의 동작 원리를 바꾸지 않고, 도시되지 않은 추가적인 동작들이 추가될 수도 있다. 이러한 모든 변경은 본 명세서에 포함되도록 의도된다.
각각의 노드는 그 현재의 기간 ΔT(또는, 경우에 따라, 실행 평균 기간 또는 가중 평균 기간 등)의 레코드를 유지할 수 있고, 그 이웃 노드들에 그 현재의 기간 ΔT를 주기적으로 통지할 수 있다. 이러한 방식으로, 각각의 노드는 그 이웃들에 의해 사용되는 기간 ΔT를 추적할 수 있다. 따라서, 새로운 노드가 네트워크에 참여하면, 네트워크에 관한 가정을 사용해서 노드의 파라미터들을 초기화하는 대신, 노드는 그 파라미터들을 그 이웃의 파라미터들에 기초하여 초기화할 수 있다. 예를 들어, 새로운 노드는 그 제1 이웃들에 의해 사용되는 기간 ΔT(또는 평균 기간 ΔT)를 취득할 수 있으며, 그 초기 기간 ΔT를 그 이웃의 기간들의 평균 또는 다른 조합에 기초하여 설정할 수 있다. 이는 네트워크의 특성들에 대한 새로운 노드의 적응을 가속화하고 적응 속도를 향상시킬 수 있다.
이제, 참여 노드(1200)의 간략화된 실시예를 블록도 형태로 도시하는 도 12를 참조한다. 노드(1200)는 하나 이상의 마이크로프로세서, 주문형 집적회로(ASIC), 마이크로컨트롤러, 또는 유사한 컴퓨터 처리 장치를 포함할 수 있는 프로세서(1202)를 포함한다. 노드(1200)는 값, 변수, 및 경우에 따라 프로세서-실행 가능 프로그램 명령어를 저장하기 위한 영구적 및 일시적 메모리를 포함할 수 있는 메모리(1206), 및 유선 또는 무선 네트워크를 통해 네트워크 연결을 제공하기 위한 네트워크 인터페이스(1204)를 더 포함한다.
노드(1200)는, 실행시에, 프로세서(1202)로 하여금, 본 명세서에서 설명되는 하나 이상의 기능 또는 동작을 수행하게 하는 프로세서-실행 가능 명령어를 포함하는 프로세서-실행 가능 블록체인 애플리케이션(1208)을 포함한다.
노드를 구성하기 위해 본 명세서에서 설명되는 장치 및 프로세스와, 설명된 방법/프로세스를 구현하는 임의의 모듈, 루틴, 프로세스, 스레드, 애플리케이션, 또는 그 밖의 소프트웨어 컴포넌트는 표준 컴퓨터 프로그래밍 기술 및 언어를 사용해서 실현될 수 있다는 점이 이해될 것이다. 본원은 특정한 프로세서, 컴퓨터 언어, 컴퓨터 프로그래밍 관례, 데이터 구조, 그 밖의 이러한 구현 상세에 한정되지 않는다.
전술한 실시형태들은 본 발명을 한정하는 것이 아니라 예시하는 것이며, 당업자라면, 첨부된 청구항들에 의해 규정되는 바와 같은 발명의 범위로부터 일탈함이 없이, 다양한 대안적인 실시형태들을 설계할 수 있을 것이라는 점에 유의해야 한다. 청구항들에 있어서, 괄호 안의 임의의 참조 부호는 해당 청구항들을 제한하는 것으로 해석되지 않아야 한다. "포함하는(comprising)" 및 "포함한다(comprises)" 등의 단어는 전체적으로 임의의 청구항 또는 명세서에 열거된 요소들 또는 단계들 이외의 것들의 존재를 배제하지 않는다. 본 명세서에 있어서, "포함한다"는 "구비한다 또는 구성된다(includes or consists of)"를 의미하고, "포함하는"은 "구비하는 또는 구성되는(including or consisting of)"을 의미한다. 요소의 단수형 참조는 그러한 요소들의 복수형 참조를 배제하지 않으며, 그 반대도 마찬가지이다. 본 발명은 몇 개의 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 몇 개의 수단을 열거하는 장치 청구항에 있어서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 단지 특정 조치들이 서로 다른 종속 청구항들에서 인용된다는 사실만으로 이들 조치의 조합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (19)

  1. 노드들의 네트워크― 각각의 노드는 다른 노드들에 대한 하나 이상의 연결을 가짐 ―에서 트랜잭션을 전파하기 위한 노드로서, 상기 노드는:
    프로세서;
    메모리;
    네트워크 인터페이스; 및
    프로세서-실행 가능 명령어를 포함하는 애플리케이션을 포함하고,
    상기 명령어는, 상기 프로세서에 의한 실행시에, 상기 프로세서로 하여금,
    일정 기간에 걸쳐 복수의 착신(incoming) 트랜잭션을 수신하게 하고;
    네트워크 코딩을 사용하여 상기 복수의 착신 트랜잭션을 결합해서 복합 메시지를 생성하게 하고;
    상기 복합 메시지를 상기 네트워크 내의 하나 이상의 노드에 송신하게 하고;
    평형 상수 파라미터 및 상기 복수의 착신 트랜잭션 중에서 상기 기간에 걸쳐 수신되는 트랜잭션들의 카운트에 기초하여 조정된 기간을 결정하게 하되,
    상기 조정된 기간은 상기 트랜잭션들의 카운트로 나눈 상기 평형 상수 파라미터에 기초하여 상기 조정된 기간을 결정함으로써 결정되고,
    상기 조정된 기간을 결정하는 것에는 상기 조정된 기간이 하회할 수 없는 최소 기간 및 상기 조정된 기간이 상회할 수 없는 최대 기간이 적용되는,
    노드.
  2. 제1항에 있어서,
    상기 명령어는, 실행시에, 추가로 상기 프로세서로 하여금, 상기 수신하게 하는 동작, 상기 결합해서 복합 메시지를 생성하게 하는 동작 및 상기 송신하게 하는 동작을 상기 조정된 기간을 사용해서 되풀이하여 반복하게 하고, 후속 반복에서 사용하기 위해 각각의 반복 이후의 추가적인 조정된 기간을 결정하게 하는
    노드.
  3. 삭제
  4. 삭제
  5. 제1항 또는 제2항에 있어서,
    상기 명령어는, 실행시에, 추가로 상기 프로세서로 하여금, 복수의 조정된 기간에 기초하여 평균 기간을 결정하게 하고, 상기 평균 기간을 상기 메모리에 저장하게 하는
    노드.
  6. 제5항에 있어서,
    상기 명령어는, 실행시에, 추가로 상기 프로세서로 하여금, 상기 평균 기간을 상기 노드들의 네트워크에서 하나 이상의 이웃 노드에 송신하게 하는
    노드.
  7. 제1항 또는 제2항에 있어서,
    상기 명령어는, 실행시에, 추가로 상기 프로세서로 하여금, 상기 노드들 중 하나의 노드에 대한 하나 이상의 링크에 대한 하나 이상의 처리량 추정치에 기초하여 상기 평형 상수 파라미터를 초기화하게 하는
    노드.
  8. 제1항 또는 제2항에 있어서,
    상기 명령어는, 실행시에, 추가로 상기 프로세서로 하여금, 추정된 초기 기간 및 트랜잭션들의 추정된 초기 카운트에 기초하여 상기 평형 상수 파라미터를 초기화하게 하는
    노드.
  9. 제1항 또는 제2항에 있어서,
    상기 명령어는, 실행시에, 추가로 상기 프로세서로 하여금, 상기 기간 동안 수신되는 상기 트랜잭션들의 카운트가 네트워크 코딩을 사용하기 위한 최소 카운트를 초과함을 판정하게 하고, 상기 결합해서 복합 메시지를 생성하게 하는 것 및 송신하게 하는 것은 상기 판정에 대하여 조건부인
    노드.
  10. 노드들의 네트워크― 각각의 노드는 다른 노드들에 대한 하나 이상의 연결을 가짐 ―에서 트랜잭션을 전파하는 컴퓨터-구현 방법으로서, 상기 노드들 중 하나의 노드에서 구현되는 상기 방법은:
    일정 기간에 걸쳐 복수의 착신 트랜잭션을 수신하는 단계;
    네트워크 코딩을 사용하여 상기 복수의 착신 트랜잭션을 결합해서 복합 메시지를 생성하는 단계;
    상기 복합 메시지를 상기 네트워크 내의 하나 이상의 노드에 송신하는 단계; 및
    평형 상수 파라미터 및 상기 복수의 착신 트랜잭션 중에서 상기 기간에 걸쳐 수신되는 트랜잭션들의 카운트에 기초하여 조정된 기간을 결정하는 단계를 포함하며,
    상기 조정된 기간을 결정하는 단계는 상기 트랜잭션들의 카운트로 나눈 상기 평형 상수 파라미터에 기초하여 상기 조정된 기간을 결정하는 단계를 포함하고,
    상기 조정된 기간을 결정하는 단계에는 상기 조정된 기간이 하회할 수 없는 최소 기간 및 상기 조정된 기간이 상회할 수 없는 최대 기간이 적용되는,
    방법.
  11. 제10항에 있어서,
    상기 수신하는 단계, 상기 결합해서 복합 메시지를 생성하는 단계 및 상기 송신하는 단계를 상기 조정된 기간을 사용해서 되풀이하여 반복하는 단계 및 후속 반복에서 사용하기 위해 각각의 반복 이후의 추가적인 조정된 기간을 결정하는 단계를 더 포함하는
    방법.
  12. 삭제
  13. 삭제
  14. 제10항에 있어서,
    복수의 조정된 기간에 기초하여 평균 기간을 결정하는 단계 및 상기 평균 기간을 상기 노드들 중 상기 하나의 노드의 메모리에 저장하는 단계를 더 포함하는
    방법.
  15. 제14항에 있어서,
    상기 평균 기간을 상기 노드들의 네트워크에서 하나 이상의 이웃 노드에 송신하는 단계를 더 포함하는
    방법.
  16. 제10항에 있어서,
    상기 노드들 중 상기 하나의 노드에 대한 하나 이상의 링크에 대한 하나 이상의 처리량 추정치에 기초하여 상기 평형 상수 파라미터를 초기화하는 단계를 더 포함하는
    방법.
  17. 제10항에 있어서,
    추정된 초기 기간 및 트랜잭션들의 추정된 초기 카운트에 기초하여 상기 평형 상수 파라미터를 초기화하는 단계를 더 포함하는
    방법.
  18. 제10항에 있어서,
    상기 기간 동안 수신되는 상기 트랜잭션들의 카운트가 네트워크 코딩을 사용하기 위한 최소 카운트를 초과함을 판정하는 단계를 더 포함하고, 상기 결합해서 복합 메시지를 생성하는 단계 및 송신하는 단계는 상기 판정에 대하여 조건부인
    방법.
  19. 복수의 참여 노드 사이에서의 트랜잭션에 참여하기 위한 프로세서-실행 가능 명령어를 저장하는 비일시적인 프로세서-판독 가능 매체로서, 상기 프로세서-실행 가능 명령어는, 상기 참여 노드들 중 하나의 노드에서의 프로세서에 의한 실행시에, 상기 프로세서로 하여금 제10항, 제11항 및 제14항 내지 제18항 중 어느 한 항에 기재된 방법을 수행하게 하는 비일시적인 프로세서-판독 가능 매체.
KR1020207001864A 2017-07-11 2018-07-06 네트워크 코딩을 활성화하기 위한 네트워크 파라미터의 최적화 KR102565577B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1711125.3 2017-07-11
GBGB1711125.3A GB201711125D0 (en) 2017-07-11 2017-07-11 Computer-implemented system and method
PCT/IB2018/054994 WO2019012392A1 (en) 2017-07-11 2018-07-06 OPTIMIZING NETWORK PARAMETERS TO ENABLE NETWORK CODING

Publications (2)

Publication Number Publication Date
KR20200019727A KR20200019727A (ko) 2020-02-24
KR102565577B1 true KR102565577B1 (ko) 2023-08-10

Family

ID=59676706

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207001864A KR102565577B1 (ko) 2017-07-11 2018-07-06 네트워크 코딩을 활성화하기 위한 네트워크 파라미터의 최적화

Country Status (9)

Country Link
US (2) US11575565B2 (ko)
EP (2) EP4092940A1 (ko)
JP (2) JP2020526959A (ko)
KR (1) KR102565577B1 (ko)
CN (1) CN110892661A (ko)
GB (1) GB201711125D0 (ko)
SG (1) SG11201912222RA (ko)
WO (1) WO2019012392A1 (ko)
ZA (1) ZA201908553B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111027971B (zh) * 2018-12-07 2023-08-22 深圳市智税链科技有限公司 在区块链网络中确定记账节点的方法、代理节点和介质
CN111464632B (zh) * 2020-03-31 2021-12-07 中国联合网络通信集团有限公司 区块链跨链转发方法及区块链节点
US11256713B2 (en) * 2020-04-27 2022-02-22 International Business Machines Corporation Virtual transaction queues for database replication
CN111639944B (zh) * 2020-06-08 2023-06-02 杭州复杂美科技有限公司 交易广播方法、设备和存储介质
US20230088674A1 (en) * 2021-09-13 2023-03-23 Shopify Inc. Systems and methods for blockchain network congestion-adaptive digital asset event handling

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007036910A (ja) * 2005-07-29 2007-02-08 Fujitsu Ltd パケット処理装置及びパケット処理プログラム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60264145A (ja) * 1984-06-13 1985-12-27 Fujitsu Ltd マルチパケツト化方式
US7529198B2 (en) 2005-04-07 2009-05-05 Microsoft Corporation Scalable overlay network
US20080089333A1 (en) * 2006-10-17 2008-04-17 Kozat Ulas C Information delivery over time-varying network topologies
US7693939B2 (en) * 2007-05-07 2010-04-06 Microsoft Corporation Context-based routing in multi-hop networks
CN102148653A (zh) * 2010-02-09 2011-08-10 上海摩波彼克半导体有限公司 无线网络中实现异或网络编码的数据包开销自适应控制的方法
CN101841479B (zh) * 2010-04-28 2012-12-05 四川大学 一种基于网络编码的高误码率长时延网络自适应传输方法
US9143274B2 (en) * 2011-10-31 2015-09-22 Massachusetts Institute Of Technology Traffic backfilling via network coding in a multi-packet reception network
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US10354325B1 (en) * 2013-06-28 2019-07-16 Winklevoss Ip, Llc Computer-generated graphical user interface
WO2015161133A1 (en) 2014-04-16 2015-10-22 Apsi Wifi, Llc Reduction of network congestion
US10915891B1 (en) * 2015-03-16 2021-02-09 Winklevoss Ip, Llc Autonomous devices
US10075298B2 (en) * 2015-06-02 2018-09-11 ALTR Solutions, Inc. Generation of hash values within a blockchain
CN105163354B (zh) * 2015-07-30 2019-03-08 南京大学 一种利用成对流间网络编码机会的数据流时延保障策略
WO2017087755A1 (en) * 2015-11-20 2017-05-26 Veniam, Inc. Systems and methods for network coded mesh networking in a network of moving things
US20180331781A1 (en) * 2015-12-02 2018-11-15 Telefonaktiebolaget Lm Ericsson (Publ) Methods and arrangements for performing enhanced network coding
US20180322597A1 (en) * 2016-08-31 2018-11-08 Robert Sher Decentralized cryptographic real estate transaction assistance system and method
US10491378B2 (en) * 2016-11-16 2019-11-26 StreamSpace, LLC Decentralized nodal network for providing security of files in distributed filesystems
CN106603198A (zh) * 2016-12-02 2017-04-26 深圳大学 具有网络编码的区块链分布式存储方法及系统
GB201804479D0 (en) * 2018-03-21 2018-05-02 Nchain Holdings Ltd Computer-implemented system and method
CN112703457A (zh) * 2018-05-07 2021-04-23 强力物联网投资组合2016有限公司 用于使用工业物联网进行数据收集、学习和机器信号流传输实现分析和维护的方法和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007036910A (ja) * 2005-07-29 2007-02-08 Fujitsu Ltd パケット処理装置及びパケット処理プログラム

Also Published As

Publication number Publication date
KR20200019727A (ko) 2020-02-24
US20210135932A1 (en) 2021-05-06
ZA201908553B (en) 2023-06-28
JP2020526959A (ja) 2020-08-31
EP3652876B8 (en) 2022-10-12
US20230239200A1 (en) 2023-07-27
US11575565B2 (en) 2023-02-07
EP3652876B1 (en) 2022-09-07
EP4092940A1 (en) 2022-11-23
GB201711125D0 (en) 2017-08-23
EP3652876A1 (en) 2020-05-20
CN110892661A (zh) 2020-03-17
WO2019012392A1 (en) 2019-01-17
JP2023090883A (ja) 2023-06-29
SG11201912222RA (en) 2020-01-30

Similar Documents

Publication Publication Date Title
KR102565577B1 (ko) 네트워크 코딩을 활성화하기 위한 네트워크 파라미터의 최적화
JP7237016B2 (ja) ブロックチェーンネットワークにおいてトランザクションを伝播するためにネットワークコーディングを選択的に使用する方法及びシステム
EP2288086B1 (en) Network monitoring device, bus system monitoring device, method and program
CN105681213A (zh) 信息中心联网中的跟踪排队延迟和执行相关的拥塞控制
Bjurefors et al. Congestion avoidance in a data-centric opportunistic network
US9444751B1 (en) Backpressure with adaptive redundancy
Costa et al. Age of information with network coding
US10044632B2 (en) Systems and methods for adaptive credit-based flow
CN111901237B (zh) 源路由选路方法及系统、相关设备及计算机可读存储介质
Patel Comparative analysis of cumulative distribution function for TCP congestion window size and triple‐duplicate period
Ho et al. Performance improvement of delay-based TCPs in asymmetric networks
Wu et al. An Optimal Buffer Management Strategy for Video Transmission in Opportunistic Networks.
Wu et al. An Optimal Buffer Management Strategy for Video Transmission in Mobile Opportunistic Networks.
Qin et al. Failure‐Aware and Delay‐Predicted Multipath Virtual Queue Scheduling for Multimedia Transmission in Edge IoT
Kİraz et al. ALORT: a transport layer protocol using adaptive loss recovery method for WSN
Rajan Improving The Performance Of Tcp Flows In Wireless Networks By Using Tcp Aware Backpressure And Aodv Algorithms
Uslu et al. Ds+: Reliable distributed snapshot algorithm for wireless sensor networks
Yu et al. Reasonable routing in delay/disruption tolerant networks
Zhang Improved implementation of TCP-vegas method in interchanges of satellite links
Erskine et al. Hierarchical Cluster-Based FIFO Asynchronous Data Transfer Technique for Reducing Congestion for Energy Efficient State Wireless Sensor Network-HAEEW
Sharma et al. Enhanced routing in interest centric mobile Ad hoc Network using Random early Detection
Xia et al. Accelerating and Securing Federated Learning with Stateless In-network Aggregation at the Edge
Borade et al. LLECLAIR: a cross layer design to optimize the performance of TCP in wireless networks
Raja Self-aware Dynamic Routing in Wireless Sensor Networks
KR20100082078A (ko) 무선 센서 네트워크에서 요구되는 통신 신뢰도를 만족시키기 위한 전송 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant