아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
수려한콰가118
수려한콰가11819.05.11

이더리움에서 와이어 프로토콜이 무엇을 말하는 건가요?

이더리움 2.0 업그레이드를 위해 여러가지 기술코드를 적용중인것으로 알고 있습니다. 여기에 와이어 프로토콜이 노드간 통신(?) 역할을 수행한다고 하는데요.

  • 노드간 통신은 현재도 가능한거 아닌가요? 추가로 와이어 프로토콜이라는 것이 필요한지 궁금합니다.

  • 와이어 프로토콜이 도입되면서 어떤 이점이 있는지 알고 싶습니다.

55글자 더 채워주세요.
답변의 개수2개의 답변이 있어요!
  • 이더리움의 node discovery 는 비트코인에 비해 적은 노력으로 최신의 상태를 잘 반영 할 수 있으며, 보다 더 신뢰가능하며,고른 분포를 가진 망을 구성 할 수 있으리라 보입니다.

    구체적인 노드디스커버리의작동 과정은 일단 이더리움 자체에 하드코드 되거나 자신이 입력한 seed node 로 부터 시작되는데, table.go 파일에 구현되어 있는 무한loop가 doRefresh 함수를 호출하여 항상 새로운 이웃노드들을 자신의 테이블에 저장하고 상태체크를 하는데, 이웃노드 탐색에는 lookup 함수가 사용되어 FIND_NODE 프로토콜을 이용하여 재귀적으로 이웃노드들에 대한 정보를 찾습니다. 이 과정에서 자신의 테이블에 자신과 가까운 녀석들은 많이 담게 되고, 자신도 다른 노드들의 탐색과정을 도와야 하기 때문에 랜덤한 Node ID로 부터의 탐색도 하여 테이블 (K-BUCKET)에 다양한 노드를 담을 수 있게 됩니다.

    이렇게 라우팅테이블에 노드들이 담기게 되며, 계속해서 살아있는 노드들로 업데이트 됩니다.

    실제 데이터를 주고 받는 WIRE 프로토콜에서는 이렇게 노드디스커버리에 의해 연결 가능한 노드들만으로 이루어진 라우팅테이블에 담긴 노드들중 랜덤하게 선택 하여 실제 스트림 통신을 하게 됩니다.

    * 이더리움 RLPx 에 대한 구체적인 코드 분석(GO,C++,RUST) 및 비트코인/Hyperledger 와의 비교 포스트를 따로 계속 연재 할 예정입니다.참고로 pydevp2p 라는 파이썬 기반의 오픈소스로 먼저 코드리딩을 하는게 훨씬 편할 것입니다.


  • 질문자께서 질문해주신 내용에 대해 답변해 드리도록 하겠습니다.

    • 노드간 통신은 현재도 가능한거 아닌가요? 추가로 와이어 프로토콜이라는 것이 필요한지 궁금합니다. 와이어 프로토콜이 도입되면서 어떤 이점이 있는지 알고 싶습니다.

      1. 이더리움의 와이어 프로토콜은 노드 간에 암호화된 메시지를 전송하는 통신 프로토콜이며 블록 체인에서의 정보 교환을 용이하게 하는 기능을 합니다. 이더리움 와이어 프로토콜을 통해 노드들 간의 통신이 설정되면 서로의 상태를 알아보는 메시지를 보냅니다. 서로의 상태에 이상이 없다면 비로소 트랜젝션 메시지를 다른 노드에 전송할 수 있습니다. 또한 작업 증명 방식의 검증이 마무리 되고 유효성이 검증되면 새로운 블록과 새로운 블록의 해시 메시지를 다른 노드들에게 전파하기도 합니다. 그리고노드들 간의 체인 정보가 다를 경우 보다 최신의 블록 데이터를 갖고 있는 노드와 메시지를 주고 받으며 체인 정보를 동기화 할 수 있기도 합니다. 다음으로 노드들 간의 통신을 통해 작업 증명 해시 값을 확인하고 블록 헤더 체인을 다운로드하여 상태를 동기화합니다.

      2. 기존에도 와이어 프로토콜은 존재했지만 이번에 이더리움 2.0을 준비하면서 'libp2p'라는 새로운 와이어 프로토콜이 개발되고 있어 다시 와이어 프로토콜에 대한 관심이 생겨나고 있습니다. 이 새로운 와이어 프로토콜은 노드들 간의 통신에 있어 혼잡성을 많이 줄여주게 됩니다.

        구체적으로 설명드리면 노드와 노드의 메시지를 전달하면서도 네트워크가 혼잡해 지지 않도록 'gossipsub'라는 새로운 프로토콜 디자인을 활용합니다. 지금은 노드가 다른 모든 노드들에게 메시지를 전달하게 되는데 새로운 프로토콜이 도입되게 되면 노드가 다른 모든 노드들에게 메시지를 전파하는 대신, 해당 노드와 연결된 다른 노드들에게 무작위로 메시지를 전파하고 그 메시지를 받은 노드도 자신과 연결된 다른 무작위 노드들에게 입소문을 내듯이 메시지를 전파함으로써 결국 혼잡하지 않으면서도 전체 노드에 메시지를 전파할 수 있게 되는 것입니다.

    해당 내용은 제가 이해한 바대로 설명드린 내용으로 잘못된 내용이나 부족한 부분이 있을 수 있으므로 아하 이외의 다른 곳에서 참고자료로 사용하기에 부족할 수 있습니다.

    답변이 도움이 되길 바랍니다.