Skip to main content
DKG는 현재 Aeneid 테스트넷에서만 사용할 수 있습니다. 메인넷 지원은 향후 릴리스에서 제공될 예정입니다.

개요

v1.6.0 업그레이드부터, Validator는 DKG(Distributed Key Generation) 위원회에 참여할 수 있습니다. 참여하려면 story-kernel을 실행해야 하며, 이는 Validator 노드와 함께 Intel SGX enclave 내부에서 실행되는 TEE 클라이언트입니다. DKG 참여는 선택 사항입니다. story.toml에서 dkg.enable = false로 유지하면 DKG 위원회에 참여하지 않고 Validator를 계속 운영할 수 있습니다. 참여 전 알아두어야 할 사항:
  • SGX 하드웨어 필수: 머신에 Intel SGX 지원이 있어야 합니다
  • 활성 DKG 위원회 멤버인 동안에는 자기 위임 해제(self-undelegation)가 차단됩니다. 현재 DKG 라운드가 종료될 때까지 자신의 위임 지분을 해제할 수 없습니다(프로덕션 파라미터 기준 약 7일). 다른 위임자는 영향을 받지 않습니다.
  • 커널이 다운되어도 Validator는 정상적으로 블록을 계속 생성합니다. 커널이 재시작되고 현재 라운드가 종료되기 전에 노드가 성공적으로 finalize되면 해당 라운드에 다시 참여할 수 있으며, 그렇지 않으면 다음 라운드에 다시 참여합니다.

하드웨어 요구사항

story-kernel은 전용 Enclave Page Cache (EPC) 메모리를 필요로 하는 SGX enclave 내부에서 실행됩니다. Gramine manifest는 Go 런타임과 DKG 암호화 연산을 위한 4 GB enclave를 구성합니다. 지원되는 클라우드 인스턴스 (Azure): Bare metal도 지원됩니다: BIOS에서 SGX가 활성화된 모든 Intel 서버. dmesg | grep "sgx: EPC section"로 EPC 크기를 확인하세요. AMD SEV-SNP 인스턴스(예: Azure DCasv5) 및 ARM 인스턴스는 현재 지원되지 않습니다.

소프트웨어 요구사항

모든 Validator는 동일한 MRENCLAVE(코드 커밋먼트) 값을 생성하기 위해 아래의 정확히 동일한 버전을 반드시 사용해야 합니다.

설정 가이드

1단계: SGX 지원 확인

/dev/sgx_enclave가 존재하지 않으면 SGX가 지원되지 않거나 BIOS/클라우드 설정에서 활성화되지 않은 것입니다.

2단계: 의존성 설치

Intel SGX SDK 및 DCAP

PCCS 구성

/etc/sgx_default_qcnl.conf를 편집하세요:

Gramine 1.9 설치

3단계: Story-Kernel 빌드

출력에서 MRENCLAVE 값을 확인하세요:
모든 Validator는 동일한 MRENCLAVE를 생성해야 합니다. 다르다면, 정확히 동일한 커밋, OS 버전, Go 버전, Gramine 버전을 사용했는지 확인하세요.

4단계: 데이터 디렉토리 설정

5단계: 초기화 및 구성

초기화

구성

/opt/story-kernel/config.toml을 편집하세요:
신뢰할 수 있는 블록은 지난 2주 이내여야 합니다. 라이트 클라이언트는 신뢰 기간을 사용하므로, 신뢰 블록이 오래되었다면 헤더 검증이 실패합니다. 최근 신뢰 블록 가져오기:

6단계: Story 클라이언트 구성

~/.story/story/config/story.toml에 다음 변경 사항을 적용하세요:

engine-chain-id 추가 (없는 경우)

DKG 옵션 섹션 추가

7단계: 서비스 시작

시작 순서가 중요합니다. 커널은 라이트 클라이언트 초기화를 위해 CometBFT RPC(포트 26657)가 필요하므로, story-kernel은 체인이 실행된 후에 시작하세요.

Story-Kernel 시작

SGX enclave 로딩에는 1-3분이 걸립니다. 프로세스가 “Parsing TOML manifest file”에서 멈춘 것처럼 보일 수 있으나, 이는 정상입니다.

DATA Foundation 재시작

8단계: 검증

커널 실행 확인

DATA Foundation이 커널에 연결됨

DKG 등록


문제 해결

커널이 시작되지 않음

DKG 등록 실패

라이트 클라이언트 문제


중요 사항

자기 위임 해제 제한

Validator가 활성 DKG 라운드의 finalized 멤버인 동안 자기 위임 해제는 차단됩니다. 이는 위원회 멤버가 라운드 중간에 이탈하여 임계값 암호화를 손상시키는 것을 방지합니다.
  • 자기 위임 해제만 차단됨; 다른 위임자는 정상적으로 unstake 가능
  • 현재 라운드가 종료되면 제한이 해제됨
  • 프로덕션 파라미터 기준 전체 DKG 라운드는 약 7일 소요

별도 머신에서 커널 실행

story-kernel은 전용 SGX 머신에서 실행할 수 있습니다. story.toml에서 kernel-endpoints를 업데이트하세요:
SGX 머신은 CometBFT RPC(포트 26657)에 네트워크 액세스가 필요합니다.

추가 정보

빌드 환경

Enclave 측정값

아래 측정값은 story-kernel 릴리스 v0.1.0에 해당합니다. story-kernel 또는 측정된 빌드 입력이 업그레이드되면 변경될 수 있습니다.

FAQ

Validator를 운영하는 데 SGX가 필요한가요? 아니요. SGX는 DKG 위원회 참여에만 필요합니다. SGX 없이 실행하려면 dkg.enable = false로 설정하세요. 커널이 다운되면 어떻게 되나요? Validator는 계속 블록을 생성합니다. 커널이 재시작되고 현재 DKG 라운드가 종료되기 전에 노드가 성공적으로 finalize되면 해당 라운드에 다시 참여할 수 있으며, 그렇지 않으면 다음 라운드에 다시 참여합니다. MRENCLAVE는 무엇인가요? SGX enclave 콘텐츠의 암호화 해시입니다. 모든 Validator는 동일한 DKG 위원회에 참여하기 위해 동일한 값을 생성해야 합니다. 참여 후 옵트아웃할 수 있나요? 가능합니다. dkg.enable = false로 설정하고 story를 재시작하세요. 현재 라운드가 종료되면 참여가 중단됩니다.