logger.log('OUTPUT', resultViews[dispatchIndex])
if (resultViews[dispatchIndex] == null) throw new Error('failed to get data from resultBuffer.')
return !!resultViews[dispatchIndex].getUint32(0, true)
-
} catch (err) {
logger.log(err)
throw new Error('failed to read results from compute pass', { cause: err })
}
/**
-* Map CPU buffer to GPU, read results to static result object, and unmap.
-*/
+ * Map CPU buffer to GPU, read results to static result object, and unmap.
+ */
function read (dispatchIndex: number): { work: bigint, difficulty: bigint } {
logger.log('reading results from compute pass')
try {
/**
* Nano proof-of-work using WebGPU.
+ *
+ * @param {bigint} hash - 32-byte BLAKE2b hash of Nano block
+ * @param {bigint} difficulty - 8-byte work threshold
+ * @param {number} effort - threads per dispatch (256n)²
+ * @param {boolean} debug - enables or disables logger output
+ * @returns {Promise<WorkGenerateResponse>}
*/
export async function generate (hash: bigint, difficulty: bigint, effort: number, debug: boolean): Promise<WorkGenerateResponse> {
logger.isEnabled = debug