메인 콘텐츠로 건너뛰기
이 가이드는 Custom Gas Token(CGT) 체인을 배포하려는 체인 운영자를 위한 안내서입니다. 이 OP Stack 기능에 대한 전반적인 이해는 Custom Gas Token 개요를 참고하십시오. Custom Gas Token 체인을 사용하면 ETH 대신 어떤 자산이든 네이티브 수수료 통화로 사용할 수 있습니다. 이 자산은 기존 L1 토큰, 다른 체인의 토큰을 표현한 것, 또는 genesis 시점에 생성된 새로 정의된 자산(또는 새 L2 토큰)일 수 있습니다.
Custom Gas Token v2는 레거시 CGT 체인과 호환되지 않는 새로운 구현입니다. 현재 레거시 CGT에서 CGT v2로의 마이그레이션 경로는 없으며, 향후 마련될 예정입니다.

사전 요구 사항

CGT 체인을 배포하기 전에 다음을 갖추었는지 확인하십시오.
  • OP Deployer 설치: 설정 방법은 op-deployer 설치를 참고하십시오
  • L1 RPC 엔드포인트: 배포를 위한 Ethereum L1 node 접근
  • 자금이 충전된 배포자 계정: 배포 중 L1 gas 비용을 위한 ETH
  • 토큰 설계: 네이티브 자산에 대한 명확한 계획(공급량, 분배, 브리징 메커니즘)
  • 보안 감사: 배포하려는 모든 승인된 minter 또는 bridge 컨트랙트에 대한 철저한 검토

배포 단계

CGT 체인 배포는 표준 OP Stack 배포 절차를 따르며, Custom Gas Token 관련 파라미터에 대한 추가 구성이 필요합니다.
1

intent 파일 초기화

OP Deployer의 init 명령을 사용하여 새 intent 파일을 생성합니다.
이 명령은 intent.toml 파일을 생성합니다.
2

Custom Gas Token 파라미터 구성

intent.toml 파일을 열고 Custom Gas Token 구성을 추가합니다. 아래는 CGT 관련 필드가 포함된 예시입니다.

주요 CGT 구성 필드

수수료 파라미터 계산은 매우 중요합니다: minBaseFee와 operatorFee는 커스텀 토큰으로 표시된 L1 gas 비용과 DA 수수료를 정확하게 반영해야 합니다. 너무 낮게 설정하면 체인이 운영 비용을 충당하지 못할 수 있습니다. 너무 높게 설정하면 사용자가 과도한 수수료를 지불하게 됩니다.
소수점 지원: CGT v2는 현재 소수점 18자리 토큰만 지원합니다. 다른 소수점 자릿수에 대한 지원은 향후 릴리스에서 추가될 수 있습니다.
3

L1 컨트랙트 배포

OP Deployer의 apply 명령을 사용하여 L1 컨트랙트를 배포합니다.
이 명령은 isCustomGasToken 플래그가 활성화된 SystemConfig를 포함하여 필요한 모든 L1 컨트랙트를 배포하며, 이 플래그는 L1 컨트랙트가 ETH 값을 포함한 트랜잭션을 거부하도록 지시합니다.
배포 과정에서 genesis 초기화 시 CGT 전용 predeploy(NativeAssetLiquidity 및 LiquidityController)가 자동으로 배포됩니다.
4

(선택 사항) L1 컨트랙트 검증

선택적으로 OP Deployer의 verify 명령을 사용하여 Blockscout 또는 Etherscan에서 L1 컨트랙트를 검증할 수 있습니다.
5

CGT 구성으로 genesis 파일 생성

L1 배포가 완료되면 OP Deployer의 apply 명령으로 L2 genesis를 초기화합니다.
genesis 구성은 intent.toml을 기반으로 적용됩니다.
6

체인 서비스 시작

OP Stack 서비스를 시작하여 CGT 체인의 시퀀싱을 시작합니다.
  • Sequencer 실행 클라이언트
  • Sequencer 합의 클라이언트
  • Batcher
  • Proposer
  • Challenger
7

검증 및 테스트

서비스를 공개하기 전에 CGT 체인을 철저히 테스트하십시오. 다음은 확인해야 할 주요 영역입니다.플래그 일치 여부 확인
  • L1 SystemConfig.isCustomGasToken()이 true를 반환하는지 확인
  • L2 L1Block.isCustomGasToken()이 true를 반환하는지 확인
  • 두 플래그가 일치하는지 확인
네이티브 자산 동작 테스트
  • 승인된 minter를 통한 네이티브 자산 발행 테스트
  • 네이티브 자산 소각 테스트
  • 네이티브 토큰으로 수수료 지불 테스트
  • fee vault 누적 확인
ETH 거부 테스트
  • OptimismPortal을 통한 ETH 입금 시도(실패해야 함)
  • L2ToL1MessagePasser를 통한 ETH 출금 시도(실패해야 함)
  • ETH 동작이 올바르게 차단되는지 확인
bridge 기능 테스트
  • 입금 테스트(L1 → L2 네이티브 자산 발행)
  • 출금 테스트(L2 네이티브 → L1 토큰)
  • 유동성 컨트랙트에서 잠금/잠금 해제가 올바르게 이루어지는지 확인

배포 후 고려 사항

공급량 관리

배포 후 다음 작업을 수행할 수 있습니다.
  • 초과 유동성 출금: genesis에서 필요 이상의 공급량이 생성된 경우, L2ToL1MessagePasser를 통해 출금하고 소각합니다
  • 새 minter 추가: 생태계가 성장함에 따라 네이티브 자산을 발행할 수 있는 추가 컨트랙트를 승인합니다
  • minter 권한 취소: 손상되었거나 더 이상 사용되지 않는 컨트랙트의 권한을 제거합니다
  • 속도 제한 구현: 발행 속도를 제어하기 위한 안전장치를 추가합니다

수수료 파라미터 조정

체인의 운영 비용을 모니터링하고 필요에 따라 수수료 파라미터를 조정하십시오.
  • minBaseFee: L1 gas 비용과 토큰 가치에 따라 SystemConfig.setMinBaseFee()를 사용하여 조정합니다
  • operatorFee: 데이터 가용성 비용에 따라 SystemConfig.setOperatorFeeScalars()를 사용하여 조정합니다

개발자 문서

사용자를 위해 다음 내용을 다루는 명확한 문서를 작성하십시오.
  • 네이티브 자산을 획득하는 방법(bridge, DEX, faucet 등)
  • bridge 컨트랙트 주소와 인터페이스
  • 수수료 구조와 토큰 이코노믹스
  • 지갑 구성(RPC 엔드포인트, chain ID, 토큰 메타데이터)

문제 해결

플래그 불일치 오류

증상: “custom gas token mismatch” 오류와 함께 트랜잭션이 실패합니다 해결 방법: L1의 SystemConfig.isCustomGasToken()과 L2의 L1Block.isCustomGasToken()이 동일한 값을 반환하는지 확인하십시오. 일치하지 않으면 심각한 구성 오류가 있음을 의미합니다.

수수료 파라미터 문제

증상: 체인 운영자가 트랜잭션 비용에서 손실을 보거나, 사용자가 과도한 수수료에 대해 불만을 제기합니다 해결 방법: 다음을 기준으로 minBaseFee와 operatorFee 파라미터를 검토하고 다시 계산하십시오.
  • 현재 L1 gas 가격
  • 토큰의 시장 가치 또는 페그
  • 데이터 가용성 비용
  • 사용자를 위한 목표 수수료 구조

유동성 고갈

증상: 유동성 부족으로 발행 트랜잭션이 실패합니다 해결 방법:
  • NativeAssetLiquidity 잔액을 확인하십시오
  • 고갈된 경우 발행과 소각 사이에 불균형이 있음을 의미합니다
  • bridge 로직을 검토하여 소각이 올바르게 이루어지고 있는지 확인하십시오
  • 향후 배포에서는 초기 유동성 공급량을 늘리는 것을 고려하십시오

승인되지 않은 발행 시도

증상: 승인되지 않은 주소가 네이티브 자산 발행을 시도합니다 해결 방법:
  • LiquidityController의 접근 제어 구성을 검토하십시오
  • 감사를 거쳐 안전하게 보호된 컨트랙트만 승인되었는지 확인하십시오
  • 아직 적용되지 않았다면 속도 제한을 구현하십시오
  • 추가 안전장치와 함께 권한을 취소하고 다시 승인하는 것을 고려하십시오

참고 자료