커널 업그레이드 워크플로 (Aeneid)
Aeneid 테스트넷 DKG 위원회 Validator의 story-kernel 바이너리를 업그레이드합니다. DKG 온체인 업그레이드 메커니즘을 사용합니다: 새 MRENCLAVE 화이트리스트 등록, 업그레이드 스케줄링, 듀얼 커널 리셰어링, 그리고 컷오버.사전 요구사항
- 현재 DKG 라운드가 Active 단계일 때 업그레이드를 시작하는 것을 권장합니다
- 모든 Validator 머신에 새 story-kernel 바이너리가 빌드되어 있어야 합니다(동일한 MRENCLAVE를 생성해야 함)
whitelistEnclaveType및scheduleUpgrade를 위한 DKG 컨트랙트에 대한 Timelock/owner 액세스- 새 커널 클라이언트의 SGXValidationHook 프록시 주소를 알고 있어야 함
1단계: 새 커널 빌드
각 Validator 머신에서 새 story-kernel 바이너리를 빌드하세요(MRENCLAVE가 일치해야 하므로 절대 SCP로 바이너리를 전송하지 마세요).NEW_MRENCLAVE 값을 생성하는지 확인하세요.
2단계: 듀얼 커널 시작
새 커널은 별도의 포트에서 기존 커널과 함께 실행됩니다. DATA Foundation CL은 각 커널을code_commitment(MRENCLAVE)로 식별합니다.
3단계: DATA Foundation Config 업데이트 + 재시작
새 커널 엔드포인트를story.toml에 추가하세요:
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 라운드가 새 커널에서 정상적으로 진행됨