Skip to main content

커널 업그레이드 워크플로 (Aeneid)

Aeneid 테스트넷 DKG 위원회 Validator의 story-kernel 바이너리를 업그레이드합니다. DKG 온체인 업그레이드 메커니즘을 사용합니다: 새 MRENCLAVE 화이트리스트 등록, 업그레이드 스케줄링, 듀얼 커널 리셰어링, 그리고 컷오버.

사전 요구사항

  • 현재 DKG 라운드가 Active 단계일 때 업그레이드를 시작하는 것을 권장합니다
  • 모든 Validator 머신에 새 story-kernel 바이너리가 빌드되어 있어야 합니다(동일한 MRENCLAVE를 생성해야 함)
  • whitelistEnclaveTypescheduleUpgrade를 위한 DKG 컨트랙트에 대한 Timelock/owner 액세스
  • 새 커널 클라이언트의 SGXValidationHook 프록시 주소를 알고 있어야 함

1단계: 새 커널 빌드

각 Validator 머신에서 새 story-kernel 바이너리를 빌드하세요(MRENCLAVE가 일치해야 하므로 절대 SCP로 바이너리를 전송하지 마세요).
진행하기 전에 모든 Validator가 동일한 NEW_MRENCLAVE 값을 생성하는지 확인하세요.

2단계: 듀얼 커널 시작

새 커널은 별도의 포트에서 기존 커널과 함께 실행됩니다. DATA Foundation CL은 각 커널을 code_commitment(MRENCLAVE)로 식별합니다.
새 커널은 다음이 별도로 필요합니다:
  • Home 디렉토리 (별도의 라이트 클라이언트 상태)
  • 다른 listen_addr (:50052)을 가진 Gramine manifest

3단계: DATA Foundation Config 업데이트 + 재시작

새 커널 엔드포인트를 story.toml에 추가하세요:
story를 재시작하세요:
두 커널이 모두 연결되었는지 확인하세요:

4단계: 온체인 화이트리스트 + 업그레이드 스케줄링

현재 DKG 라운드가 Active 단계가 될 때까지 기다린 후:
Aeneid에서 DKG 컨트랙트 작업은 Timelock(minDelay=600s)을 거칩니다. Timelock 트랜잭션을 스케줄링하고, 10분 대기 후 실행하세요.

5단계: 업그레이드 리셰어링 대기

6단계: 새 커널로 컷오버

업그레이드 리셰어링이 성공적으로 완료된 후:

검증 체크리스트

  • 모든 Validator가 동일한 NEW_MRENCLAVE를 빌드함
  • 모든 Validator에서 두 커널이 모두 연결됨 (connected_clients=2)
  • whitelistEnclaveType 트랜잭션 확인됨 (enclave type 1에 새 MRENCLAVE 등록)
  • 대상 activation 높이와 함께 scheduleUpgrade 트랜잭션 확인됨
  • is_upgrade=true로 업그레이드 리셰어링 라운드 시작됨
  • 기존 커널이 deal을 생성하고, 새 커널이 응답 처리
  • 모든 위원회 멤버에서 DKG finalization phase complete
  • 기존 커널 중지, config가 새 커널만 사용하도록 업데이트됨
  • 새 DKG 라운드가 새 커널에서 정상적으로 진행됨

문제 해결