개요
공개superchain-registry에 포함된 체인의 경우, standard-prestates.toml에 게시된 표준 kona-client 절대 사전 상태(absolute prestate)에 이미 체인 구성이 포함되어 있습니다. 사용자 지정 빌드가 필요하지 않습니다.
이 튜토리얼은 드문 경우를 위한 것입니다. 즉, RollupConfig가 아직 공개 레지스트리에 없지만 무허가형(permissionless) 결함 증명(fault proof)(cannon-kona 게임 유형)을 실행해야 하는 파트너 체인이 대상입니다. 이 경우 체인 구성을 포함하는 사용자 지정 kona-client를 빌드하고, 해당 빌드에서 절대 사전 상태 해시를 생성한 다음, 결과 바이너리를 op-challenger가 가져올 수 있는 URL에 호스팅해야 합니다.
대부분의 체인은 Superchain Registry에 포함되어 있으므로 표준 사전 상태를 사용해야 하며, 대신 절대 사전 상태 및 프리이미지 파일 생성하기를 따르십시오. 체인이 레지스트리에 아직 없는 경우에만 이 튜토리얼을 따르십시오. 체인이 공개 레지스트리에 추가되면 이후 릴리스의 표준 사전 상태가 해당 체인을 지원하므로 사용자 지정 빌드를 더 이상 유지 관리하지 않아도 됩니다.
사전 요구 사항
시작하기 전에 다음을 준비했는지 확인하십시오.kona-client가 사용자 지정 체인 구성을 가져오는 방식
kona-client는 kona-registry 크레이트에서 내장 체인 레지스트리를 읽습니다. 빌드 시 이 크레이트의 build.rs는 정식 Superchain Registry 스냅샷 위에 추가 체인을 병합할 수 있습니다. 병합은 두 개의 환경 변수로 제어됩니다.
KONA_CUSTOM_CONFIGS_DIR에서 두 개의 파일을 읽습니다.
chainList.json— 사용자 지정 체인에 대한 경량Chain항목configs.json—Superchain버킷 아래에 그룹화된 전체ChainConfig+RollupConfig항목
kona-registry README에 문서화되어 있습니다.
컴파일된 kona-client 바이너리는 include_str!()을 통해 병합된 레지스트리를 포함하므로, 결과 절대 사전 상태 해시는 표준 해시와 다릅니다. 체인의 분쟁 게임(dispute game)에 참여하는 모든 정직한 challenger는 이와 동일한 바이너리를 실행해야 합니다.
사용자 지정 사전 상태 생성하기
1
kona-node 릴리스 태그 체크아웃
체인의 node가 실행 중인 것과 동일한
kona-node/v<VERSION> 태그를 사용하십시오. 아래에 설명된 네이티브 KONA_CUSTOM_CONFIGS_DIR 지원에는 kona-node/v1.5.2 이상이 필요합니다. 이전 태그에서는 추가 justfile 패치가 필요합니다.2
체인 구성 준비
사용자 지정 구성을 위한 디렉터리를 생성합니다.그 안에 체인의 기존 아티팩트에서 값을 가져오십시오.
chainList.json(경량 체인 항목)과 configs.json(전체 rollup 구성) 두 파일을 추가합니다. 모든 <PLACEHOLDER>를 체인의 값으로 바꾸십시오. 참고 사항:<CHAIN_GROUP>: L1이 Ethereum mainnet이면mainnet, L1이 Sepolia이면sepolia입니다. 버킷은 거버넌스가 아니라 L1 네트워크를 기준으로 체인을 그룹화합니다. 사용자 지정 체인 상태는governedByOptimism: false와superchainLevel: 0으로 표현됩니다.faultProofs.status:cannon-kona게임 유형을 공개적으로 실행하는 체인은permissionless, 허용 목록에 있는 challenger만 허용하는 체인은permissioned입니다.
- chainList.json
- configs.json
genesis.*,block_time,seq_window_size,max_sequencer_drift,batch_inbox_address, 하드포크 타임스탬프 → 체인의rollup.jsonAddresses.*→op-deployer상태(opChainDeployments[<i>])Roles.*→op-deployer상태의 체인별roles블록
cast call) 교차 확인하십시오.3
절대 사전 상태 생성
모노레포 루트에서 출력된 해시가 체인의 사용자 지정 kona 절대 사전 상태입니다. 빌드는 또한
KONA_CUSTOM_CONFIGS_DIR이 2단계에서 생성한 디렉터리를 가리키도록 설정한 다음, 정식 빌드를 실행합니다.rust/kona/prestate-artifacts-cannon/0x<hash>.bin.gz에 해시 이름의 gzip 압축 바이너리를 기록합니다. 이 파일이 분쟁 시점에 op-challenger가 가져와야 하는 파일입니다.4
사전 상태에 체인이 포함되었는지 확인
체인 병합에 조용히 실패한 사용자 지정 구성 빌드는 표준 사전 상태 해시를 생성하며, 이를 가리키는
op-challenger는 체인의 게임과 절대 일치하지 않습니다. 체인이 실제로 포함되었는지 항상 확인하십시오.chainList.json의 각 체인마다 grep을 한 번씩 실행하고 모든 체인에 대해 하나 이상 일치하는지 확인하십시오. 체인 A는 포함하지만 체인 B는 누락한 빌드도 유효해 보이는 해시를 생성합니다. 일치하는 항목이 없다면 빌드 셸에 KONA_CUSTOM_CONFIGS=true가 설정되지 않았거나 KONA_CUSTOM_CONFIGS_DIR이 상대 경로였다는 의미입니다.5
재현 가능성 확인
동일한 태그를 새로 체크아웃하고 동일한 사용자 지정 구성 파일을 배치한 상태에서 빌드를 반복하여 해시가 비트 단위로 동일한지 확인하십시오. 체인에서 정직한 challenger로 참여하려는 사람은 누구나 동일한 입력으로부터 이 해시를 재현할 수 있어야 합니다.
사용자 지정 사전 상태로 배포 및 구성하기
1
사전 상태 바이너리 호스팅
op-challenger용 프리이미지 파일을 제공하는 위치(일반적으로 GCS 버킷 또는 HTTP 엔드포인트)에 0x<hash>.bin.gz를 업로드합니다. challenger가 필요할 때 파일을 찾을 수 있도록 파일 이름은 절대 사전 상태 해시로 지정해야 합니다.2
사용자 지정 사전 상태를 게임 유형 8로 등록
현재(v2.4+) 분쟁 게임 컨트랙트에서 절대 사전 상태는 생성자 인자가 아닙니다. 이 값은 기존에 등록된 게임 유형의 그런 다음 Guardian 역할로 게임 유형 8을 respected 유형으로 지정합니다. 전체 역할/트랜잭션 안내는 무허가형 결함 증명으로 마이그레이션하기를 참조하십시오. (
DisputeGameFactory의 게임 유형별 gameArgs에 저장되며, clones-with-immutable-args를 통해 각 게임에 추가됩니다. 따라서 새 사전 상태를 위해 새 구현을 배포할 필요가 없습니다. 기존 무허가형 FaultDisputeGame 구현을 재사용하고(새로운 op-deployer 체인은 이를 배포하지만 등록하지 않은 상태로 둡니다), 사전 상태를 담은 gameArgs와 함께 게임 유형 8로 등록하십시오.무허가형 게임의 gameArgs는 packed 인코딩(124바이트)입니다.vm / anchorStateRegistry / weth / l2ChainId를 재사용하고(예: gameArgs(1)을 읽고 사전 상태만 교체), DisputeGameFactory 소유자 계정으로 등록합니다.respectedGameType은 OptimismPortal이 아니라 AnchorStateRegistry에 있습니다(portal은 이를 프록시합니다).absolutePrestate가 생성자 immutable이었던 v2.4 이전의 구버전 컨트랙트에서는 사전 상태마다 새 구현을 배포해야 했습니다.)3
op-challenger 구성
기존 challenger 구성에 kona 전용 환경 변수를 추가합니다.challenger는 각 분쟁에 맞는 바이너리를 찾기 위해
*_PRESTATES_URL에 /0x<hash>.bin.gz를 덧붙입니다. 기존 OP_CHALLENGER_ROLLUP_CONFIG, OP_CHALLENGER_L2_GENESIS, OP_CHALLENGER_GAME_FACTORY_ADDRESS는 변경 없이 그대로 적용됩니다.다음 단계
- Upgrade 19 공지 —
cannon-kona게임 유형 승격과 표준 사전 상태를 위한 참조 빌드 명령. - 절대 사전 상태 및 프리이미지 파일 생성하기: Superchain Registry에 포함된 체인을 위한 표준
kona-client사전 상태 흐름. - op-program 절대 사전 상태 생성하기(보관됨): 레거시
op-program흐름으로, Upgrade 19 이전에 생성되어 진행 중인CANNON(게임 유형0) 분쟁을 해결하기 위해서만 유지됩니다.op-program은 지원이 종료되었습니다. op-geth 및 op-program 지원 종료를 참조하십시오.