OP Stack 상호운용성(interop)은 Lagoon 하드포크와 함께 활성화됩니다.
contest UI가 사용자에게 표시되는 방식은 프런트엔드 문서를 참조하십시오.
작동 방식
참여하는 모든 체인에 배포되는 TicTacToe와 달리, contest는 단일 L2에 배포되며 수평 확장된 앱이 아니라 애플리케이션 전용 OP Stack 체인처럼 동작합니다.1
contest 구현하기
Contests.sol에는 contest의 구현이 포함되어 있습니다. 여기서는 구현의 세부 사항을 다루지 않고, contest가 크로스체인 이벤트 읽기를 활용하여 OP Stack 체인의 다른 컨트랙트와 조합되는 방식에 초점을 맞춥니다.
2
크로스체인 이벤트 읽기
검증된 크로스체인 이벤트를 가져올 수 있게 해 주는 시스템 predeploy는 CrossL2Inbox입니다.
3
contest 생성하기
두 가지 contest 옵션은 아래에 자세히 설명되어 있습니다. BlockHash contest와 TicTacToe contest입니다.이 emitter를 contest에 통합하는 것은 매우 간단합니다.
BlockHash contest
블록의 blockhash와 높이를 발생시키는 이벤트가 있으면, blockhash의 홀짝 여부에 대한 contest를 만들 수 있습니다.BlockHashContestFactory는 지정된 체인과 블록 높이에 대해 새 contest를 생성하는 간단한 팩토리입니다.TicTacToe contest
TicTacToe용 contest는 두 플레이어 간에 수락된 게임에 대해 생성되며, 이는 발생한AcceptedGame 이벤트로 포착됩니다. 이벤트를 디코딩할 때 게임은 생성된 체인인 chainId와 연결된 gameId로 고유하게 식별됩니다. 게임의 이러한 식별 속성은 게임의 resolver를 생성하는 데 사용됩니다.4
contest 결과 확정하기
contest는
IContestResolver 인스턴스로 식별되며, 이 인스턴스가 결과를 결정합니다. resolver는 UNDECIDED 상태로 시작하며, contest와 함께 스스로 결과를 확정할 때
YES 또는 NO로 업데이트됩니다.BlockHash contest 결과 확정하기
contest가 진행 중일 때 누구나 배포된 resolver에 올바른BlockHash 이벤트를 제공하기만 하면 BlockHash contest의 결과를 확정할 수 있습니다.TicTacToe contest 결과 확정하기
contest가 진행 중일 때 누구나 TicTacToe 컨트랙트에서 연결된 게임의GameWon 또는 GameDraw 이벤트를 제공하여 TicTacToe contest의 결과를 확정할 수 있습니다.핵심 정리
- Superchain 상호운용성을 활용하면 Superchain의 컨트랙트는 단일 체인에서와 유사한 방식으로 서로 조합될 수 있습니다. 컨트랙트가
CrossL2Inbox를 통해 소비할 수 있는 이벤트의 종류에는 제한이 없습니다. - 이 예제에서
BlockHashContestFactory와TicTacToeContestFactory는Contests앱 체인의 시작점에 불과합니다. Superchain에 더 많은 컨트랙트와 앱이 생성됨에 따라, 개발자는Contests컨트랙트를 전혀 변경하지 않고도 유사한 방식으로 이들과 조합할 수 있습니다.