Execution Client와 Consensus Client의 연결 과정

프동프동·2023년 5월 17일
1

Blockchain

목록 보기
9/12

Execution Client와 Consensus Client의 연결 과정

Execution Client와 Consensus Client는 모두 병렬로 동시에 작동한다.

두 클라이언트 간의 통신이 필요하다. 이 통신을 통해 Consensus Client는 Execution Client에 지침을 제공하고, Execution Client는 비콘 블록에 포함 시키기 위해 트랜잭션 번들을 Consensus Client에 전달할 수 있다. 두 클라이언트 간의 연결은 Local RPC 연결을 사용하여 설정되며, 두 클라이언트 간에 전송되는 명령은 엔진 API에 의해 정의된다.

Proposer이 아닌 경우(Validator인 경우)

  1. Consensus Client(eth2)는 블록을 수신한다.
    • Gossip Protocol(Consensus P2P Network)을 통해 받는다.
  2. 수신된 블록은 Consensus Client(eth2)에 의해 검증되어 올바른 메타데이터를 가진 유효한 발신자가 보낸 것인지 확인한다.
  3. 블록에 포함된 트랜잭션은 로컬 RPC를 통해 Execution Layer(Execution Client, eth1)로 전달된다.
    • Execution Layer(eth1)에서는 트랜잭션을 실행하고 블록 헤더의 상태를 검증하여 해시가 일치하는지 확인한다.
  4. 일치를 확인한 Execution Layer(eth1)는 블록이 검증되었음을 나타내는 유효성 검사 데이터를 Consensus Layer(eth2)로 다시 전송한다. 이 통신 역시 로컬 RPC를 통해 이루어진다.
  5. Consensus Layer(eth2)는 유효성이 검증된 블록을 자체 블록체인의 헤드에 추가하고 이에 대한 증명(Attestation)을 생성한다. 그런 다음 Consensus P2P Network(eth2)를 이용하여 다른 노드들에게 Attestation을 브로드캐스팅 하여 알린다.

Proposer인 경우

  1. Consensus Client(eth2)가 다음 블록 생성자라는 알림을 받는다.
    • Gossip Protocol(Consensus P2P Network)를 통해 알림을 받는다.
  2. Consensus Layer가 Execution Client에서 로컬 RPC를 이용해 블록 생성 메서드를 호출한다.
  3. Execution Layer가 Mempool에 접근한다.
  4. Execution Client는 트랜잭션을 블록으로 묶고, 트랜잭션을 실행하고, 블록 해시를 생성한다.
  5. Consensus Client가 Execution Client로부터 트랜잭션과 블록 해시를 가져와 비콘 블록에 추가한다.
  6. Consensus Client가 Gossip Protocol(Consensus P2P Network)를 이용해 블록을 브로드캐스트한다.
  7. 다른 노드들은 제안된 블록을 받고 검증한다.
  8. 블록이 충분한 검증자에 의해 증명(attested)되면 체인 헤드에 추가되고 정당화(Justified)되어 최종적으로 확정(Finalized)된다.

https://ethereum.org/en/developers/docs/networking-layer/#connecting-clients

profile
좋은 개발자가 되고싶은

0개의 댓글