@openrai/nano-core 2.4.11 → 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 +5 -24
- package/dist/client.d.ts +0 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -12
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/primitives/Block.d.ts +29 -0
- package/dist/primitives/Block.d.ts.map +1 -0
- package/dist/primitives/Block.js +14 -0
- package/dist/primitives/Block.js.map +1 -0
- package/dist/work/WorkProvider.d.ts +28 -51
- package/dist/work/WorkProvider.d.ts.map +1 -1
- package/dist/work/WorkProvider.js +88 -242
- package/dist/work/WorkProvider.js.map +1 -1
- package/package.json +3 -5
- package/dist/webgpu-init.d.ts +0 -2
- package/dist/webgpu-init.d.ts.map +0 -1
- package/dist/webgpu-init.js +0 -28
- package/dist/webgpu-init.js.map +0 -1
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
|
|
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
|
|
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: `
|
|
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
|
|
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(
|
|
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';
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
/**
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","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;AAOhF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,CAAC,IAAc,EAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;CACtD,CAAC;
|
|
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,
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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
|
|
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: '
|
|
4
|
+
activeStrategy: 'local' | 'planned';
|
|
13
5
|
}
|
|
14
6
|
export interface WorkGenerationTrace {
|
|
15
|
-
mode: '
|
|
16
|
-
backend?:
|
|
7
|
+
mode: 'local';
|
|
8
|
+
backend?: string;
|
|
17
9
|
}
|
|
18
10
|
export interface WorkProbeResult {
|
|
19
|
-
kind:
|
|
11
|
+
kind: 'local';
|
|
20
12
|
available: boolean;
|
|
21
13
|
durationMs?: number;
|
|
22
14
|
reason?: string;
|
|
23
15
|
}
|
|
24
16
|
export interface WorkPlanStep {
|
|
25
|
-
kind:
|
|
17
|
+
kind: 'local';
|
|
26
18
|
}
|
|
27
19
|
export interface WorkExecutionPlan {
|
|
28
20
|
source: 'default' | 'probe';
|
|
29
21
|
steps: WorkPlanStep[];
|
|
30
|
-
|
|
22
|
+
disabledLocalEngines: string[];
|
|
31
23
|
probeResults: WorkProbeResult[];
|
|
32
24
|
}
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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
|
|
89
|
-
private probeRemote;
|
|
90
|
-
private probeLocalBackend;
|
|
64
|
+
private probeLocalEngine;
|
|
91
65
|
private buildPlanFromProbeResults;
|
|
92
66
|
private runProbe;
|
|
93
|
-
private
|
|
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":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"WorkProvider.d.ts","sourceRoot":"","sources":["../../src/work/WorkProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { generateWork, validateWork } from 'nano-rspow-node';
|
|
2
|
+
import { getWorkRoot, } from '../primitives/Block.js';
|
|
3
3
|
import { createCacheStore } from './cache-store.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
(
|
|
7
|
-
|
|
8
|
-
LocalCompute["WEBGL"] = "webgl";
|
|
9
|
-
LocalCompute["WASM"] = "wasm";
|
|
10
|
-
})(LocalCompute || (LocalCompute = {}));
|
|
11
|
-
export class RemoteWorkServer {
|
|
12
|
-
_url;
|
|
13
|
-
_timeoutMs;
|
|
14
|
-
constructor(url, timeoutMs) {
|
|
15
|
-
this._url = url;
|
|
16
|
-
this._timeoutMs = timeoutMs;
|
|
4
|
+
export class NanoRspowEngine {
|
|
5
|
+
name = 'nano-rspow-node';
|
|
6
|
+
async generate(hash, difficulty) {
|
|
7
|
+
return await generateWork(hash, difficultyToWorkType(difficulty));
|
|
17
8
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
static of(url, options = {}) {
|
|
21
|
-
return new RemoteWorkServer(url, options.timeoutMs ?? 5000);
|
|
9
|
+
validate(hash, work, difficulty) {
|
|
10
|
+
return validateWork(hash, work, difficultyToWorkType(difficulty));
|
|
22
11
|
}
|
|
23
12
|
}
|
|
24
|
-
const DEFAULT_LOCAL_CHAIN = [LocalCompute.WEBGPU, LocalCompute.WEBGL, LocalCompute.WASM];
|
|
25
13
|
const DEFAULT_LOCAL_TIMEOUT_MS = 10_000;
|
|
26
14
|
const PROBE_HASH = 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789';
|
|
27
|
-
const PROBE_DIFFICULTY = '
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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;
|
|
37
41
|
}
|
|
38
42
|
function computeOptionsFingerprint(options) {
|
|
39
43
|
const parts = {
|
|
40
|
-
|
|
41
|
-
defaults: options.defaults?.slice().sort() ?? [],
|
|
42
|
-
env: options.env ?? null,
|
|
43
|
-
remotes: options.remotes?.map((r) => r.url).sort() ?? [],
|
|
44
|
-
localChain: options.localChain ?? DEFAULT_LOCAL_CHAIN,
|
|
44
|
+
localEngine: options.localEngine?.name ?? 'nano-rspow-node',
|
|
45
45
|
};
|
|
46
46
|
const data = JSON.stringify(parts, Object.keys(parts).sort());
|
|
47
47
|
let hash = 5381;
|
|
@@ -50,31 +50,6 @@ function computeOptionsFingerprint(options) {
|
|
|
50
50
|
}
|
|
51
51
|
return Math.abs(hash).toString(16);
|
|
52
52
|
}
|
|
53
|
-
function localComputeToPlanStep(compute) {
|
|
54
|
-
switch (compute) {
|
|
55
|
-
case LocalCompute.WEBGPU:
|
|
56
|
-
return 'webgpu';
|
|
57
|
-
case LocalCompute.WEBGL:
|
|
58
|
-
return 'webgl';
|
|
59
|
-
case LocalCompute.WASM:
|
|
60
|
-
return 'wasm';
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function planStepToBackendName(kind) {
|
|
64
|
-
switch (kind) {
|
|
65
|
-
case 'webgpu':
|
|
66
|
-
return PowBackendName.WEBGPU;
|
|
67
|
-
case 'webgl':
|
|
68
|
-
return PowBackendName.WEBGL;
|
|
69
|
-
case 'wasm':
|
|
70
|
-
return PowBackendName.WASM;
|
|
71
|
-
case 'remote':
|
|
72
|
-
throw new Error('remote plan step does not map to a local backend');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function isLocalStepKind(kind) {
|
|
76
|
-
return kind !== 'remote';
|
|
77
|
-
}
|
|
78
53
|
function withTimeout(promise, timeoutMs, onTimeout) {
|
|
79
54
|
return new Promise((resolve, reject) => {
|
|
80
55
|
const timer = setTimeout(() => {
|
|
@@ -92,61 +67,31 @@ function withTimeout(promise, timeoutMs, onTimeout) {
|
|
|
92
67
|
}
|
|
93
68
|
export class WorkProvider {
|
|
94
69
|
options;
|
|
95
|
-
remotePool;
|
|
96
|
-
warn;
|
|
97
70
|
localTimeoutMs;
|
|
71
|
+
localEngine;
|
|
98
72
|
cacheStore;
|
|
99
73
|
lastGenerationTrace = null;
|
|
100
|
-
lastProbeResults = [];
|
|
101
74
|
executionPlan;
|
|
102
75
|
probePromise = null;
|
|
103
76
|
preferLocalAboveMhs;
|
|
104
77
|
constructor(options, cacheStore) {
|
|
105
78
|
this.options = options;
|
|
106
|
-
this.warn = options.warn ?? ((message) => console.warn(`[nano-core] ${message}`));
|
|
107
79
|
this.localTimeoutMs = DEFAULT_LOCAL_TIMEOUT_MS;
|
|
80
|
+
this.localEngine = options.localEngine ?? new NanoRspowEngine();
|
|
108
81
|
this.cacheStore = cacheStore;
|
|
109
82
|
this.preferLocalAboveMhs = options.profiler?.preferLocalAboveMhs ?? 0;
|
|
110
|
-
const hasRemotePool = (options.urls && options.urls.length > 0) || options.env || (options.defaults && options.defaults.length > 0);
|
|
111
|
-
if (!hasRemotePool) {
|
|
112
|
-
this.remotePool = null;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
const remotePoolOptions = {
|
|
116
|
-
kind: 'work',
|
|
117
|
-
defaults: options.defaults ?? [],
|
|
118
|
-
transportPolicy: 'bearer-and-json-body-key',
|
|
119
|
-
...(options.timeoutMs ? { timeoutMs: options.timeoutMs } : {}),
|
|
120
|
-
};
|
|
121
|
-
if (options.urls && options.urls.length > 0)
|
|
122
|
-
remotePoolOptions.urls = options.urls;
|
|
123
|
-
if (options.env)
|
|
124
|
-
remotePoolOptions.env = options.env;
|
|
125
|
-
if (options.warn)
|
|
126
|
-
remotePoolOptions.warn = options.warn;
|
|
127
|
-
if (options.onActiveEndpointChange)
|
|
128
|
-
remotePoolOptions.onActiveEndpointChange = options.onActiveEndpointChange;
|
|
129
|
-
this.remotePool = new HttpEndpointPool(remotePoolOptions);
|
|
130
|
-
}
|
|
131
83
|
this.executionPlan = this.buildDefaultPlan();
|
|
132
84
|
}
|
|
133
|
-
static auto(options) {
|
|
85
|
+
static auto(options = {}) {
|
|
134
86
|
const fingerprint = computeOptionsFingerprint(options);
|
|
135
87
|
const cacheStrategy = options.profiler?.cacheStrategy ?? 'memory';
|
|
136
88
|
const cacheStore = createCacheStore(cacheStrategy, fingerprint);
|
|
137
89
|
return new WorkProvider(options, cacheStore);
|
|
138
90
|
}
|
|
139
|
-
getRemoteAuditReport() {
|
|
140
|
-
return this.remotePool?.getAuditReport() ?? [];
|
|
141
|
-
}
|
|
142
91
|
getAuditReport() {
|
|
143
|
-
const localStep = this.lastGenerationTrace?.mode === 'local' ? this.lastGenerationTrace.backend ?? null : null;
|
|
144
92
|
return {
|
|
145
|
-
remotePool: this.getRemoteAuditReport(),
|
|
146
|
-
remotes: this.options.remotes?.map((remote) => ({ url: remote.url, timeoutMs: remote.timeoutMs })) ?? [],
|
|
147
|
-
localChain: this.options.localChain ?? DEFAULT_LOCAL_CHAIN,
|
|
148
93
|
profiler: this.options.profiler ?? 'default',
|
|
149
|
-
localBackend:
|
|
94
|
+
localBackend: this.lastGenerationTrace?.backend ?? null,
|
|
150
95
|
lastGenerationTrace: this.lastGenerationTrace,
|
|
151
96
|
executionPlan: this.executionPlan,
|
|
152
97
|
};
|
|
@@ -154,17 +99,16 @@ export class WorkProvider {
|
|
|
154
99
|
async calibrate() {
|
|
155
100
|
const plan = await this.probe();
|
|
156
101
|
const localProbeDurations = plan.probeResults
|
|
157
|
-
.filter((result) => result.available &&
|
|
102
|
+
.filter((result) => result.available && typeof result.durationMs === 'number')
|
|
158
103
|
.map((result) => result.durationMs);
|
|
159
104
|
const bestLocalDuration = localProbeDurations.length > 0 ? Math.min(...localProbeDurations) : 0;
|
|
160
105
|
const measuredMhs = bestLocalDuration > 0 ? Number((1_000 / bestLocalDuration).toFixed(2)) : 0;
|
|
161
106
|
return {
|
|
162
107
|
measuredMhs,
|
|
163
|
-
activeStrategy: plan.source === 'probe' ? 'planned' : '
|
|
108
|
+
activeStrategy: plan.source === 'probe' ? 'planned' : 'local',
|
|
164
109
|
};
|
|
165
110
|
}
|
|
166
111
|
async probe() {
|
|
167
|
-
await ensureWebGPU();
|
|
168
112
|
const cached = this.cacheStore.read();
|
|
169
113
|
if (cached) {
|
|
170
114
|
this.executionPlan = cached;
|
|
@@ -185,181 +129,83 @@ export class WorkProvider {
|
|
|
185
129
|
}
|
|
186
130
|
}
|
|
187
131
|
buildDefaultPlan() {
|
|
188
|
-
const localChain = this.options.localChain ?? DEFAULT_LOCAL_CHAIN;
|
|
189
|
-
const steps = [];
|
|
190
|
-
if (this.remotePool) {
|
|
191
|
-
steps.push({ kind: 'remote' });
|
|
192
|
-
}
|
|
193
|
-
for (const compute of localChain) {
|
|
194
|
-
steps.push({ kind: localComputeToPlanStep(compute) });
|
|
195
|
-
}
|
|
196
132
|
return {
|
|
197
133
|
source: 'default',
|
|
198
|
-
steps,
|
|
199
|
-
|
|
134
|
+
steps: [{ kind: 'local' }],
|
|
135
|
+
disabledLocalEngines: [],
|
|
200
136
|
probeResults: [],
|
|
201
137
|
};
|
|
202
138
|
}
|
|
203
|
-
|
|
204
|
-
const disabledBackends = Object.values(PowBackendName).filter((candidate) => candidate !== backend);
|
|
205
|
-
return new PowService({ disabledBackends });
|
|
206
|
-
}
|
|
207
|
-
async probeRemote() {
|
|
208
|
-
if (!this.remotePool) {
|
|
209
|
-
return { kind: 'remote', available: false, reason: 'remote pool not configured' };
|
|
210
|
-
}
|
|
139
|
+
async probeLocalEngine() {
|
|
211
140
|
const startedAt = performance.now();
|
|
212
141
|
try {
|
|
213
|
-
await this.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
durationMs: performance.now() - startedAt,
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
catch (error) {
|
|
221
|
-
return {
|
|
222
|
-
kind: 'remote',
|
|
223
|
-
available: false,
|
|
224
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
async probeLocalBackend(compute) {
|
|
229
|
-
const backend = localComputeToBackendName(compute);
|
|
230
|
-
const startedAt = performance.now();
|
|
231
|
-
const powService = this.createLocalPowService(backend);
|
|
232
|
-
try {
|
|
233
|
-
await powService.ready;
|
|
234
|
-
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
|
+
}
|
|
235
146
|
return {
|
|
236
|
-
kind:
|
|
147
|
+
kind: 'local',
|
|
237
148
|
available: true,
|
|
238
149
|
durationMs: performance.now() - startedAt,
|
|
239
150
|
};
|
|
240
151
|
}
|
|
241
152
|
catch (error) {
|
|
242
153
|
return {
|
|
243
|
-
kind:
|
|
154
|
+
kind: 'local',
|
|
244
155
|
available: false,
|
|
245
156
|
reason: error instanceof Error ? error.message : String(error),
|
|
246
157
|
};
|
|
247
158
|
}
|
|
248
159
|
}
|
|
249
160
|
buildPlanFromProbeResults(results) {
|
|
250
|
-
const
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
.filter((result) => result.available)
|
|
254
|
-
.sort((a, b) => (a.durationMs ?? Number.POSITIVE_INFINITY) - (b.durationMs ?? Number.POSITIVE_INFINITY));
|
|
255
|
-
const disabledLocalBackends = locals
|
|
256
|
-
.filter((result) => !result.available)
|
|
257
|
-
.map((result) => planStepToBackendName(result.kind));
|
|
258
|
-
if (availableLocals.length === 0) {
|
|
259
|
-
if (remote?.available) {
|
|
260
|
-
return { source: 'probe', steps: [{ kind: 'remote' }], disabledLocalBackends, probeResults: results };
|
|
261
|
-
}
|
|
161
|
+
const local = results.find((result) => result.kind === 'local');
|
|
162
|
+
const disabledLocalEngines = local?.available === false ? [this.localEngine.name] : [];
|
|
163
|
+
if (!local?.available) {
|
|
262
164
|
return this.buildDefaultPlan();
|
|
263
165
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
for (const local of availableLocals.slice(1)) {
|
|
272
|
-
steps.push({ kind: local.kind });
|
|
273
|
-
}
|
|
274
|
-
return { source: 'probe', steps, disabledLocalBackends, probeResults: results };
|
|
275
|
-
}
|
|
276
|
-
const fastLocals = [];
|
|
277
|
-
const slowLocals = [];
|
|
278
|
-
for (const local of availableLocals) {
|
|
279
|
-
const mhs = 1000 / (local.durationMs ?? Number.POSITIVE_INFINITY);
|
|
280
|
-
if (mhs >= threshold) {
|
|
281
|
-
fastLocals.push(local);
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
slowLocals.push(local);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
const steps = [];
|
|
288
|
-
if (fastLocals.length > 0) {
|
|
289
|
-
for (const local of fastLocals) {
|
|
290
|
-
steps.push({ kind: local.kind });
|
|
291
|
-
}
|
|
292
|
-
if (remote?.available) {
|
|
293
|
-
steps.push({ kind: 'remote' });
|
|
294
|
-
}
|
|
295
|
-
for (const local of slowLocals) {
|
|
296
|
-
steps.push({ kind: local.kind });
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
if (remote?.available) {
|
|
301
|
-
steps.push({ kind: 'remote' });
|
|
302
|
-
}
|
|
303
|
-
for (const local of slowLocals) {
|
|
304
|
-
steps.push({ kind: local.kind });
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
if (steps.length === 0) {
|
|
308
|
-
return this.buildDefaultPlan();
|
|
309
|
-
}
|
|
310
|
-
return { source: 'probe', steps, disabledLocalBackends, probeResults: results };
|
|
166
|
+
return {
|
|
167
|
+
source: 'probe',
|
|
168
|
+
steps: [{ kind: 'local' }],
|
|
169
|
+
disabledLocalEngines,
|
|
170
|
+
probeResults: results,
|
|
171
|
+
};
|
|
311
172
|
}
|
|
312
173
|
async runProbe() {
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
results.push(await this.probeRemote());
|
|
316
|
-
for (const compute of localChain) {
|
|
317
|
-
results.push(await this.probeLocalBackend(compute));
|
|
318
|
-
}
|
|
319
|
-
this.lastProbeResults = results;
|
|
320
|
-
return this.buildPlanFromProbeResults(results);
|
|
174
|
+
const result = await this.probeLocalEngine();
|
|
175
|
+
return this.buildPlanFromProbeResults([result]);
|
|
321
176
|
}
|
|
322
|
-
async
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const response = await this.remotePool.postJson({
|
|
327
|
-
action: 'work_generate',
|
|
328
|
-
hash,
|
|
329
|
-
difficulty,
|
|
330
|
-
});
|
|
331
|
-
if (!response.work || response.work === '0000000000000000') {
|
|
332
|
-
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');
|
|
333
181
|
}
|
|
334
|
-
this.lastGenerationTrace = { mode: '
|
|
335
|
-
return
|
|
336
|
-
}
|
|
337
|
-
async generateLocalWithBackend(hash, difficulty, backend) {
|
|
338
|
-
const powService = this.createLocalPowService(backend);
|
|
339
|
-
await powService.ready;
|
|
340
|
-
const result = await withTimeout(powService.getProofOfWork({ hash, threshold: difficulty }), this.localTimeoutMs, () => powService.cancel());
|
|
341
|
-
this.lastGenerationTrace = { mode: 'local', backend: result.backend };
|
|
342
|
-
return result.proofOfWork;
|
|
343
|
-
}
|
|
344
|
-
async executePlan(hash, difficulty, plan) {
|
|
345
|
-
let lastError;
|
|
346
|
-
for (const step of plan.steps) {
|
|
347
|
-
try {
|
|
348
|
-
if (step.kind === 'remote') {
|
|
349
|
-
return await this.generateRemote(hash, difficulty);
|
|
350
|
-
}
|
|
351
|
-
return await this.generateLocalWithBackend(hash, difficulty, planStepToBackendName(step.kind));
|
|
352
|
-
}
|
|
353
|
-
catch (error) {
|
|
354
|
-
lastError = error;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
throw lastError instanceof Error ? lastError : new Error('No work generation strategy succeeded');
|
|
182
|
+
this.lastGenerationTrace = { mode: 'local', backend: this.localEngine.name };
|
|
183
|
+
return work;
|
|
358
184
|
}
|
|
359
185
|
async generate(hash, difficulty) {
|
|
360
186
|
const shouldProbe = this.options.profiler?.mode === 'auto';
|
|
361
187
|
const plan = shouldProbe ? await this.probe() : this.executionPlan;
|
|
362
|
-
|
|
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);
|
|
363
209
|
}
|
|
364
210
|
}
|
|
365
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": "
|
|
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,13 +44,11 @@
|
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"blakejs": "^1.2.1",
|
|
47
|
-
"nano-
|
|
48
|
-
"nanocurrency": "^2.5.0"
|
|
49
|
-
"webgpu": "^0.4.0"
|
|
47
|
+
"nano-rspow-node": "^0.5.11",
|
|
48
|
+
"nanocurrency": "^2.5.0"
|
|
50
49
|
},
|
|
51
50
|
"devDependencies": {
|
|
52
51
|
"@types/node": "^24.6.0",
|
|
53
|
-
"@webgpu/types": "^0.1.0",
|
|
54
52
|
"typescript": "^6.0.2",
|
|
55
53
|
"vitest": "^4.1.2"
|
|
56
54
|
}
|
package/dist/webgpu-init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webgpu-init.d.ts","sourceRoot":"","sources":["../src/webgpu-init.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBlD"}
|
package/dist/webgpu-init.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
let initialized = false;
|
|
2
|
-
export async function ensureWebGPU() {
|
|
3
|
-
if (initialized)
|
|
4
|
-
return;
|
|
5
|
-
if (typeof navigator !== 'undefined' && navigator.gpu) {
|
|
6
|
-
initialized = true;
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
try {
|
|
10
|
-
const { create, globals } = await import('webgpu');
|
|
11
|
-
Object.assign(globalThis, globals);
|
|
12
|
-
if (!('navigator' in globalThis) || !globalThis.navigator) {
|
|
13
|
-
Object.defineProperty(globalThis, 'navigator', {
|
|
14
|
-
value: { gpu: create([]) },
|
|
15
|
-
writable: true,
|
|
16
|
-
configurable: true,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
globalThis.navigator.gpu = create([]);
|
|
21
|
-
}
|
|
22
|
-
initialized = true;
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
console.warn('[nano-core] WebGPU not available:', error);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=webgpu-init.js.map
|
package/dist/webgpu-init.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webgpu-init.js","sourceRoot":"","sources":["../src/webgpu-init.ts"],"names":[],"mappings":"AAAA,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,WAAW;QAAE,OAAO;IAExB,IAAI,OAAO,SAAS,KAAK,WAAW,IAAK,SAA+B,CAAC,GAAG,EAAE,CAAC;QAC7E,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE;gBAC7C,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE;gBAC1B,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACL,UAAU,CAAC,SAAgD,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|