@mcaptcha/pow_sha256-polyfill
Version:
<div align="center">
1 lines • 1.18 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["pow256-polyfill"]=t():e["pow256-polyfill"]=t()}(self,(function(){return(()=>{"use strict";var e={};return((e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.generate_work=t.score=t.digest=void 0;const n=340282366920938463463374607431768211455n,o=new TextEncoder,r=new TextDecoder("utf-8");t.digest=async e=>{const t=o.encode(e),n=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n))},t.score=e=>{let t=BigInt(0);for(let n=15;n>=0;n--)t+=256n**BigInt(16-(n+1))*BigInt(e[n]);return t},t.generate_work=async(e,c,i)=>{const f=e+r.decode((e=>{const t=[(255&(n=e.length))>>0,(65280&n)>>8,(16711680&n)>>16,(4278190080&n)>>24,(0xff00000000&n)>>32,(0xff000000000&n)>>48,(0xff00000000000&n)>>56,Number((0xff0000000000000n&BigInt(n))>>BigInt(64))];var n;return new Uint8Array(t.concat(Array.from(o.encode(e))))})(c));let s=0,d=BigInt(0);const u=n-n/BigInt(i);for(;d<u;){s+=1;const e=await(0,t.digest)(f+s.toString());d=(0,t.score)(e)}return{result:d.toString(),nonce:s}}})(0,e),e})()}));