Optimism Governance가 승인한 결함 증명 컨트랙트의 소스 코드는 여기에서 확인할 수 있습니다(
op-contracts/v1.5.0 기준).OptimismPortal이 허가형(permissioned) L2OutputOracle 대신 DisputeGameFactory를 참조하도록 수정된 것입니다.
DisputeGameFactory컨트랙트는FaultDisputeGame컨트랙트 인스턴스를 생성하며, 각 인스턴스는 특정 블록 번호에서의 OP Stack 체인 상태에 관한 제안의 호스트 역할을 합니다.L2OutputOracle과 달리DisputeGameFactory컨트랙트는 사용자가 허가 없이 “결함 분쟁 게임(fault dispute game)“을 진행할 수 있는 기능을 제공하며, 이 게임에서 제안의 정확성은 프로그래밍 방식으로 결정됩니다.
보안 모델
결함 증명은 여러 새로운 컴포넌트를 도입하는 대규모 컨트랙트 업그레이드입니다. 이러한 새로운 컴포넌트의 상대적인 복잡성을 고려하여, FPM의 보안 접근 방식은 잠재적인 버그의 영향 범위를 쉽게 감사할 수 있는 매우 특정한 컨트랙트와 대체(fallback) 메커니즘으로 제한하는 것이었습니다.유효하지 않은 게임 결과 처리
마련된 모든 보안 메커니즘은 일반적으로FaultDisputeGame 컨트랙트가 유효하지 않은 게임 결과를 잘못 최종 확정할 가능성을 중심으로 합니다.
이에는 두 가지 변형이 있습니다.
- 유효하지 않은 제안을 유효한 것으로 해결하여 잠재적으로 자금 도난으로 이어지는 경우
- 유효한 제안을 유효하지 않은 것으로 해결하여 활성성(liveness) 지연 또는 장애를 일으키는 경우
Guardian이 개입하지 않는 한). 잠재적 영향은 OptimismPortal 및 FaultDisputeGame 컨트랙트 내에 여러 안전장치를 도입하여 관리됩니다.
OptimismPortal 내 안전장치
OptimismPortal 컨트랙트에는 Guardian과 SystemOwner 역할이 협력하여 유효하지 않은 제안이 출금에 영향을 미치지 않도록 방지할 수 있는 다양한 보안 메커니즘이 포함되어 있습니다.
SystemOwner는Guardian주소를 교체할 수 있습니다.Guardian은 기존 시스템에 있던 전역 일시 중지 메커니즘을 트리거할 수 있습니다.Guardian은 잘못 해결된 특정FaultDisputeGame컨트랙트를 “블랙리스트”에 등록할 수 있습니다.Guardian은FaultDisputeGame컨트랙트의 한 클래스 전체에 치명적인 버그가 발견된 경우FaultDisputeGame컨트랙트의 respected type을 변경할 수 있습니다. 원하는 경우Guardian은 특정 역할만 제안을 제출하고 이의를 제기할 수 있도록 허용하는PermissionedDisputeGame컨트랙트로 되돌리는 것을 선택할 수도 있습니다.
FaultDisputeGame 내 안전장치
FaultDisputeGame 컨트랙트는 SystemOwner가 관리하는 DelayedWETH 컨트랙트 내에 bond를 저장합니다. DelayedWETH 컨트랙트에서의 출금은 지연되므로, bond가 잘못 분배되는 상황에서 SystemOwner가 수동으로 복구할 수 있습니다. 이 지연은 SystemOwner 또는 Guardian이 잠재적인 보안 문제에 대응할 충분한 시간을 갖도록 OP Mainnet에서 7일로 설정되어 있습니다.
DelayedWETH 내 안전장치
SystemOwner는Guardian주소를 교체할 수 있습니다.SystemOwner는 특정DisputeGame컨트랙트의 자금을 보류할 수 있습니다.- 문제가 너무 많은
DisputeGame컨트랙트로 확대되어 특정 컨트랙트의 자금을 보류하는 것이 실행 불가능한 경우,SystemOwner는DelayedWETH컨트랙트에서 자금을 인출할 수 있습니다. Guardian은 전역 일시 중지 메커니즘을 트리거하여 WETH 출금을 중단할 수 있습니다.
누적 보안 영향
기존 시스템과 마찬가지로, 이러한 보안 기능의 누적 효과로Guardian 역할은 신속한 대응 기능을 제공하며, SystemOwner는 자금 손실로 이어질 수 있는 모든 유형의 버그를 해결하기 위해 언제든지 개입할 수 있습니다.
결함 증명 도입으로 보안 모델에서 가장 중요한 변경 사항은 SystemOwner가 보다 수동적인 역할을 맡을 수 있다는 점입니다. 유효하지 않은 제안은 일반적으로 결함 증명 시스템에서 거부되며, Guardian은 결함 증명 게임에 장애가 발생한 경우에만 안전장치 역할을 할 수 있습니다.