|
1 |
| -import type { MapLevels} from './../utils/index.js'; |
2 |
| -import { constMap, filterIndexes, zip, cartesianRightRecursive } from './../utils/index.js'; |
3 |
| -import type { Network } from './networks.js'; |
4 |
| - |
5 |
| -// prettier-ignore |
6 |
| -const guardianKeyAndNameEntries = [[ |
7 |
| - "Mainnet", [ |
8 |
| - ["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5", "JumpCrypto" ], |
9 |
| - ["0xfF6CB952589BDE862c25Ef4392132fb9D4A42157", "Staked" ], |
10 |
| - ["0x114De8460193bdf3A2fCf81f86a09765F4762fD1", "Figment" ], |
11 |
| - ["0x107A0086b32d7A0977926A205131d8731D39cbEB", "ChainodeTech" ], |
12 |
| - ["0x8C82B2fd82FaeD2711d59AF0F2499D16e726f6b2", "Inotel" ], |
13 |
| - ["0x11b39756C042441BE6D8650b69b54EbE715E2343", "HashQuark" ], |
14 |
| - ["0x54Ce5B4D348fb74B958e8966e2ec3dBd4958a7cd", "Chainlayer" ], |
15 |
| - ["0x15e7cAF07C4e3DC8e7C469f92C8Cd88FB8005a20", "xLabs" ], |
16 |
| - ["0x74a3bf913953D695260D88BC1aA25A4eeE363ef0", "Forbole" ], |
17 |
| - ["0x000aC0076727b35FBea2dAc28fEE5cCB0fEA768e", "StakingFund" ], |
18 |
| - ["0xAF45Ced136b9D9e24903464AE889F5C8a723FC14", "MoonletWallet" ], |
19 |
| - ["0xf93124b7c738843CBB89E864c862c38cddCccF95", "P2PValidator" ], |
20 |
| - ["0xD2CC37A4dc036a8D232b48f62cDD4731412f4890", "01Node" ], |
21 |
| - ["0xDA798F6896A3331F64b48c12D1D57Fd9cbe70811", "MCF" ], |
22 |
| - ["0x71AA1BE1D36CaFE3867910F99C09e347899C19C3", "Everstake" ], |
23 |
| - ["0x8192b6E7387CCd768277c17DAb1b7a5027c0b3Cf", "ChorusOne" ], |
24 |
| - ["0x178e21ad2E77AE06711549CFBB1f9c7a9d8096e8", "Syncnode" ], |
25 |
| - ["0x5E1487F35515d02A92753504a8D75471b9f49EdB", "Triton" ], |
26 |
| - ["0x6FbEBc898F403E4773E95feB15E80C9A99c8348d", "StakingFacilities"], |
27 |
| - ]], [ |
28 |
| - "Testnet", [ |
29 |
| - ["0x13947Bd48b18E53fdAeEe77F3473391aC727C638", "Testnet guardian"] |
30 |
| - ]] |
31 |
| -] as const satisfies MapLevels<[Network, string, string]>; |
32 |
| - |
33 |
| -export const [guardianKeys, guardianNames] = |
34 |
| - filterIndexes(zip(cartesianRightRecursive(guardianKeyAndNameEntries)), [1, 2]); |
35 |
| - |
36 |
| -export const guardianNameToKey = constMap(guardianKeyAndNameEntries, [[0, 2], 1]); |
37 |
| -export const guardianKeyToName = constMap(guardianKeyAndNameEntries, [1, [0, 2]]); |
| 1 | +import { replaceElement } from "./../utils/index.js"; |
| 2 | + |
| 3 | +// Mainnet guardian sets |
| 4 | +const guardianSet1 = [ |
| 5 | + ["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5", "Certus One"], |
| 6 | + ["0xfF6CB952589BDE862c25Ef4392132fb9D4A42157", "Staked"], |
| 7 | + ["0x114De8460193bdf3A2fCf81f86a09765F4762fD1", "Figment"], |
| 8 | + ["0x107A0086b32d7A0977926A205131d8731D39cbEB", "ChainodeTech"], |
| 9 | + ["0x8C82B2fd82FaeD2711d59AF0F2499D16e726f6b2", "Inotel"], |
| 10 | + ["0x11b39756C042441BE6D8650b69b54EbE715E2343", "HashQuark"], |
| 11 | + ["0x54Ce5B4D348fb74B958e8966e2ec3dBd4958a7cd", "ChainLayer"], |
| 12 | + ["0xeB5F7389Fa26941519f0863349C223b73a6DDEE7", "DokiaCapital"], |
| 13 | + ["0x74a3bf913953D695260D88BC1aA25A4eeE363ef0", "Forbole"], |
| 14 | + ["0x000aC0076727b35FBea2dAc28fEE5cCB0fEA768e", "Staking Fund"], |
| 15 | + ["0xAF45Ced136b9D9e24903464AE889F5C8a723FC14", "Moonlet"], |
| 16 | + ["0xf93124b7c738843CBB89E864c862c38cddCccF95", "P2P Validator"], |
| 17 | + ["0xD2CC37A4dc036a8D232b48f62cDD4731412f4890", "01node"], |
| 18 | + ["0xDA798F6896A3331F64b48c12D1D57Fd9cbe70811", "MCF"], |
| 19 | + ["0x71AA1BE1D36CaFE3867910F99C09e347899C19C3", "Everstake"], |
| 20 | + ["0x8192b6E7387CCd768277c17DAb1b7a5027c0b3Cf", "Chorus One"], |
| 21 | + ["0x178e21ad2E77AE06711549CFBB1f9c7a9d8096e8", "syncnode"], |
| 22 | + ["0x5E1487F35515d02A92753504a8D75471b9f49EdB", "Triton"], |
| 23 | + ["0x6FbEBc898F403E4773E95feB15E80C9A99c8348d", "Staking Facilities"], |
| 24 | +] as const; |
| 25 | + |
| 26 | +const guardianSet2 = replaceElement(guardianSet1, 7, [ |
| 27 | + "0x66B9590e1c41e0B226937bf9217D1d67Fd4E91F5", |
| 28 | + "FTX", |
| 29 | +] as const); |
| 30 | + |
| 31 | +const guardianSet3 = replaceElement(guardianSet2, 7, [ |
| 32 | + "0x15e7cAF07C4e3DC8e7C469f92C8Cd88FB8005a20", |
| 33 | + "xLabs", |
| 34 | +] as const); |
| 35 | + |
| 36 | +const guardianSet4 = replaceElement(guardianSet3, 0, [ |
| 37 | + "0x5893B5A76c3f739645648885bDCcC06cd70a3Cd3", |
| 38 | + "RockawayX", |
| 39 | +] as const); |
| 40 | + |
| 41 | +// Testnet guardian sets |
| 42 | +const testnetGuardianSet1 = [ |
| 43 | + ["0x13947Bd48b18E53fdAeEe77F3473391aC727C638", "Testnet guardian"], |
| 44 | +] as const; |
| 45 | + |
| 46 | +// TODO: Attempting to use `constMap` results in a type instantiation too deep error |
| 47 | +const guardianSetsMap = { |
| 48 | + Mainnet: { |
| 49 | + 1: guardianSet1, |
| 50 | + 2: guardianSet2, |
| 51 | + 3: guardianSet3, |
| 52 | + 4: guardianSet4, |
| 53 | + }, |
| 54 | + Testnet: { |
| 55 | + 1: testnetGuardianSet1, |
| 56 | + }, |
| 57 | +} as const; |
| 58 | + |
| 59 | +type GuardianSetsMap = typeof guardianSetsMap; |
| 60 | + |
| 61 | +type GuardianInfo = { |
| 62 | + address: string; |
| 63 | + name: string; |
| 64 | +}; |
| 65 | + |
| 66 | +export function getGuardianSet<N extends keyof GuardianSetsMap, I extends keyof GuardianSetsMap[N]>( |
| 67 | + network: N, |
| 68 | + index: I, |
| 69 | +): GuardianInfo[] { |
| 70 | + const guardianSet = guardianSetsMap[network][index] as readonly [string, string][]; |
| 71 | + return guardianSet.map(([address, name]) => ({ |
| 72 | + address, |
| 73 | + name, |
| 74 | + })); |
| 75 | +} |
38 | 76 |
|
39 | 77 | export const devnetGuardianPrivateKey =
|
40 | 78 | "cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0";
|
|
0 commit comments