{"project":"Panenka","oneLine":"Hidden-plan commit/reveal duels on X Layer, themed for the World Cup.","app":"https://panenka-alpha.vercel.app","repository":"https://github.com/dolepee/panenka","xAccount":"https://x.com/PanenkaGG","submission":{"hackathon":"OKX X Layer Build X Hackathon / X Cup","primaryTracks":["GameFi","NFT","Social"],"theme":"World Cup penalty shootout duel game","demoPath":["mint a country kicker","claim non-transferable DuelCredit","create a 1 DCR bot duel","commit hidden shots and saves","reveal both plans","settle with early-stop and sudden-death shootout logic on X Layer","update NFT stats and country leaderboard"],"safetyPositioning":{"gameNotGamble":true,"noRealMoneyBetting":true,"noOfficialWorldCupOrFifaBranding":true,"noPlayerLikenesses":true,"noOracleOrLiveMatchFeed":true}},"chain":{"name":"X Layer Testnet","chainId":1952,"latestBlock":"31701485","explorer":"https://www.okx.com/web3/explorer/xlayer-test"},"contracts":{"DuelCredit":{"address":"0xcc3fa00814d3577512d419154b8e2bd2c3566071","explorer":"https://www.okx.com/web3/explorer/xlayer-test/address/0xcc3fa00814d3577512d419154b8e2bd2c3566071"},"KickerNFT":{"address":"0xb1344061536397e422e4db5d536e14c9b73ca8ba","explorer":"https://www.okx.com/web3/explorer/xlayer-test/address/0xb1344061536397e422e4db5d536e14c9b73ca8ba","nextTokenId":"15"},"PenaltyDuel":{"address":"0xb2760c0d27af86ab4e6b7b5f9c5ff7e1015ce2aa","explorer":"https://www.okx.com/web3/explorer/xlayer-test/address/0xb2760c0d27af86ab4e6b7b5f9c5ff7e1015ce2aa","hasBytecode":true}},"onchainActivity":{"mintedKickers":14,"duelsCreated":24,"duelsIndexed":24,"settledDuels":24,"openDuels":0,"committedDuels":0,"cancelledDuels":0,"forfeitedDuels":0,"drawSettlements":0,"noDrawSettlement":true,"statusCounts":{"Settled":24},"proofFromBlock":"31328493","countryCount":8,"indexedKickers":14,"activeWallets":14,"manualWallets":6,"exhibitionWallets":8},"wallets":{"total":14,"manual":6,"exhibition":8,"exhibitionPurpose":"Deterministic exhibition wallets demonstrate the full duel lifecycle at volume. Manual/tester wallets are counted separately."},"judgeSignals":{"innovation":"The primitive is a commit/reveal hidden-plan duel: both players post a bytes32 commitment, then reveal a bounded shootout plan. The contract uses football-style early stop and sudden death so a duel always has a winner.","marketPotential":"Country kickers, country leaderboard, X result sharing, and one-wallet bot duels create repeatable World Cup fan activity.","completion":"Live app, X Layer contracts, one-wallet bot path, latest replay, leaderboard, and machine-readable proof endpoint are all deployed.","xLayerUsage":"Minting, faucet claims, duel creation, joins, reveals, settlement, DuelCredit movement, and KickerNFT stat updates happen on X Layer testnet.","onchainVerifiability":"Recent duels include settlement transaction links, and npm run verify:duel / npm run verify:live replay the proof trail.","safety":"Non-transferable in-game DuelCredit only; no real-money betting, no official branding, no player likenesses, no live-match oracle."},"recentDuels":[{"duelId":"24","status":2,"statusLabel":"Settled","playerOne":"0x30eb112e646e26739D6d271DA3E283270B15C25A","playerTwo":"0x2Ef3530496b22B2E87F1E5702e4D1FD6b3D05244","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"14","p2KickerTokenId":"13","p1Country":"USA","p2Country":"France","p1Revealed":true,"p2Revealed":true,"score":"0-3","draw":false,"commitReveal":{"playerOne":{"commitHash":"0xad71c02c747f7a739d4d020bd5e5520a811580377a6a2d8f7971f107d508e02a","revealed":true,"shots":[0,1,2,0,1,2,0,1,2,0],"saves":[1,2,0,1,2,0,1,2,0,1]},"playerTwo":{"commitHash":"0x37550bcee74792b776cc3ea232f20f699353ccf4633400a21fefee5989a6f810","revealed":true,"shots":[2,0,1,2,0,1,2,0,1,2],"saves":[0,1,2,0,1,2,0,1,2,0]}},"settlementTx":{"hash":"0xe83808f3d3b12b75fa202b5f5dc0bb8435b1f49e29df11a93fa80ea6885ca4a7","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0xe83808f3d3b12b75fa202b5f5dc0bb8435b1f49e29df11a93fa80ea6885ca4a7","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"23","status":2,"statusLabel":"Settled","playerOne":"0x30eb112e646e26739D6d271DA3E283270B15C25A","playerTwo":"0x5Cc5Bb39fD44115C1F9EBD9A33270b12E11583dB","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"14","p2KickerTokenId":"11","p1Country":"USA","p2Country":"Japan","p1Revealed":true,"p2Revealed":true,"score":"3-0","draw":false,"commitReveal":{"playerOne":{"commitHash":"0x5c5206ea5132019ac5ee772c5a1abc6f83ba9451f9c83d11c487ef50deb3a89f","revealed":true,"shots":[0,1,2,0,1,2,0,1,2,0],"saves":[1,2,0,1,2,0,1,2,0,1]},"playerTwo":{"commitHash":"0xcfea9b292cb065b615ca5b05f8fd3ea342e5622736e15f0a9bf3eb4fb7c7db60","revealed":true,"shots":[1,2,0,0,2,0,0,0,2,2],"saves":[1,2,1,2,2,1,0,0,2,1]}},"settlementTx":{"hash":"0x17a313d4438dc974161da10cbde070588ab370477262d1b1fd1601e1764f0986","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x17a313d4438dc974161da10cbde070588ab370477262d1b1fd1601e1764f0986","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"22","status":2,"statusLabel":"Settled","playerOne":"0x2Ef3530496b22B2E87F1E5702e4D1FD6b3D05244","playerTwo":"0xbad35FA6e368e90fC4faf63507F2D0A2Fdf94BAF","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"13","p2KickerTokenId":"12","p1Country":"France","p2Country":"Brazil","p1Revealed":true,"p2Revealed":true,"score":"10-11","draw":false,"commitReveal":{"playerOne":{"commitHash":"0x96a708eaf1fd13961e9d1cf82f916b6c7f74dc75a4c7b34d04caef5280cda6eb","revealed":true,"shots":[2,0,1,2,0,1,2,0,1,2],"saves":[0,1,2,0,1,2,0,1,2,0]},"playerTwo":{"commitHash":"0xe979e3266cffd68324619304deb4fd00057130e39cb487d28b66ede846cc3dce","revealed":true,"shots":[2,0,1,2,0,1,2,0,1,2],"saves":[0,1,2,0,1,2,0,1,2,0]}},"settlementTx":{"hash":"0xae4c72bb7bc963be325b9a3c94c59668b2bb837660a6ffc03a937bf426b01f66","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0xae4c72bb7bc963be325b9a3c94c59668b2bb837660a6ffc03a937bf426b01f66","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"21","status":2,"statusLabel":"Settled","playerOne":"0x2Ef3530496b22B2E87F1E5702e4D1FD6b3D05244","playerTwo":"0x5Cc5Bb39fD44115C1F9EBD9A33270b12E11583dB","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"13","p2KickerTokenId":"11","p1Country":"France","p2Country":"Japan","p1Revealed":true,"p2Revealed":true,"score":"4-3","draw":false,"commitReveal":{"playerOne":{"commitHash":"0xabd258a6b4e904eeafdd8a82c145c3d8f38ceded94f9f1bd67a5778f94b323f0","revealed":true,"shots":[0,1,2,0,1,2,0,1,2,0],"saves":[1,2,0,1,2,0,1,2,0,1]},"playerTwo":{"commitHash":"0xc95f06dcd16e84cac9e66f61eb2c25d3e81394a5af1050e43079313cc2fbc6a7","revealed":true,"shots":[2,2,0,2,1,0,0,1,2,1],"saves":[0,2,1,2,0,0,2,2,2,1]}},"settlementTx":{"hash":"0x040294ce4ab5d628a5032b78c733527f1b0a998956ad11ed8e03ec467b1a5ab9","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x040294ce4ab5d628a5032b78c733527f1b0a998956ad11ed8e03ec467b1a5ab9","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"20","status":2,"statusLabel":"Settled","playerOne":"0xbad35FA6e368e90fC4faf63507F2D0A2Fdf94BAF","playerTwo":"0x2Ef3530496b22B2E87F1E5702e4D1FD6b3D05244","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"12","p2KickerTokenId":"13","p1Country":"Brazil","p2Country":"France","p1Revealed":true,"p2Revealed":true,"score":"3-0","draw":false,"commitReveal":{"playerOne":{"commitHash":"0x03e02832f9869845e448bca939a523827edc844dba2165e7f8be319e3ea2ae09","revealed":true,"shots":[2,0,1,2,0,1,2,0,1,2],"saves":[0,1,2,0,1,2,0,1,2,0]},"playerTwo":{"commitHash":"0xad288272f330183ed8f2bc419828aaa30e616938c9b979b46effca166734cfa3","revealed":true,"shots":[0,1,2,0,1,2,0,1,2,0],"saves":[1,2,0,1,2,0,1,2,0,1]}},"settlementTx":{"hash":"0x5668dfd9490689a231d1473941ae9c65d36a817caf0ff5c4e05bfd679cf55b70","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x5668dfd9490689a231d1473941ae9c65d36a817caf0ff5c4e05bfd679cf55b70","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"19","status":2,"statusLabel":"Settled","playerOne":"0xbad35FA6e368e90fC4faf63507F2D0A2Fdf94BAF","playerTwo":"0x5Cc5Bb39fD44115C1F9EBD9A33270b12E11583dB","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"12","p2KickerTokenId":"11","p1Country":"Brazil","p2Country":"Japan","p1Revealed":true,"p2Revealed":true,"score":"5-4","draw":false,"commitReveal":{"playerOne":{"commitHash":"0xe26d2a9c3c4b2ab80473823da954ab21d12cff2d8d8bc8fd8152b9db4952d8d9","revealed":true,"shots":[1,2,0,1,2,0,1,2,0,1],"saves":[2,0,1,2,0,1,2,0,1,2]},"playerTwo":{"commitHash":"0x183ee47459ad3992fb37dfcf408966cf64a6b35c799e4bb58870e5ffa42df88c","revealed":true,"shots":[2,2,2,0,1,0,2,0,0,0],"saves":[0,0,2,0,0,1,2,2,2,1]}},"settlementTx":{"hash":"0xae012c57fc6291bb0f5ebd7fbddc1270dc4684af2eb3dd5243fe1a0eb0a589be","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0xae012c57fc6291bb0f5ebd7fbddc1270dc4684af2eb3dd5243fe1a0eb0a589be","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"18","status":2,"statusLabel":"Settled","playerOne":"0xbad35FA6e368e90fC4faf63507F2D0A2Fdf94BAF","playerTwo":"0x5Cc5Bb39fD44115C1F9EBD9A33270b12E11583dB","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"12","p2KickerTokenId":"11","p1Country":"Brazil","p2Country":"Japan","p1Revealed":true,"p2Revealed":true,"score":"1-4","draw":false,"commitReveal":{"playerOne":{"commitHash":"0x803794c54657aa302914712a384dc4cac6a1f6a819d3854754330745c580d8e2","revealed":true,"shots":[0,1,2,0,1,2,0,1,2,0],"saves":[1,2,0,1,2,0,1,2,0,1]},"playerTwo":{"commitHash":"0x9a84f8bb8edf2b339ce74835f36c217b15def762c39472fab0f69ce91b28598c","revealed":true,"shots":[0,1,1,2,0,2,0,2,0,1],"saves":[0,0,2,0,2,1,2,0,1,0]}},"settlementTx":{"hash":"0x616929db24f5cef63850adba451c7927941ca7fe5d9a06f1f01ba756b1c49ef8","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x616929db24f5cef63850adba451c7927941ca7fe5d9a06f1f01ba756b1c49ef8","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"},{"duelId":"17","status":2,"statusLabel":"Settled","playerOne":"0xbad35FA6e368e90fC4faf63507F2D0A2Fdf94BAF","playerTwo":"0x5Cc5Bb39fD44115C1F9EBD9A33270b12E11583dB","playerOneWalletType":"manual","playerTwoWalletType":"manual","p1KickerTokenId":"12","p2KickerTokenId":"11","p1Country":"Brazil","p2Country":"Japan","p1Revealed":true,"p2Revealed":true,"score":"8-7","draw":false,"commitReveal":{"playerOne":{"commitHash":"0xd9eae00255393a12ed2fa3e623008ac7c46bb3838de77cb6a6bb0a32c38a3156","revealed":true,"shots":[1,2,0,1,2,0,1,2,0,1],"saves":[2,0,1,2,0,1,2,0,1,2]},"playerTwo":{"commitHash":"0x88d6cb2714f051545fbe5612bdc2e0b5c2f4b8d394d08a4afdb3ad4bd0529b24","revealed":true,"shots":[1,2,1,0,2,2,1,1,1,0],"saves":[0,2,1,0,0,1,0,0,2,1]}},"settlementTx":{"hash":"0x3d26fb8cf3214c7973f215c701b4c85bb4561a89c016394ab780dd3ceae96f7a","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x3d26fb8cf3214c7973f215c701b4c85bb4561a89c016394ab780dd3ceae96f7a","blockNumber":null,"logIndex":null},"settlementTxStatus":"available"}],"proofDuel":{"duelId":"1","matchup":"Nigeria 3-0 France","status":"success","transactions":{"create":{"hash":"0xbc3118e3e017b37b35fd33efebec2326861e0c448b1bb5b73001d155120fa780","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0xbc3118e3e017b37b35fd33efebec2326861e0c448b1bb5b73001d155120fa780"},"join":{"hash":"0xf833710748cd673a75c2de08207f9e984083d5fb226cc7364acd8609cad18629","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0xf833710748cd673a75c2de08207f9e984083d5fb226cc7364acd8609cad18629"},"playerOneReveal":{"hash":"0x4d80a46b57c9e842794cf2a051dfe2f0474b57be3202168bff5ae3eebded8fee","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x4d80a46b57c9e842794cf2a051dfe2f0474b57be3202168bff5ae3eebded8fee"},"playerTwoRevealAndSettle":{"hash":"0x591cfb717624c02d2862b805237d34f9d151f3228d70bc9e7b1dd414e13c9181","explorer":"https://www.okx.com/web3/explorer/xlayer-test/tx/0x591cfb717624c02d2862b805237d34f9d151f3228d70bc9e7b1dd414e13c9181"}}},"verifier":{"command":"npm run verify:duel","successMarker":"PANENKA_DUEL_VALID"}}