? this.#cores
: options.effort
this.#debug = !!(options?.debug)
+ if (this.#debug) console.log('NanoPowGl.search()')
+ if (this.#debug) console.log('blockhash', hash)
if (this.#debug) console.log('search options', JSON.stringify(options))
/** Reset if user specified new level of effort */
? 0xfffffff8
: options.threshold
this.#debug = !!(options?.debug)
+ if (this.#debug) console.log('NanoPowGl.validate()')
+ if (this.#debug) console.log('blockhash', hash)
if (this.#debug) console.log('validate options', JSON.stringify(options))
if (NanoPowGl.#gl == null) throw new Error('WebGL 2 is required')
? 0x800
: options.effort * 0x100
this.#debug = !!(options?.debug)
+ if (this.#debug) console.log('NanoPowGpu.search()')
if (this.#debug) console.log('blockhash', hash)
if (this.#debug) console.log('search options', JSON.stringify(options))
if (this.#debug) console.log(`seed: ${seed}`)
const data = await this.#dispatch(this.#searchPipeline, seed, hash, threshold, effort)
nonce = data.getBigUint64(0, true)
- if (this.#debug) console.log('nonce', nonce, nonce.toString(16).padStart(16, '0'))
this.#busy = !data.getUint32(8)
times.push(performance.now() - start)
} while (this.#busy)
if (this.#debug) this.#logAverages(times)
+ if (this.#debug) console.log('nonce', nonce, nonce.toString(16).padStart(16, '0'))
return nonce.toString(16).padStart(16, '0')
}
? 0xfffffff8
: options.threshold
this.#debug = !!(options?.debug)
+ if (this.#debug) console.log('NanoPowGpu.validate()')
if (this.#debug) console.log('blockhash', hash)
if (this.#debug) console.log('validate options', JSON.stringify(options))
if (this.#debug) console.log(`work: ${work}`)
const data = await this.#dispatch(this.#validatePipeline, seed, hash, threshold, 1)
const nonce = data.getBigUint64(0, true)
- if (this.#debug) console.log('nonce', nonce, nonce.toString(16).padStart(16, '0'))
const found = !!data.getUint32(8)
this.#busy = false
+ if (this.#debug) console.log('nonce', nonce, nonce.toString(16).padStart(16, '0'))
if (found && work !== nonce.toString(16).padStart(16, '0')) throw new Error(`Nonce (${nonce.toString(16).padStart(16, '0')}) found but does not match work (${work})`)
return found
}