규범적 명세(Normative spec): OP Stack 컨트랙트 계층은(는) Optimism 개요 사양에 규범적으로 정의되어 있습니다. 이 페이지는 컨트랙트와 그 연결 방식에 대한 안내입니다. 각 컨트랙트의 동작과 인터페이스는 해당 사양 섹션과 소스 코드에서 정의됩니다.
- 동작은 OP Stack 사양에 정의되어 있습니다.
- 소스 코드는 모노레포의
packages/contracts-bedrock에 있으며, 생성된 인터페이스 문서는 devdocs.optimism.io에서 볼 수 있습니다. - 배포된 주소는 superchain-registry를 기반으로 하는 OP Mainnet 주소 페이지에 있습니다.
Layer 1 컨트랙트
L1 컨트랙트는 체인의 bridge 유동성을 보관하고, 입금(디파짓)을 받고, 출금을 검증하고, 체인의 구성을 저장하며, 결함 증명(fault proof) 시스템을 통해 output 제안을 판정합니다. Optimism 개요 사양에는 이들이 어떻게 연결되는지 보여 주는 아키텍처 다이어그램이 포함되어 있습니다.Bridging 및 메시징
입금은 계층화된 스택을 통해 체인으로 들어오고 출금은 이를 통해 체인을 떠납니다.OptimismPortal은 저수준 입금 및 출금 컨트랙트이고,
L1CrossDomainMessenger는 그 위에 재실행 가능한(replayable) 메시지 전달을 추가하며,
토큰 bridge는 messenger 위에 놓입니다. OptimismPortal로 직접 보낸 메시지는
재실행할 수 없으므로, 사용자와 앱 개발자는 messenger 또는 bridge 인터페이스를
사용하는 것이 좋습니다.
Standard bridge는 모든 ERC-20 변형을 지원하도록 설계되지 않았습니다. 전송
수수료, 리베이스 로직, 차단 목록이 있는 토큰은 올바르게 작동하지 않을 수 있습니다.
안내는 Standard Bridge를
참고하십시오.
체인 구성
제안 및 결함 증명
L2 상태에 대한 주장은 신뢰 기반 output 제출이 아니라 분쟁 게임을 통해 누구나(permissionless) 제안하고 이의를 제기할 수 있습니다. 시스템이 처음부터 끝까지 어떻게 작동하는지는 결함 증명 설명을 참고하십시오.레거시 및 지원 중단된 컨트랙트
AddressManager는 Bedrock 이전 시스템의 레거시 이름-주소 레지스트리입니다.L1CrossDomainMessenger가 여전히 이를 통해 주소를 확인하는 레거시ResolvedDelegateProxy뒤에 있기 때문에 남아 있을 뿐입니다.L2OutputOracle은 결함 증명 이전의 신뢰 기반 output 제안 컨트랙트였습니다. 이 컨트랙트는 지원 중단(deprecated)되었으며, L2 output root 제안 사양에 따라 output 제안은 대신DisputeGameFactory를 통해 이루어집니다.ProtocolVersions는 노드 운영자에게 권장 및 필수 프로토콜 버전을 알렸습니다. 이 컨트랙트는 OP Stack 컨트랙트에서 제거되었으며, 이 컨트랙트가 제공하던 버전 관리 체계는 Superchain 업그레이드 사양에 계속 문서화되어 있습니다.
컨트랙트 업그레이드
L1 컨트랙트는 L1 컨트랙트를 버전이 지정된 세트로 배포하고 업그레이드하는 OP Contracts Manager (OPCM)을 통해 업그레이드됩니다. superchain-ops 워크플로는 내부적으로 OPCM을 구동하며, Security Council 서명이 필요한 체인을 위한 경로입니다. 다른 체인은 OPCM을 직접 호출할 수 있습니다.op-deployer는
초기 배포를 위한 도구로 계속 사용되지만, 그 업그레이드 명령은 OPCM으로 대체되어
지원 중단되었습니다. 자세한 내용은
지원 중단 공지를 참고하십시오.
L2 predeploy는 Upgrade 19에서 도입된
L2 Contract Manager (L2CM)를 통해 업그레이드됩니다. 네트워크 업그레이드 시
합의 계층(consensus layer)은 L2 ProxyAdmin이 L2ContractsManager 컨트랙트를
delegatecall하도록 하는 네트워크 업그레이드 트랜잭션을 생성합니다. 이 컨트랙트는
모든 predeploy 구현을 하나의 원자적 트랜잭션으로 업데이트하며, 컨트랙트별
멀티시그 트랜잭션을 사용하던 이전 방식을 대체합니다.
L2 Contract Manager 기능 페이지와
L2 업그레이드 사양을
참고하십시오.
컨트랙트 릴리스
컨트랙트는 문서화된 버전 관리 정책에 따라op-contracts/vX.Y.Z라는 이름의 태그가 지정된 모노레포 릴리스로 배포됩니다.
이 페이지는 릴리스를 추적하지 않으므로 다음 자료를 대신 사용하십시오.
- op-contracts 릴리스 기록은 GitHub 릴리스에서 생성된 모든 릴리스와 그 노트를 나열합니다.
- superchain-registry 표준 버전 파일은 각 표준 릴리스를 구성하는 정확한 컨트랙트 버전과 구현 주소를 기록합니다.
- 네트워크 업그레이드 레지스트리는 각 하드포크를 해당 거버넌스 승인 및 필수 구성 요소 버전과 연결합니다.
Layer 2 컨트랙트 (predeploy)
Predeploy는 모든 OP Stack 체인의 제네시스 상태에서 고정되고 잘 알려진 주소에 배치된 컨트랙트입니다. precompile과 달리 일반적인 EVM 컨트랙트이므로 클라이언트 구현 간에 이식성이 유지되고 표준 도구에서도 확인할 수 있습니다. 대부분은0x4200000000000000000000000000000000000xxx 주소 네임스페이스에 있으며
L2 ProxyAdmin이 소유한 프록시 뒤에 있습니다.
Predeploys 사양은
정식 목록입니다. 이 사양은 predeploy 주소의 전체 표, 각 predeploy가 도입된
업그레이드, 지원 중단 상태, 프록시 사용 여부와 함께 각 컨트랙트의 규범적
정의를 관리합니다.
Bridging predeploy
L2 측은 L1 bridging 스택을 그대로 반영합니다.L2CrossDomainMessenger는
권장되는 고수준 메시징 인터페이스이고,
L2ToL1MessagePasser는
나중에 L1에서 포함 여부가 증명되는 출금 메시지를 기록하며,
L2StandardBridge와
L2ERC721Bridge는 L1 대응 컨트랙트와 짝을 이룹니다.
OptimismMintableERC20Factory와
OptimismMintableERC721Factory는 bridge가 발행하고 소각하는 L2 토큰 컨트랙트를
누구나(permissionless) 생성할 수 있게 합니다.
원래 OP Stack 체인에 배포된 ERC-721은 ERC-721 bridge를 통해 bridging하지
마십시오. 이 bridge는 원래 L1에 배포된 NFT만 지원합니다.
수수료 및 시스템 predeploy
GasPriceOracle은 트랜잭션 수수료 중 데이터 가용성 부분을 추정하기 위한 파라미터와 헬퍼 함수를 제공합니다. 정확한 수수료 공식은 업그레이드마다 바뀌며 여기가 아니라 사양에 정의되어 있습니다. 설명은 트랜잭션 수수료를 참고하십시오.L1Blockpredeploy는 프로토콜이 시스템 입금 트랜잭션을 통해 기록하는, 최신으로 알려진 L1 블록에 대한 정보를 제공합니다.- 수수료 볼트(
SequencerFeeVault,BaseFeeVault,L1FeeVault, 그리고 Isthmus 업그레이드 이후의OperatorFeeVault)는 트랜잭션 수수료의 구성 요소를 수집하여 설정된 수령인에게 출금할 수 있게 합니다. 운영 관련 세부 사항은 수수료 볼트를 참고하십시오. ProxyAdmin은 다른 predeploy의 프록시를 소유하고 그 업그레이드를 제어합니다.BeaconBlockRoot컨트랙트(EIP-4788)는 L1 beacon block root를 제공하며, Ecotone 업그레이드 이후 사용할 수 있습니다.WETH9는 결정론적 주소에 있는 표준 Wrapped Ether 컨트랙트입니다.
GovernanceToken
GovernanceToken은
Optimism 거버넌스에서 사용되는 OP 토큰으로, 투표와 위임을 지원합니다. 이 토큰은
토큰 인플레이션 일정을 강제하는 MintManager 컨트랙트가 소유합니다. 토큰의
사용 방식은 거버넌스 자료를 참고하십시오.
EAS (Ethereum Attestation Service)
EAS와
SchemaRegistry
predeploy는 온체인 증명(attestation)을 발급하고 관리하기 위한 오픈 소스 공공재인
Ethereum Attestation Service 프로토콜을 구현합니다.
EAS는 EAS Scan UI,
EAS SDK 또는
온체인에서 직접
상호 작용할 수 있으며, 증명은
EAS API 또는
오픈 소스 인덱서로
인덱싱할 수 있습니다.
지원 중단된 predeploy
LegacyMessagePasser, DeployerWhitelist, LegacyERC20ETH,
L1BlockNumber 컨트랙트는 Bedrock 이전 시스템과의 하위 호환성을 위해 상태에
남아 있지만, 지원 중단되었으며 사용되지 않습니다. 이들의 주소와 기록은
Predeploys 사양에 있습니다.
다음 단계
- 이 컨트랙트들을 연결하는 아키텍처 다이어그램은 Optimism 개요 사양을 읽어 보십시오.
- 컨트랙트 소스와 생성된 컨트랙트 레퍼런스를 살펴보십시오.
- OP Mainnet의 컨트랙트 주소를 확인하십시오.
- 결함 증명 시스템이 분쟁 컨트랙트를 사용하는 방식을 알아보십시오.
- 릴리스, 배포 도구, 소스 링크는 op-contracts 허브를 참고하십시오.