KR20200058273A - 블록체인 샤딩 환경에서 노드 간 메시지 전달 방법 - Google Patents

블록체인 샤딩 환경에서 노드 간 메시지 전달 방법 Download PDF

Info

Publication number
KR20200058273A
KR20200058273A KR1020190098404A KR20190098404A KR20200058273A KR 20200058273 A KR20200058273 A KR 20200058273A KR 1020190098404 A KR1020190098404 A KR 1020190098404A KR 20190098404 A KR20190098404 A KR 20190098404A KR 20200058273 A KR20200058273 A KR 20200058273A
Authority
KR
South Korea
Prior art keywords
node
shard
message
destination
routing table
Prior art date
Application number
KR1020190098404A
Other languages
English (en)
Other versions
KR102331202B1 (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 KR20200058273A publication Critical patent/KR20200058273A/ko
Application granted granted Critical
Publication of KR102331202B1 publication Critical patent/KR102331202B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • H04L67/327
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

복수의 노드들과 복수의 샤드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서, 임의의 샤드가 주소를 알고 있는 서로 다른 샤드들과의 거리를 각각 계산하는 단계, 상기 계산된 거리를 기준으로 샤딩 네트워크를 구성하는 샤드들의 라우팅 테이블을 작성하는 단계, 임의의 출발 노드를 포함하는 출발 샤드의 라우팅 테이블에 목적지 샤드의 주소가 존재하는지 확인하는 단계, 그리고 상기 출발 샤드의 라우팅 테이블에 상기 목적지 샤드의 주소가 존재하면, 상기 출발 노드는 상기 주소를 이용하여 상기 목적지 샤드에 메시지를 전달하는 단계를 포함한다.

Description

블록체인 샤딩 환경에서 노드 간 메시지 전달 방법{METHOD FOR TRANSMITTING MESSAGE BETWEEN NODES BASED ON BLOCKCAHIN SHARDING}
본 발명은 블록체인 샤딩 환경에서 노드 간 메시지를 전달하는 기술에 관한 것이다.
블록체인은 동등 계층간 통신망(Peer-to-Peer, P2P) 네트워크에서 모든 참여자가 합의 알고리즘을 통해서 정해진 공유 원장을 소유함으로써, 기록의 위조 및 변조를 불가능하게 만드는 분산 원장 시스템(Distributed Ledger System)이다. 분산 원장 시스템은 중앙관리자의 제어 없이 각 노드가 분산 환경에서 원장이라는 데이터베이스를 동기화하여 유지하는 시스템이다.
블록체인에서 모든 노드가 동기화된 원장을 유지하기 위해서는 네트워크에서 발생하는 모든 트랜잭션과 블록이 저장되어야 한다. 이를 위해 종래에는 네트워크의 모든 멤버 노드에 플러딩(Flooding) 방식으로 모든 메시지를 블록체인 네트워크에 전파하였다. 그러나 이는 모든 노드가 모든 메시지를 수신하고 저장해야 한다는 문제, 즉 확장성의 문제를 수반한다.
확장성 문제를 해결하기 위해서 블록체인 샤딩(Sharding)이라는 방법이 제시되었다. 샤딩은 블록체인 네트워크에서 발생하는 트랜잭션과 블록을 작은 그룹인 샤드 단위로 나누어, 각 샤드에 속한 노드들은 다른 샤드의 트랜잭션과 블록을 처리할 필요 없이 자신이 속한 샤드의 트랜잭션과 블록만을 처리하여 전체 네트워크의 트랜잭션 처리량과 분산 원장의 크기를 줄이는 방법이다. 기존에는 플러딩 방식으로 자신과 연결된 모든 노드에게 모든 메시지를 전달하는 단순한 방식을 사용했지만, 종래 기술인 플러딩 방식을 그대로 블록체인 샤딩에 적용하면, 샤딩을 적용하기 전과 똑같은 양의 트래픽이 발생하는 문제가 있다.
따라서 네트워크가 샤드로 나뉘는 샤딩 환경에서는, 플러딩 방식과는 다른 방법을 이용하여 자신이 속해있지 않은 샤드의 메시지를 최소한으로 전달받으면서 자신이 속한 샤드의 메시지는 빠짐없이 전달받아야 한다.
본 발명이 해결하고자 하는 과제는 라우팅 테이블과 노드 간 XOR 거리를 바탕으로, 중개 노드 없이 최소한의 트래픽을 사용하여 목표 샤드에 속한 노드에 메시지를 전달하는 방법 및 시스템을 제공하는 것이다.
한 실시예에 따른 복수의 노드들과 복수의 샤드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서, 임의의 샤드가 주소를 알고 있는 서로 다른 샤드들과의 거리를 각각 계산하는 단계, 상기 계산된 거리를 기준으로 샤딩 네트워크를 구성하는 샤드들의 라우팅 테이블을 작성하는 단계, 임의의 출발 노드를 포함하는 출발 샤드의 라우팅 테이블에 목적지 샤드의 주소가 존재하는지 확인하는 단계, 그리고 상기 출발 샤드의 라우팅 테이블에 상기 목적지 샤드의 주소가 존재하면, 상기 출발 노드는 상기 주소를 이용하여 상기 목적지 샤드에 메시지를 전달하는 단계를 포함한다.
상기 목적지 샤드에 메시지를 전달하는 단계 이후에 상기 목적지 샤드에 포함된 목적지 노드에 상기 메시지가 전달되지 않은 경우, 상기 목적지 샤드에 속하며 상기 메시지를 받은 임의의 노드가 상기 목적지 노드에 메시지를 전달하는 단계를 더 포함할 수 있다.
상기 임의의 노드가 상기 목적지 노드에 메시지를 전달하는 단계는 상기 임의의 노드의 노드 라우팅 테이블에 상기 목적지 노드의 주소가 존재하지 않으면, 상기 임의의 노드는 자신의 노드 라우팅 테이블과 상기 목적지 노드의 노드 라우팅 테이블을 참조하여 중간 노드를 설정하고, 상기 중간 노드에 상기 메시지를 전달하는 단계, 그리고 상기 중간 노드가 상기 목적지 노드에 상기 메시지를 전달하는 단계를 포함하고, 노드 라우팅 테이블은 노드들 간 거리를 기준으로 작성된 것일 수 있다.
다른 실시예에 따른 복수의 노드들과 복수의 샤드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서, 임의의 샤드가 주소를 알고 있는 서로 다른 샤드들과의 거리를 각각 계산하는 단계, 상기 계산된 거리를 기준으로 샤딩 네트워크를 구성하는 샤드들의 라우팅 테이블을 작성하는 단계, 임의의 출발 노드를 포함하는 출발 샤드의 라우팅 테이블에 목적지 샤드의 주소가 존재하는지 확인하는 단계, 그리고 상기 출발 샤드의 라우팅 테이블에 상기 목적지 샤드의 주소가 존재하지 않으면, 상기 출발 노드는 상기 출발 샤드의 라우팅 테이블과 상기 목적지 샤드의 라우팅 테이블을 참조하여 중간 샤드를 설정하고, 상기 중간 샤드에 메시지를 전달하는 단계, 그리고 상기 중간 샤드가 자신의 라우팅 테이블에 상기 목적지 샤드의 연결 정보가 존재하는지 확인하고, 상기 목적지 샤드에 상기 메시지를 전달하는 단계를 포함하고, 상기 중간 샤드는 상기 출발 샤드의 라우팅 테이블에 주소가 기재된 샤드들 중, 상기 목적지 샤드와 거리가 가장 가까운 샤드이다.
상기 거리는 각 샤드의 주소를 이진화하고, 이진화된 주소의 접두부(Prefix)를 비교하여 접두부의 공통 부분이 길수록 거리가 가까운 것으로 결정될 수 있다.
상기 목적지 샤드에 상기 메시지를 전달하는 단계 이후에 상기 목적지 샤드에 포함된 목적지 노드에 상기 메시지가 전달되지 않은 경우, 상기 목적지 샤드에 속하며 상기 메시지를 받은 임의의 노드가 자신의 노드 라우팅 테이블을 참조하여 상기 목적지 노드에 메시지를 전달하는 단계를 더 포함하고, 상기 노드 라우팅 테이블은 노드들 간 거리를 기준으로 작성된 것일 수 있다.
또 다른 실시예에 따른 복수의 노드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서, 임의의 노드가 주소를 알고 있는 서로 다른 노드들과의 거리를 각각 계산하는 단계, 상기 계산된 거리를 기준으로 샤딩 네트워크를 구성하는 노드들의 라우팅 테이블을 작성하는 단계, 임의의 출발 노드가 자신의 라우팅 테이블에 목적지 노드의 주소가 존재하는지 확인하는 단계, 그리고 상기 출발 노드의 라우팅 테이블에 상기 목적지 노드의 주소가 존재하면, 상기 출발 노드는 상기 주소를 이용하여 상기 목적지 노드에 메시지를 전달하는 단계를 포함하고, 상기 출발 노드와 상기 목적지 노드는 동일 샤드에 속한다.
상기 목적지 노드에 메시지를 전달하는 단계는, 상기 출발 노드의 라우팅 테이블에 상기 목적지 노드의 주소가 존재하지 않으면, 상기 출발 노드는 자신의 라우팅 테이블과 상기 목적지 노드의 라우팅 테이블을 참조하여 중간 노드를 설정하고, 상기 중간 노드에 메시지를 전달하는 단계, 그리고 상기 중간 노드가 자신의 라우팅 테이블에 상기 목적지 노드의 연결 정보가 존재하는지 확인하고, 상기 목적지 노드에 상기 메시지를 전달하는 단계를 포함할 수 있다.
상기 중간 노드는 상기 출발 노드의 라우팅 테이블에 주소가 기재된 노드들 중, 상기 목적지 노드와 거리가 가장 가까운 노드일 수 있다.
상기 거리는 각 노드의 주소를 이진화하고, 이진화된 주소의 접두부(Prefix)를 비교하여 접두부의 공통 부분이 길수록 거리가 가까운 것으로 결정될 수 있다.
본 발명에 따르면, 노드 간 거리를 기준으로 하는 기존의 라우팅 방식에 비해, 샤드 간 거리를 기준으로 하는 라우팅 테이블을 이용하므로 전체 네트워크 트래픽 낭비를 최소화할 수 있고, 컨트롤 메시지와 라우팅 테이블을 함께 이용하므로 더 짧은 거리로 메시지를 전달할 수 있다.
또한 본 발명에 따르면, 중개 노드라는 특정 노드의 도움 없이 목표 샤드의 노드들에게 직접 메시지를 전달할 수 있어 보안성을 향상시킬 수 있고, 기존 플러딩 방식과는 달리 분할된 네트워크에서도 노드 간 통신이 가능하다.
도 1은 한 실시예에 따른 블록체인 샤딩 환경의 구성도이다.
도 2는 한 실시예에 따른 노드 간 XOR 거리를 구하는 방법의 설명도이다.
도 3은 한 실시예에 따른 동일 샤드 내에 속하는 노드 간 내부 라우팅 메시지 전달 방법의 흐름도이다.
도 4는 한 실시예에 따른 내부 라우팅 메시지 전달 방법의 설명도이다.
도 5는 다른 실시예에 따른 내부 라우팅 메시지 전달 방법의 설명도이다.
도 6은 한 실시예에 따른 서로 다른 샤드에 속하는 노드 간 외부 라우팅 메시지 전달 방법의 흐름도이다.
도 7은 한 실시예에 따른 외부 라우팅 메시지 전달 방법의 설명도이다.
도 8은 다른 실시예에 따른 외부 라우팅 메시지 전달 방법의 설명도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 본 명세서에서 사용되는 용어에 대해 설명한다.
트랜잭션은 공유 원장에 저장되는 모든 기록의 단위를 의미하고, 블록은 트랜잭션의 묶음으로, 공유 원장을 이루는 단위를 의미한다.
분산 해시 테이블(Distributed Hash Table)이란, 일반적으로 해시 테이블을 중앙 시스템이 아닌 각 노드가 관리하는 방식을 의미한다. 따라서 분산 동등 계층간 통신망 컴퓨터 네트워크 환경에서 모든 노드는 라우터의 역할을 할 수 있다. 분산 해시 테이블 토폴로지에서는 테이블의 키(Key)-값(Value) 쌍을 저장할 노드가 지정되고, 각 노드는 원하는 키-값 쌍이 저장된 노드를 찾을 수 있다.
한편, 본 명세서에서 분산 해시 테이블은, 분산 해시 테이블을 작성하기 위한 방식으로 각 노드의 식별자(ID)를 이용하며, 노드의 ID를 해시 테이블의 주소로 사용하고, 주소 간 XOR 거리 기반으로 라우팅 테이블을 구성한 것을 의미한다. 예를 들어, 라우팅 테이블의 첫번째 행은 XOR 거리가 1인 노드들의 ID를 포함하고, 두번째 행은 XOR 거리가 2인 노드들의 ID를 포함할 수 있다.
노드 ID는 노드의 IP 주소를 해시 함수를 통해 얻은 값이며, 각 노드는 자신의 ID와 일치하는 주소에 배치된다.
도 1은 한 실시예에 따른 블록체인 샤딩 환경의 구성도이다.
도 1을 참고하면, 블록체인 샤딩 환경은 복수의 샤드(100)들, 복수의 노드(200)들을 포함하고, 하나의 샤드(100)는 복수의 노드(200)들을 포함한다.
샤드(100)는 블록체인을 구성하는 복수의 노드들을 일정하게 나눈 블록을 의미한다.
노드(200)는 블록체인 네트워크에 참여하는 구성원으로서, 메시지를 보내는 주체 또는 메시지를 받을 수 있는 객체이다. 노드는 자신이 속한 샤드에 있는 노드에게 메시지를 전달하거나, 다른 샤드에 속한 노드에게 메시지를 전달할 수 있다. 전자의 경우 전달되는 메시지를 내부 라우팅 메시지, 후자의 경우 전달되는 메시지를 외부 라우팅 메시지라고 호칭한다.
본 명세서에서 제안하는 방법으로, 메시지를 전달하고자 하는 노드(200)는, 자신의 라우팅 테이블에 존재하는 노드들의 정보만을 이용하여, 노드(200)들의 라우팅을 돕는 중개 노드(200)의 존재 없이 컨트롤 메시지를 사용하여 원하는 목적지 노드(200b) 또는 목적지 샤드(100b)에 메시지를 직접 전달할 수 있다.
도 2는 한 실시예에 따른 노드 간 XOR 거리를 구하는 방법의 설명도이다.
도 2를 참고하면, 노드(200) 사이의 XOR 거리는 노드(200) ID를 우선 이진수로 표현하고, 이진화된 ID의 비트(Bit)를 앞자리부터 비교하여, 일치하는 정도에 따라 결정된다. 즉, 노드(200) ID의 공통 비트의 길이가 길수록 노드(200) 사이의 거리가 가깝다고 볼 수 있다. 공통 비트의 길이를 접두부(Prefix)가 공통되는 길이라고 볼 수도 있다.
예를 들어, 노드 200a의 ID가 11111이고, 노드 200b의 ID는 0111이고, 노드 200c의 ID가 1110이라고 가정한다. 노드의 ID에 따라 도 2와 같은 가지 그림을 그릴 수 있다.
노드 200a의 ID인 11111과 노드 200b의 ID인 0111을 앞자리부터 비교하면, 첫째 자리가 1과 0으로 다르므로 공통 비트의 길이는 0이다. 노드 200a의 ID인 11111과 노드 200c의 ID인 1110을 앞자리부터 비교하면, 앞에서부터 3번째 자리까지가 1로 같으므로, 공통 비트의 길이는 3이다. 따라서 노드 200a는 노드 200b와는 XOR 거리가 멀고, 노드 200c와는 XOR 거리가 가깝다.
도 3은 한 실시예에 따른 동일 샤드 내에 속하는 노드 간 내부 라우팅 메시지 전달 방법의 흐름도이고, 도 4는 한 실시예에 따른 내부 라우팅 메시지 전달 방법의 설명도이고, 도 5는 다른 실시예에 따른 내부 라우팅 메시지 전달 방법의 설명도이다.
도 3을 참고하면, 하나의 샤드(100)에 속한 노드(200) 간의 메시지 전달을 위해서 우선 노드(200) ID와, 노드(200) 간 XOR 거리를 기반으로 내부 라우팅 테이블을 작성한다(S101). 내부 라우팅 테이블이란, 동일 샤드(100)에 속한 노드(200)만으로 구성된 라우팅 테이블을 의미한다.
내부 라우팅 테이블은 도 2에서 설명한 방식으로 이웃 노드들과의 XOR 거리를 계산하여 작성한다. 여기서 이웃 노드란, 특정 노드와 직접 연결이 가능한 노드를 의미하며, 특정 노드와 물리적 거리 또는 XOR 거리가 가까운 노드를 의미하는 것은 아니다.
예를 들어, 노드 a의 ID가 15, 노드 b의 ID가 16, 노드 c의 ID가 17, 노드 d의 ID가 18이라고 하고, 노드 b의 내부 라우팅 테이블을 구하는 과정을 설명한다.
우선 노드들의 ID를 기반으로 도 2의 방법을 통해 노드 b와 다른 노드 간 XOR 거리를 구한다.
노드 a의 ID를 이진화하면 01111, 노드 b의 ID를 이진화하면 10000, 노드 c의 ID를 이진화하면 10001, 노드 b의 ID를 이진화하면 10010이다. 노드 b를 기준으로, 앞자리부터 공통 비트의 길이를 구하면 노드 a는 공통 비트가 0개, 노드 c는 공통 비트가 1000이므로 4개, 노드 d는 공통 비트가 100이므로 3개이다. 따라서 노드 간 XOR 거리는 노드 a의 경우가 가장 멀고, 노드 c와 가장 가깝다.
결과적으로 노드 b의 내부 라우팅 테이블은 표 1과 같이 작성될 수 있다
노드 간 XOR 거리 노드 ID
1 노드 c
2 노드 d
3
4
5 노드 a
작성된 내부 라우팅 테이블을 참조하여, 출발 노드(200a)는 자신의 내부 라우팅 테이블에 목적지 노드(200b)의 정보가 존재하는지 확인한다(S102). 이는 도 4의 경우에 해당한다.
도 4를 참고하면, 출발 노드(200a)를 노드 2, 목적지 노드(200b)를 노드 3이라고 가정한다. 노드 2는 내부 라우팅 테이블에 노드 3의 정보가 있는지 확인한다.
목적지 노드(200b)의 정보를 바로 알 수 있는 경우, 목적지 노드(200b)에 내부 라우팅 메시지를 전달할 수 있다(S109). 즉, 노드 2는 노드 3에 메시지를 전달하여 과정이 종료된다.
출발 노드(200a)의 라우팅 테이블에 목적지 노드(200b)의 정보가 없는 경우, 출발 노드(200a)는 내부 라우팅 테이블에 존재하는 노드들 중, 목적지 노드(200b)와 XOR 거리가 가장 가까운 노드를 확인하여 중간 노드(200c)로 선정한다(S103). 이는 도 5의 경우에 해당한다.
도 5를 참고하면, 출발 노드(200a)인 노드 2의 라우팅 테이블에 목적지 노드(200b)인 노드 3의 정보가 없는 경우이다. 노드 2는 자신의 내부 라우팅 테이블에 존재하는 노드들 중, 목적지 노드(200b)인 노드 3과 XOR 거리가 가장 가까운 노드를 중간 노드(200c)로 선정한다. 따라서 노드 3과 XOR 거리가 1인 노드 4를 중간 노드(200c)로 선정한다.
출발 노드(200a)는 중간 노드(200c)에 내부 라우팅 메시지를 전달한다(S104). 즉 노드 2는 노드 4에게 내부 라우팅 메시지를 전달한다.
중간 노드(200c)는 자신의 내부 라우팅 테이블에 목적지 노드(200b)의 정보가 존재하는지 확인한다(S105). 즉 노드 4는 자신의 내부 라우팅 테이블에 노드 3이 존재하는지 확인한다.
존재하는 경우, 중간 노드(200c)는 목적지 노드(200b)에 내부 라우팅 메시지를 전달하여 과정을 종료할 수 있다(S109).
만약 중간 노드(200c)의 내부 라우팅 테이블에 목적지 노드(200b)의 정보가 존재하지 않는 경우, 즉 노드 4의 라우팅 테이블에 노드 3의 정보가 없는 경우에는 중간 노드(200c)의 내부 라우팅 테이블에 존재하는 노드 중, 목적지 노드(200b)와 XOR 거리가 가장 가까운 새로운 중간 노드를 선정한다(S106).
중간 노드(200c)는 새로 선정된 중간 노드에 내부 라우팅 메시지를 전달한다(S107).
메시지를 전달받은 새로운 노드는, 자신의 내부 라우팅 테이블을 확인하여 목적지 노드(200b)의 정보가 존재하는지 확인한다(S108).
새로운 중간 노드의 내부 라우팅 테이블에 목적지 노드(200b)의 정보가 존재하는 경우, 새로운 중간 노드는 목적지 노드(200b)에 내부 라우팅 메시지를 전달하여 과정을 종료할 수 있다(S109).
새로운 중간 노드의 내부 라우팅 테이블에 목적지 노드(200b)의 정보가 존재하지 않는 경우, 새로운 중간 노드는 S106 단계부터 다시 반복하여 새로운 중간 노드를 선정하고, 메시지를 전달하는 과정을 반복하여 목적지 노드(200b)까지 메시지를 전달할 수 있다. 이와 같이, 출발 노드(200a)가 목적지 노드(200b)에 바로 메시지를 전달할 수 없는 경우, 중간 노드를 반복하여 경유하는 과정을 릴레이(Relay)라고 한다.
메시지를 전달한 이후, 출발 노드(200a)는 컨트롤 메시지를 이용하여 노드(200)의 변화를 라우팅 테이블을 반영하여 업데이트 할 수 있다. 예를 들어 특정 노드(200)가 샤드(100)에 참여한 경우는 JOIN, 특정 노드(200)가 샤드(100)에서 떠난 경우는 LEAVE라는 메시지를 이용할 수 있다. 노드(200)가 자신이 속한 샤드(100)를 이동하거나, 네트워크에서 이탈된 경우 라우팅 테이블에 기록된 노드(200)의 개수가 줄어들게 된다. 이때는 다른 노드(200)의 정보를 받아서 라우팅 테이블을 업데이트 하며, FIND_NODE라는 컨트롤 메시지를 이용할 수 있다.
한편, 라우팅 테이블에 목적지 노드(200b)의 정보가 없는 경우, 출발 노드(200a)는 목적지 노드(200b)와 XOR 거리가 가까운 다른 노드를 경유하는 방법 이외에도, 목적지 노드(200b)의 정보를 얻기 위해 컨트롤 메시지를 이용할 수도 있다.
예를 들어, 출발 노드(200a)의 라우팅 테이블에서 특정 행이 비어있는 경우를 가정한다. 이 경우, 출발 노드(200a)는 라우팅 테이블에 존재하는 다른 이웃 노드들에게 FIND_NODE 등의 메시지를 보낼 수 있다. FIND_NODE 메시지는 출발 노드(200a)와 특정 행에 대응되는 XOR 거리를 갖는 노드의 정보를 요청하는 내용을 포함할 수 있다. 출발 노드(200a)는 이웃 노드로부터 해당 노드의 정보를 전달받으면, 이를 라우팅 테이블에 기록하여 업데이트 할 수 있다.
이하에서는 출발 노드(200a)와 목적지 노드(200b)가 서로 다른 샤드에 속하는 경우 메시지를 전달하는 방법에 대해 설명한다.
도 6은 한 실시예에 따른 서로 다른 샤드에 속하는 노드 간 외부 라우팅 메시지 전달 방법의 흐름도이고, 도 7은 한 실시예에 따른 외부 라우팅 메시지 전달 방법의 설명도이고, 도 8은 다른 실시예에 따른 외부 라우팅 메시지 전달 방법의 설명도이다.
도 6을 참고하면, 서로 다른 샤드(100)에 속한 노드(200) 간의 메시지 전달을 위해서는 샤드(100) ID의 주소와, 샤드(100) 간 XOR 거리를 기반으로 작성된 라우팅 테이블을 작성한다(S201). 도 2와 구별하기 위해, 이때 작성된 라우팅 테이블을 외부 라우팅 테이블이라 하고, 내부 메시지와 구별하기 위해 서로 다른 샤드(100) 간 전달되는 메시지를 외부 메시지라고 호칭한다. 그리고, 편의상 출발 노드(200a)가 속한 샤드를 출발 샤드(100a), 목적지 노드(200b)가 속한 샤드를 목적지 샤드(100b)라고 호칭한다.
한편, 하나의 샤드에 속한 노드들은 각각 서로 다른 내부 라우팅 테이블을 가지고 있으나, 외부 라우팅 테이블은 모두 동일하다.
예를 들어, 샤드 6에 속한 노드의 외부 라우팅 테이블을 작성하기 위해 우선 도 2에서 설명된 방식으로 우선 샤드 간 XOR 거리를 구한다. 이하 편의상 샤드의 이름이 곧 샤드의 주소라고 가정한다. 따라서 샤드 6의 주소가 6이고, 6을 이진화한 110이 샤드 6의 ID라고 할 수 있다.
샤드 1 내지 샤드 5 그리고 샤드 7이 이웃 샤드일 때, 샤드 6의 ID와 각 샤드의 ID의 이진화된 비트의 앞자리부터 비교하여, 공통 비트의 길이가 길수록 샤드 간 XOR 거리는 가깝다고 볼 수 있다.
샤드 7의 ID는 7을 이진화한 111이므로 샤드 6의 ID인 110과 공통 비트의 길이가 2이다. 샤드 4의 ID는 100, 샤드 5의 ID는 101이므로 샤드 6의 ID와 공통 비트의 길이가 1이다. 샤드 1, 샤드 2, 샤드 3의 경우를 구해보면 공통 비트의 각각 0이다. 따라서 샤드 6의 외부 라우팅 테이블의 첫번째 행은 샤드 7, 두 번째 행은 샤드 4와 샤드 5, 세 번째 행은 샤드 1, 샤드 2, 샤드 3을 포함한다.
결과적으로 샤드 6의 외부 라우팅 테이블은 표 2와 같이 작성될 수 있다.
샤드 간 XOR 거리 샤드 ID
1 샤드 7
2 샤드 4, 샤드 5
3 샤드 1, 샤드 2, 샤드 3
출발 노드(200a)는 자신의 외부 라우팅 테이블을 참조하여, 목적지 샤드(100b)의 정보가 존재하는지 확인한다(S202). 예를 들어, 출발 노드(200a)는 샤드 6에 속한 임의의 노드라고 하고, 목적지 노드(200b)는 샤드 5에 속한 임의의 노드라고 가정한다. 출발 노드(200a)는, 자신의 외부 라우팅 테이블에 목적지 샤드(100b)인 샤드 5의 정보가 존재하는지 확인한다.
만약 외부 라우팅 테이블에 목적지 샤드(100b)의 정보가 있다면, 목적지 샤드(100b)에 바로 메시지를 전달할 수 있다(S209). 이는 도 7의 경우에 해당한다.
외부 라우팅 테이블에 목적지 샤드(100b)의 정보가 없는 경우, 출발 노드(200a)의 외부 라우팅 테이블에 존재하는 샤드 중 목적지 샤드(100b)와 XOR 거리가 가장 가까운 샤드를 중간 샤드(100c)로 선정한다(S203). 이는 도 8의 경우에 해당한다. 샤드 6의 외부 라우팅 테이블에 목적지 샤드(100b)인 샤드 5의 정보가 존재하지 않는다. 따라서 목적지 샤드(100b)인 샤드 5의 외부 라우팅 테이블을 참조하여, 샤드 5와 XOR 거리가 가장 가까운 샤드 4를 중간 샤드(100c)로 선정한다.
이후 출발 노드(200a)는 중간 샤드(100c)에 외부 라우팅 메시지를 전달한다(S204). 중간 샤드(100c)에 외부 라우팅 메시지를 전달한다는 것은 중간 샤드(100c)에 속한 임의의 노드들에게 메시지를 전달한다는 것을 의미한다.
외부 라우팅 메시지를 전달받은 중간 샤드(100c)는, 자신의 외부 라우팅 테이블에 목적지 샤드(100b)의 정보가 존재하는지 확인한다(S205). 도 8을 참고하면, 중간 샤드(100c)인 샤드 4는 자신의 외부 라우팅 테이블에 목적지 샤드(100b)인 샤드 5가 존재하는지 확인한다.
목적지 샤드(100b)의 정보가 존재하면, 중간 샤드(100c)는 목적지 샤드(100b)에 바로 외부 라우팅 메시지를 전달할 수 있다(S209). 즉, 샤드 4는 샤드 5에 외부 라우팅 메시지를 전달할 수 있다.
목적지 샤드(100b)의 정보가 존재하지 않는 경우, 중간 샤드(100c)는 자신의 외부 라우팅 테이블에 존재하는 샤드 중, 목적지 샤드(100b)와 XOR 거리가 가장 가까운 새로운 중간 샤드를 선정한다(S206).
중간 샤드(100c)는 새로운 중간 샤드에 외부 라우팅 메시지를 전달한다(S207).
메시지를 전달 받은 샤드는 자신의 외부 라우팅 테이블에 목적지 샤드(100b)의 정보가 존재하는지 확인한다(S208).
목적지 샤드(100b)의 정보가 존재하면 목적지 샤드(100b)에 메시지를 전송하고, 그렇지 않은 경우는 단계 S206 이하의 릴레이 과정을 반복한다.
목적지 샤드(100b)에 메시지가 전달된 경우, 목적지 샤드(100b) 내에 있는 목적지 노드에 메시지가 전달되었는지 확인한다(S210). 목적지 샤드(100b)에 메시지를 전달한다는 것은, 목적지 샤드(100b)에 속한 임의의 노드들에게 메시지를 전달한다는 의미이다. 따라서, 목적지 샤드(100b)에 속한 노드들에게 메시지를 전달하여, 목적지 노드가 메시지를 받은 경우 메시지 전달 과정이 종료된다.
목적지 샤드(100b)에는 메시지가 전달 되었으나, 목적지 노드에 메시지가 전달되지 않은 경우는 내부 라우팅 테이블을 이용하여 내부 라우팅 메시지 형태로 메시지를 전달한다(S211). 내부 라우팅 형태로 메시지를 전달하는 방법은 도 3에서 설명한 방법을 이용할 수 있다.
한편, 각 노드(200)는, 컨트롤 메시지를 통해 외부 라우팅 테이블을 업데이트 할 수 있다. 따라서 목적지 노드(200)가 속하는 목적지 샤드(100b)가 가변적인 경우에도 목적지 샤드(100)에 메시지를 전달할 수 있다.
본 발명에 따르면, 노드 간 거리를 기준으로 하는 기존의 라우팅 방식에 비해, 샤드 간 거리를 기준으로 하는 라우팅 테이블을 이용므로 전체 네트워크 트래픽 낭비를 최소화할 수 있고, 컨트롤 메시지와 라우팅 테이블을 함께 이용하므로 더 짧은 거리로 메시지를 전달할 수 있다.
또한 본 발명에 따르면, 중개 노드라는 특정 노드의 도움 없이 목표 샤드의 노드들에게 직접 메시지를 전달할 수 있어, 보안성을 향상시킬 수 있고, 기존 플러딩 방식과는 달리 분할된 네트워크에서도 노드 간 통신이 가능하다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 복수의 노드들과 복수의 샤드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서,
    임의의 샤드가 주소를 알고 있는 서로 다른 샤드들과의 거리를 각각 계산하는 단계,
    상기 계산된 거리를 기준으로 샤딩 네트워크를 구성하는 샤드들의 라우팅 테이블을 작성하는 단계,
    임의의 출발 노드를 포함하는 출발 샤드의 라우팅 테이블에 목적지 샤드의 주소가 존재하는지 확인하는 단계, 그리고
    상기 출발 샤드의 라우팅 테이블에 상기 목적지 샤드의 주소가 존재하면, 상기 출발 노드는 상기 주소를 이용하여 상기 목적지 샤드에 메시지를 전달하는 단계
    를 포함하는 메시지 전달 방법.
  2. 제1항에서,
    상기 목적지 샤드에 메시지를 전달하는 단계 이후에
    상기 목적지 샤드에 포함된 목적지 노드에 상기 메시지가 전달되지 않은 경우, 상기 목적지 샤드에 속하며 상기 메시지를 받은 임의의 노드가 상기 목적지 노드에 메시지를 전달하는 단계
    를 더 포함하는, 메시지 전달 방법.
  3. 제2항에서,
    상기 임의의 노드가 상기 목적지 노드에 메시지를 전달하는 단계는
    상기 임의의 노드의 노드 라우팅 테이블에 상기 목적지 노드의 주소가 존재하지 않으면, 상기 임의의 노드는 자신의 노드 라우팅 테이블과 상기 목적지 노드의 노드 라우팅 테이블을 참조하여 중간 노드를 설정하고, 상기 중간 노드에 상기 메시지를 전달하는 단계, 그리고
    상기 중간 노드가 상기 목적지 노드에 상기 메시지를 전달하는 단계
    를 포함하고,
    노드 라우팅 테이블은 노드들 간 거리를 기준으로 작성된, 메시지 전달 방법.
  4. 복수의 노드들과 복수의 샤드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서,
    임의의 샤드가 주소를 알고 있는 서로 다른 샤드들과의 거리를 각각 계산하는 단계,
    상기 계산된 거리를 기준으로 샤딩 네트워크를 구성하는 샤드들의 라우팅 테이블을 작성하는 단계,
    임의의 출발 노드를 포함하는 출발 샤드의 라우팅 테이블에 목적지 샤드의 주소가 존재하는지 확인하는 단계, 그리고
    상기 출발 샤드의 라우팅 테이블에 상기 목적지 샤드의 주소가 존재하지 않으면, 상기 출발 노드는 상기 출발 샤드의 라우팅 테이블과 상기 목적지 샤드의 라우팅 테이블을 참조하여 중간 샤드를 설정하고, 상기 중간 샤드에 메시지를 전달하는 단계, 그리고
    상기 중간 샤드가 자신의 라우팅 테이블에 상기 목적지 샤드의 연결 정보가 존재하는지 확인하고, 상기 목적지 샤드에 상기 메시지를 전달하는 단계
    를 포함하고,
    상기 중간 샤드는 상기 출발 샤드의 라우팅 테이블에 주소가 기재된 샤드들 중, 상기 목적지 샤드와 거리가 가장 가까운 샤드인, 메시지 전달 방법.
  5. 제4항에서,
    상기 거리는
    각 샤드의 주소를 이진화하고, 이진화된 주소의 접두부(Prefix)를 비교하여 접두부의 공통 부분이 길수록 거리가 가까운 것으로 결정되는, 메시지 전달 방법.
  6. 제4항에서,
    상기 목적지 샤드에 상기 메시지를 전달하는 단계 이후에
    상기 목적지 샤드에 포함된 목적지 노드에 상기 메시지가 전달되지 않은 경우, 상기 목적지 샤드에 속하며 상기 메시지를 받은 임의의 노드가 자신의 노드 라우팅 테이블을 참조하여 상기 목적지 노드에 메시지를 전달하는 단계
    를 더 포함하고,
    상기 노드 라우팅 테이블은 노드들 간 거리를 기준으로 작성된, 메시지 전달 방법.
  7. 복수의 노드들을 포함하는 블록체인 샤딩 네트워크에서 노드의 메시지 전달 방법으로서,
    임의의 노드가 주소를 알고 있는 서로 다른 노드들과의 거리를 각각 계산하는 단계,
    상기 계산된 거리를 기준으로 상기 샤딩 네트워크를 구성하는 노드들의 라우팅 테이블을 작성하는 단계,
    임의의 출발 노드가 자신의 라우팅 테이블에 목적지 노드의 주소가 존재하는지 확인하는 단계, 그리고
    상기 출발 노드의 라우팅 테이블에 상기 목적지 노드의 주소가 존재하면, 상기 출발 노드는 상기 주소를 이용하여 상기 목적지 노드에 메시지를 전달하는 단계
    를 포함하고,
    상기 출발 노드와 상기 목적지 노드는 동일 샤드에 속하는, 메시지 전달 방법.
  8. 제7항에서,
    상기 목적지 노드에 메시지를 전달하는 단계는,
    상기 출발 노드의 라우팅 테이블에 상기 목적지 노드의 주소가 존재하지 않으면, 상기 출발 노드는 자신의 라우팅 테이블과 상기 목적지 노드의 라우팅 테이블을 참조하여 중간 노드를 설정하고, 상기 중간 노드에 메시지를 전달하는 단계, 그리고
    상기 중간 노드가 자신의 라우팅 테이블에 상기 목적지 노드의 연결 정보가 존재하는지 확인하고, 상기 목적지 노드에 상기 메시지를 전달하는 단계
    를 포함하는, 메시지 전달 방법.
  9. 제8항에서,
    상기 중간 노드는
    상기 출발 노드의 라우팅 테이블에 주소가 기재된 노드들 중, 상기 목적지 노드와 거리가 가장 가까운 노드인, 메시지 전달 방법.
  10. 제7항에서,
    상기 거리는
    각 노드의 주소를 이진화하고, 이진화된 주소의 접두부(Prefix)를 비교하여 접두부의 공통 부분이 길수록 거리가 가까운 것으로 결정되는, 메시지 전달 방법.
KR1020190098404A 2018-11-19 2019-08-12 블록체인 샤딩 환경에서 노드 간 메시지 전달 방법 KR102331202B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180142865 2018-11-19
KR1020180142865 2018-11-19

Publications (2)

Publication Number Publication Date
KR20200058273A true KR20200058273A (ko) 2020-05-27
KR102331202B1 KR102331202B1 (ko) 2021-11-26

Family

ID=70910970

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190098404A KR102331202B1 (ko) 2018-11-19 2019-08-12 블록체인 샤딩 환경에서 노드 간 메시지 전달 방법

Country Status (1)

Country Link
KR (1) KR102331202B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220089383A (ko) 2020-12-21 2022-06-28 서강대학교산학협력단 이더리움 샤딩 환경에서의 트랜잭션 수행 시간을 기반으로 한 부하 분산 방법 및 이더리움 샤딩 시스템
CN114745382A (zh) * 2022-04-07 2022-07-12 中国邮政储蓄银行股份有限公司 任务分片方法、任务分片装置和业务系统
KR102596700B1 (ko) * 2022-06-03 2023-11-09 주식회사 블룸테크놀로지 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
KR20230171628A (ko) * 2022-06-14 2023-12-21 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060000077A (ko) * 2004-06-28 2006-01-06 주식회사 젤라인 공유 매체를 이용한 통신 시스템에서 노드간의 상대거리에 기반한 스마트 라우팅 방법
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
KR20130016156A (ko) * 2005-02-25 2013-02-14 인터디지탈 테크날러지 코포레이션 메시 내부 및 메시 외부 경로를 통해 패킷을 라우팅하기 위한 무선 통신방법 및 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
KR20060000077A (ko) * 2004-06-28 2006-01-06 주식회사 젤라인 공유 매체를 이용한 통신 시스템에서 노드간의 상대거리에 기반한 스마트 라우팅 방법
KR20130016156A (ko) * 2005-02-25 2013-02-14 인터디지탈 테크날러지 코포레이션 메시 내부 및 메시 외부 경로를 통해 패킷을 라우팅하기 위한 무선 통신방법 및 시스템

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Identity management application using Blockchain, MongoDB Stitch & MongoDB Atlas - Part 1, https://www.mongodb.com/blog/post/identity-management-application-using-blockchain-mongodb-stitch-mongodb-atlas-part-1(2018.11.12.) 1부.* *
Kan Luo, et al. "A multiple blockchains architecture on inter-blockchain communication." IEEE International Conference on Software Quality, Reliability and Security Companion (QRS-C). IEEE(2018.08.) 1부.* *
MongoDB Sharding: Step by step, https://www.javahotchocolate.com/notes/mongodb-sharding.html(2013.09.17.) 1부.* *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220089383A (ko) 2020-12-21 2022-06-28 서강대학교산학협력단 이더리움 샤딩 환경에서의 트랜잭션 수행 시간을 기반으로 한 부하 분산 방법 및 이더리움 샤딩 시스템
CN114745382A (zh) * 2022-04-07 2022-07-12 中国邮政储蓄银行股份有限公司 任务分片方法、任务分片装置和业务系统
CN114745382B (zh) * 2022-04-07 2024-05-24 中国邮政储蓄银行股份有限公司 任务分片方法、任务分片装置和业务系统
KR102596700B1 (ko) * 2022-06-03 2023-11-09 주식회사 블룸테크놀로지 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
WO2023234526A1 (ko) * 2022-06-03 2023-12-07 주식회사 블룸테크놀로지 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
KR20230171628A (ko) * 2022-06-14 2023-12-21 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
WO2023243881A1 (ko) * 2022-06-14 2023-12-21 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법

Also Published As

Publication number Publication date
KR102331202B1 (ko) 2021-11-26

Similar Documents

Publication Publication Date Title
KR102331202B1 (ko) 블록체인 샤딩 환경에서 노드 간 메시지 전달 방법
WO2018112805A1 (zh) 区块链存储方法、装置及节点设备
JP4786882B2 (ja) ピアツーピア名前解決ワイヤプロトコルで使用するデータ構造を格納したコンピュータ可読媒体
JP5049344B2 (ja) ランデブーフェデレーション内の近傍域間通信
US8713145B2 (en) Information distribution system, information distributing method, node, and recording medium
US20070230468A1 (en) Method to support mobile devices in a peer-to-peer network
CN110166220B (zh) 一种根据分区键的散列值进行切分的分片方法
JP2009543447A (ja) ランデブーフェデレーション内の近傍域間通信
JP2009543447A5 (ko)
CN112995211B (zh) 基于区块链网络的数据处理方法、装置、设备及存储介质
US20110208828A1 (en) Node apparatus and computer-readable storage medium for computer program
US9871754B2 (en) Communicating messages between publishers and subscribers in a mesh routing network
CN109525678B (zh) 区块链网络系统以及相应的节点设备发现方法
CN113411376A (zh) 基于区块链分片存储的传感器数据处理方法及装置
JP6580212B1 (ja) 通信装置、通信方法、および、通信プログラム
KR101570933B1 (ko) 데이터분산서비스에서 동적 블룸 필터를 이용한 노드 탐색 시스템 및 방법
CN100536422C (zh) 对等网络及其网络资源查询方法
JP2012134780A (ja) ゲートウェイシステム、ゲートウェイ装置、負荷分散方法
KR20110070447A (ko) 데이터 분배 서비스에서 통신 참여자의 분산 발견 방법
JP2007074490A (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
CN115348275A (zh) 一种基于区块链快速寻址技术的离岸数据分布式存储系统
US8514742B2 (en) Node device, information process method, and recording medium recording node device program
CN109831313B (zh) 群组通信方法、设备及计算机可读存储介质
JP2009230686A (ja) コンテンツ管理サーバ及びコンテンツ管理プログラム
Zghaibeh et al. d-SHAM: a constant degree-scalable homogeneous addressing mechanism for structured P2P networks

Legal Events

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