
- 사업적인 측면에서는 SPV가 가장 중요하지만, 기술적인 측면에서는 우선순위가 낮아짐
UDP/TCP
- UDP: 빨리 전송하는 것 이 중요함
- TCP: 신뢰가 중요함
✨ 네트워크 검색

- 노드 간 통신
version
verack
version acknowledgement;
Handshaking
- 이웃 노드는 클라이언트 목록에 기록된
종자노드
를 이용하여 신속하게 네트워크 내 다른 노드를 검색한다
- 가장 안정적으로 오래 운영된 노드부터 '인사'를 한다 (version)
종자 노드
종자노드
가장 안정적으로 오래 운영된 노드들의 리스트
- address 교환
정보 교환
- Node A, Node B 모두 풀노드
getblocks
가장 마지막으로 갖고 있는 블록 정보를 확인한다
inv
공유 받아야할 500개의 블록의 해시 정보를
- Node A 가 어디서부터 받아야하는지 인식 후 그 번호로부터 500개를 보냄
* 통신기술과 하드웨어가 좋아지면 500개 이상으로 늘어날 것
- getdata라는 메시지를 보내고 이에 응답으로 block에 대한 정보를 보냄
- 어떤 정보를 보낼지를 접두사로 붙이는 것이 일반화되어 있다
- 잘 연결되어 있는지 확인한다
- 올바른 정보가 갔는지 확인한다 (체크썸)
인벤토리 교환하기
👋🏼가장 유명한 노드에게 연락
💁🏻♀️유명한 노드가 친구들에게 소개해줌
🤲🏻 어떤 정보를 받아야하는지 알려줌
📝내가 몇번부터 받아야하는지 다시 알려줌
해당 번호부터 500개 다시 보내줌
해시값 확인 후 블록체인 만듬
동기화 절차
version
메시지로 시작한다. Bestheight
를 담고 있다.
version
으로 이웃노드오 자신의 블록 개수를 비교한다.
- 가장 상부에 있는 블록의 해시를 담고있는
getblock
메시지를 교환한다.
SPV-풀노드 간 통신에서는 SPV 가 getblock을 보내지 않는다
SPV
SPV 노드의 특징
- 거래에 검증을 받으려면/스스로 하려면, 바디가 필요한데 바디가 없다
- 검증을 스스로 못한다. 따라서, 옆에 있는 노드한테 요청해야된다.
- 옆에 있는 노드는 full node임. 용량이 큰데, 대부분을 차지하는 것은 바디임. 중요한 것은 거래정보를 담고 있는 바디. (헤더에 집중하게 되는데, 진짜 중요한 정보는 바디에 있는 거래 내역이다)
- 해시가 존재하는지 찾고 싶으면 해시를 찾으면 된다
- 거래 내역을 확인할 때에도 그 해시면 확인한다
- 풀노드는 이 작업을 스스로 한다
- SPV는 이 작업을 옆에 있는 풀노드에게 요청한다
- 간소화된 용량으로 움직일 수 있다.
프로세스

- SPV 노드와 풀노드가 통신하는 방법
- SPV 는 바디가 없어서 검증할 수 없다
- 풀노드는 바디가 있어서 검증할 수 있다
- 해시를 보내주거나 vs 머클패스만 보내준다
- 헤더에 머클루트가 담겨 있으니까
- 패스만 보내면 통신량이 확 줄어든다
- 거래소는 엄청 가깝게 지내고 있는 풀노드가 있거나, 직접 풀노드를 운영한다
- Block 27번 언급, Chain 67번 언급
- 백서 안에서는 블록체인이라는 용어는 사용되지 않는다
- 어떤 이유로 시작된 것인지 파악해볼 수 있다