const BigInt = JSBI.BigInt const BASE62_MOD = BigInt('47672401706823533450263330816') let computing = false function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)) } function hexToSeed(hex) { return base62.encode(JSBI.remainder(BigInt(`0x${hex}`), BASE62_MOD).toString()).padStart(16, '0') } document.querySelector('#form').addEventListener('submit', async (event) => { event.preventDefault() let resultsDiv = document.querySelector('#results') let start = document.querySelector('#start').value.trim() let end = document.querySelector('#end').value.trim() if ([32, 64].includes(start.length)) return alert('Please enter a 32 or 64 characters start hash.') if (end.length && end.length !== 64) return alert('Please enter a 64 characters end hash.') if (computing) return alert('Already computing, please wait before retrying...') computing = true let nbIter = 0 let prev = start let res = ` ${prev} ${prev.length === 64 ? ` → ${hexToSeed(prev)}` : ''}\n` // Boucle d'itération où on génère les hashs de la seedpool, jusqu'au ending_hash while (nbIter <= 5001) { let hash = sha256(prev) res = `↱ ${hash} → ${hexToSeed(hash)}\n` + res prev = hash nbIter++ if (nbIter % 250 === 0) { resultsDiv.innerText = `Computing... ${nbIter}` await sleep(1) } if (hash === end) break } resultsDiv.innerText = res computing = false })
<div class="max-w-xl mx-auto font-sans p-8"> <h1 class="font-bold"> This form allows you to emulate and verify a seed_pool on Pick<u>a</u>w: </h1> <form id="form" class="flex flex-col mt-4"> <div class="flex flex-wrap items-center my-1"> <label for="start" class="mr-4">Start hash:</label><input type="text" id="start" maxlength="64" class="py-1 px-3 flex-grow rounded border"> </div> <div class="flex flex-wrap items-center my-1"> <label for="end" class="mr-4">End hash*:</label><input type="text" id="end" maxlength="64" class="py-1 px-3 flex-grow rounded border"> </div> <button type="submit" class="mt-4 bg-blue-500 text-white py-1 px-3 rounded">Compute!</button> </form> <div class="mt-8"> <b>Results:<span class="ml-2 font-normal text-sm">(hash, seed)</span></b> <pre id="results" class="text-xs overflow-scroll mt-3 rounded border px-4 py-3" style="max-height: 500px;">Fill the fields to see results.</pre> </div> </div>