SkinUP is Provably Fair

  1. Introduction
  2. The Formula
  3. The Result
  4. Tickets and the Winner

At SkinUP we believe providing honest and fair game results is a priority of every platform.

Our system is Provably Fair, which means you do not need to trust us. Instead, you can verify each round's result to be fair and we have no way of influencing the outcome.

The Formula

Our Provably Fair formula is based around EOS cryptocurrency blockchain. The outcome of a game is unknown until the bets are placed, this guarantees no party can predict the result. The formula combines input from 3 independent inputs with cryptographically secure SHA-256 HMAC hash.

The following inputs are used to generate the Result Hash:

  1. Round ID - used as salt for the operation, ensuring each result is totally random even in extremely rare case when one of other parameters is reused
  2. Private Seed - cryptographically secure random value generated when the round is started, before any bets are placed. The SHA-256 hash of Private Seed, known as Private Hash, is displayed to the users all the time, assuring it's value doesn't change.
  3. Public Seed - the most important input, the hash of an EOS block generated after the round is closed. Once the round stops accepting the bets, our system chooses a block number which will be generated in the near future, which is displayed to all players as Public Hash. Once the EOS block is mined, it's hash is used as an input, which guarantees no party knows all inputs prior to closing the bets.

You can use the following JavaScript code to calculate Result Hash from the input parameters:

import { createHmac } from 'crypto'

function createHash(roundId, privateSeed, publicSeed) {
  return createHmac('sha256', privateSeed).update(`${roundId}-${publicSeed}`).digest('hex');
}

The Result

In previous section you learned how we generate Result Hash. We use it as a base to calculate Result by taking creating a floating-point number from first 52 significant bits. The Result is stored as an integer value in (0; 1,000,000,000] range and represented as percentage value in (0.00; 1.00] range. We do this conversion to make sure no precision is lost in the process.

Please note the given Result Hash corresponds to exactly one Result. All operations we make from this point onwards are only meant to produce round winner in predictable manner.

You can use the following JavaScript code to transform Result Hash into the Result:

function getResult(resultHash) {
  const resolution = 9;
  const significantBits = 52;
  const significantCharacters = significantBits / 4; // 4 bits per hex character

  const significantHash = resultHash.slice(0, significantCharacters);
  const randomSeed = parseInt(significantHash, 16);
  const floatResult = randomSeed / 2 ** significantBits;

  return Math.floor(floatResult * 10 ** resolution) + 1;
}

Tickets and the Winner

Games based on tickets use the Result to determine the winning ticket from their pool.
On SkinUP, the base value of a ticket is 0.01 Gem. This means betting an item worth 0.57 Gems contributes 57 tickets towards the round pool. Winning chance directly corresponds to the share of round tickets you have contributed.

To select the winning ticket, first we sum up the contribution from all players, then multiply resulting sum by Result. Since our result is always greater than 0, we make sure to round up the calculation. Once the winning ticket is chosen, we scan through the bets to figure out which one contributed the winning ticket to the pool.

You can use the following JavaScript code to calculate round winner from the Result:

function getWinningTicket(result, bets) {
  const totalTickets = bets.reduce((sum, bet) => sum + bet.value, 0)
  return Math.ceil(totalTickets * result / 10 ** 9)
}

function getWinner(winningTicket, bets) {
  let value = 0

  for (const bet of bets) {
    value += bet.value
    if (value >= winningTicket) return bet
  }
}
0
Main Room
Avatar
0
♪PξҞɛ_Ɓluεωαψ♪ 00:39
I'm really hyped about this page
Avatar
0
Ka$h CSGOFLY 00:48
nice for you
Avatar
0
Ka$h CSGOFLY 00:48
can someone join to my coinflip
Avatar
0
CSGOatse.com 00:49
Code
Avatar
0
Ka$h CSGOFLY 00:49
kash
Avatar
0
Des 00:49
ree
Avatar
0
Des 00:49
great site!
Avatar
0
Ka$h CSGOFLY 00:49
code plata
Avatar
0
Ka$h CSGOFLY 00:49
try with it
Avatar
0
Suffer 00:56
14 online, site blew up!
Avatar
0
Ka$h CSGOFLY 01:02
nobody wants to join me
Avatar
0
Ka$h CSGOFLY 01:02
lmao
Avatar
0
Mataro332 01:04
join in my 0.09cf
Avatar
0
Ka$h CSGOFLY 01:07
try code " plata "
Avatar
0
wgubersky 01:14
wait how do I redeem the daily bonus thingy
Avatar
0
Standin.Key hellcase.com 01:16
How do u minimize this chat
Avatar
0
Ka$h CSGOFLY 01:17
try code plata guys
Avatar
0
CsNorte csgofly.com 01:17
no
Avatar
0
Standin.Key hellcase.com 01:18
Gg cant minimize this chat
Avatar
1
Frenzy 18:33
hadi gelin len
Avatar
6
CAN DENIZ 11:37
SA
Avatar
3
✪dixzy 15:44
sa
Avatar
6
CAN DENIZ 16:15
as
Avatar
8
Frenzy 09:25
as
Avatar
7
KsIP O__- 07:27
sa
Avatar
7
KsIP O__- 07:28
sa
Avatar
7
KsIP O__- 07:28
212 doler var
Avatar
6
CAN DENIZ 13:13
sa
Avatar
6
CAN DENIZ 13:16
sa :D
Avatar
7
KsIP O__- 14:47
sa
Avatar
7
KsIP O__- 14:50
len naber
Scroll to latest messages