비밀 제안자, 다음 블록 제안자를 미리 감추기

Strawmap 그 이후 (장기) · secret proposers

다음 블록을 누가 제안할지 미리 공개하지 않고 제안자가 블록을 내놓는 순간에야 밝혀지게 바꿉니다. 제안자를 노린 공격을 막기 위한 설계입니다.

왜 필요한가

지금 이더리움에서는 어느 검증자(validator)가 어느 슬롯에 블록을 제안할지 에포크(epoch, 32개 슬롯 묶음)가 시작되기 전에 정해집니다. 누구나 그 명단을 볼 수 있습니다. 공격자는 이 명단을 보고 다음 제안자의 노드에 트래픽을 퍼부어 블록을 못 내게 만들 수 있습니다. 이런 서비스 거부 공격(DoS)에 당하면 그 슬롯이 비고 거래가 밀립니다. 다음 제안자가 그 자리의 수수료 수익을 가져갈 여지도 생깁니다. 제안자가 미리 알려져 있다는 사실 자체가 표적 공격의 출발점이 됩니다. 비밀 제안자는 이 명단을 숨깁니다. 제안자 본인만 자기 차례를 압니다. 블록을 공개하는 순간에야 네트워크가 그 사람이 정당한 제안자였다는 것을 확인합니다. 그러면 특정 검증자를 미리 골라 공격하기가 어려워지고 혼자 운영하는 소규모 검증자도 더 안전해집니다. 이더리움 연구 커뮤니티에서는 이 방식을 비밀 리더 선출(secret leader election)이라 부릅니다. 표식을 섞는 셔플과 영지식 증명(zero-knowledge proof)을 쓰는 Whisk 같은 설계가 제안돼 있습니다. Strawmap에서는 정해진 포크 없이 장기 칸에 놓여 있어 어느 업그레이드에 들어갈지는 아직 정해지지 않았습니다.

어떻게 동작하나

  1. 지금은 명단이 공개됩니다 에포크가 시작되기 전에 각 슬롯의 제안자가 정해지고 누구나 그 명단을 조회할 수 있습니다. 공격자도 다음 제안자를 미리 알 수 있습니다.
  2. 검증자가 익명 표식을 등록합니다 각 검증자는 자기만 열 수 있는 암호화된 표식을 네트워크에 올립니다. 이 표식들을 여러 번 섞어 어느 표식이 누구 것인지 알 수 없게 만듭니다.
  3. 뽑힌 표식의 주인만 자기 차례를 압니다 슬롯마다 섞인 표식 중 하나가 뽑힙니다. 그 표식의 주인은 자기 차례임을 알지만 다른 참여자는 누구인지 알 수 없습니다.
  4. 블록과 함께 증명을 냅니다 제안자는 블록을 공개하면서 자신이 뽑힌 표식의 주인이라는 영지식 증명을 붙입니다. 네트워크는 신원을 몰라도 정당한 제안자인지 확인합니다.

← 로드맵