๐Ÿช

We use cookies for functional, analytical and personalisation purposes.

Read moreAccept

Dice

Blackjack

Plinko

Crash

Mines

Beef

Keno

Castle Roulette

Video Poker

Groomer's Van

Rock Paper Scissors

Limbo

Live Blackjack

Casino
Sports
High Scores
1,140 Online
$2m monthly and $25k daily leaderboards now live for slots and live games.
$2m monthly and $25k daily leaderboards now live for slots and live games.
d4jonathan :
well๐Ÿ‰well๐Ÿงƒwell๐Ÿ—
Cheeky :
Ok
Iduot :
just cuz MC Donald's ends morning promotions for egg sandwiches doesn't mean it's gay to eat eggs later
Cheeky :
didnt ask bitch
Cheeky :
yhanks
d4jonathan :
xD
THADDAEUS :
psv utrecht over 4.5 so juicy im creaming my undies
Gambler420 :
bruh
@THADDAEUS: psv utrecht over 4.5 so juicy im creaming my undies
Iduot :
I just cummed
Cheeky :
๐Ÿ˜๐Ÿ’ขโœŒ
@THADDAEUS: psv utrecht over 4.5 so juicy im creaming my undies
d4jonathan :
keep em creamin
BipBapBop :
i was being cheeky...
THADDAEUS :
feel like psv will run them over like a train
FestiveSporting :
Iโ€™m gonna finger a nigga
THADDAEUS :
6-1 7-0 something in that scoreline
d4jonathan :
i wish i was white
THADDAEUS :
i wish i was from india
Cheeky :
Negative pnl being cheeky nigga u funny
FestiveSporting :
UNITED -1.5 MBEUMO HATTRICK
@THADDAEUS: i wish i was from india
d4jonathan :
wtf
FestiveSporting :
WE WILL BE THERE
THADDAEUS :
so i can shit in the street
@THADDAEUS: so i can shit in the street
FestiveSporting :
CHELSEA ML PALMER ICE COLD
@fleantio
won $69.2K (231x) on Casino
@THADDAEUS: so i can shit in the street
Maxmedaddy :
fuck u
THADDAEUS :
shut up pakistan
stayrich :
type shit
d4jonathan :
jeet
FestiveSporting :
JP MORGAN
@THADDAEUS: shut up pakistan
Maxmedaddy :
stop discriminate my country sar
FestiveSporting :
THATS MY TRIO
THADDAEUS :
poopjeet
anal :
no paki hate pls
Maxmedaddy :
idk
d4jonathan :
anal
@THADDAEUS: poopjeet
Maxmedaddy :
im pooping rn
@THADDAEUS: poopjeet
FestiveSporting :
CHELSEA MOGS UR TEAM
Methylamino :
Chelsea #1
Iduot :
im gay
d4jonathan :
yuck
Methylamino :
palmer #1
gery :
no one nigger
Iduot :
Arsenal moggs
@Methylamino: palmer #1
FestiveSporting :
LETS GET IT
buraz :
oooooo
Iduot :
fuck chelsea
THADDAEUS :
man city moggs
buraz :
welll
d4jonathan :
duel.
@Iduot: Arsenal moggs
FestiveSporting :
Nigga said arsenal
FestiveSporting :
LOL
@THADDAEUS: man city moggs
Methylamino :
who
d4jonathan :
india mogs
@d4jonathan: india mogs
J-W-Hall :
no
@J-W-Hall: no
d4jonathan :
aight
J-W-Hall :
Dont say ts again
d4jonathan :
my bad my bad
@FestiveSporting: Nigga said arsenal
Iduot :
yessir
d4jonathan :
โœŠ๐Ÿป๐Ÿ‘ˆ๐Ÿป
@J-W-Hall: Dont say ts again
Maxmedaddy :
duck
d4jonathan :
kill them niggers
gery :
wow n word
THADDAEUS :
damn ong kong niggas aint gonna make over 3.5
@THADDAEUS: damn ong kong niggas aint gonna make over 3.5
Maxmedaddy :
fuck chinese
luti :
Nigget
luti :
nugget
@THADDAEUS: damn ong kong niggas aint gonna make over 3.5
Iduot :
they will
luti :
nigger
d4jonathan :
wow nword
stayrich :
nigger
Loveyou :
no N words pls
Loveyou :
ty
BipBapBop :
hey hey J W how ya been?
THADDAEUS :
whats an N word
buraz :
nutella
BipBapBop :
Napping
@THADDAEUS: whats an N word
Ineedmoneyforweed :
Nigger
NumbDigger :
niggies
@THADDAEUS: whats an N word
Dooodooodooo :
Lol
Dooodooodooo :
I fucking hate Indians
IndianJeet :
Yo
THADDAEUS :
indian street food (shit) goated
@Dooodooodooo: I fucking hate Indians
IndianJeet :
what did you say ?
THADDAEUS :
you can taste the feet, sweat, germs
THADDAEUS :
yummy
@THADDAEUS: indian street food (shit) goated
Dooodooodooo :
Howโ€™d the sport bet go
THADDAEUS :
2-1 70min
@THADDAEUS: indian street food (shit) goated
Dooodooodooo :
bro they make it with their feet
niggertrendyallin :
k
@THADDAEUS: 2-1 70min
Dooodooodooo :
aight gl bro
THADDAEUS :
2 cancelled goals wouldve been like 5-1 now
Dooodooodooo :
still a chance
@THADDAEUS: 2 cancelled goals wouldve been like 5-1 now
Dooodooodooo :
1 more goal than u get paid yh?
buraz :
tha what match
THADDAEUS :
yea
@THADDAEUS: yea
Dooodooodooo :
goodluck with that bro
Dooodooodooo :
ima go play Fortnite
THADDAEUS :
@buraz
duel.com/#bet=1183706368
buraz :
oh ok
1,140 Online

Provably Fair

OverviewVerify

Calculation

Enter the required details below to independently verify the fairness of your game round.

Enter the details to verify your results.
Code
// Code written in javascript

// User input values
const clientSeed = '';
const serverSeed = '';
const nonce = 0;

// Suits: D -> Diamonds, H -> Hearts, S -> Spades, C -> Clubs

// Index of 0 to 51: 2D to AC
const CARDS = [
  '2D', '2H', '2S', '2C', '3D', '3H', '3S', '3C', '4D', '4H',
  '4S', '4C', '5D', '5H', '5S', '5C', '6D', '6H', '6S', '6C',
  '7D', '7H', '7S', '7C', '8D', '8H', '8S', '8C', '9D', '9H',
  '9S', '9C', '10D', '10H', '10S', '10C', 'JD', 'JH', 'JS',
  'JC', 'QD', 'QH', 'QS', 'QC', 'KD', 'KH', 'KS', 'KC', 'AD',
  'AH', 'AS', 'AC',
];

// Converts a hex string (e.g. "deadbeef") into a Uint8Array of bytes
function hexToBytes(hex) {
  const bytes = new Uint8Array(hex.length / 2);
  for (let i = 0; i < bytes.length; i++) {
    bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
  }
  return bytes;
}

// Converts a Uint8Array of bytes back into a hex string (e.g. [222, 173, 190, 239] โ†’ "deadbeef")
function bytesToHex(bytes) {
  return Array.from(bytes)
    .map((b) => b.toString(16).padStart(2, '0'))
    .join('');
}

// Computes a HMAC-SHA256 using the Web Crypto API
// keyHex: hex-encoded key (e.g. server seed)
// message: Uint8Array to be signed
async function generateHMAC_SHA256(keyHex, message) {
  const keyBytes = hexToBytes(keyHex);

  // Import raw key for HMAC use
  const cryptoKey = await crypto.subtle.importKey(
    'raw',
    keyBytes,
    { name: 'HMAC', hash: 'SHA-256' },
    false,
    ['sign'],
  );

  // Generate HMAC signature
  const signature = await crypto.subtle.sign('HMAC', cryptoKey, message);
  return bytesToHex(new Uint8Array(signature)); // Return signature as hex
}

// Generates a single Blackjack card from a SHA-256 hash (hex string)
// Uses rejection sampling to ensure fair distribution across 52 possible cards
function generateBlackjackCard(hashHex) {
  const hashBytes = hexToBytes(hashHex);

  for (let i = 0; i <= hashBytes.length - 4; i += 4) {
    const view = new DataView(
      hashBytes.buffer,
      hashBytes.byteOffset + i,
      4,
    );
    const value = view.getUint32(0); // Read 4 bytes as big-endian unsigned integer
    const max = 52 * Math.floor(0x100000000 / 52); // Bias-free range
    if (value < max) {
      const index = value % 52; // Fair card index
      return CARDS[index];
    }
  }

  throw new Error('Failed to generate unbiased card value from hash');
}

// Combines all steps to return a Blackjack card result
// Inputs: serverSeed, clientSeed, nonce, cursor
async function getCard(serverSeed, clientSeed, nonce, cursor) {
  // Prepare input message for HMAC: public seed + nonce + cursor
  const message = new TextEncoder().encode(
    `${clientSeed}:${nonce}:${cursor}`
  );

  // Compute HMAC hash
  const hash = await generateHMAC_SHA256(serverSeed, message);

  // Generate and return card using the hash
  const card = generateBlackjackCard(hash);
  return card;
}

async function validateBlackjackResult(serverSeed, clientSeed, nonce) {
  const cards = [];

  for (let cursor = 0; cursor < 50; cursor++) {
    cards.push(await getCard(serverSeed, clientSeed, nonce, cursor));
  }

  return cards;
}

// Run the validateBlackjackResult function if input values are provided
if (serverSeed && serverSeed.trim() !== '' && clientSeed && clientSeed.trim() !== '' && nonce >= 0) {
  validateBlackjackResult(serverSeed, clientSeed, nonce).then(result => {
    console.log("Suits: D -> Diamonds, H -> Hearts, S -> Spades, C -> Clubs");
    console.log("Next 50 cards in the deck:", result);
  });
} else {
  console.log("Please provide valid serverSeed, clientSeed, and nonce (>=0) before running.");
}
            
Enter the details to verify your results.
Code
// Code written in javascript

// User input values
const clientSeed = '';
const serverSeed = '';
const nonce = 0;

// Suits: D -> Diamonds, H -> Hearts, S -> Spades, C -> Clubs

// Index of 0 to 51: 2D to AC
const CARDS = [
  '2D', '2H', '2S', '2C', '3D', '3H', '3S', '3C', '4D', '4H',
  '4S', '4C', '5D', '5H', '5S', '5C', '6D', '6H', '6S', '6C',
  '7D', '7H', '7S', '7C', '8D', '8H', '8S', '8C', '9D', '9H',
  '9S', '9C', '10D', '10H', '10S', '10C', 'JD', 'JH', 'JS',
  'JC', 'QD', 'QH', 'QS', 'QC', 'KD', 'KH', 'KS', 'KC', 'AD',
  'AH', 'AS', 'AC',
];

// Converts a hex string (e.g. "deadbeef") into a Uint8Array of bytes
function hexToBytes(hex) {
  const bytes = new Uint8Array(hex.length / 2);
  for (let i = 0; i < bytes.length; i++) {
    bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
  }
  return bytes;
}

// Converts a Uint8Array of bytes back into a hex string (e.g. [222, 173, 190, 239] โ†’ "deadbeef")
function bytesToHex(bytes) {
  return Array.from(bytes)
    .map((b) => b.toString(16).padStart(2, '0'))
    .join('');
}

// Computes a HMAC-SHA256 using the Web Crypto API
// keyHex: hex-encoded key (e.g. server seed)
// message: Uint8Array to be signed
async function generateHMAC_SHA256(keyHex, message) {
  const keyBytes = hexToBytes(keyHex);

  // Import raw key for HMAC use
  const cryptoKey = await crypto.subtle.importKey(
    'raw',
    keyBytes,
    { name: 'HMAC', hash: 'SHA-256' },
    false,
    ['sign'],
  );

  // Generate HMAC signature
  const signature = await crypto.subtle.sign('HMAC', cryptoKey, message);
  return bytesToHex(new Uint8Array(signature)); // Return signature as hex
}

// Generates a single Blackjack card from a SHA-256 hash (hex string)
// Uses rejection sampling to ensure fair distribution across 52 possible cards
function generateBlackjackCard(hashHex) {
  const hashBytes = hexToBytes(hashHex);

  for (let i = 0; i <= hashBytes.length - 4; i += 4) {
    const view = new DataView(
      hashBytes.buffer,
      hashBytes.byteOffset + i,
      4,
    );
    const value = view.getUint32(0); // Read 4 bytes as big-endian unsigned integer
    const max = 52 * Math.floor(0x100000000 / 52); // Bias-free range
    if (value < max) {
      const index = value % 52; // Fair card index
      return CARDS[index];
    }
  }

  throw new Error('Failed to generate unbiased card value from hash');
}

// Combines all steps to return a Blackjack card result
// Inputs: serverSeed, clientSeed, nonce, cursor
async function getCard(serverSeed, clientSeed, nonce, cursor) {
  // Prepare input message for HMAC: public seed + nonce + cursor
  const message = new TextEncoder().encode(
    `${clientSeed}:${nonce}:${cursor}`
  );

  // Compute HMAC hash
  const hash = await generateHMAC_SHA256(serverSeed, message);

  // Generate and return card using the hash
  const card = generateBlackjackCard(hash);
  return card;
}

async function validateBlackjackResult(serverSeed, clientSeed, nonce) {
  const cards = [];

  for (let cursor = 0; cursor < 50; cursor++) {
    cards.push(await getCard(serverSeed, clientSeed, nonce, cursor));
  }

  return cards;
}

// Run the validateBlackjackResult function if input values are provided
if (serverSeed && serverSeed.trim() !== '' && clientSeed && clientSeed.trim() !== '' && nonce >= 0) {
  validateBlackjackResult(serverSeed, clientSeed, nonce).then(result => {
    console.log("Suits: D -> Diamonds, H -> Hearts, S -> Spades, C -> Clubs");
    console.log("Next 50 cards in the deck:", result);
  });
} else {
  console.log("Please provide valid serverSeed, clientSeed, and nonce (>=0) before running.");
}
            
About
  • wtf Duel?
  • High Scores
  • Referral FAQ
  • Provably Fair
  • Why Bonuses Suck
  • Fake Bets
  • Zero Edge
  • Careers
Legal
  • Terms of Service
  • Privacy Policy
  • Sports Betting Rules
  • Responsible Gaming
Community
Duel.com is owned and operated by Immortal Snail LLC, registration number: L22982, registered address: Arthur Evelyn Building, Suite 5, Main Street, Charlestown, Nevis, West lndies. Contact us at hey@duel.com. Duel.com is licensed and regulated by the Government of the Autonomous Island of Anjouan, Union of Comoros and operates under License No. ALSI-202411026-FI1. Duel.com has passed all regulatory compliance and is legally authorized to conduct gaming operations for any and all games of chance and wagering.Duel is dedicated to encouraging responsible gambling. To learn more, please visit: https://www.gambleaware.org
Copyright ยฉ 2026 duel.com. All rights reserved.
1,140 Online
$2m monthly and $25k daily leaderboards now live for slots and live games.
$2m monthly and $25k daily leaderboards now live for slots and live games.
d4jonathan :
well๐Ÿ‰well๐Ÿงƒwell๐Ÿ—
Cheeky :
Ok
Iduot :
just cuz MC Donald's ends morning promotions for egg sandwiches doesn't mean it's gay to eat eggs later
Cheeky :
didnt ask bitch
Cheeky :
yhanks
d4jonathan :
xD
THADDAEUS :
psv utrecht over 4.5 so juicy im creaming my undies
Gambler420 :
bruh
@THADDAEUS: psv utrecht over 4.5 so juicy im creaming my undies
Iduot :
I just cummed
Cheeky :
๐Ÿ˜๐Ÿ’ขโœŒ
@THADDAEUS: psv utrecht over 4.5 so juicy im creaming my undies
d4jonathan :
keep em creamin
BipBapBop :
i was being cheeky...
THADDAEUS :
feel like psv will run them over like a train
FestiveSporting :
Iโ€™m gonna finger a nigga
THADDAEUS :
6-1 7-0 something in that scoreline
d4jonathan :
i wish i was white
THADDAEUS :
i wish i was from india
Cheeky :
Negative pnl being cheeky nigga u funny
FestiveSporting :
UNITED -1.5 MBEUMO HATTRICK
@THADDAEUS: i wish i was from india
d4jonathan :
wtf
FestiveSporting :
WE WILL BE THERE
THADDAEUS :
so i can shit in the street
@THADDAEUS: so i can shit in the street
FestiveSporting :
CHELSEA ML PALMER ICE COLD
@fleantio
won $69.2K (231x) on Casino
@THADDAEUS: so i can shit in the street
Maxmedaddy :
fuck u
THADDAEUS :
shut up pakistan
stayrich :
type shit
d4jonathan :
jeet
FestiveSporting :
JP MORGAN
@THADDAEUS: shut up pakistan
Maxmedaddy :
stop discriminate my country sar
FestiveSporting :
THATS MY TRIO
THADDAEUS :
poopjeet
anal :
no paki hate pls
Maxmedaddy :
idk
d4jonathan :
anal
@THADDAEUS: poopjeet
Maxmedaddy :
im pooping rn
@THADDAEUS: poopjeet
FestiveSporting :
CHELSEA MOGS UR TEAM
Methylamino :
Chelsea #1
Iduot :
im gay
d4jonathan :
yuck
Methylamino :
palmer #1
gery :
no one nigger
Iduot :
Arsenal moggs
@Methylamino: palmer #1
FestiveSporting :
LETS GET IT
buraz :
oooooo
Iduot :
fuck chelsea
THADDAEUS :
man city moggs
buraz :
welll
d4jonathan :
duel.
@Iduot: Arsenal moggs
FestiveSporting :
Nigga said arsenal
FestiveSporting :
LOL
@THADDAEUS: man city moggs
Methylamino :
who
d4jonathan :
india mogs
@d4jonathan: india mogs
J-W-Hall :
no
@J-W-Hall: no
d4jonathan :
aight
J-W-Hall :
Dont say ts again
d4jonathan :
my bad my bad
@FestiveSporting: Nigga said arsenal
Iduot :
yessir
d4jonathan :
โœŠ๐Ÿป๐Ÿ‘ˆ๐Ÿป
@J-W-Hall: Dont say ts again
Maxmedaddy :
duck
d4jonathan :
kill them niggers
gery :
wow n word
THADDAEUS :
damn ong kong niggas aint gonna make over 3.5
@THADDAEUS: damn ong kong niggas aint gonna make over 3.5
Maxmedaddy :
fuck chinese
luti :
Nigget
luti :
nugget
@THADDAEUS: damn ong kong niggas aint gonna make over 3.5
Iduot :
they will
luti :
nigger
d4jonathan :
wow nword
stayrich :
nigger
Loveyou :
no N words pls
Loveyou :
ty
BipBapBop :
hey hey J W how ya been?
THADDAEUS :
whats an N word
buraz :
nutella
BipBapBop :
Napping
@THADDAEUS: whats an N word
Ineedmoneyforweed :
Nigger
NumbDigger :
niggies
@THADDAEUS: whats an N word
Dooodooodooo :
Lol
Dooodooodooo :
I fucking hate Indians
IndianJeet :
Yo
THADDAEUS :
indian street food (shit) goated
@Dooodooodooo: I fucking hate Indians
IndianJeet :
what did you say ?
THADDAEUS :
you can taste the feet, sweat, germs
THADDAEUS :
yummy
@THADDAEUS: indian street food (shit) goated
Dooodooodooo :
Howโ€™d the sport bet go
THADDAEUS :
2-1 70min
@THADDAEUS: indian street food (shit) goated
Dooodooodooo :
bro they make it with their feet
niggertrendyallin :
k
@THADDAEUS: 2-1 70min
Dooodooodooo :
aight gl bro
THADDAEUS :
2 cancelled goals wouldve been like 5-1 now
Dooodooodooo :
still a chance
@THADDAEUS: 2 cancelled goals wouldve been like 5-1 now
Dooodooodooo :
1 more goal than u get paid yh?
buraz :
tha what match
THADDAEUS :
yea
@THADDAEUS: yea
Dooodooodooo :
goodluck with that bro
Dooodooodooo :
ima go play Fortnite
THADDAEUS :
@buraz
duel.com/#bet=1183706368
buraz :
oh ok
1,140 Online

Duel

Casino

Sports

Chat

IconSolana
IconMinesBomb
IconMinesDiamondBlue
IconMinesDiamondGreen
IconMinesExplosion
IconKenoGem

Forgot password?

or continue with
or continue with