From: Chris Duncan Date: Tue, 7 Jan 2025 01:21:39 +0000 (-0800) Subject: Revert some pointer implementations due to incorrect nonces now. X-Git-Url: https://zoso.dev/?a=commitdiff_plain;h=76d200fda2261569760ae64bfbe3bb3e1ebe51a9;p=libnemo.git Revert some pointer implementations due to incorrect nonces now. --- diff --git a/src/lib/workers/powgpu.ts b/src/lib/workers/powgpu.ts index 21471e2..5a36170 100644 --- a/src/lib/workers/powgpu.ts +++ b/src/lib/workers/powgpu.ts @@ -76,7 +76,7 @@ export class PowGpu extends WorkerInterface { /** * G Mixing function */ - fn G (v: ptr>, va0: ptr, va1: ptr, b: u32, c: u32, d: u32, mx0: u32, mx1: u32, my0: u32, my1: u32) { + fn G (v: ptr>, va0: ptr, va1: ptr, a: u32, b: u32, c: u32, d: u32, mx0: u32, mx1: u32, my0: u32, my1: u32) { var o0: u32; var o1: u32; var xor0: u32; @@ -256,129 +256,129 @@ export class PowGpu extends WorkerInterface { * Twelve rounds of mixing as part of BLAKE2b compression step */ // ROUND(0) - G(&v, &v0, &v1, 8u, 16u, 24u, m0, m1, m2, m3); - G(&v, &v2, &v3, 10u, 18u, 26u, m4, m5, m6, m7); - G(&v, &v4, &v5, 12u, 20u, 28u, m8, m9, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, m0, m1, m2, m3); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, m4, m5, m6, m7); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, m8, m9, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u); // ROUND(1) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, m8, m9, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, m2, m3, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, m0, m1, m4, m5); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m6, m7); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, m8, m9, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, m2, m3, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, m0, m1, m4, m5); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, m6, m7); // ROUND(2) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, m0, m1); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, m4, m5); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, m6, m7, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, m2, m3); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m8, m9); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, 0u, 0u, m0, m1); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, m4, m5); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, m6, m7, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, m2, m3); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, m8, m9); // ROUND(3) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, m6, m7, m2, m3); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, m4, m5, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, m8, m9, m0, m1); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, m6, m7, m2, m3); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, m4, m5, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, m8, m9, m0, m1); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u); // ROUND(4) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, m0, m1); - G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, m4, m5, m8, m9); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, m2, m3); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, m6, m7, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, m0, m1); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, m4, m5, m8, m9); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, m2, m3); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, m6, m7, 0u, 0u); // ROUND(5) - G(&v, &v0, &v1, 8u, 16u, 24u, m4, m5, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, m0, m1, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, m6, m7); - G(&v, &v0, &v1, 10u, 20u, 30u, m8, m9, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, m2, m3, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, m4, m5, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, m0, m1, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, m6, m7); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, m8, m9, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, m2, m3, 0u, 0u); // ROUND(6) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, m2, m3, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, m8, m9, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, m0, m1, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, m6, m7); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, m4, m5); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, m2, m3, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, m8, m9, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, m0, m1, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, m6, m7); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, m4, m5); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u); // ROUND(7) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, m2, m3); - G(&v, &v6, &v7, 14u, 22u, 30u, m6, m7, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, m0, m1); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, m8, m9); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, m4, m5, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, m2, m3); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, m6, m7, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, m0, m1); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, m8, m9); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, m4, m5, 0u, 0u); // ROUND(8) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, m6, m7); - G(&v, &v6, &v7, 14u, 22u, 30u, m0, m1, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, m4, m5); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, m2, m3, m8, m9); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, m6, m7); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, m0, m1, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, m4, m5); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, m2, m3, m8, m9); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u); // ROUND(9) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, m4, m5); - G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, m8, m9); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, m2, m3, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, m6, m7, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m0, m1); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, m4, m5); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, 0u, 0u, m8, m9); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, m2, m3, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, m6, m7, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, m0, m1); // ROUND(10) - G(&v, &v0, &v1, 8u, 16u, 24u, m0, m1, m2, m3); - G(&v, &v2, &v3, 10u, 18u, 26u, m4, m5, m6, m7); - G(&v, &v4, &v5, 12u, 20u, 28u, m8, m9, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, m0, m1, m2, m3); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, m4, m5, m6, m7); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, m8, m9, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u); // ROUND(11) - G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u); - G(&v, &v2, &v3, 10u, 18u, 26u, m8, m9, 0u, 0u); - G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u); - G(&v, &v0, &v1, 10u, 20u, 30u, m2, m3, 0u, 0u); - G(&v, &v2, &v3, 12u, 22u, 24u, m0, m1, m4, m5); - G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u); - G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m6, m7); + G(&v, &v0, &v1, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, 2u, 10u, 18u, 26u, m8, m9, 0u, 0u); + G(&v, &v4, &v5, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, 0u, 10u, 20u, 30u, m2, m3, 0u, 0u); + G(&v, &v2, &v3, 2u, 12u, 22u, 24u, m0, m1, m4, m5); + G(&v, &v4, &v5, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, 6u, 8u, 18u, 28u, 0u, 0u, m6, m7); /** * Set nonce if it passes the threshold and no other thread has set it */ - if ((BLAKE2B_IV32_1 ^ v[1u] ^ v[17u]) > threshold && atomicLoad(&work.found) == 0u) { + if ((BLAKE2B_IV32_1 ^ v1 ^ v17) > threshold && atomicLoad(&work.found) == 0u) { atomicStore(&work.found, 1u); work.nonce.x = m0; work.nonce.y = m1;