@openrai/nano-core 2.4.10 → 3.0.1

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/README.md CHANGED
@@ -78,16 +78,16 @@ WS, or work operation.
78
78
 
79
79
  What this buys you immediately:
80
80
 
81
- - comma-separated env vars also work: `NANO_RPC_URL`, `NANO_WS_URL`, `NANO_WORK_URL`
81
+ - comma-separated env vars also work: `NANO_RPC_URL`, `NANO_WS_URL`
82
82
  - malformed or duplicate endpoints are dropped during construction
83
83
  - API keys in query params or URL userinfo are extracted and redacted from audit output
84
84
  - failover and endpoint-local backoff happen inside the pool, not in your app code
85
85
 
86
- Current built-in defaults as of April 2026:
86
+ Current built-in defaults as of May 2026:
87
87
 
88
88
  - RPC: `https://rpc.nano.to`, `https://node.somenano.com/proxy`, `https://rainstorm.city/api`, `https://nanoslo.0x.no/proxy`
89
89
  - WS: `wss://rpc.nano.to`
90
- - Work: `https://rpc.nano.to`
90
+ - Work: local CPU/GPU via `nano-rspow-node` (no remote work server)
91
91
 
92
92
  ### 2. Zero-Config Prototype Mode
93
93
  Out of the box, `NanoClient.initialize()` falls back to default public RPC / WS / work pools and auto-configures the work provider:
@@ -105,8 +105,6 @@ For production environments, you can override only the pieces you care about whi
105
105
  import {
106
106
  NanoClient,
107
107
  WorkProvider,
108
- RemoteWorkServer,
109
- LocalCompute,
110
108
  } from '@openrai/nano-core';
111
109
 
112
110
  const client = NanoClient.initialize({
@@ -114,36 +112,19 @@ const client = NanoClient.initialize({
114
112
  rpc: [
115
113
  'https://rpc.private.example.com?apiKey=secret-rpc',
116
114
  'https://rpc.nano.to',
117
- ], // [Optional] Defaults to the April 2026 public RPC set
115
+ ], // [Optional] Defaults to the May 2026 public RPC set
118
116
  ws: [
119
117
  'wss://ws.private.example.com?api_key=secret-ws',
120
118
  'wss://rpc.nano.to',
121
119
  ], // [Optional] Defaults to public WebSocket endpoints
122
120
  workProvider: WorkProvider.auto({
123
- urls: [
124
- 'https://work.private.example.com?key=secret-work',
125
- ], // [Optional] Defaults to `https://rpc.nano.to` when omitted
126
- remotes: [
127
- RemoteWorkServer.of(
128
- 'https://work-backup.example.com',
129
- {
130
- timeoutMs: 5000, // [Optional] Defaults to 5000
131
- circuitBreakerMs: 30000, // [Optional] Reserved for future tuning
132
- },
133
- ),
134
- ], // [Optional] Additional remote work backends
135
- localChain: [
136
- LocalCompute.WEBGPU,
137
- LocalCompute.WASM_THREADS,
138
- LocalCompute.CPU,
139
- ], // [Optional] Local fallback order
140
121
  profiler: {
141
122
  mode: 'manual',
142
123
  preferLocalAboveMhs: 30,
143
124
  cacheStrategy: 'persistent',
144
125
  }, // [Optional] Calibration strategy overrides
145
126
  warn: (message) => console.warn(message), // [Optional] Defaults to console.warn with nano-core prefix
146
- }), // [Optional] Defaults to WorkProvider.auto(...) using normalized work endpoints
127
+ }), // [Optional] Defaults to WorkProvider.auto() using local nano-rspow-node engine
147
128
  warn: (message) => console.warn(message), // [Optional] Defaults to console.warn with nano-core prefix
148
129
  });
149
130
  ```
package/dist/client.d.ts CHANGED
@@ -13,14 +13,12 @@ export interface NanoClientOptions {
13
13
  transports?: TransportFallback;
14
14
  rpc?: string[];
15
15
  ws?: string[];
16
- work?: string[];
17
16
  workProvider?: WorkProvider;
18
17
  warn?: (message: string) => void;
19
18
  }
20
19
  export interface NanoClientActiveEndpoints {
21
20
  rpc?: string;
22
21
  ws?: string;
23
- work?: string;
24
22
  }
25
23
  export interface NanoClientAuditReport {
26
24
  network: 'mainnet' | 'testnet' | 'beta';
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAwB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAgB,MAAM,sBAAsB,CAAC;AAErG,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB;eACjB,MAAM,EAAE,KAAG,iBAAiB;CACxC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,GAAG,EAAE,mBAAmB,EAAE,CAAC;IAC3B,EAAE,EAAE,mBAAmB,EAAE,CAAC;IAC1B,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC1D;AAED,qBAAa,UAAU;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8C;IAChF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwC;IAExE,OAAO;WAsDO,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU;IAI9D,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI;IAK9E,kBAAkB,IAAI,yBAAyB;IAQtD;;;OAGG;IACI,cAAc,IAAI,qBAAqB;IASjC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;wBAG/C,GAAG,UAAU,GAAG;;CAK3C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAwB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAgB,MAAM,sBAAsB,CAAC;AAErG,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB;eACjB,MAAM,EAAE,KAAG,iBAAiB;CACxC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,GAAG,EAAE,mBAAmB,EAAE,CAAC;IAC3B,EAAE,EAAE,mBAAmB,EAAE,CAAC;IAC1B,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC1D;AAED,qBAAa,UAAU;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8C;IAChF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwC;IAExE,OAAO;WA6CO,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU;IAI9D,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI;IAK9E,kBAAkB,IAAI,yBAAyB;IAOtD;;;OAGG;IACI,cAAc,IAAI,qBAAqB;IASjC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;wBAG/C,GAAG,UAAU,GAAG;;CAK3C"}
package/dist/client.js CHANGED
@@ -29,11 +29,9 @@ export class NanoClient {
29
29
  'https://nanoslo.0x.no/proxy',
30
30
  ];
31
31
  const defaultWs = ['wss://rpc.nano.to'];
32
- const defaultWork = ['https://rpc.nano.to'];
33
32
  const rpcUrls = options.rpc ?? options.transports?.urls;
34
33
  const rpcEnv = process.env['NANO_RPC_URL'];
35
34
  const wsEnv = process.env['NANO_WS_URL'];
36
- const workEnv = process.env['NANO_WORK_URL'];
37
35
  const rpcOptions = {
38
36
  kind: 'rpc',
39
37
  defaults: defaultRpc,
@@ -55,15 +53,7 @@ export class NanoClient {
55
53
  if (wsEnv)
56
54
  wsOptions.env = wsEnv;
57
55
  this.wsPool = new WsEndpointPool(wsOptions);
58
- const workOptions = {
59
- defaults: defaultWork,
60
- warn,
61
- onActiveEndpointChange: forwardEndpointChange,
62
- };
63
- if (options.work && options.work.length > 0)
64
- workOptions.urls = options.work;
65
- if (workEnv)
66
- workOptions.env = workEnv;
56
+ const workOptions = { warn };
67
57
  this.workProvider = options.workProvider ?? WorkProvider.auto(workOptions);
68
58
  }
69
59
  static initialize(options = {}) {
@@ -77,7 +67,6 @@ export class NanoClient {
77
67
  return {
78
68
  ...(this.activeEndpoints.rpc ? { rpc: this.activeEndpoints.rpc } : {}),
79
69
  ...(this.activeEndpoints.ws ? { ws: this.activeEndpoints.ws } : {}),
80
- ...(this.activeEndpoints.work ? { work: this.activeEndpoints.work } : {}),
81
70
  };
82
71
  }
83
72
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { NanoAddress } from './primitives/NanoAddress.js';
2
2
  export { NanoAmount } from './primitives/NanoAmount.js';
3
3
  export { NOMS } from './signing/noms.js';
4
- export { WorkProvider, RemoteWorkServer, LocalCompute, type WorkProviderOptions } from './work/WorkProvider.js';
4
+ export { WorkProvider, NanoRspowEngine, type LocalPowEngine, type WorkProviderOptions } from './work/WorkProvider.js';
5
+ export { type BlockSubtype, type StateBlock, type SendBlockWithPoW, type ReceiveBlockWithPoW, type OpenBlockWithPoW, type ChangeBlockWithPoW, type BlockWithPoW, getWorkRoot, } from './primitives/Block.js';
5
6
  export { NanoClient, TransportFallback, type NanoClientOptions, type NanoClientActiveEndpoints, type NanoClientAuditReport } from './client.js';
6
7
  export { EndpointPool, HttpEndpointPool, NanoTransportConfigError, WsEndpointPool, normalizeEndpoints, } from './transport/index.js';
7
8
  export type { AuthSource, EndpointActivityEvent, EndpointAuditRecord, EndpointAuth, EndpointKind, EndpointPoolOptions, EndpointState, NormalizedEndpoint, TransportPolicy, } from './transport/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAChH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChJ,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChJ,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  export { NanoAddress } from './primitives/NanoAddress.js';
2
2
  export { NanoAmount } from './primitives/NanoAmount.js';
3
3
  export { NOMS } from './signing/noms.js';
4
- export { WorkProvider, RemoteWorkServer, LocalCompute } from './work/WorkProvider.js';
4
+ export { WorkProvider, NanoRspowEngine } from './work/WorkProvider.js';
5
+ export { getWorkRoot, } from './primitives/Block.js';
5
6
  export { NanoClient, TransportFallback } from './client.js';
6
7
  export { EndpointPool, HttpEndpointPool, NanoTransportConfigError, WsEndpointPool, normalizeEndpoints, } from './transport/index.js';
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAA4B,MAAM,wBAAwB,CAAC;AAChH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAsF,MAAM,aAAa,CAAC;AAChJ,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAiD,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAQL,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAsF,MAAM,aAAa,CAAC;AAChJ,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,29 @@
1
+ export type BlockSubtype = 'send' | 'receive' | 'open' | 'change';
2
+ export interface StateBlock {
3
+ type: 'state';
4
+ account: string;
5
+ previous: string;
6
+ representative: string;
7
+ balance: string;
8
+ link: string;
9
+ signature?: string;
10
+ work?: string;
11
+ }
12
+ export interface SendBlockWithPoW extends StateBlock {
13
+ work: string;
14
+ }
15
+ export interface ReceiveBlockWithPoW extends StateBlock {
16
+ work: string;
17
+ }
18
+ export interface OpenBlockWithPoW extends StateBlock {
19
+ work: string;
20
+ }
21
+ export interface ChangeBlockWithPoW extends StateBlock {
22
+ work: string;
23
+ }
24
+ export type BlockWithPoW = SendBlockWithPoW | ReceiveBlockWithPoW | OpenBlockWithPoW | ChangeBlockWithPoW;
25
+ /**
26
+ * Gets the Proof of Work root hash for a given state block and subtype.
27
+ */
28
+ export declare function getWorkRoot(block: StateBlock, subtype: BlockSubtype, accountPublicKey?: string): string;
29
+ //# sourceMappingURL=Block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["../../src/primitives/Block.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE1G;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAQvG"}
@@ -0,0 +1,14 @@
1
+ import { NanoAddress } from './NanoAddress.js';
2
+ /**
3
+ * Gets the Proof of Work root hash for a given state block and subtype.
4
+ */
5
+ export function getWorkRoot(block, subtype, accountPublicKey) {
6
+ if (subtype === 'open') {
7
+ if (accountPublicKey) {
8
+ return accountPublicKey.toLowerCase();
9
+ }
10
+ return NanoAddress.parse(block.account).publicKey.toLowerCase();
11
+ }
12
+ return block.previous.toLowerCase();
13
+ }
14
+ //# sourceMappingURL=Block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Block.js","sourceRoot":"","sources":["../../src/primitives/Block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiC/C;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,OAAqB,EAAE,gBAAyB;IAC7F,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC"}
@@ -1,55 +1,40 @@
1
- import type { EndpointActivityEvent, EndpointAuditRecord } from '../transport/types.js';
2
- import { PowBackendName } from 'nano-pow-with-fallback';
3
- export declare enum LocalCompute {
4
- WEBGPU = "webgpu",
5
- WEBGL = "webgl",
6
- WASM = "wasm"
7
- }
8
- type PowBackendNameValue = typeof PowBackendName[keyof typeof PowBackendName];
9
- type WorkPlanStepKind = 'remote' | 'webgpu' | 'webgl' | 'wasm';
1
+ import { type BlockSubtype, type StateBlock, type SendBlockWithPoW, type ReceiveBlockWithPoW, type OpenBlockWithPoW, type ChangeBlockWithPoW, type BlockWithPoW } from '../primitives/Block.js';
10
2
  export interface WorkCalibrationProfile {
11
3
  measuredMhs: number;
12
- activeStrategy: 'remote-first' | 'planned';
4
+ activeStrategy: 'local' | 'planned';
13
5
  }
14
6
  export interface WorkGenerationTrace {
15
- mode: 'remote' | 'local';
16
- backend?: PowBackendNameValue;
7
+ mode: 'local';
8
+ backend?: string;
17
9
  }
18
10
  export interface WorkProbeResult {
19
- kind: WorkPlanStepKind;
11
+ kind: 'local';
20
12
  available: boolean;
21
13
  durationMs?: number;
22
14
  reason?: string;
23
15
  }
24
16
  export interface WorkPlanStep {
25
- kind: WorkPlanStepKind;
17
+ kind: 'local';
26
18
  }
27
19
  export interface WorkExecutionPlan {
28
20
  source: 'default' | 'probe';
29
21
  steps: WorkPlanStep[];
30
- disabledLocalBackends: PowBackendNameValue[];
22
+ disabledLocalEngines: string[];
31
23
  probeResults: WorkProbeResult[];
32
24
  }
33
- export declare class RemoteWorkServer {
34
- private readonly _url;
35
- private readonly _timeoutMs;
36
- constructor(url: string, timeoutMs: number);
37
- get url(): string;
38
- get timeoutMs(): number;
39
- static of(url: string, options?: {
40
- timeoutMs?: number;
41
- circuitBreakerMs?: number;
42
- }): RemoteWorkServer;
25
+ export interface LocalPowEngine {
26
+ readonly name: string;
27
+ generate(hash: string, difficulty: string): Promise<string>;
28
+ validate(hash: string, work: string, difficulty: string): boolean;
29
+ }
30
+ export declare class NanoRspowEngine implements LocalPowEngine {
31
+ readonly name = "nano-rspow-node";
32
+ generate(hash: string, difficulty: string): Promise<string>;
33
+ validate(hash: string, work: string, difficulty: string): boolean;
43
34
  }
44
35
  export interface WorkProviderOptions {
45
- urls?: string[];
46
- env?: string;
47
- defaults?: string[];
48
36
  warn?: (message: string) => void;
49
- onActiveEndpointChange?: (event: EndpointActivityEvent) => void;
50
- timeoutMs?: number;
51
- remotes?: RemoteWorkServer[];
52
- localChain?: LocalCompute[];
37
+ localEngine?: LocalPowEngine;
53
38
  profiler?: {
54
39
  mode: 'manual' | 'auto';
55
40
  preferLocalAboveMhs?: number;
@@ -58,42 +43,34 @@ export interface WorkProviderOptions {
58
43
  }
59
44
  export declare class WorkProvider {
60
45
  private readonly options;
61
- private readonly remotePool;
62
- private readonly warn;
63
46
  private readonly localTimeoutMs;
47
+ private readonly localEngine;
64
48
  private readonly cacheStore;
65
49
  private lastGenerationTrace;
66
- private lastProbeResults;
67
50
  private executionPlan;
68
51
  private probePromise;
69
52
  private readonly preferLocalAboveMhs;
70
53
  private constructor();
71
- static auto(options: WorkProviderOptions): WorkProvider;
72
- getRemoteAuditReport(): EndpointAuditRecord[];
54
+ static auto(options?: WorkProviderOptions): WorkProvider;
73
55
  getAuditReport(): {
74
- remotePool: EndpointAuditRecord[];
75
- remotes: Array<{
76
- url: string;
77
- timeoutMs: number;
78
- }>;
79
- localChain: LocalCompute[];
80
56
  profiler: WorkProviderOptions['profiler'] | 'default';
81
- localBackend: PowBackendNameValue | null;
57
+ localBackend: string | null;
82
58
  lastGenerationTrace: WorkGenerationTrace | null;
83
59
  executionPlan: WorkExecutionPlan;
84
60
  };
85
61
  calibrate(): Promise<WorkCalibrationProfile>;
86
62
  probe(): Promise<WorkExecutionPlan>;
87
63
  private buildDefaultPlan;
88
- private createLocalPowService;
89
- private probeRemote;
90
- private probeLocalBackend;
64
+ private probeLocalEngine;
91
65
  private buildPlanFromProbeResults;
92
66
  private runProbe;
93
- private generateRemote;
94
- private generateLocalWithBackend;
95
- private executePlan;
67
+ private generateLocal;
96
68
  generate(hash: string, difficulty: string): Promise<string>;
69
+ validate(hash: string, work: string, difficulty: string): boolean;
70
+ generateBlockWithPoW(block: StateBlock, subtype: 'send'): Promise<SendBlockWithPoW>;
71
+ generateBlockWithPoW(block: StateBlock, subtype: 'receive'): Promise<ReceiveBlockWithPoW>;
72
+ generateBlockWithPoW(block: StateBlock, subtype: 'open', accountPublicKey?: string): Promise<OpenBlockWithPoW>;
73
+ generateBlockWithPoW(block: StateBlock, subtype: 'change'): Promise<ChangeBlockWithPoW>;
74
+ validateBlockWithPoW(block: BlockWithPoW, subtype: BlockSubtype, accountPublicKey?: string): boolean;
97
75
  }
98
- export {};
99
76
  //# sourceMappingURL=WorkProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkProvider.d.ts","sourceRoot":"","sources":["../../src/work/WorkProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkProvider.d.ts","sourceRoot":"","sources":["../../src/work/WorkProvider.ts"],"names":[],"mappings":"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"}
@@ -1,46 +1,47 @@
1
- import { HttpEndpointPool } from '../transport/http.js';
2
- import { PowBackendName, PowService } from 'nano-pow-with-fallback';
1
+ import { generateWork, validateWork } from 'nano-rspow-node';
2
+ import { getWorkRoot, } from '../primitives/Block.js';
3
3
  import { createCacheStore } from './cache-store.js';
4
- export var LocalCompute;
5
- (function (LocalCompute) {
6
- LocalCompute["WEBGPU"] = "webgpu";
7
- LocalCompute["WEBGL"] = "webgl";
8
- LocalCompute["WASM"] = "wasm";
9
- })(LocalCompute || (LocalCompute = {}));
10
- export class RemoteWorkServer {
11
- _url;
12
- _timeoutMs;
13
- constructor(url, timeoutMs) {
14
- this._url = url;
15
- this._timeoutMs = timeoutMs;
4
+ export class NanoRspowEngine {
5
+ name = 'nano-rspow-node';
6
+ async generate(hash, difficulty) {
7
+ return await generateWork(hash, difficultyToWorkType(difficulty));
16
8
  }
17
- get url() { return this._url; }
18
- get timeoutMs() { return this._timeoutMs; }
19
- static of(url, options = {}) {
20
- return new RemoteWorkServer(url, options.timeoutMs ?? 5000);
9
+ validate(hash, work, difficulty) {
10
+ return validateWork(hash, work, difficultyToWorkType(difficulty));
21
11
  }
22
12
  }
23
- const DEFAULT_LOCAL_CHAIN = [LocalCompute.WEBGPU, LocalCompute.WEBGL, LocalCompute.WASM];
24
13
  const DEFAULT_LOCAL_TIMEOUT_MS = 10_000;
25
14
  const PROBE_HASH = 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789';
26
- const PROBE_DIFFICULTY = 'fffffe0000000000';
27
- function localComputeToBackendName(compute) {
28
- switch (compute) {
29
- case LocalCompute.WEBGPU:
30
- return PowBackendName.WEBGPU;
31
- case LocalCompute.WEBGL:
32
- return PowBackendName.WEBGL;
33
- case LocalCompute.WASM:
34
- return PowBackendName.WASM;
35
- }
15
+ const PROBE_DIFFICULTY = 'fffffff800000000';
16
+ const EPOCH_2_SEND_THRESHOLD = 'fffffff800000000';
17
+ const EPOCH_2_RECEIVE_THRESHOLD = 'fffffe0000000000';
18
+ const EPOCH_1_THRESHOLD = 'ffffffc000000000';
19
+ const DEV_THRESHOLD = 'fffff00000000000';
20
+ const WORK_TYPE = {
21
+ SEND: 'Send',
22
+ RECEIVE: 'Receive',
23
+ EPOCH1: 'Epoch1',
24
+ DEV: 'Dev',
25
+ };
26
+ function difficultyToWorkType(difficulty) {
27
+ const normalized = difficulty.toLowerCase();
28
+ if (normalized === 'send' || normalized === WORK_TYPE.SEND.toLowerCase() || normalized === EPOCH_2_SEND_THRESHOLD) {
29
+ return WORK_TYPE.SEND;
30
+ }
31
+ if (normalized === 'receive' || normalized === WORK_TYPE.RECEIVE.toLowerCase() || normalized === EPOCH_2_RECEIVE_THRESHOLD) {
32
+ return WORK_TYPE.RECEIVE;
33
+ }
34
+ if (normalized === 'epoch1' || normalized === WORK_TYPE.EPOCH1.toLowerCase() || normalized === EPOCH_1_THRESHOLD) {
35
+ return WORK_TYPE.EPOCH1;
36
+ }
37
+ if (normalized === 'dev' || normalized === WORK_TYPE.DEV.toLowerCase() || normalized === DEV_THRESHOLD) {
38
+ return WORK_TYPE.DEV;
39
+ }
40
+ return WORK_TYPE.SEND;
36
41
  }
37
42
  function computeOptionsFingerprint(options) {
38
43
  const parts = {
39
- urls: options.urls?.slice().sort() ?? [],
40
- defaults: options.defaults?.slice().sort() ?? [],
41
- env: options.env ?? null,
42
- remotes: options.remotes?.map((r) => r.url).sort() ?? [],
43
- localChain: options.localChain ?? DEFAULT_LOCAL_CHAIN,
44
+ localEngine: options.localEngine?.name ?? 'nano-rspow-node',
44
45
  };
45
46
  const data = JSON.stringify(parts, Object.keys(parts).sort());
46
47
  let hash = 5381;
@@ -49,31 +50,6 @@ function computeOptionsFingerprint(options) {
49
50
  }
50
51
  return Math.abs(hash).toString(16);
51
52
  }
52
- function localComputeToPlanStep(compute) {
53
- switch (compute) {
54
- case LocalCompute.WEBGPU:
55
- return 'webgpu';
56
- case LocalCompute.WEBGL:
57
- return 'webgl';
58
- case LocalCompute.WASM:
59
- return 'wasm';
60
- }
61
- }
62
- function planStepToBackendName(kind) {
63
- switch (kind) {
64
- case 'webgpu':
65
- return PowBackendName.WEBGPU;
66
- case 'webgl':
67
- return PowBackendName.WEBGL;
68
- case 'wasm':
69
- return PowBackendName.WASM;
70
- case 'remote':
71
- throw new Error('remote plan step does not map to a local backend');
72
- }
73
- }
74
- function isLocalStepKind(kind) {
75
- return kind !== 'remote';
76
- }
77
53
  function withTimeout(promise, timeoutMs, onTimeout) {
78
54
  return new Promise((resolve, reject) => {
79
55
  const timer = setTimeout(() => {
@@ -91,61 +67,31 @@ function withTimeout(promise, timeoutMs, onTimeout) {
91
67
  }
92
68
  export class WorkProvider {
93
69
  options;
94
- remotePool;
95
- warn;
96
70
  localTimeoutMs;
71
+ localEngine;
97
72
  cacheStore;
98
73
  lastGenerationTrace = null;
99
- lastProbeResults = [];
100
74
  executionPlan;
101
75
  probePromise = null;
102
76
  preferLocalAboveMhs;
103
77
  constructor(options, cacheStore) {
104
78
  this.options = options;
105
- this.warn = options.warn ?? ((message) => console.warn(`[nano-core] ${message}`));
106
79
  this.localTimeoutMs = DEFAULT_LOCAL_TIMEOUT_MS;
80
+ this.localEngine = options.localEngine ?? new NanoRspowEngine();
107
81
  this.cacheStore = cacheStore;
108
82
  this.preferLocalAboveMhs = options.profiler?.preferLocalAboveMhs ?? 0;
109
- const hasRemotePool = (options.urls && options.urls.length > 0) || options.env || (options.defaults && options.defaults.length > 0);
110
- if (!hasRemotePool) {
111
- this.remotePool = null;
112
- }
113
- else {
114
- const remotePoolOptions = {
115
- kind: 'work',
116
- defaults: options.defaults ?? [],
117
- transportPolicy: 'bearer-and-json-body-key',
118
- ...(options.timeoutMs ? { timeoutMs: options.timeoutMs } : {}),
119
- };
120
- if (options.urls && options.urls.length > 0)
121
- remotePoolOptions.urls = options.urls;
122
- if (options.env)
123
- remotePoolOptions.env = options.env;
124
- if (options.warn)
125
- remotePoolOptions.warn = options.warn;
126
- if (options.onActiveEndpointChange)
127
- remotePoolOptions.onActiveEndpointChange = options.onActiveEndpointChange;
128
- this.remotePool = new HttpEndpointPool(remotePoolOptions);
129
- }
130
83
  this.executionPlan = this.buildDefaultPlan();
131
84
  }
132
- static auto(options) {
85
+ static auto(options = {}) {
133
86
  const fingerprint = computeOptionsFingerprint(options);
134
87
  const cacheStrategy = options.profiler?.cacheStrategy ?? 'memory';
135
88
  const cacheStore = createCacheStore(cacheStrategy, fingerprint);
136
89
  return new WorkProvider(options, cacheStore);
137
90
  }
138
- getRemoteAuditReport() {
139
- return this.remotePool?.getAuditReport() ?? [];
140
- }
141
91
  getAuditReport() {
142
- const localStep = this.lastGenerationTrace?.mode === 'local' ? this.lastGenerationTrace.backend ?? null : null;
143
92
  return {
144
- remotePool: this.getRemoteAuditReport(),
145
- remotes: this.options.remotes?.map((remote) => ({ url: remote.url, timeoutMs: remote.timeoutMs })) ?? [],
146
- localChain: this.options.localChain ?? DEFAULT_LOCAL_CHAIN,
147
93
  profiler: this.options.profiler ?? 'default',
148
- localBackend: localStep,
94
+ localBackend: this.lastGenerationTrace?.backend ?? null,
149
95
  lastGenerationTrace: this.lastGenerationTrace,
150
96
  executionPlan: this.executionPlan,
151
97
  };
@@ -153,13 +99,13 @@ export class WorkProvider {
153
99
  async calibrate() {
154
100
  const plan = await this.probe();
155
101
  const localProbeDurations = plan.probeResults
156
- .filter((result) => result.available && result.kind !== 'remote' && typeof result.durationMs === 'number')
102
+ .filter((result) => result.available && typeof result.durationMs === 'number')
157
103
  .map((result) => result.durationMs);
158
104
  const bestLocalDuration = localProbeDurations.length > 0 ? Math.min(...localProbeDurations) : 0;
159
105
  const measuredMhs = bestLocalDuration > 0 ? Number((1_000 / bestLocalDuration).toFixed(2)) : 0;
160
106
  return {
161
107
  measuredMhs,
162
- activeStrategy: plan.source === 'probe' ? 'planned' : 'remote-first',
108
+ activeStrategy: plan.source === 'probe' ? 'planned' : 'local',
163
109
  };
164
110
  }
165
111
  async probe() {
@@ -183,181 +129,83 @@ export class WorkProvider {
183
129
  }
184
130
  }
185
131
  buildDefaultPlan() {
186
- const localChain = this.options.localChain ?? DEFAULT_LOCAL_CHAIN;
187
- const steps = [];
188
- if (this.remotePool) {
189
- steps.push({ kind: 'remote' });
190
- }
191
- for (const compute of localChain) {
192
- steps.push({ kind: localComputeToPlanStep(compute) });
193
- }
194
132
  return {
195
133
  source: 'default',
196
- steps,
197
- disabledLocalBackends: [],
134
+ steps: [{ kind: 'local' }],
135
+ disabledLocalEngines: [],
198
136
  probeResults: [],
199
137
  };
200
138
  }
201
- createLocalPowService(backend) {
202
- const disabledBackends = Object.values(PowBackendName).filter((candidate) => candidate !== backend);
203
- return new PowService({ disabledBackends });
204
- }
205
- async probeRemote() {
206
- if (!this.remotePool) {
207
- return { kind: 'remote', available: false, reason: 'remote pool not configured' };
208
- }
139
+ async probeLocalEngine() {
209
140
  const startedAt = performance.now();
210
141
  try {
211
- await this.remotePool.postJson({ action: 'version' });
212
- return {
213
- kind: 'remote',
214
- available: true,
215
- durationMs: performance.now() - startedAt,
216
- };
217
- }
218
- catch (error) {
219
- return {
220
- kind: 'remote',
221
- available: false,
222
- reason: error instanceof Error ? error.message : String(error),
223
- };
224
- }
225
- }
226
- async probeLocalBackend(compute) {
227
- const backend = localComputeToBackendName(compute);
228
- const startedAt = performance.now();
229
- const powService = this.createLocalPowService(backend);
230
- try {
231
- await powService.ready;
232
- await withTimeout(powService.getProofOfWork({ hash: PROBE_HASH, threshold: PROBE_DIFFICULTY }), this.localTimeoutMs, () => powService.cancel());
142
+ const work = await withTimeout(this.localEngine.generate(PROBE_HASH, PROBE_DIFFICULTY), this.localTimeoutMs);
143
+ if (!this.localEngine.validate(PROBE_HASH, work, PROBE_DIFFICULTY)) {
144
+ throw new Error('local engine generated invalid work');
145
+ }
233
146
  return {
234
- kind: localComputeToPlanStep(compute),
147
+ kind: 'local',
235
148
  available: true,
236
149
  durationMs: performance.now() - startedAt,
237
150
  };
238
151
  }
239
152
  catch (error) {
240
153
  return {
241
- kind: localComputeToPlanStep(compute),
154
+ kind: 'local',
242
155
  available: false,
243
156
  reason: error instanceof Error ? error.message : String(error),
244
157
  };
245
158
  }
246
159
  }
247
160
  buildPlanFromProbeResults(results) {
248
- const remote = results.find((result) => result.kind === 'remote');
249
- const locals = results.filter((result) => isLocalStepKind(result.kind));
250
- const availableLocals = locals
251
- .filter((result) => result.available)
252
- .sort((a, b) => (a.durationMs ?? Number.POSITIVE_INFINITY) - (b.durationMs ?? Number.POSITIVE_INFINITY));
253
- const disabledLocalBackends = locals
254
- .filter((result) => !result.available)
255
- .map((result) => planStepToBackendName(result.kind));
256
- if (availableLocals.length === 0) {
257
- if (remote?.available) {
258
- return { source: 'probe', steps: [{ kind: 'remote' }], disabledLocalBackends, probeResults: results };
259
- }
161
+ const local = results.find((result) => result.kind === 'local');
162
+ const disabledLocalEngines = local?.available === false ? [this.localEngine.name] : [];
163
+ if (!local?.available) {
260
164
  return this.buildDefaultPlan();
261
165
  }
262
- const threshold = this.preferLocalAboveMhs;
263
- if (threshold === 0) {
264
- const steps = [];
265
- steps.push({ kind: availableLocals[0].kind });
266
- if (remote?.available) {
267
- steps.push({ kind: 'remote' });
268
- }
269
- for (const local of availableLocals.slice(1)) {
270
- steps.push({ kind: local.kind });
271
- }
272
- return { source: 'probe', steps, disabledLocalBackends, probeResults: results };
273
- }
274
- const fastLocals = [];
275
- const slowLocals = [];
276
- for (const local of availableLocals) {
277
- const mhs = 1000 / (local.durationMs ?? Number.POSITIVE_INFINITY);
278
- if (mhs >= threshold) {
279
- fastLocals.push(local);
280
- }
281
- else {
282
- slowLocals.push(local);
283
- }
284
- }
285
- const steps = [];
286
- if (fastLocals.length > 0) {
287
- for (const local of fastLocals) {
288
- steps.push({ kind: local.kind });
289
- }
290
- if (remote?.available) {
291
- steps.push({ kind: 'remote' });
292
- }
293
- for (const local of slowLocals) {
294
- steps.push({ kind: local.kind });
295
- }
296
- }
297
- else {
298
- if (remote?.available) {
299
- steps.push({ kind: 'remote' });
300
- }
301
- for (const local of slowLocals) {
302
- steps.push({ kind: local.kind });
303
- }
304
- }
305
- if (steps.length === 0) {
306
- return this.buildDefaultPlan();
307
- }
308
- return { source: 'probe', steps, disabledLocalBackends, probeResults: results };
166
+ return {
167
+ source: 'probe',
168
+ steps: [{ kind: 'local' }],
169
+ disabledLocalEngines,
170
+ probeResults: results,
171
+ };
309
172
  }
310
173
  async runProbe() {
311
- const localChain = this.options.localChain ?? DEFAULT_LOCAL_CHAIN;
312
- const results = [];
313
- results.push(await this.probeRemote());
314
- for (const compute of localChain) {
315
- results.push(await this.probeLocalBackend(compute));
316
- }
317
- this.lastProbeResults = results;
318
- return this.buildPlanFromProbeResults(results);
174
+ const result = await this.probeLocalEngine();
175
+ return this.buildPlanFromProbeResults([result]);
319
176
  }
320
- async generateRemote(hash, difficulty) {
321
- if (!this.remotePool) {
322
- throw new Error('Remote work pool is not configured');
323
- }
324
- const response = await this.remotePool.postJson({
325
- action: 'work_generate',
326
- hash,
327
- difficulty,
328
- });
329
- if (!response.work || response.work === '0000000000000000') {
330
- throw new Error('Remote work provider returned invalid/zero nonce');
177
+ async generateLocal(hash, difficulty) {
178
+ const work = await withTimeout(this.localEngine.generate(hash, difficulty), this.localTimeoutMs);
179
+ if (!this.localEngine.validate(hash, work, difficulty)) {
180
+ throw new Error('Local work generator returned invalid nonce');
331
181
  }
332
- this.lastGenerationTrace = { mode: 'remote' };
333
- return response.work;
334
- }
335
- async generateLocalWithBackend(hash, difficulty, backend) {
336
- const powService = this.createLocalPowService(backend);
337
- await powService.ready;
338
- const result = await withTimeout(powService.getProofOfWork({ hash, threshold: difficulty }), this.localTimeoutMs, () => powService.cancel());
339
- this.lastGenerationTrace = { mode: 'local', backend: result.backend };
340
- return result.proofOfWork;
341
- }
342
- async executePlan(hash, difficulty, plan) {
343
- let lastError;
344
- for (const step of plan.steps) {
345
- try {
346
- if (step.kind === 'remote') {
347
- return await this.generateRemote(hash, difficulty);
348
- }
349
- return await this.generateLocalWithBackend(hash, difficulty, planStepToBackendName(step.kind));
350
- }
351
- catch (error) {
352
- lastError = error;
353
- }
354
- }
355
- throw lastError instanceof Error ? lastError : new Error('No work generation strategy succeeded');
182
+ this.lastGenerationTrace = { mode: 'local', backend: this.localEngine.name };
183
+ return work;
356
184
  }
357
185
  async generate(hash, difficulty) {
358
186
  const shouldProbe = this.options.profiler?.mode === 'auto';
359
187
  const plan = shouldProbe ? await this.probe() : this.executionPlan;
360
- return await this.executePlan(hash, difficulty, plan);
188
+ if (plan.steps.length === 0) {
189
+ throw new Error('No work generation steps in plan');
190
+ }
191
+ return await this.generateLocal(hash, difficulty);
192
+ }
193
+ validate(hash, work, difficulty) {
194
+ return this.localEngine.validate(hash, work, difficulty);
195
+ }
196
+ async generateBlockWithPoW(block, subtype, accountPublicKey) {
197
+ const difficulty = (subtype === 'open' || subtype === 'receive') ? 'Receive' : 'Send';
198
+ const root = getWorkRoot(block, subtype, accountPublicKey);
199
+ const work = await this.generate(root, difficulty);
200
+ return {
201
+ ...block,
202
+ work,
203
+ };
204
+ }
205
+ validateBlockWithPoW(block, subtype, accountPublicKey) {
206
+ const difficulty = (subtype === 'open' || subtype === 'receive') ? 'Receive' : 'Send';
207
+ const root = getWorkRoot(block, subtype, accountPublicKey);
208
+ return this.validate(root, block.work, difficulty);
361
209
  }
362
210
  }
363
211
  //# sourceMappingURL=WorkProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkProvider.js","sourceRoot":"","sources":["../../src/work/WorkProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkProvider.js","sourceRoot":"","sources":["../../src/work/WorkProvider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrai/nano-core",
3
- "version": "2.4.10",
3
+ "version": "3.0.1",
4
4
  "description": "Protocol engine for Nano integration ecosystem",
5
5
  "repository": "https://github.com/OpenRai/nano-core",
6
6
  "type": "module",
@@ -44,7 +44,7 @@
44
44
  ],
45
45
  "dependencies": {
46
46
  "blakejs": "^1.2.1",
47
- "nano-pow-with-fallback": "^1.2.6",
47
+ "nano-rspow-node": "^0.5.11",
48
48
  "nanocurrency": "^2.5.0"
49
49
  },
50
50
  "devDependencies": {