ZooBC 위키
앱과 ZooBC 위에서의 개발

채널 앱

체인 위에서는 게임의 모든 수가 트랜잭션 하나의 비용과 블록을 기다리는 시간을 치릅니다. 채널 앱은 두 플레이어를 위해 그 비용을 없앱니다. 두 사람은 체인에서 판돈을 내고, 서명된 수를 서로 직접 주고받은 뒤, 마지막에 정산 하나를 체인에 올립니다. 그러면 모든 노드가 온체인 플레이를 판정하는 것과 같은 규칙 엔진으로 서명된 수들을 재생합니다.

채널 열기

채널 게임은 channel 플래그를 1로 설정한 CreateApp으로 만듭니다. 좌석은 정확히 두 개여야 하며, 두 판돈은 평소처럼 체인에서 냅니다. 그 뒤로 수는 체인 밖으로 오갑니다. 채널 게임에 대해 보낸 AppMove, ResignApp, ClaimAppTimeout은 수수료를 내는 무동작입니다.

서명된 수

각 수는 그 수를 두는 좌석이 다음 다이제스트에 서명한 것입니다.

SHA3-256(app id (LE8) ‖ seq (LE4) ‖ SHA3-256(state before) ‖ move)

서명은 그 플레이어의 계정 유형에 따라 검사합니다(키와 계정 유형). 다이제스트가 앱 id, 수의 순번, 수를 두기 전의 상태를 포함하므로, 서명된 수를 다른 게임이나 다른 국면에서 다시 쓸 수 없습니다. 공식 지갑에서는 서명된 수가 통화를 전달하는 것과 같은 서비스인 릴레이를 통해 두 플레이어 사이를 오갑니다(릴레이).

정산하기

어느 플레이어든 SettleApp(유형 39)을 제출할 수 있습니다. 그 본문에는 앱 id와, 서명된 수의 개수와 같아야 하는 final_seq가 들어가고, 그 뒤에 각 서명된 수가 이어집니다. 좌석, 수의 길이, 수, 64바이트 서명입니다. 정산 하나는 최대 1,024개의 서명된 수를 담습니다.

모든 노드는 게임의 상태부터 같은 엔진으로 서명된 수들을 재생하며, 모든 서명과 모든 차례를 검사하고 결과를 기록합니다. 해석할 수 없거나, 잘못된 앱을 지정했거나, 착석하지 않은 사람이 보냈거나, 잘못된 서명된 수를 담아 실패한 SettleApp은 무료 무동작입니다. 아무것도 부과되지 않습니다. 착석한 두 플레이어만 이를 제출할 수 있습니다.

서명된 수들이 SettleApp 하나에 들어가고, 모든 노드가 이를 재생합니다. 더 긴 서명된 연속이 240블록 안에 청구를 덮어쓸 수 있습니다.
서명된 수들이 SettleApp 하나에 들어가고, 모든 노드가 이를 재생합니다. 더 긴 서명된 연속이 240블록 안에 청구를 덮어쓸 수 있습니다.

이의 제기 기간

정산은 청구이며, 240블록 뒤의 기한과 함께 기록됩니다. 그 기간 동안 어느 플레이어든 final_seq가 더 높은, 즉 더 긴 유효한 수의 연속을 담은 SettleApp을 제출할 수 있습니다. 받아들여진 덮어쓰기는 각각 기존 청구를 대체하고 240블록을 다시 시작합니다. 기간이 끝나면 마지막 청구가 적용됩니다.

  • 게임에서 누가 이겼다면: 승자가 1 % 레이크를 뺀 팟을 받습니다.
  • 게임이 무승부였다면: 두 판돈이 환불됩니다.
  • 게임이 아직 진행 중이었다면: 차례였던 좌석이 기권 처리되고, 레이크를 뺀 팟은 상대 플레이어에게 갑니다.
밥이 아무것도 하지 않으면 기권 처리됩니다. 제때 더 긴 연속을 제출하면 기간이 다시 시작되고, 재생한 결과가 적용됩니다.
밥이 아무것도 하지 않으면 기권 처리됩니다. 제때 더 긴 연속을 제출하면 기간이 다시 시작되고, 재생한 결과가 적용됩니다.

안전하게 플레이하기

  • 받은 모든 서명된 수를 보관하십시오. 가장 최근의 서명된 국면은 일찍 멈춘 정산에 맞서는 보호 수단입니다.
  • 자기 게임의 정산이 체인에 올라오는지 지켜보십시오. 240블록 안에 아무도 응답하지 않은 청구는 그대로 유지됩니다.
  • 프라이버시도 할인도 기대하지 마십시오. 채널은 정확히 두 좌석을 위한 것이고, 정산되면 결과는 공개되며, 승부가 난 게임은 온체인 플레이와 같은 1 % 레이크를 냅니다.

같이 보기