Execution Client와 Consensus Client의 연결 과정
Execution Client와 Consensus Client는 모두 병렬로 동시에 작동한다.
두 클라이언트 간의 통신이 필요하다. 이 통신을 통해 Consensus Client는 Execution Client에 지침을 제공하고, Execution Client는 비콘 블록에 포함 시키기 위해 트랜잭션 번들을 Consensus Client에 전달할 수 있다. 두 클라이언트 간의 연결은 Local RPC 연결을 사용하여 설정되며, 두 클라이언트 간에 전송되는 명령은 엔진 API에 의해 정의된다.
Proposer이 아닌 경우(Validator인 경우)
- Consensus Client(eth2)는 블록을 수신한다.
- Gossip Protocol(Consensus P2P Network)을 통해 받는다.
- 수신된 블록은 Consensus Client(eth2)에 의해 검증되어 올바른 메타데이터를 가진 유효한 발신자가 보낸 것인지 확인한다.
- 블록에 포함된 트랜잭션은 로컬 RPC를 통해 Execution Layer(Execution Client, eth1)로 전달된다.
- Execution Layer(eth1)에서는 트랜잭션을 실행하고 블록 헤더의 상태를 검증하여 해시가 일치하는지 확인한다.
- 일치를 확인한 Execution Layer(eth1)는 블록이 검증되었음을 나타내는 유효성 검사 데이터를 Consensus Layer(eth2)로 다시 전송한다. 이 통신 역시 로컬 RPC를 통해 이루어진다.
- Consensus Layer(eth2)는 유효성이 검증된 블록을 자체 블록체인의 헤드에 추가하고 이에 대한 증명(Attestation)을 생성한다. 그런 다음 Consensus P2P Network(eth2)를 이용하여 다른 노드들에게 Attestation을 브로드캐스팅 하여 알린다.
Proposer인 경우
- Consensus Client(eth2)가 다음 블록 생성자라는 알림을 받는다.
- Gossip Protocol(Consensus P2P Network)를 통해 알림을 받는다.
- Consensus Layer가 Execution Client에서 로컬 RPC를 이용해 블록 생성 메서드를 호출한다.
- Execution Layer가 Mempool에 접근한다.
- Execution Client는 트랜잭션을 블록으로 묶고, 트랜잭션을 실행하고, 블록 해시를 생성한다.
- Consensus Client가 Execution Client로부터 트랜잭션과 블록 해시를 가져와 비콘 블록에 추가한다.
- Consensus Client가 Gossip Protocol(Consensus P2P Network)를 이용해 블록을 브로드캐스트한다.
- 다른 노드들은 제안된 블록을 받고 검증한다.
- 블록이 충분한 검증자에 의해 증명(attested)되면 체인 헤드에 추가되고 정당화(Justified)되어 최종적으로 확정(Finalized)된다.
https://ethereum.org/en/developers/docs/networking-layer/#connecting-clients