Register GameShield — Private Gaming Bounty Hub - #86
Conversation
|
|
|
Heads-up: this PR is blocked not by its own entry, but by a pre-existing dead entry on main — |
|
Demo app: https://gameshield-dapp.vercel.app — live GameShield dapp (deploy contracts with a connected wallet, create shielded bounty campaigns, private payouts through the STRK20 pool). Repo: https://github.com/BlackAporia/game-shield |
Portablelle/veilance-market answers 404. validate-registry.mjs checks every entry in the file rather than the ones a pull request touches, so one dead repository failed the whole registry and no registration could be applied - eighteen open, nothing landed since 17 August, four teams reporting the same wall on #86, #95, #97 and #98. Applied from #93 by @BlackAporia, which recorded the removal correctly in registry-removals.json so the retention check knows it was deliberate rather than a merge dropping somebody. The underlying flaw is separate and follows: a broken row that is already on main must not be able to reject a registration that has nothing to do with it. Co-authored-by: BlackAporia <116606427+BlackAporia@users.noreply.github.com>
validate-registry.mjs checks the whole array. When Portablelle/veilance-market started answering 404 it therefore failed every registration behind it - eighteen open pull requests, nothing applied for two days, four teams reporting the same wall on #86, #95, #97 and #98. None of them could have fixed it: a contributor adds one row and has no business editing somebody else's. Entries already on main are now compared against a baseline. A problem with one of those is printed and the run passes; a problem with an entry the change introduces still fails it. With no baseline reachable - somebody running the script by hand - everything is judged, which is the stricter reading. Every check goes through the same gate, so this covers a repository going private or being deleted, and equally a slug or telegram field that was let through before the rule existed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Applied to main as Closed rather than merged because the entry was rebuilt on top of everything else that landed while this was open. That is what stops registrations from deleting each other, and it means you never had to resolve a conflict. The commit is credited to you. |
Applied from #86 by @BlackAporia, rebuilt on top of whatever else landed while it was open. Co-authored-by: BlackAporia <116606427+BlackAporia@users.noreply.github.com>
Register GameShield — Private Gaming Bounty Hub
Builder: BlackAporia (Telegram: @BlackAporia)
GameShield is a private gaming bounty hub on Starknet: organizers create
bounty campaigns (tournaments, speedruns, PvP matches), fund them by shielding
prize STRK into the STRK20 pool, and pay winners through a
privacy_invokehelper — so no one can link a reward or a payout to a wallet.
Why privacy matters here: every public bounty ledger leaks who was paid,
how much, and by whom. GameShield makes the payout unlinkable (pool → helper →
open note), while organizers keep provable commitments of every payout via
events on our own helper contract.
Stack: Cairo (Scarb + Starknet Foundry) for a campaign registry and
privacy_invokepayout helper; Next.js dapp on the STRK20 starter kit usingthe Starknet Wallet API (
WalletAccountV6/strk20InvokeTransaction,starknet.js ^10.4). The dapp never touches viewing keys — the wallet handles
notes, proofs, and submission.
Repo: https://github.com/BlackAporia/game-shield (first commit: project
skeleton, README, integration research, strk20.json).
Integration route per the STRK20 docs: private dapp via anonymizer contract +
Starknet Wallet API (https://strk20-by-example.org/helpers/privacy-invoke).