@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 +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 -240
- package/dist/work/WorkProvider.js.map +1 -1
- package/package.json +2 -2
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,46 +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
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
18
|
-
|
|
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 = '
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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:
|
|
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 &&
|
|
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' : '
|
|
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
|
-
|
|
134
|
+
steps: [{ kind: 'local' }],
|
|
135
|
+
disabledLocalEngines: [],
|
|
198
136
|
probeResults: [],
|
|
199
137
|
};
|
|
200
138
|
}
|
|
201
|
-
|
|
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.
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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:
|
|
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:
|
|
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
|
|
249
|
-
const
|
|
250
|
-
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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
|
|
312
|
-
|
|
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
|
|
321
|
-
|
|
322
|
-
|
|
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: '
|
|
333
|
-
return
|
|
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
|
-
|
|
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": "
|
|
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-
|
|
47
|
+
"nano-rspow-node": "^0.5.11",
|
|
48
48
|
"nanocurrency": "^2.5.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|