ysk-server-core 1.1.18 → 1.1.20

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.
Files changed (73) hide show
  1. package/dist/hosting/validators/ada-producer.d.ts +25 -0
  2. package/dist/hosting/validators/ada-producer.d.ts.map +1 -0
  3. package/dist/hosting/validators/ada-producer.js +163 -0
  4. package/dist/hosting/validators/ada-producer.js.map +1 -0
  5. package/dist/hosting/validators/adapters/ada.d.ts +2 -1
  6. package/dist/hosting/validators/adapters/ada.d.ts.map +1 -1
  7. package/dist/hosting/validators/adapters/ada.js +30 -9
  8. package/dist/hosting/validators/adapters/ada.js.map +1 -1
  9. package/dist/hosting/validators/adapters/avax.d.ts +2 -0
  10. package/dist/hosting/validators/adapters/avax.d.ts.map +1 -1
  11. package/dist/hosting/validators/adapters/avax.js +28 -10
  12. package/dist/hosting/validators/adapters/avax.js.map +1 -1
  13. package/dist/hosting/validators/adapters/eth-clients.d.ts +2 -0
  14. package/dist/hosting/validators/adapters/eth-clients.d.ts.map +1 -1
  15. package/dist/hosting/validators/adapters/eth-clients.js +45 -14
  16. package/dist/hosting/validators/adapters/eth-clients.js.map +1 -1
  17. package/dist/hosting/validators/adapters/eth.d.ts.map +1 -1
  18. package/dist/hosting/validators/adapters/eth.js +5 -2
  19. package/dist/hosting/validators/adapters/eth.js.map +1 -1
  20. package/dist/hosting/validators/adapters/near.d.ts.map +1 -1
  21. package/dist/hosting/validators/adapters/near.js +11 -2
  22. package/dist/hosting/validators/adapters/near.js.map +1 -1
  23. package/dist/hosting/validators/adapters/p2p-public-ip.d.ts +6 -0
  24. package/dist/hosting/validators/adapters/p2p-public-ip.d.ts.map +1 -0
  25. package/dist/hosting/validators/adapters/p2p-public-ip.js +11 -0
  26. package/dist/hosting/validators/adapters/p2p-public-ip.js.map +1 -0
  27. package/dist/hosting/validators/adapters/phase2.d.ts.map +1 -1
  28. package/dist/hosting/validators/adapters/phase2.js +75 -22
  29. package/dist/hosting/validators/adapters/phase2.js.map +1 -1
  30. package/dist/hosting/validators/compose-runner.d.ts +8 -0
  31. package/dist/hosting/validators/compose-runner.d.ts.map +1 -1
  32. package/dist/hosting/validators/compose-runner.js +74 -2
  33. package/dist/hosting/validators/compose-runner.js.map +1 -1
  34. package/dist/hosting/validators/disk.d.ts +2 -0
  35. package/dist/hosting/validators/disk.d.ts.map +1 -1
  36. package/dist/hosting/validators/disk.js +23 -0
  37. package/dist/hosting/validators/disk.js.map +1 -1
  38. package/dist/hosting/validators/extras.d.ts +58 -2
  39. package/dist/hosting/validators/extras.d.ts.map +1 -1
  40. package/dist/hosting/validators/extras.js +361 -6
  41. package/dist/hosting/validators/extras.js.map +1 -1
  42. package/dist/hosting/validators/index.d.ts +1 -0
  43. package/dist/hosting/validators/index.d.ts.map +1 -1
  44. package/dist/hosting/validators/index.js +1 -0
  45. package/dist/hosting/validators/index.js.map +1 -1
  46. package/dist/hosting/validators/manager.d.ts +10 -0
  47. package/dist/hosting/validators/manager.d.ts.map +1 -1
  48. package/dist/hosting/validators/manager.js +134 -5
  49. package/dist/hosting/validators/manager.js.map +1 -1
  50. package/dist/hosting/validators/ports.js +4 -4
  51. package/dist/hosting/validators/ports.js.map +1 -1
  52. package/dist/hosting/validators/registry.d.ts +7 -1
  53. package/dist/hosting/validators/registry.d.ts.map +1 -1
  54. package/dist/hosting/validators/registry.js +14 -3
  55. package/dist/hosting/validators/registry.js.map +1 -1
  56. package/dist/hosting/validators/releases.d.ts +66 -0
  57. package/dist/hosting/validators/releases.d.ts.map +1 -1
  58. package/dist/hosting/validators/releases.js +262 -21
  59. package/dist/hosting/validators/releases.js.map +1 -1
  60. package/dist/hosting/validators/runtime-status.d.ts.map +1 -1
  61. package/dist/hosting/validators/runtime-status.js +8 -3
  62. package/dist/hosting/validators/runtime-status.js.map +1 -1
  63. package/dist/hosting/validators/software-catalog.d.ts +10 -1
  64. package/dist/hosting/validators/software-catalog.d.ts.map +1 -1
  65. package/dist/hosting/validators/software-catalog.js +84 -3
  66. package/dist/hosting/validators/software-catalog.js.map +1 -1
  67. package/dist/hosting/validators/store.js +3 -0
  68. package/dist/hosting/validators/store.js.map +1 -1
  69. package/dist/hosting/validators/upgrade.d.ts +18 -0
  70. package/dist/hosting/validators/upgrade.d.ts.map +1 -1
  71. package/dist/hosting/validators/upgrade.js +25 -4
  72. package/dist/hosting/validators/upgrade.js.map +1 -1
  73. package/package.json +2 -2
@@ -0,0 +1,25 @@
1
+ import type { CardanoProducerStatusDto, ValidatorInstanceDto } from 'ysk-server-shared';
2
+ export declare const ADA_PRODUCER_MAX_BYTES: number;
3
+ export declare const ADA_PRODUCER_FILES: {
4
+ readonly kes: "kes.skey";
5
+ readonly vrf: "vrf.skey";
6
+ readonly opcert: "node.cert";
7
+ };
8
+ export type AdaProducerSlot = keyof typeof ADA_PRODUCER_FILES;
9
+ export declare function producerKeysDir(dataDir: string, id: string): string;
10
+ export declare function producerKeysDirFromSpec(spec: ValidatorInstanceDto, dataDir?: string): string;
11
+ export declare function fingerprintProducerBytes(buf: Buffer): string;
12
+ export declare function decodeProducerPayload(raw: string): Buffer;
13
+ export declare function validateProducerFile(slot: AdaProducerSlot, buf: Buffer): {
14
+ ok: true;
15
+ } | {
16
+ ok: false;
17
+ error: 'producerTooLarge' | 'producerColdRejected' | 'producerBadType' | 'producerEmpty';
18
+ };
19
+ export declare function writeProducerFile(keysDir: string, slot: AdaProducerSlot, buf: Buffer): string;
20
+ export declare function removeProducerKeys(keysDir: string): void;
21
+ export declare function readProducerFile(keysDir: string, slot: AdaProducerSlot): Buffer | null;
22
+ export declare function readProducerStatus(keysDir: string, attachedAt?: string | null): CardanoProducerStatusDto;
23
+ export declare function adaProducerReady(spec: ValidatorInstanceDto, dataDir?: string): boolean;
24
+ export declare function enrichCardanoProducer(spec: ValidatorInstanceDto, dataDir: string): ValidatorInstanceDto;
25
+ //# sourceMappingURL=ada-producer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ada-producer.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/ada-producer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,eAAO,MAAM,sBAAsB,QAAY,CAAC;AAEhD,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAO9D,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5F;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAaD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAezD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,GACV;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,kBAAkB,GAAG,sBAAsB,GAAG,iBAAiB,GAAG,eAAe,CAAA;CAAE,CAwBxH;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAe7F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAQtF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,wBAAwB,CAkBxG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAGtF;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,GACd,oBAAoB,CAQtB"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Cardano SPO hot keys on disk. Never generates keys; rejects cold material.
3
+ */
4
+ import { createHash } from 'node:crypto';
5
+ import { chmodSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { instanceDir } from './store.js';
8
+ export const ADA_PRODUCER_MAX_BYTES = 64 * 1024;
9
+ export const ADA_PRODUCER_FILES = {
10
+ kes: 'kes.skey',
11
+ vrf: 'vrf.skey',
12
+ opcert: 'node.cert',
13
+ };
14
+ const COLD_TYPE_RE = /cold|genesis|payment|stakepoolsigning/i;
15
+ const KES_TYPE_RE = /kes/i;
16
+ const VRF_TYPE_RE = /vrf/i;
17
+ const OPCERT_TYPE_RE = /operationalcertificate|nodeoperationalcertificate/i;
18
+ export function producerKeysDir(dataDir, id) {
19
+ return join(instanceDir(dataDir, id), 'keys');
20
+ }
21
+ export function producerKeysDirFromSpec(spec, dataDir) {
22
+ if (dataDir)
23
+ return producerKeysDir(dataDir, spec.id);
24
+ const data = String(spec.dataPath ?? '').replace(/\/+$/, '');
25
+ if (data.endsWith('/data'))
26
+ return join(data.slice(0, -5), 'keys');
27
+ return join(data, 'keys');
28
+ }
29
+ export function fingerprintProducerBytes(buf) {
30
+ return createHash('sha256').update(buf).digest('hex').slice(0, 16);
31
+ }
32
+ function jsonType(buf) {
33
+ const text = buf.toString('utf8').trim();
34
+ if (!text.startsWith('{'))
35
+ return null;
36
+ try {
37
+ const raw = JSON.parse(text);
38
+ return typeof raw.type === 'string' ? raw.type : null;
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ export function decodeProducerPayload(raw) {
45
+ const s = String(raw ?? '');
46
+ const trimmed = s.trim();
47
+ if (!trimmed)
48
+ return Buffer.alloc(0);
49
+ if (trimmed.startsWith('{') || trimmed.startsWith('['))
50
+ return Buffer.from(trimmed, 'utf8');
51
+ const b64 = trimmed.replace(/\s+/g, '');
52
+ if (/^[A-Za-z0-9+/]+=*$/.test(b64) && b64.length >= 8) {
53
+ try {
54
+ const decoded = Buffer.from(b64, 'base64');
55
+ if (decoded.length > 0)
56
+ return decoded;
57
+ }
58
+ catch {
59
+ /* fall through */
60
+ }
61
+ }
62
+ return Buffer.from(s, 'utf8');
63
+ }
64
+ export function validateProducerFile(slot, buf) {
65
+ if (!buf.length)
66
+ return { ok: false, error: 'producerEmpty' };
67
+ if (buf.length > ADA_PRODUCER_MAX_BYTES)
68
+ return { ok: false, error: 'producerTooLarge' };
69
+ const type = jsonType(buf);
70
+ if (type && COLD_TYPE_RE.test(type) && !KES_TYPE_RE.test(type) && !VRF_TYPE_RE.test(type) && !OPCERT_TYPE_RE.test(type)) {
71
+ return { ok: false, error: 'producerColdRejected' };
72
+ }
73
+ if (slot === 'kes') {
74
+ if (type && COLD_TYPE_RE.test(type) && !KES_TYPE_RE.test(type))
75
+ return { ok: false, error: 'producerColdRejected' };
76
+ if (type && !KES_TYPE_RE.test(type))
77
+ return { ok: false, error: 'producerBadType' };
78
+ if (!type)
79
+ return { ok: false, error: 'producerBadType' };
80
+ return { ok: true };
81
+ }
82
+ if (slot === 'vrf') {
83
+ if (type && COLD_TYPE_RE.test(type) && !VRF_TYPE_RE.test(type))
84
+ return { ok: false, error: 'producerColdRejected' };
85
+ if (type && !VRF_TYPE_RE.test(type))
86
+ return { ok: false, error: 'producerBadType' };
87
+ if (!type)
88
+ return { ok: false, error: 'producerBadType' };
89
+ return { ok: true };
90
+ }
91
+ if (type && COLD_TYPE_RE.test(type) && !OPCERT_TYPE_RE.test(type)) {
92
+ return { ok: false, error: 'producerColdRejected' };
93
+ }
94
+ if (type && !OPCERT_TYPE_RE.test(type))
95
+ return { ok: false, error: 'producerBadType' };
96
+ return { ok: true };
97
+ }
98
+ export function writeProducerFile(keysDir, slot, buf) {
99
+ mkdirSync(keysDir, { recursive: true, mode: 0o700 });
100
+ try {
101
+ chmodSync(keysDir, 0o700);
102
+ }
103
+ catch {
104
+ /* umask */
105
+ }
106
+ const path = join(keysDir, ADA_PRODUCER_FILES[slot]);
107
+ writeFileSync(path, buf, { mode: 0o600 });
108
+ try {
109
+ chmodSync(path, 0o600);
110
+ }
111
+ catch {
112
+ /* umask */
113
+ }
114
+ return path;
115
+ }
116
+ export function removeProducerKeys(keysDir) {
117
+ rmSync(keysDir, { recursive: true, force: true });
118
+ }
119
+ export function readProducerFile(keysDir, slot) {
120
+ const path = join(keysDir, ADA_PRODUCER_FILES[slot]);
121
+ if (!existsSync(path))
122
+ return null;
123
+ try {
124
+ return readFileSync(path);
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ }
130
+ export function readProducerStatus(keysDir, attachedAt) {
131
+ const kes = readProducerFile(keysDir, 'kes');
132
+ const vrf = readProducerFile(keysDir, 'vrf');
133
+ const opcert = readProducerFile(keysDir, 'opcert');
134
+ const kesPresent = Boolean(kes?.length);
135
+ const vrfPresent = Boolean(vrf?.length);
136
+ const opcertPresent = Boolean(opcert?.length);
137
+ const attached = kesPresent && vrfPresent && opcertPresent;
138
+ return {
139
+ attached,
140
+ kesPresent,
141
+ vrfPresent,
142
+ opcertPresent,
143
+ kesFp: kes ? fingerprintProducerBytes(kes) : null,
144
+ vrfFp: vrf ? fingerprintProducerBytes(vrf) : null,
145
+ opcertFp: opcert ? fingerprintProducerBytes(opcert) : null,
146
+ attachedAt: attached ? attachedAt ?? null : null,
147
+ };
148
+ }
149
+ export function adaProducerReady(spec, dataDir) {
150
+ const dir = producerKeysDirFromSpec(spec, dataDir);
151
+ return readProducerStatus(dir, spec.cardanoProducer?.attachedAt).attached;
152
+ }
153
+ export function enrichCardanoProducer(spec, dataDir) {
154
+ if (spec.chain !== 'ada') {
155
+ if (!spec.cardanoProducer)
156
+ return spec;
157
+ const { cardanoProducer: _drop, ...rest } = spec;
158
+ return rest;
159
+ }
160
+ const status = readProducerStatus(producerKeysDir(dataDir, spec.id), spec.cardanoProducer?.attachedAt);
161
+ return { ...spec, cardanoProducer: status };
162
+ }
163
+ //# sourceMappingURL=ada-producer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ada-producer.js","sourceRoot":"","sources":["../../../src/hosting/validators/ada-producer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,WAAW;CACX,CAAC;AAIX,MAAM,YAAY,GAAG,wCAAwC,CAAC;AAC9D,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,cAAc,GAAG,oDAAoD,CAAC;AAE5E,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,EAAU;IACzD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAA0B,EAAE,OAAgB;IAClF,IAAI,OAAO;QAAE,OAAO,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;QACnD,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAqB,EACrB,GAAW;IAEX,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC9D,IAAI,GAAG,CAAC,MAAM,GAAG,sBAAsB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QACpH,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QACpF,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QACpH,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QACpF,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACvF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAAqB,EAAE,GAAW;IACnF,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,IAAqB;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,UAA0B;IAC5E,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,IAAI,aAAa,CAAC;IAC3D,OAAO;QACL,QAAQ;QACR,UAAU;QACV,UAAU;QACV,aAAa;QACb,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QACjD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QACjD,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1D,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA0B,EAAE,OAAgB;IAC3E,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAA0B,EAC1B,OAAe;IAEf,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACvG,OAAO,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Cardano adapter — official cardano-node image, relay-first.
3
- * Block-producer keys are never written. Mithril restore is a one-click hook.
3
+ * Producer uses IntersectMBO CARDANO_BLOCK_PRODUCER env in merge mode.
4
+ * The panel never generates keys; cold keys are refused on attach.
4
5
  */
5
6
  import type { ValidatorInstanceDto } from 'ysk-server-shared';
6
7
  import type { ValidatorHostPlan, ValidatorNodeStatus } from './base.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ada.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/ada.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIxE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAGpF;AAKD,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAKlE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAmBtE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CAc5E;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAWA;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAcxF"}
1
+ {"version":3,"file":"ada.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/ada.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKxE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAGpF;AAKD,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAKlE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAiCtE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CAoB5E;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAWA;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAcxF"}
@@ -1,5 +1,6 @@
1
1
  import { v1ValidatorClients } from '../registry.js';
2
2
  import { composeBind } from '../compose-runner.js';
3
+ import { adaProducerReady, producerKeysDirFromSpec } from '../ada-producer.js';
3
4
  export function cardanoNetworkEnv(network) {
4
5
  if (network === 'mainnet' || network === 'preprod')
5
6
  return network;
@@ -18,30 +19,50 @@ export function buildAdaComposeYaml(spec) {
18
19
  const p2p = spec.ports.p2p ?? 3001;
19
20
  const metrics = spec.ports.metrics ?? 12798;
20
21
  const network = cardanoNetworkEnv(spec.network);
22
+ const producer = adaProducerReady(spec);
23
+ const keysDir = producerKeysDirFromSpec(spec);
24
+ // Official 11.0.1 entrypoint: NETWORK alone is scripts mode (run-network) and
25
+ // does not honour extra compose command flags. Merge mode (empty JSON merge)
26
+ // plus CARDANO_BLOCK_PRODUCER is what run-node uses to add --shelley-* keys.
27
+ const producerEnv = producer
28
+ ? ` CARDANO_CONFIG_JSON_MERGE: "{}"
29
+ CARDANO_BLOCK_PRODUCER: "true"
30
+ CARDANO_SHELLEY_KES_KEY: /keys/kes.skey
31
+ CARDANO_SHELLEY_VRF_KEY: /keys/vrf.skey
32
+ CARDANO_SHELLEY_OPERATIONAL_CERTIFICATE: /keys/node.cert
33
+ `
34
+ : '';
35
+ const keysVol = producer ? `\n - ${composeBind(keysDir, '/keys', 'ro')}` : '';
21
36
  return `# ysk-server validators ada — generated
22
- # Relay-first. No block-producer keys. Mithril is one-click from the panel.
37
+ # ${producer ? 'Block producer: official CARDANO_BLOCK_PRODUCER env. Hot keys mounted read-only. Cold keys stay offline.' : 'Relay-first. No block-producer keys. Mithril is one-click from the panel.'}
23
38
  services:
24
39
  node:
25
40
  image: ${img}
26
41
  restart: unless-stopped
27
42
  environment:
28
43
  NETWORK: ${network}
29
- ports:
44
+ ${producerEnv} ports:
30
45
  - "0.0.0.0:${p2p}:3001"
31
46
  - "127.0.0.1:${metrics}:12798"
32
47
  volumes:
33
- - ${composeBind(spec.dataPath, '/data')}
48
+ - ${composeBind(spec.dataPath, '/data')}${keysVol}
34
49
  `;
35
50
  }
36
51
  export function planAdaInstall(spec) {
37
52
  const clients = v1ValidatorClients('ada');
38
53
  return {
39
- notes: [
40
- 'cardano-node relay',
41
- 'NETWORK env selects preview/preprod/mainnet',
42
- 'no block-producer keys',
43
- 'mithril one-click restore available',
44
- ],
54
+ notes: adaProducerReady(spec)
55
+ ? [
56
+ 'cardano-node block producer',
57
+ 'NETWORK env selects preview/preprod/mainnet',
58
+ 'hot keys kes/vrf/opcert only',
59
+ ]
60
+ : [
61
+ 'cardano-node relay',
62
+ 'NETWORK env selects preview/preprod/mainnet',
63
+ 'no block-producer keys',
64
+ 'mithril one-click restore available',
65
+ ],
45
66
  composeYaml: buildAdaComposeYaml(spec),
46
67
  dataPath: spec.dataPath,
47
68
  images: clients.map((c) => `${c.image}:${c.tag}`),
@@ -1 +1 @@
1
- {"version":3,"file":"ada.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/ada.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ada.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/ada.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export declare function buildAvaxComposeYaml(spec: ValidatorInstanceDto): string
7
7
  export declare function planAvaxInstall(spec: ValidatorInstanceDto): ValidatorHostPlan;
8
8
  export declare function parseAvaxHealth(body: unknown): {
9
9
  healthy: boolean;
10
+ lastError: string | null;
11
+ peers: number | null;
10
12
  };
11
13
  export declare function probeAvaxStatus(spec: ValidatorInstanceDto, fetchFn?: typeof fetch): Promise<{
12
14
  syncProgress: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"avax.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/avax.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAKnD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,IAAI,CAI9E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAyBvE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CAS7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAKnE;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAmBD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAYF,qFAAqF;AACrF,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA6B9B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB"}
1
+ {"version":3,"file":"avax.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/avax.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAKnD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,IAAI,CAI9E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA0BvE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CAS7E;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAmBA;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAmBD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAYF,qFAAqF;AACrF,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA6B9B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB"}
@@ -17,7 +17,7 @@ export function ensureAvaxChainConfig(dataPath, stateSync = true) {
17
17
  }
18
18
  export function buildAvaxComposeYaml(spec) {
19
19
  const node = spec.clients.node ?? v1ValidatorClients('avax')[0];
20
- const img = `${node?.image ?? 'avaplatform/avalanchego'}:${node?.tag ?? 'v1.13.5'}`;
20
+ const img = `${node?.image ?? 'avaplatform/avalanchego'}:${node?.tag ?? 'v1.14.1'}`;
21
21
  const rpc = spec.ports.rpc ?? 9650;
22
22
  const p2p = spec.ports.p2p ?? 9651;
23
23
  const netId = spec.network === 'mainnet' ? 'mainnet' : 'fuji';
@@ -32,11 +32,12 @@ services:
32
32
  - --http-host=0.0.0.0
33
33
  - --http-port=9650
34
34
  - --staking-port=9651
35
+ - --public-ip-resolution-service=ifconfigMe
35
36
  - --db-dir=/data
36
37
  - --chain-config-dir=/data/configs/chains
37
38
  ports:
38
39
  - "127.0.0.1:${rpc}:9650"
39
- - "0.0.0.0:${p2p}:9651"
40
+ - "0.0.0.0:${p2p}:9651/tcp"
40
41
  volumes:
41
42
  - ${composeBind(spec.dataPath, '/data')}
42
43
  `;
@@ -51,22 +52,39 @@ export function planAvaxInstall(spec) {
51
52
  ports: spec.ports,
52
53
  };
53
54
  }
55
+ function asRecord(v) {
56
+ return v && typeof v === 'object' && !Array.isArray(v) ? v : null;
57
+ }
54
58
  export function parseAvaxHealth(body) {
55
- if (body && typeof body === 'object' && 'healthy' in body) {
56
- return { healthy: Boolean(body.healthy) };
57
- }
58
- return { healthy: false };
59
+ const top = asRecord(body);
60
+ const result = asRecord(top?.result) ?? top;
61
+ if (!result)
62
+ return { healthy: false, lastError: 'bad health', peers: null };
63
+ const checks = asRecord(result.checks) ?? asRecord(result.reason) ?? result;
64
+ const network = asRecord(checks.network);
65
+ const netMsg = asRecord(network?.message);
66
+ const peers = typeof netMsg?.connectedPeers === 'number' && Number.isFinite(netMsg.connectedPeers)
67
+ ? netMsg.connectedPeers
68
+ : null;
69
+ const healthy = result.healthy === true;
70
+ if (healthy)
71
+ return { healthy: true, lastError: null, peers };
72
+ const boot = asRecord(checks.bootstrapped);
73
+ const err = (typeof network?.error === 'string' && network.error) ||
74
+ (typeof boot?.error === 'string' && boot.error) ||
75
+ 'unhealthy';
76
+ return { healthy: false, lastError: err.slice(0, 280), peers };
59
77
  }
60
78
  export async function probeAvaxStatus(spec, fetchFn = fetch) {
61
79
  const url = `http://127.0.0.1:${spec.ports.rpc ?? 9650}/ext/health`;
62
80
  try {
63
81
  const res = await fetchFn(url);
64
- const healthy = parseAvaxHealth(await readRpcJson(res)).healthy;
82
+ const health = parseAvaxHealth(await readRpcJson(res));
65
83
  return {
66
- syncProgress: healthy ? 1 : null,
67
- peers: null,
84
+ syncProgress: health.healthy ? 1 : null,
85
+ peers: health.peers,
68
86
  version: 'avalanchego',
69
- lastError: healthy ? null : 'unhealthy',
87
+ lastError: health.lastError,
70
88
  };
71
89
  }
72
90
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"avax.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/avax.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avax.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/avax.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * Ethereum EL × CL compose fragments. JWT + localhost RPC on every combo.
3
3
  */
4
4
  import type { ValidatorInstanceDto } from 'ysk-server-shared';
5
+ /** Community checkpoint-sync endpoints (eth-clients list). First URL is used. */
6
+ export declare const ETH_CHECKPOINT_FALLBACKS: Record<string, readonly string[]>;
5
7
  export declare const ETH_CHECKPOINT: Record<string, string>;
6
8
  export declare const ETH_EL_IDS: readonly ["reth", "geth", "nethermind"];
7
9
  export declare const ETH_CL_IDS: readonly ["lighthouse", "prysm", "teku", "nimbus"];
@@ -1 +1 @@
1
- {"version":3,"file":"eth-clients.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/eth-clients.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIjD,CAAC;AAEF,eAAO,MAAM,UAAU,yCAA0C,CAAC;AAClE,eAAO,MAAM,UAAU,oDAAqD,CAAC;AAC7E,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAEjD;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAEjD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAG/E;AAWD,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA+F9E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAK1D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAoH9E"}
1
+ {"version":3,"file":"eth-clients.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/eth-clients.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAStE,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIjD,CAAC;AAEF,eAAO,MAAM,UAAU,yCAA0C,CAAC;AAClE,eAAO,MAAM,UAAU,oDAAqD,CAAC;AAC7E,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAEjD;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAEjD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAG/E;AAgBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAsG9E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAK1D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA6H9E"}
@@ -1,8 +1,19 @@
1
1
  import { composeBind } from '../compose-runner.js';
2
+ /** Community checkpoint-sync endpoints (eth-clients list). First URL is used. */
3
+ export const ETH_CHECKPOINT_FALLBACKS = {
4
+ hoodi: [
5
+ 'https://hoodi.beaconstate.ethstaker.cc/',
6
+ 'https://beaconstate-hoodi.chainsafe.io',
7
+ 'https://hoodi-checkpoint-sync.attestant.io',
8
+ 'https://hoodi.checkpoint.sigp.io',
9
+ ],
10
+ sepolia: ['https://checkpoint-sync.sepolia.ethpandaops.io'],
11
+ mainnet: ['https://beaconstate.info'],
12
+ };
2
13
  export const ETH_CHECKPOINT = {
3
- hoodi: 'https://hoodi.checkpoint.sigp.io',
4
- sepolia: 'https://checkpoint-sync.sepolia.ethpandaops.io',
5
- mainnet: 'https://beaconstate.info',
14
+ hoodi: ETH_CHECKPOINT_FALLBACKS.hoodi[0],
15
+ sepolia: ETH_CHECKPOINT_FALLBACKS.sepolia[0],
16
+ mainnet: ETH_CHECKPOINT_FALLBACKS.mainnet[0],
6
17
  };
7
18
  export const ETH_EL_IDS = ['reth', 'geth', 'nethermind'];
8
19
  export const ETH_CL_IDS = ['lighthouse', 'prysm', 'teku', 'nimbus'];
@@ -23,7 +34,11 @@ function elImage(spec) {
23
34
  }
24
35
  function clImage(spec) {
25
36
  const c = spec.clients.cl;
26
- return { id: c?.id ?? 'lighthouse', image: `${c?.image ?? 'sigp/lighthouse'}:${c?.tag ?? 'v7.1.0'}` };
37
+ return { id: c?.id ?? 'lighthouse', image: `${c?.image ?? 'sigp/lighthouse'}:${c?.tag ?? 'v8.2.2'}` };
38
+ }
39
+ function p2pTcpUdp(hostPort, containerPort) {
40
+ return ` - "0.0.0.0:${hostPort}:${containerPort}/tcp"
41
+ - "0.0.0.0:${hostPort}:${containerPort}/udp"`;
27
42
  }
28
43
  export function buildElService(spec, jwt) {
29
44
  const net = ethNetworkFlag(spec.network);
@@ -54,10 +69,11 @@ export function buildElService(spec, jwt) {
54
69
  - ${jwt}
55
70
  - --port
56
71
  - "30303"
72
+ - --nat=stun
57
73
  ${netFlag.join('\n')}
58
74
  ports:
59
75
  - "127.0.0.1:${rpc}:8545"
60
- - "0.0.0.0:${p2p}:30303"
76
+ ${p2pTcpUdp(p2p, 30303)}
61
77
  volumes:
62
78
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/geth')}
63
79
  - ${jwtVol}`;
@@ -83,9 +99,13 @@ ${netFlag.join('\n')}
83
99
  - "8551"
84
100
  - --JsonRpc.JwtSecretFile
85
101
  - ${jwt}
102
+ - --Network.DiscoveryPort
103
+ - "30303"
104
+ - --Network.P2PPort
105
+ - "30303"
86
106
  ports:
87
107
  - "127.0.0.1:${rpc}:8545"
88
- - "0.0.0.0:${p2p}:30303"
108
+ ${p2pTcpUdp(p2p, 30303)}
89
109
  volumes:
90
110
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/nethermind')}
91
111
  - ${jwtVol}`;
@@ -114,9 +134,11 @@ ${netFlag.join('\n')}
114
134
  - ${jwt}
115
135
  - --port
116
136
  - "30303"
137
+ - --nat
138
+ - publicip
117
139
  ports:
118
140
  - "127.0.0.1:${rpc}:8545"
119
- - "0.0.0.0:${p2p}:30303"
141
+ ${p2pTcpUdp(p2p, 30303)}
120
142
  volumes:
121
143
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/reth')}
122
144
  - ${jwtVol}`;
@@ -157,9 +179,11 @@ export function buildClService(spec, jwt) {
157
179
  - "3500"
158
180
  - --p2p-tcp-port
159
181
  - "9000"
182
+ - --p2p-udp-port
183
+ - "9000"
160
184
  ports:
161
185
  - "127.0.0.1:${beacon}:3500"
162
- - "0.0.0.0:${p2pCl}:9000"
186
+ ${p2pTcpUdp(p2pCl, 9000)}
163
187
  volumes:
164
188
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/prysm')}
165
189
  - ${jwtVol}`;
@@ -180,9 +204,10 @@ export function buildClService(spec, jwt) {
180
204
  - --rest-api-interface=0.0.0.0
181
205
  - --rest-api-port=5051
182
206
  - --p2p-port=9000
207
+ - --p2p-advertised-port=9000
183
208
  ports:
184
209
  - "127.0.0.1:${beacon}:5051"
185
- - "0.0.0.0:${p2pCl}:9000"
210
+ ${p2pTcpUdp(p2pCl, 9000)}
186
211
  volumes:
187
212
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/teku')}
188
213
  - ${jwtVol}`;
@@ -196,17 +221,18 @@ export function buildClService(spec, jwt) {
196
221
  command:
197
222
  - --network=${net}
198
223
  - --data-dir=/data/nimbus
199
- - --web3-url=http://el:8551
224
+ - --el=http://el:8551
200
225
  - --jwt-secret=${jwt}
201
- - --trusted-node-url=${cp}
226
+ - --external-beacon-api-url=${cp}
202
227
  - --rest
203
228
  - --rest-address=0.0.0.0
204
229
  - --rest-port=5052
205
230
  - --tcp-port=9000
231
+ - --udp-port=9000
206
232
  - --non-interactive
207
233
  ports:
208
234
  - "127.0.0.1:${beacon}:5052"
209
- - "0.0.0.0:${p2pCl}:9000"
235
+ ${p2pTcpUdp(p2pCl, 9000)}
210
236
  volumes:
211
237
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/nimbus')}
212
238
  - ${jwtVol}`;
@@ -236,10 +262,15 @@ export function buildClService(spec, jwt) {
236
262
  - "5052"
237
263
  - --port
238
264
  - "9000"
239
- - --disable-deposit-contract-sync
265
+ - --discovery-port
266
+ - "9000"
267
+ - --enr-udp-port
268
+ - "9000"
269
+ - --enr-tcp-port
270
+ - "9000"
240
271
  ports:
241
272
  - "127.0.0.1:${beacon}:5052"
242
- - "0.0.0.0:${p2pCl}:9000"
273
+ ${p2pTcpUdp(p2pCl, 9000)}
243
274
  volumes:
244
275
  - ${composeBind(`${spec.dataPath}/${id}`, '/data/lighthouse')}
245
276
  - ${jwtVol}`;
@@ -1 +1 @@
1
- {"version":3,"file":"eth-clients.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/eth-clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eth-clients.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/eth-clients.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eth.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/eth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAa5F;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM9D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAStE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CAgB5E;AAED,eAAO,MAAM,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,aAAa,CAAC,GAAG;IAClE,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;CAO5C,CAAC;AAEF,wBAAsB,cAAc,CAClC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAqCxF"}
1
+ {"version":3,"file":"eth.d.ts","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/eth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAa5F;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM9D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAYtE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CAgB5E;AAED,eAAO,MAAM,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,aAAa,CAAC,GAAG;IAClE,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;CAO5C,CAAC;AAEF,wBAAsB,cAAc,CAClC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAqCxF"}