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.
- package/dist/hosting/validators/ada-producer.d.ts +25 -0
- package/dist/hosting/validators/ada-producer.d.ts.map +1 -0
- package/dist/hosting/validators/ada-producer.js +163 -0
- package/dist/hosting/validators/ada-producer.js.map +1 -0
- package/dist/hosting/validators/adapters/ada.d.ts +2 -1
- package/dist/hosting/validators/adapters/ada.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/ada.js +30 -9
- package/dist/hosting/validators/adapters/ada.js.map +1 -1
- package/dist/hosting/validators/adapters/avax.d.ts +2 -0
- package/dist/hosting/validators/adapters/avax.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/avax.js +28 -10
- package/dist/hosting/validators/adapters/avax.js.map +1 -1
- package/dist/hosting/validators/adapters/eth-clients.d.ts +2 -0
- package/dist/hosting/validators/adapters/eth-clients.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/eth-clients.js +45 -14
- package/dist/hosting/validators/adapters/eth-clients.js.map +1 -1
- package/dist/hosting/validators/adapters/eth.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/eth.js +5 -2
- package/dist/hosting/validators/adapters/eth.js.map +1 -1
- package/dist/hosting/validators/adapters/near.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/near.js +11 -2
- package/dist/hosting/validators/adapters/near.js.map +1 -1
- package/dist/hosting/validators/adapters/p2p-public-ip.d.ts +6 -0
- package/dist/hosting/validators/adapters/p2p-public-ip.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/p2p-public-ip.js +11 -0
- package/dist/hosting/validators/adapters/p2p-public-ip.js.map +1 -0
- package/dist/hosting/validators/adapters/phase2.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/phase2.js +75 -22
- package/dist/hosting/validators/adapters/phase2.js.map +1 -1
- package/dist/hosting/validators/compose-runner.d.ts +8 -0
- package/dist/hosting/validators/compose-runner.d.ts.map +1 -1
- package/dist/hosting/validators/compose-runner.js +74 -2
- package/dist/hosting/validators/compose-runner.js.map +1 -1
- package/dist/hosting/validators/disk.d.ts +2 -0
- package/dist/hosting/validators/disk.d.ts.map +1 -1
- package/dist/hosting/validators/disk.js +23 -0
- package/dist/hosting/validators/disk.js.map +1 -1
- package/dist/hosting/validators/extras.d.ts +58 -2
- package/dist/hosting/validators/extras.d.ts.map +1 -1
- package/dist/hosting/validators/extras.js +361 -6
- package/dist/hosting/validators/extras.js.map +1 -1
- package/dist/hosting/validators/index.d.ts +1 -0
- package/dist/hosting/validators/index.d.ts.map +1 -1
- package/dist/hosting/validators/index.js +1 -0
- package/dist/hosting/validators/index.js.map +1 -1
- package/dist/hosting/validators/manager.d.ts +10 -0
- package/dist/hosting/validators/manager.d.ts.map +1 -1
- package/dist/hosting/validators/manager.js +134 -5
- package/dist/hosting/validators/manager.js.map +1 -1
- package/dist/hosting/validators/ports.js +4 -4
- package/dist/hosting/validators/ports.js.map +1 -1
- package/dist/hosting/validators/registry.d.ts +7 -1
- package/dist/hosting/validators/registry.d.ts.map +1 -1
- package/dist/hosting/validators/registry.js +14 -3
- package/dist/hosting/validators/registry.js.map +1 -1
- package/dist/hosting/validators/releases.d.ts +66 -0
- package/dist/hosting/validators/releases.d.ts.map +1 -1
- package/dist/hosting/validators/releases.js +262 -21
- package/dist/hosting/validators/releases.js.map +1 -1
- package/dist/hosting/validators/runtime-status.d.ts.map +1 -1
- package/dist/hosting/validators/runtime-status.js +8 -3
- package/dist/hosting/validators/runtime-status.js.map +1 -1
- package/dist/hosting/validators/software-catalog.d.ts +10 -1
- package/dist/hosting/validators/software-catalog.d.ts.map +1 -1
- package/dist/hosting/validators/software-catalog.js +84 -3
- package/dist/hosting/validators/software-catalog.js.map +1 -1
- package/dist/hosting/validators/store.js +3 -0
- package/dist/hosting/validators/store.js.map +1 -1
- package/dist/hosting/validators/upgrade.d.ts +18 -0
- package/dist/hosting/validators/upgrade.d.ts.map +1 -1
- package/dist/hosting/validators/upgrade.js +25 -4
- package/dist/hosting/validators/upgrade.js.map +1 -1
- 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
|
-
*
|
|
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
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"ada.js","sourceRoot":"","sources":["../../../../src/hosting/validators/adapters/ada.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACnE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,SAAS,GAAG,mCAAmC,CAAC;AACtD,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEzB,MAAM,UAAU,eAAe,CAAC,IAA0B;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,0BAA0B,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAClG,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,KAAK,0BAA0B,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1F,OAAO,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC5D,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;IAC5C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC;;;;;CAKL;QACG,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,OAAO;IACL,QAAQ,CAAC,CAAC,CAAC,0GAA0G,CAAC,CAAC,CAAC,2EAA2E;;;aAG1L,GAAG;;;iBAGC,OAAO;EACtB,WAAW;mBACM,GAAG;qBACD,OAAO;;UAElB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,OAAO;CACtD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA0B;IACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO;QACL,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC;gBACE,6BAA6B;gBAC7B,6CAA6C;gBAC7C,8BAA8B;aAC/B;YACH,CAAC,CAAC;gBACE,oBAAoB;gBACpB,6CAA6C;gBAC7C,wBAAwB;gBACxB,qCAAqC;aACtC;QACL,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjD,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,IAAY;IAI1C,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACtD,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA0B,EAC1B,UAAwB,KAAK;IAE7B,MAAM,GAAG,GAAG,oBAAoB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;SAClE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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,
|
|
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.
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
|
82
|
+
const health = parseAvaxHealth(await readRpcJson(res));
|
|
65
83
|
return {
|
|
66
|
-
syncProgress: healthy ? 1 : null,
|
|
67
|
-
peers:
|
|
84
|
+
syncProgress: health.healthy ? 1 : null,
|
|
85
|
+
peers: health.peers,
|
|
68
86
|
version: 'avalanchego',
|
|
69
|
-
lastError:
|
|
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":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,SAAkB;IACjD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,SAAS,GAAG,IAAI;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvF,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA0B;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,IAAI,yBAAyB,IAAI,IAAI,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IACpF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,OAAO;;;aAGI,GAAG;;;;uBAIO,KAAK
|
|
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;
|
|
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:
|
|
4
|
-
sepolia:
|
|
5
|
-
mainnet:
|
|
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 ?? '
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- --
|
|
224
|
+
- --el=http://el:8551
|
|
200
225
|
- --jwt-secret=${jwt}
|
|
201
|
-
- --
|
|
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
|
-
|
|
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
|
-
- --
|
|
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
|
-
|
|
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":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,
|
|
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,
|
|
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"}
|