Comentas que los juegos son PF, no lo pongo en duda, pero siguiendo el principio de don't trust, verify; que forma tendrían los usuarios de comprobarlo? Integras una calculadora del PF con la explicacion de como se calcula el resultado para que usuarios individuales puedan repasarlo a posteriori?
Una disculpa por la demora en esta respuesta colega... Se que prometí que quedaría la semana pasada pero me he entretenido con el codepen, por un momento dudé mi sistema provably fair y empezé a hacer debug en el código hasta que al final entendí que lo que estaba mal era mi code pen ya que el input se lo estaba dando en Text plano y no es numérico.
Cualquier usuario puede verificar sus apuestas en el siguiente enlace:
https://codepen.io/CryptosHost/pen/dyLqMOLO pueden crear un codepen con el siguiente código:
HTML
<h1>Cryptos.Host Provably Fair Verification</h1>
<label for="cSeed">Enter Client Seed (Decimal):</label>
<input type="text" id="cSeed"><br>
<label for="sSeed">Enter Server Seed (Hexadecimal):</label>
<input type="text" id="sSeed"><br>
<button onclick="verify()">Verify</button>
<div id="result"></div>
JS:
function XOR(c, s) {
let o = '';
for (let i = 0; i < c.length; i++) {
const a = parseInt(c.charAt(i), 16);
const b = parseInt(s.charAt(i), 16);
o += (a ^ b).toString(16);
}
return o;
}
function pfResult(cSeed, sSeed) {
const resHex = XOR(('0000000'+cSeed.toString(16)).substr(-8), sSeed);
return {resHex: resHex, resInt: parseInt(resHex, 16)};
}
function verify() {
const cSeed = parseInt(document.getElementById('cSeed').value);
const sSeed = document.getElementById('sSeed').value;
const result = pfResult(cSeed, sSeed);
document.getElementById('result').innerHTML = `Result (Hex): ${result.resHex}<br>Result (Integer): ${result.resInt}`;
}
Adjunto imagenes como evidencia de la validación:
I totalmente de acuerdo con el colega Csmiami,
"Don't trust, Verify!"