nano-pow 4.1.7 → 4.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AUTHORS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <!--
2
- SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
2
+ SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
3
3
  SPDX-License-Identifier: GPL-3.0-or-later
4
4
  -->
5
5
 
6
- Chris Duncan <chris@zoso.dev> (zoso.dev)
6
+ Chris Duncan <chris@codecow.com> (codecow.com)
7
7
  Ben Green <ben@latenightsketches.com> (numtel.github.io)
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <!--
2
- SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
2
+ SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
3
3
  SPDX-License-Identifier: GPL-3.0-or-later
4
4
  -->
5
5
 
@@ -205,13 +205,13 @@ execution options and compare results.
205
205
  1. Compile, minify, and bundle
206
206
 
207
207
  ```console
208
- $ git clone https://zoso.dev/nano-pow.git
208
+ $ git clone https://codecow.com/nano-pow.git
209
209
  $ cd nano-pow
210
210
  $ npm i
211
211
  ```
212
212
 
213
213
  ## Reporting Bugs
214
- Email: <bug-nano-pow@zoso.dev>
214
+ Email: <bug-nano-pow@codecow.com>
215
215
 
216
216
  ## Acknowledgements
217
217
  [numtel/nano-webgl-pow](https://github.com/numtel/nano-webgl-pow) for his WebGL
package/dist/bin/cli.js CHANGED
@@ -65,7 +65,7 @@ function log(...args2) {
65
65
  }
66
66
 
67
67
  // src/bin/cli.ts
68
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
68
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
69
69
  //! SPDX-License-Identifier: GPL-3.0-or-later
70
70
  process.title = "NanoPow CLI";
71
71
  delete process.env.NANO_POW_DEBUG;
@@ -109,7 +109,7 @@ If validating a nonce, it must be a 16-character hexadecimal value.
109
109
  Effort must be a decimal number between 1-32.
110
110
  Difficulty must be a hexadecimal string between 0-FFFFFFFFFFFFFFFF.
111
111
 
112
- Report bugs: <bug-nano-pow@zoso.dev>
112
+ Report bugs: <bug-nano-pow@codecow.com>
113
113
  Full documentation: <https://www.npmjs.com/package/nano-pow>
114
114
  `
115
115
  );
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
2
+ # SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
3
3
  # SPDX-License-Identifier: GPL-3.0-or-later
4
4
 
5
5
  SCRIPT_LINK=$(readlink -f "$0");
@@ -35,7 +35,7 @@ function log(...args) {
35
35
  }
36
36
 
37
37
  // src/bin/server.ts
38
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
38
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
39
39
  //! SPDX-License-Identifier: GPL-3.0-or-later
40
40
  process.title = "NanoPow Server";
41
41
  var MAX_CONNECTIONS = 1024;
@@ -146,7 +146,7 @@ BLOCKHASH is a 64-character hexadecimal string.
146
146
  WORK is 16-character hexadecimal string.
147
147
  DIFFICULTY is a 16-character hexadecimal string (default: FFFFFFF800000000)
148
148
 
149
- Report bugs: <bug-nano-pow@zoso.dev>
149
+ Report bugs: <bug-nano-pow@codecow.com>
150
150
  Full documentation: <https://www.npmjs.com/package/nano-pow>
151
151
  `
152
152
  );
package/dist/main.min.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/lib/gl/gl-downsample.frag
2
2
  var gl_downsample_default = `#version 300 es
3
3
  #pragma vscode_glsllint_stage: frag
4
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
4
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
5
5
  //! SPDX-License-Identifier: GPL-3.0-or-later
6
6
  #ifdef GL_FRAGMENT_PRECISION_HIGH
7
7
  precision highp float;
@@ -13,7 +13,7 @@ precision highp int;out uvec4 nonce;uniform highp usampler2D src;void main(){non
13
13
  // src/lib/gl/gl-draw.frag
14
14
  var gl_draw_default = `#version 300 es
15
15
  #pragma vscode_glsllint_stage: frag
16
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
16
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
17
17
  //! SPDX-FileContributor: Ben Green <ben@latenightsketches.com>
18
18
  //! SPDX-License-Identifier: GPL-3.0-or-later AND MIT
19
19
  #ifdef GL_FRAGMENT_PRECISION_HIGH
@@ -26,7 +26,7 @@ out uvec4 nonce;layout(std140)uniform UBO{uint blockhash[8];uvec2 difficulty;boo
26
26
  // src/lib/gl/gl-vertex.vert
27
27
  var gl_vertex_default = `#version 300 es
28
28
  #pragma vscode_glsllint_stage: vert
29
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
29
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
30
30
  //! SPDX-FileContributor: Ben Green <ben@latenightsketches.com>
31
31
  //! SPDX-License-Identifier: GPL-3.0-or-later AND MIT
32
32
  #ifdef GL_FRAGMENT_PRECISION_HIGH
@@ -56,7 +56,7 @@ function isNotHex(input, min, max) {
56
56
  }
57
57
 
58
58
  // src/lib/gl/index.ts
59
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
59
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
60
60
  //! SPDX-FileContributor: Ben Green <ben@latenightsketches.com>
61
61
  //! SPDX-License-Identifier: GPL-3.0-or-later AND MIT
62
62
  var NanoPowGl = class _NanoPowGl {
@@ -529,12 +529,12 @@ var NanoPowGl = class _NanoPowGl {
529
529
  };
530
530
 
531
531
  // src/lib/gpu/compute.wgsl
532
- var compute_default = `//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
532
+ var compute_default = `//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
533
533
  //! SPDX-License-Identifier: GPL-3.0-or-later
534
534
  struct UBO{blockhash:array<vec4<u32>,2>,difficulty:vec2<u32>,validate:u32,seed:vec2<u32>};@group(0)@binding(0)var<uniform> ubo:UBO;struct WORK{found:atomic<u32>,nonce:vec2<u32>,result:vec2<u32>};@group(0)@binding(1)var<storage,read_write>work:WORK;const BLAKE2B_IV=array<vec2<u32>,8>(vec2<u32>(0xF3BCC908u,0x6A09E667u),vec2<u32>(0x84CAA73Bu,0xBB67AE85u),vec2<u32>(0xFE94F82Bu,0x3C6EF372u),vec2<u32>(0x5F1D36F1u,0xA54FF53Au),vec2<u32>(0xADE682D1u,0x510E527Fu),vec2<u32>(0x2B3E6C1Fu,0x9B05688Cu),vec2<u32>(0xFB41BD6Bu,0x1F83D9ABu),vec2<u32>(0x137E2179u,0x5BE0CD19u));const BLAKE2B_PARAM=vec2<u32>(0x01010008u,0u);const BLAKE2B_INLEN=vec2<u32>(0x00000028u,0u);const BLAKE2B_FINAL=vec2<u32>(0xFFFFFFFFu,0xFFFFFFFFu);const BLAKE2B_INIT=array<vec2<u32>,16>(BLAKE2B_IV[0u]^ BLAKE2B_PARAM,BLAKE2B_IV[1u],BLAKE2B_IV[2u],BLAKE2B_IV[3u],BLAKE2B_IV[4u],BLAKE2B_IV[5u],BLAKE2B_IV[6u],BLAKE2B_IV[7u],BLAKE2B_IV[0u],BLAKE2B_IV[1u],BLAKE2B_IV[2u],BLAKE2B_IV[3u],BLAKE2B_IV[4u]^ BLAKE2B_INLEN,BLAKE2B_IV[5u],BLAKE2B_IV[6u]^ BLAKE2B_FINAL,BLAKE2B_IV[7u]);fn G(a:ptr<function,vec2<u32>>,b:ptr<function,vec2<u32>>,c:ptr<function,vec2<u32>>,d:ptr<function,vec2<u32>>,m0:vec2<u32>,m1:vec2<u32>){*a+=*b;(*a).y+=u32((*a).x<(*b).x);*a+=m0;(*a).y+=u32((*a).x<m0.x);*d=(*d ^*a).yx;*c+=*d;(*c).y+=u32((*c).x<(*d).x);*b ^=*c;*b=(*b>>vec2(24u))|(*b<<vec2(8u)).yx;*a+=*b;(*a).y+=u32((*a).x<(*b).x);*a+=m1;(*a).y+=u32((*a).x<m1.x);*d ^=*a;*d=(*d>>vec2(16u))|(*d<<vec2(16u)).yx;*c+=*d;(*c).y+=u32((*c).x<(*d).x);*b ^=*c;*b=(*b>>vec2(31u)).yx|(*b<<vec2(1u));}const Z=vec2(0u);var<workgroup> validate:bool;var<workgroup> found:bool;var<workgroup> seed:vec2<u32>;var<workgroup> m1:vec2<u32>;var<workgroup> m2:vec2<u32>;var<workgroup> m3:vec2<u32>;var<workgroup> m4:vec2<u32>;@compute @workgroup_size(64)fn main(@builtin(global_invocation_id)global_id:vec3<u32>,@builtin(local_invocation_id)local_id:vec3<u32>){if(local_id.x==0u){validate=ubo.validate==1u;found=atomicLoad(&work.found)!=0u;seed=ubo.seed;m1=ubo.blockhash[0u].xy;m2=ubo.blockhash[0u].zw;m3=ubo.blockhash[1u].xy;m4=ubo.blockhash[1u].zw;}workgroupBarrier();if(found){return;}let m0:vec2<u32>=seed ^ global_id.xy;var v0:vec2<u32>=vec2<u32>(BLAKE2B_INIT[0u]);var v1:vec2<u32>=vec2<u32>(BLAKE2B_INIT[1u]);var v2:vec2<u32>=vec2<u32>(BLAKE2B_INIT[2u]);var v3:vec2<u32>=vec2<u32>(BLAKE2B_INIT[3u]);var v4:vec2<u32>=vec2<u32>(BLAKE2B_INIT[4u]);var v5:vec2<u32>=vec2<u32>(BLAKE2B_INIT[5u]);var v6:vec2<u32>=vec2<u32>(BLAKE2B_INIT[6u]);var v7:vec2<u32>=vec2<u32>(BLAKE2B_INIT[7u]);var v8:vec2<u32>=vec2<u32>(BLAKE2B_INIT[8u]);var v9:vec2<u32>=vec2<u32>(BLAKE2B_INIT[9u]);var vA:vec2<u32>=vec2<u32>(BLAKE2B_INIT[10u]);var vB:vec2<u32>=vec2<u32>(BLAKE2B_INIT[11u]);var vC:vec2<u32>=vec2<u32>(BLAKE2B_INIT[12u]);var vD:vec2<u32>=vec2<u32>(BLAKE2B_INIT[13u]);var vE:vec2<u32>=vec2<u32>(BLAKE2B_INIT[14u]);var vF:vec2<u32>=vec2<u32>(BLAKE2B_INIT[15u]);G(&v0,&v4,&v8,&vC,m0,m1);G(&v1,&v5,&v9,&vD,m2,m3);G(&v2,&v6,&vA,&vE,m4,Z);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,Z,Z);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,Z,Z);G(&v3,&v4,&v9,&vE,Z,Z);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,m4,Z);G(&v2,&v6,&vA,&vE,Z,Z);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,m1,Z);G(&v1,&v6,&vB,&vC,m0,m2);G(&v2,&v7,&v8,&vD,Z,Z);G(&v3,&v4,&v9,&vE,Z,m3);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,Z,m0);G(&v2,&v6,&vA,&vE,Z,m2);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,Z,Z);G(&v1,&v6,&vB,&vC,m3,Z);G(&v2,&v7,&v8,&vD,Z,m1);G(&v3,&v4,&v9,&vE,Z,m4);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,m3,m1);G(&v2,&v6,&vA,&vE,Z,Z);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,m2,Z);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,m4,m0);G(&v3,&v4,&v9,&vE,Z,Z);G(&v0,&v4,&v8,&vC,Z,m0);G(&v1,&v5,&v9,&vD,Z,Z);G(&v2,&v6,&vA,&vE,m2,m4);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,Z,m1);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,Z,Z);G(&v3,&v4,&v9,&vE,m3,Z);G(&v0,&v4,&v8,&vC,m2,Z);G(&v1,&v5,&v9,&vD,Z,Z);G(&v2,&v6,&vA,&vE,m0,Z);G(&v3,&v7,&vB,&vF,Z,m3);G(&v0,&v5,&vA,&vF,m4,Z);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,Z,Z);G(&v3,&v4,&v9,&vE,m1,Z);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,m1,Z);G(&v2,&v6,&vA,&vE,Z,Z);G(&v3,&v7,&vB,&vF,m4,Z);G(&v0,&v5,&vA,&vF,m0,Z);G(&v1,&v6,&vB,&vC,Z,m3);G(&v2,&v7,&v8,&vD,Z,m2);G(&v3,&v4,&v9,&vE,Z,Z);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,Z,Z);G(&v2,&v6,&vA,&vE,Z,m1);G(&v3,&v7,&vB,&vF,m3,Z);G(&v0,&v5,&vA,&vF,Z,m0);G(&v1,&v6,&vB,&vC,Z,m4);G(&v2,&v7,&v8,&vD,Z,Z);G(&v3,&v4,&v9,&vE,m2,Z);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,Z,Z);G(&v2,&v6,&vA,&vE,Z,m3);G(&v3,&v7,&vB,&vF,m0,Z);G(&v0,&v5,&vA,&vF,Z,m2);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,m1,m4);G(&v3,&v4,&v9,&vE,Z,Z);G(&v0,&v4,&v8,&vC,Z,m2);G(&v1,&v5,&v9,&vD,Z,m4);G(&v2,&v6,&vA,&vE,Z,Z);G(&v3,&v7,&vB,&vF,m1,Z);G(&v0,&v5,&vA,&vF,Z,Z);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,m3,Z);G(&v3,&v4,&v9,&vE,Z,m0);G(&v0,&v4,&v8,&vC,m0,m1);G(&v1,&v5,&v9,&vD,m2,m3);G(&v2,&v6,&vA,&vE,m4,Z);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,Z,Z);G(&v1,&v6,&vB,&vC,Z,Z);G(&v2,&v7,&v8,&vD,Z,Z);G(&v3,&v4,&v9,&vE,Z,Z);G(&v0,&v4,&v8,&vC,Z,Z);G(&v1,&v5,&v9,&vD,m4,Z);G(&v2,&v6,&vA,&vE,Z,Z);G(&v3,&v7,&vB,&vF,Z,Z);G(&v0,&v5,&vA,&vF,m1,Z);G(&v2,&v7,&v8,&vD,Z,Z);var result:vec2<u32>=BLAKE2B_INIT[0u]^ v0 ^ v8;if(select((result.y>ubo.difficulty.y||(result.y==ubo.difficulty.y&&result.x>=ubo.difficulty.x)),all(global_id==vec3(0u)),validate)){loop{let swap=atomicCompareExchangeWeak(&work.found,0u,1u);if(swap.exchanged){work.nonce=m0;work.result=result;break;}if(swap.old_value!=0u){break;}}}return;}`;
535
535
 
536
536
  // src/lib/gpu/index.ts
537
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
537
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
538
538
  //! SPDX-License-Identifier: GPL-3.0-or-later
539
539
  var NanoPowGpu = class _NanoPowGpu {
540
540
  static #SEND = 0xfffffff800000000n;
@@ -785,7 +785,7 @@ var NanoPowGpu = class _NanoPowGpu {
785
785
  };
786
786
 
787
787
  // src/lib/index.ts
788
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
788
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
789
789
  //! SPDX-License-Identifier: GPL-3.0-or-later
790
790
  var isGlSupported;
791
791
  var isGpuSupported = false;
@@ -798,7 +798,7 @@ try {
798
798
  }
799
799
  try {
800
800
  const gl = new OffscreenCanvas(0, 0)?.getContext?.("webgl2");
801
- isGlSupported = gl instanceof WebGL2RenderingContext;
801
+ isGlSupported = gl instanceof WebGL2RenderingContext && !gl.isContextLost();
802
802
  } catch (err) {
803
803
  console.warn("WebGL is not supported in this environment.\n", err);
804
804
  isGlSupported = false;
@@ -806,7 +806,7 @@ try {
806
806
  var NanoPow = isGpuSupported ? NanoPowGpu : isGlSupported ? NanoPowGl : null;
807
807
 
808
808
  // src/main.ts
809
- //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
809
+ //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
810
810
  //! SPDX-License-Identifier: GPL-3.0-or-later
811
811
  export {
812
812
  NanoPow,
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
1
+ // SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
2
2
  // SPDX-License-Identifier: GPL-3.0-or-later
3
3
 
4
4
  declare global {
@@ -1,5 +1,5 @@
1
1
  <!--
2
- SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
2
+ SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
3
3
  SPDX-License-Identifier: GPL-3.0-or-later
4
4
  -->
5
5
 
package/docs/nano-pow.1 CHANGED
@@ -1,4 +1,4 @@
1
- \# SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
1
+ \# SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
2
2
  \# SPDX-License-Identifier: GPL-3.0-or-later
3
3
 
4
4
  .TH nano-pow 1 2025-03-12 "nano-pow v3.1.0"
@@ -151,12 +151,12 @@ $ curl -d '{
151
151
  Written by Chris Duncan.
152
152
 
153
153
  .SH BUGS
154
- Email <bug-nano-pow@zoso.dev>.
154
+ Email <bug-nano-pow@codecow.com>.
155
155
 
156
156
  .SH COPYRIGHT
157
157
  .PP
158
158
  .EX
159
- Copyright \(co 2025 Chris Duncan <chris@zoso.dev>
159
+ Copyright \(co 2025 Chris Duncan <chris@codecow.com>
160
160
  Nano PoW documentation: <https://docs.nano.org/integration-guides/work-generation/#work-calculation-details>
161
161
  License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
162
162
  Portions of this code are also provided under the MIT License: <https://spdx.org/licenses/MIT.html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nano-pow",
3
- "version": "4.1.7",
3
+ "version": "4.1.9",
4
4
  "description": "Proof-of-work generation and validation with WebGPU/WebGL for Nano cryptocurrency.",
5
5
  "keywords": [
6
6
  "nemo",
@@ -17,10 +17,10 @@
17
17
  "webgl",
18
18
  "webgl2"
19
19
  ],
20
- "homepage": "https://zoso.dev",
21
- "bugs": "bug-nano-pow@zoso.dev",
20
+ "homepage": "https://codecow.com",
21
+ "bugs": "bug-nano-pow@codecow.com",
22
22
  "license": "(GPL-3.0-or-later AND MIT)",
23
- "author": "Chris Duncan <chris@zoso.dev>",
23
+ "author": "Chris Duncan <chris@codecow.com>",
24
24
  "funding": {
25
25
  "type": "nano",
26
26
  "url": "nano:nano_1zosoqs47yt47bnfg7sdf46kj7asn58b7uzm9ek95jw7ccatq37898u1zoso"
@@ -42,7 +42,7 @@
42
42
  "man": "./docs/nano-pow.1",
43
43
  "repository": {
44
44
  "type": "git",
45
- "url": "git+https://zoso.dev/nano-pow.git"
45
+ "url": "git+https://codecow.com/nano-pow.git"
46
46
  },
47
47
  "scripts": {
48
48
  "benchmark": "npm run build && ./dist/bin/nano-pow.sh --benchmark 100",
@@ -1,2 +1,2 @@
1
- SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
1
+ SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
2
2
  SPDX-License-Identifier: GPL-3.0-or-later