An open source zero-trust way to shuffle a deck of cards. Allowing players to have certifiable knowledge of fairness for gameplay online.
npm install zero-trust-shuffle
or with yarn:
yarn add zero-trust-shuffle
You'll need to a polygon wallet that can pay for the gas (Each call is around 250k gas), you'll also need some Link (non-bridged). All in all each call comes out a few cents.
In order to acquire non-bridged LINK on polygon you'll need to take your bridged LINK here and swap it: PegSwap Bridged Link to Unbridged
Once you have your funded wallet, here's how you might use zero-trust-shuffle
:
import { zeroTrustShuffle } from "zero-trust-shuffle";
const FUNDED_WALLET_PRIVATE_KEY = "0x...";
const exampleUsage = async () => {
const { gameStartReveal, gameEndReveal, shuffledDeck } =
await zeroTrustShuffle({ privateKey: FUNDED_WALLET_PRIVATE_KEY });
// On game start reveal non-secret information to clients
sendClients(gameStartReveal);
// Play card based game
playPoker(shuffledDeck);
// On game end reveal game secrets to clients
sendClients(gameEndReveal);
};
Passing your key is only needed in the first call to zeroTrustShuffle()
. Any
further calls will reuse that key:
// Subsequent deck shuffle
const { gameStartReveal, gameEndReveal, shuffledDeck } =
await zeroTrustShuffle();
Contracts are deployed on Polygon for VRF functionality. Feel free to use these.
To invoke them, call transferAndCall
on the Link token contract with 0.001
Link.
Mumbai Testnet ->
0x1AC8A22D9EF30069f15942451B6291de550B267F Mumbai has since been deprecated, please use mainnet contract
Polygon Mainnet -> 0x14178335e9323F92dcA7C48cf64Bab835d2AC8EC