1 |
1
다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고 동일한 블록체인을 유지하는 환경에서, 노드가 블록을 전파하는 방법으로서,상기 노드가, 상기 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 상기 제1 전달 메시지를 송신한 상기 제1 피어의 정보를 제1 저장소에 저장하는 단계;상기 노드가, 수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 단계;상기 노드가, 상기 제1 저장소에 저장된 정보를 토대로, 상기 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 상기 제1 피어에 전달하는 단계; 및상기 노드가, 상기 제1 피어로부터 상기 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신하는 단계를 포함하는 방법
|
2 |
2
제1항에 있어서,상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계 이후에,상기 제1 요청 메시지를 전달한 상기 제1 피어의 정보를 제2 저장소에 저장하는 단계를 더 포함하고, 상기 제3 전달 메시지를 수신하는 단계 이후에, 상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 단계; 및상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는 경우에 상기 제3 전달 메시지에 포함된 제2 부분을 토대로 블록을 생성하고 검증하는 단계를 더 포함하는, 방법
|
3 |
3
제2항에 있어서,상기 노드가, 상기 제2 피어로부터, 상기 제2 전달 메시지에 포함된 제1 부분에 대응하면서 또한 상기 블록에 연관된 제2 부분을 요청하는 제2 요청 메시지를 수신하는 단계; 및상기 노드가, 상기 제2 요청 메시지에 의해 요청된 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하는 단계를 더 포함하는 방법
|
4 |
4
제3항에 있어서,상기 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 단계 이후에, 상기 제2 전달 메시지를 전달한 상기 제2 피어의 정보를 제3 저장소에 저장하는 단계를 더 포함하고, 상기 제2 요청 메시지를 수신하는 단계 이후에, 상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 단계를 더 포함하며,상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계는 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하는, 방법
|
5 |
5
제1항에 있어서,상기 제1 피어의 정보를 제1 저장소에 저장하는 단계는 상기 수신된 제1 전달 메시지에 포함된 제1 부분을 검증하는 단계; 및상기 검증된 제1 부분으로부터 획득되는 블록 해시를 토대로 상기 제1 피어에 대응하는 최신 블록 해시를 업데이트하는 단계를 포함하는, 방법
|
6 |
6
제4항에 있어서,상기 제1 부분은 상기 블록의 블록 헤더이고, 상기 제2 부분은 상기 블록의 블록 바디이며, 상기 블록 바디는 트랜잭션 리스트를 포함하고, 상기 블록 헤더는 이전 블록 해시값, 타임 스탬프 그리고 상기 트랜잭션 리스트에 의존성이 있는 값을 포함하는, 방법
|
7 |
7
제6항에 있어서,상기 블록을 생성하고 검증하는 단계는, 상기 제3 전달 메시지에 포함된 제2 부분인 블록 바디를 기반으로 신규 블록을 생성하고, 생성된 블록을 검증하는 단계; 및상기 검증된 블록을 상기 노드의 블록체인에 추가하는 단계를 포함하는, 방법
|
8 |
8
제6항에 있어서,상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 단계 이후에, 상기 제2 요청 메시지에 의해 요청된 제2 부분인 블록 바디가 있는지를 판단하는 단계를 더 포함하며, 상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계는 상기 제2 부분인 블록 바디가 있는 경우에, 상기 블록 바디를 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하고, 상기 제2 요청 메시지는 블록 해시를 포함하는, 방법
|
9 |
9
제4항에 있어서,상기 제1 부분은 리딩 블록이고, 상기 제2 부분은 상기 블록의 트랜잭션이며, 상기 리딩 블록은 상기 블록의 블록 헤더와 순차 트랜잭션 ID 리스트를 포함하며, 상기 순차 트랜잭션 ID 리스트는 상기 블록의 트랜잭션의 트랜잭션 ID를 순차적으로 나열한 리스트인, 방법
|
10 |
10
제9항에 있어서,상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계 이전에,상기 제1 전달 메시지에 포함된 제1 부분인 리딩 블록의 순차 트랜잭션 ID 리스트를 최신 블록 트랜잭션 리스트로 업데이트하는 단계; 및 상기 업데이트된 최신 블록 트랜잭션 리스트와 제1 리스트 - 상기 제1 리스트는 블록에 포함되지 않았지만 전파될 트랜잭션의 리스트임 - 를 비교하여, 보유하지 않은 트랜잭션을 도출하는 단계를 더 포함하고, 상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계는 상기 도출된 트랜잭션을 상기 제2 부분으로 사용하여, 상기 도출된 트랜잭션에 관련된 정보를 상기 제1 요청 메시지에 포함시켜 상기 제1 피어에 전달하는, 방법
|
11 |
11
제9항에 있어서,상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 단계 이후에,상기 제1 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 노드가 보유하지 않은 트랜잭션들의 리스트인 제2 리스트로부터, 상기 제3 전달 메시지에 포함된 제2 부분인 트랜잭션들을 삭제하는 단계를 더 포함하고, 상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계 이후에, 피어별 제3 리스트 - 상기 피어별 제3 리스트는 피어별로 해당 피어가 요청한 트랜잭션들의 리스트임 - 로부터, 상기 제4 전달 메시지에 포함된 제2 부분인 트랜잭션들을 삭제하는 단계를 더 포함하는, 방법
|
12 |
12
제9항에 있어서,상기 블록을 생성하고 검증하는 단계는, 상기 노드가 요청한 트랜잭션들을 모두 수신하여 상기 제2 리스트가 비어 있는 경우에, 수신된 트랜잭션들을 기반으로 블록을 생성하고, 생성된 블록을 검증하는 단계; 및상기 검증된 블록을 상기 노드의 블록체인에 추가하는 단계를 포함하는, 방법
|
13 |
13
제4항에 있어서,상기 제3 저장소에 저장되어 있는 피어에 대해 요청된 제2 부분을 전달한 다음에, 해당 피어의 최신 블록 해시를 업데이트하는 단계; 및상기 제1 저장소, 상기 제2 저장소 및 상기 제3 저장소 중 적어도 하나를 초기화하는 단계를 더 포함하는 방법
|
14 |
14
다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고 동일한 블록체인을 유지하는 환경에서, 블록을 전파하는 노드로서,네트워크를 통해 데이터를 송수신하도록 구성된 네트워크 인터페이스 장치; 블록 전파를 위한 복수의 저장소를 저장하도록 구성된 메모리; 및상기 네트워크 인터페이스 장치를 통해 상기 네트워크 상의 다른 노드와의 블록 전파를 수행하도록 구성된 프로세서를 포함하고,상기 프로세서는, 상기 네트워크 인터페이스 장치를 통해, 상기 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 상기 제1 전달 메시지를 송신한 상기 제1 피어의 정보를 상기 메모리의 제1 저장소에 저장하는 동작;수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 네트워크 상의 노드인 제2 피어에 전달하는 동작;상기 제1 저장소에 저장된 정보를 토대로, 상기 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제1 피어에 전달하는 동작; 및상기 네트워크 인터페이스 장치를 통해, 상기 제1 피어로부터 상기 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신하는 동작 을 수행하도록 구성되는, 노드
|
15 |
15
제14항에 있어서,상기 프로세서는, 상기 제1 요청 메시지를 상기 제1 피어에 전달하는 동작 이후에,상기 제1 요청 메시지를 전달한 상기 제1 피어의 정보를 제2 저장소에 저장하는 동작을 추가적으로 수행하고, 상기 제3 전달 메시지를 수신하는 동작 이후에, 상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 동작; 및상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는 경우에 상기 제3 전달 메시지에 포함된 제2 부분을 토대로 블록을 생성하고 검증하는 동작을 추가적으로 수행하도록 구성되는, 노드
|
16 |
16
제15항에 있어서,상기 프로세서는 추가적으로, 상기 네트워크 인터페이스 장치를 통해, 상기 제2 피어로부터, 상기 제2 전달 메시지에 포함된 제1 부분에 대응하면서 또한 상기 블록에 연관된 제2 부분을 요청하는 제2 요청 메시지를 수신하는 동작; 및상기 제2 요청 메시지에 의해 요청된 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제2 피어에 전달하는 동작을 수행하도록 구성되는, 노드
|
17 |
17
제16항에 있어서,상기 프로세서는 상기 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 동작 이후에, 상기 제2 전달 메시지를 전달한 상기 제2 피어의 정보를 제3 저장소에 저장하는 동작을 추가적으로 수행하고,상기 제2 요청 메시지를 수신하는 동작 이후에, 상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 동작을 추가적으로 수행하며,상기 프로세서는 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제2 피어에 전달하도록 구성되는, 노드
|
18 |
18
제14항에 있어서,상기 프로세서는 상기 제1 피어의 정보를 제1 저장소에 저장하는 동작 수행시, 상기 수신된 제1 전달 메시지에 포함된 제1 부분을 검증하는 동작; 및상기 검증된 제1 부분으로부터 획득되는 블록 해시를 토대로 상기 제1 피어에 대응하는 최신 블록 해시를 업데이트하는 동작을 추가적으로 수행하도록 구성되는, 노드
|
19 |
19
제14항에 있어서,상기 제1 부분은 상기 블록의 블록 헤더이고, 상기 제2 부분은 상기 블록의 블록 바디이며, 상기 블록 바디는 트랜잭션 리스트를 포함하고, 상기 블록 헤더는 이전 블록 해시값, 타임 스탬프 그리고 상기 트랜잭션 리스트에 의존성이 있는 값을 포함하는, 노드
|
20 |
20
제14항에 있어서,상기 제1 부분은 리딩 블록이고, 상기 제2 부분은 상기 블록의 트랜잭션이며, 상기 리딩 블록은 상기 블록의 블록 헤더와 순차 트랜잭션 ID 리스트를 포함하며, 상기 순차 트랜잭션 ID 리스트는 상기 블록의 트랜잭션의 트랜잭션 ID를 순차적으로 나열한 리스트인, 노드
|