Fair Poker Verification Guide

复现公平验证教程

本页说明如何从牌桌下载 transcript,并用公开源码中的 verifier 在本地复验牌局记录。

Release Facts

Official domain
https://fairpoker.app
GitHub
https://github.com/Realfairpoker/fairpoker-core-audit
Game client CID
bafybeihwpu3ajtggckcxmhals75ei7c3lrlblwsv7pghpktw3mpb2aryuq
Source package CID
bafkreicsvooemdq4odstyykyhykms662gwhcg5kpkjsn7lo4klnuprmtpa
Source fingerprint
sha256:761332c3107beaa960f020a965baff1a7e4bfad5cdc40e7307324e26eedebfec
Archive SHA256
sha256:52ab9c460e1c70e53c61583e14c97bda358e23754f5264dfaddc52db47c59378

中文

一、确认线上前端与公开核心代码对应

  1. 先确认你进入的牌局客户端 CID 是本页公布的 Game client CID。通过 `ipfs.io`、`dweb.link` 等不同网关打开同一 CID,应得到同一份前端文件。
  2. 下载核心源码审计包,并校验压缩包 SHA256 是否等于本页公布的 Archive SHA256。
  3. 解压源码包后重新生成源码指纹,确认输出的 Source fingerprint 与本页公布值一致。
curl -L -o fair-poker-source.tar.gz \
  https://ipfs.io/ipfs/bafkreicsvooemdq4odstyykyhykms662gwhcg5kpkjsn7lo4klnuprmtpa

shasum -a 256 fair-poker-source.tar.gz
# 应等于 52ab9c460e1c70e53c61583e14c97bda358e23754f5264dfaddc52db47c59378

mkdir fair-poker-source
tar -xzf fair-poker-source.tar.gz -C fair-poker-source --strip-components=1
cd fair-poker-source
npm ci
npm run generate:release-metadata
grep sourceFingerprint src/generated/releaseMetadata.ts

如果源码包 SHA256 和 Source fingerprint 都一致,说明公开的核心发牌、洗牌、加密、解密、签名、transcript 与 verifier 代码没有被替换。

二、复验一局牌

  1. 在牌桌左上角打开「安全牌局」面板。
  2. 点击「下载」保存本局 transcript JSON 文件。
  3. 打开 GitHub 开源证据库,或下载核心源码审计包。
  4. 在源码目录安装依赖并运行 verifier。
npm ci
npm run verify:transcript -- /path/to/transcript.json

如果输出为通过,说明 transcript 的 hash-chain、事件顺序、签名格式、牌局动作、奖池和结果可以被本地复验。若篡改 transcript 中任意关键字段,verifier 会报错或给出警告。

English

1. Match the deployed client to the public core source

  1. Confirm that the table client CID you opened matches the Game client CID above. The same CID should load the same frontend files through different IPFS gateways.
  2. Download the core source audit package and compare its SHA256 with the Archive SHA256 above.
  3. Extract the package, regenerate the source fingerprint, and compare it with the published Source fingerprint.
curl -L -o fair-poker-source.tar.gz \
  https://ipfs.io/ipfs/bafkreicsvooemdq4odstyykyhykms662gwhcg5kpkjsn7lo4klnuprmtpa

shasum -a 256 fair-poker-source.tar.gz
# must equal 52ab9c460e1c70e53c61583e14c97bda358e23754f5264dfaddc52db47c59378

mkdir fair-poker-source
tar -xzf fair-poker-source.tar.gz -C fair-poker-source --strip-components=1
cd fair-poker-source
npm ci
npm run generate:release-metadata
grep sourceFingerprint src/generated/releaseMetadata.ts

If both the archive SHA256 and Source fingerprint match, the public core dealing, shuffling, encryption, decryption, signing, transcript, and verifier code have not been replaced.

2. Replay a table transcript

  1. Open the Secure Table panel in the upper-left table tools.
  2. Click Download to save the hand transcript JSON.
  3. Open the GitHub audit repository or download the core source audit package.
  4. Install dependencies and run the verifier locally.
npm ci
npm run verify:transcript -- /path/to/transcript.json

A successful result means the hash-chain, event order, signed-event format, table actions, pots, and result can be replayed locally. Tampering with important transcript fields should fail verification or produce warnings.

日本語

まず公開された Game client CID と実際に開いた CID が一致することを確認します。次にソース監査パッケージをダウンロードし、SHA256 と Source fingerprint を本ページの値と比較してください。一致すれば、公開された配牌、シャッフル、暗号化、復号、transcript、verifier コードが置き換えられていないことを確認できます。

shasum -a 256 fair-poker-source.tar.gz
npm ci
npm run generate:release-metadata
grep sourceFingerprint src/generated/releaseMetadata.ts

テーブル左上の安全パネルを開き、記録をダウンロードします。GitHub 監査リポジトリまたはソース監査パッケージを取得し、次のコマンドを実行します。

npm ci
npm run verify:transcript -- /path/to/transcript.json

成功すれば、hash-chain、イベント順序、署名形式、ポット、結果をローカルで再検証できます。

Español

Primero confirma que el CID del cliente coincide con el Game client CID publicado. Después descarga el paquete de código fuente central y compara el SHA256 y el Source fingerprint con los valores de esta página. Si coinciden, el código público de reparto, barajado, cifrado, descifrado, transcript y verifier no fue reemplazado.

shasum -a 256 fair-poker-source.tar.gz
npm ci
npm run generate:release-metadata
grep sourceFingerprint src/generated/releaseMetadata.ts

Abre el panel de seguridad de la mesa, descarga el transcript JSON y ejecuta el verificador desde el repositorio de auditoría.

npm ci
npm run verify:transcript -- /path/to/transcript.json

Un resultado correcto reproduce localmente la cadena hash, el orden de eventos, las firmas, los botes y el resultado.

Français

Vérifiez d’abord que le CID du client correspond au Game client CID publié. Téléchargez ensuite le paquet source central et comparez le SHA256 et le Source fingerprint avec les valeurs de cette page. S’ils correspondent, le code public de distribution, mélange, chiffrement, déchiffrement, transcript et verifier n’a pas été remplacé.

shasum -a 256 fair-poker-source.tar.gz
npm ci
npm run generate:release-metadata
grep sourceFingerprint src/generated/releaseMetadata.ts

Ouvrez le panneau de sécurité, téléchargez le transcript JSON, puis lancez le vérificateur depuis le dépôt d’audit.

npm ci
npm run verify:transcript -- /path/to/transcript.json

Un résultat positif confirme localement la hash-chain, l’ordre des événements, les signatures, les pots et le résultat.

Deutsch

Prüfen Sie zuerst, ob der geöffnete Client-CID dem veröffentlichten Game client CID entspricht. Laden Sie dann das zentrale Quell-Auditpaket herunter und vergleichen Sie SHA256 und Source fingerprint mit den Werten auf dieser Seite. Stimmen sie überein, wurde der öffentliche Code für Austeilen, Mischen, Verschlüsselung, Entschlüsselung, Transcript und Verifier nicht ersetzt.

shasum -a 256 fair-poker-source.tar.gz
npm ci
npm run generate:release-metadata
grep sourceFingerprint src/generated/releaseMetadata.ts

Öffnen Sie das Sicherheitspanel, laden Sie das Transcript als JSON herunter und führen Sie den Verifier aus dem Audit-Repository aus.

npm ci
npm run verify:transcript -- /path/to/transcript.json

Ein erfolgreicher Lauf bestätigt lokal Hash-Chain, Ereignisreihenfolge, Signaturen, Pots und Ergebnis.

联系我们 / Contact

问题反馈、Bug 提交、安全线索、授权与合规事务,请联系 support@fairpoker.app