TIL12 Blockchain Network

shnae·2023년 11월 3일
1
post-thumbnail

  • 사업적인 측면에서는 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에 대한 정보를 보냄
  1. 어떤 정보를 보낼지를 접두사로 붙이는 것이 일반화되어 있다
  2. 잘 연결되어 있는지 확인한다
  3. 올바른 정보가 갔는지 확인한다 (체크썸)

인벤토리 교환하기

👋🏼가장 유명한 노드에게 연락
💁🏻‍♀️유명한 노드가 친구들에게 소개해줌
🤲🏻 어떤 정보를 받아야하는지 알려줌
📝내가 몇번부터 받아야하는지 다시 알려줌
해당 번호부터 500개 다시 보내줌
해시값 확인 후 블록체인 만듬

동기화 절차

  1. version 메시지로 시작한다. Bestheight를 담고 있다.
  2. version으로 이웃노드오 자신의 블록 개수를 비교한다.
  3. 가장 상부에 있는 블록의 해시를 담고있는 getblock 메시지를 교환한다.

SPV-풀노드 간 통신에서는 SPV 가 getblock을 보내지 않는다

SPV

SPV 노드의 특징

  • 거래에 검증을 받으려면/스스로 하려면, 바디가 필요한데 바디가 없다
  • 검증을 스스로 못한다. 따라서, 옆에 있는 노드한테 요청해야된다.
  • 옆에 있는 노드는 full node임. 용량이 큰데, 대부분을 차지하는 것은 바디임. 중요한 것은 거래정보를 담고 있는 바디. (헤더에 집중하게 되는데, 진짜 중요한 정보는 바디에 있는 거래 내역이다)
    • 해시가 존재하는지 찾고 싶으면 해시를 찾으면 된다
    • 거래 내역을 확인할 때에도 그 해시면 확인한다
    • 풀노드는 이 작업을 스스로 한다
    • SPV는 이 작업을 옆에 있는 풀노드에게 요청한다
  • 간소화된 용량으로 움직일 수 있다.

프로세스

  • SPV 노드와 풀노드가 통신하는 방법
  • SPV 는 바디가 없어서 검증할 수 없다
  • 풀노드는 바디가 있어서 검증할 수 있다
  • 해시를 보내주거나 vs 머클패스만 보내준다
    • 헤더에 머클루트가 담겨 있으니까
    • 패스만 보내면 통신량이 확 줄어든다
    • 거래소는 엄청 가깝게 지내고 있는 풀노드가 있거나, 직접 풀노드를 운영한다

비트코인 백서

  • Block 27번 언급, Chain 67번 언급
  • 백서 안에서는 블록체인이라는 용어는 사용되지 않는다
  • 어떤 이유로 시작된 것인지 파악해볼 수 있다

0개의 댓글