From 82ebc01054582d88196e0dfc101cf41c46624df1 Mon Sep 17 00:00:00 2001 From: Nam Chu Hoai Date: Sat, 11 Feb 2023 09:19:28 -0500 Subject: [PATCH] Enroll ZKV/Staked to default ism (#1796) * Enroll ZKV/Staked to default ism * Increase threshold and remove 2nd abacus works signer --- .../config/environments/mainnet2/core.ts | 37 ++++++---- .../environments/mainnet2/validators.ts | 72 ------------------- .../list-validator-checkpoint-indices.ts | 6 +- typescript/infra/scripts/verify-validators.ts | 13 ++-- typescript/infra/src/agents/aws/validator.ts | 2 +- 5 files changed, 36 insertions(+), 94 deletions(-) diff --git a/typescript/infra/config/environments/mainnet2/core.ts b/typescript/infra/config/environments/mainnet2/core.ts index 99ff21065..17e3733ea 100644 --- a/typescript/infra/config/environments/mainnet2/core.ts +++ b/typescript/infra/config/environments/mainnet2/core.ts @@ -6,91 +6,98 @@ export const core: ChainMap = { celo: { owner: '0x1DE69322B55AC7E0999F8e7738a1428C8b130E4d', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0x1f20274b1210046769d48174c2f0e7c25ca7d5c5', - '0xef6db730fca69e1438c9ea19fefb3060901a8dfa', '0x3bc014bafa43f93d534aed34f750997cdffcf007', '0xd79d506d741fa735938f7b7847a926e34a6fe6b0', '0xe4a258bc61e65914c2a477b2a8a433ab4ebdf44b', + '0x6aea63b0be4679c1385c26a92a3ff8aa6a8379f2', // staked + '0xc0085e1a49bcc69e534272adb82c74c0e007e1ca', // zkv ], }, }, ethereum: { owner: '0x12C5AB61Fe17dF9c65739DBa73dF294708f78d23', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0x4c327ccb881a7542be77500b2833dc84c839e7b7', - '0xf4db15933d204b38c17cc027c3f1c9f3c5da9a7c', '0x84cb373148ef9112b277e68acf676fefa9a9a9a0', '0x0d860c2b28bec3af4fd3a5997283e460ff6f2789', '0xd4c1211f0eefb97a846c4e6d6589832e52fc03db', + '0x600c90404d5c9df885404d2cc5350c9b314ea3a2', // staked + '0x892DC66F5B2f8C438E03f6323394e34A9C24F2D6', // zkv ], }, }, avalanche: { owner: '0xDF9B28B76877f1b1B4B8a11526Eb7D8D7C49f4f3', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0xa7aa52623fe3d78c343008c95894be669e218b8d', - '0x37a2c96f82dc6c7fa290d858d02ea5d1e0ce86ff', '0xb6004433fb04f643e2d48ae765c0e7f890f0bc0c', '0xa07e213e0985b21a6128e6c22ab5fb73948b0cc2', '0x73853ed9a5f6f2e4c521970a94d43469e3cdaea6', + '0xbd2e136cda02ba627ca882e49b184cbe976081c8', // staked + '0x1418126f944a44dad9edbab32294a8c890e7a9e3', // zkv ], }, }, polygon: { owner: '0x0D195469f76146F6ae3De8fc887e0f0DFBA691e7', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0x59a001c3451e7f9f3b4759ea215382c1e9aa5fc1', - '0x3e549171d0954194442d6b16fa780d1ec83072fd', '0x009fb042d28944017177920c1d40da02bfebf474', '0xba4b13e23705a5919c1901150d9697e8ffb3ea71', '0x2faa4071b718972f9b4beec1d8cbaa4eb6cca6c6', + '0x5ae9b0f833dfe09ef455562a1f603f1634504dd6', // staked + '0x6a163d312f7352a95c9b81dca15078d5bf77a442', // zkv ], }, }, bsc: { owner: '0xA0d3dcB9d61Fba32cc02Ad63983e101b29E2f28a', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0xcc84b1eb711e5076b2755cf4ad1d2b42c458a45e', - '0x62229ff38de88464fd49d79bea0cdc48ebdebd79', '0xefe34eae2bca1846b895d2d0762ec21796aa196a', '0x662674e80e189b0861d6835c287693f50ee0c2ff', '0x8a0f59075af466841808c529624807656309c9da', + '0xdd2ff046ccd748a456b4757a73d47f165469669f', // staked + '0x034c4924c30ec4aa1b7f3ad58548988f0971e1bf', // zkv ], }, }, arbitrum: { owner: '0xbA47E1b575980B7D1b1508cc48bE1Df4EE508111', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0xbcb815f38d481a5eba4d7ac4c9e74d9d0fc2a7e7', - '0xa0d92ee2156f74b18c6d116527e3c9001f123dac', '0xd839424e2e5ace0a81152298dc2b1e3bb3c7fb20', '0xb8085c954b75b7088bcce69e61d12fcef797cd8d', '0x9856dcb10fd6e5407fa74b5ab1d3b96cc193e9b7', + '0x505dff4e0827aa5065f5e001db888e0569d46490', // staked + '0x25c6779d4610f940bf2488732e10bcffb9d36f81', // ZKV ], }, }, optimism: { owner: '0xb523CFAf45AACF472859f8B793CB0BFDB16bD257', multisigIsm: { - threshold: 3, + threshold: 4, validators: [ '0x9f2296d5cfc6b5176adc7716c7596898ded13d35', - '0xd2d9baadd72d3a9983b06ba5f103856e5fea63cb', '0x9c10bbe8efa03a8f49dfdb5c549258e3a8dca097', '0x62144d4a52a0a0335ea5bb84392ef9912461d9dd', '0xaff4718d5d637466ad07441ee3b7c4af8e328dbd', + '0xc64d1efeab8ae222bc889fe669f75d21b23005d9', // staked + '0xfa174eb2b4921bb652bc1ada3e8b00e7e280bf3c', // ZKV ], }, }, @@ -100,9 +107,9 @@ export const core: ChainMap = { threshold: 3, validators: [ '0x237243d32d10e3bdbbf8dbcccc98ad44c1c172ea', - '0x02424d4222f35c04da62a2f2dea8c778030bb324', '0x9509c8cf0a06955f27342262af501b74874e98fb', '0xb7113c999e4d587b162dd1a28c73f3f51c6bdcdc', + '0x26725501597d47352a23cd26f122709f69ad53bc', // staked ], }, }, diff --git a/typescript/infra/config/environments/mainnet2/validators.ts b/typescript/infra/config/environments/mainnet2/validators.ts index f5cbccdef..d676e47db 100644 --- a/typescript/infra/config/environments/mainnet2/validators.ts +++ b/typescript/infra/config/environments/mainnet2/validators.ts @@ -28,15 +28,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0xef6db730fca69e1438c9ea19fefb3060901a8dfa', - name: s3BucketName('celo', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('celo', 1), - region: s3BucketRegion, - }, - }, ], }, ethereum: { @@ -52,15 +43,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0xf4db15933d204b38c17cc027c3f1c9f3c5da9a7c', - name: s3BucketName('ethereum', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('ethereum', 1), - region: s3BucketRegion, - }, - }, ], }, avalanche: { @@ -76,15 +58,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0x37a2c96f82dc6c7fa290d858d02ea5d1e0ce86ff', - name: s3BucketName('avalanche', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('avalanche', 1), - region: s3BucketRegion, - }, - }, ], }, polygon: { @@ -100,15 +73,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0x3e549171d0954194442d6b16fa780d1ec83072fd', - name: s3BucketName('polygon', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('polygon', 1), - region: s3BucketRegion, - }, - }, ], }, bsc: { @@ -124,15 +88,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0x62229ff38de88464fd49d79bea0cdc48ebdebd79', - name: s3BucketName('bsc', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('bsc', 1), - region: s3BucketRegion, - }, - }, ], }, arbitrum: { @@ -148,15 +103,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0xa0d92ee2156f74b18c6d116527e3c9001f123dac', - name: s3BucketName('arbitrum', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('arbitrum', 1), - region: s3BucketRegion, - }, - }, ], }, optimism: { @@ -172,15 +118,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0xd2d9baadd72d3a9983b06ba5f103856e5fea63cb', - name: s3BucketName('optimism', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('optimism', 1), - region: s3BucketRegion, - }, - }, ], }, moonbeam: { @@ -196,15 +133,6 @@ export const validators: ChainValidatorConfigs = { region: s3BucketRegion, }, }, - { - address: '0x02424d4222f35c04da62a2f2dea8c778030bb324', - name: s3BucketName('moonbeam', 1), - checkpointSyncer: { - type: CheckpointSyncerType.S3, - bucket: s3BucketName('moonbeam', 1), - region: s3BucketRegion, - }, - }, ], }, gnosis: { diff --git a/typescript/infra/scripts/list-validator-checkpoint-indices.ts b/typescript/infra/scripts/list-validator-checkpoint-indices.ts index d23053d39..cd8b69807 100644 --- a/typescript/infra/scripts/list-validator-checkpoint-indices.ts +++ b/typescript/infra/scripts/list-validator-checkpoint-indices.ts @@ -30,11 +30,13 @@ async function main() { await validatorAnnounce.getAnnouncedStorageLocations([validator]); // Only use the latest announcement for now let index = null; + let identifier = validator; if (storageLocations.length == 1 && storageLocations[0].length == 1) { try { const s3Validator = await S3Validator.fromStorageLocation( storageLocations[0][0], ); + identifier = storageLocations[0][0]; index = await s3Validator.getLatestCheckpointIndex(); } catch (e) { console.error(e); @@ -42,13 +44,13 @@ async function main() { } return { chain, - address: validator, + identifier, index, }; }, ); - console.table(indices, ['chain', 'index', 'address']); + console.table(indices, ['chain', 'index', 'identifier']); } main().catch(console.error); diff --git a/typescript/infra/scripts/verify-validators.ts b/typescript/infra/scripts/verify-validators.ts index f004db10e..de39b9175 100644 --- a/typescript/infra/scripts/verify-validators.ts +++ b/typescript/infra/scripts/verify-validators.ts @@ -28,26 +28,31 @@ async function main() { if (storageLocations[i].length != 1) { throw new Error('Only support single announcement'); } - return S3Validator.fromStorageLocation(validator); + return S3Validator.fromStorageLocation(storageLocations[i][0]); }), ); const controlValidator = validators[0]; for (let i = 1; i < validators.length; i++) { const prospectiveValidator = validators[i]; const address = prospectiveValidator.address; + const bucket = prospectiveValidator.s3Bucket.bucket; try { const metrics = await prospectiveValidator.compare(controlValidator); const valid = metrics.filter((metric) => metric.status !== CheckpointStatus.VALID) .length === 0; if (!valid) { - console.log(`${address} has >=1 non-valid checkpoints for ${chain}`); + console.log( + `${address}@${bucket} has >=1 non-valid checkpoints for ${chain}`, + ); console.log(JSON.stringify(metrics, null, 2)); } else { - console.log(`${address} has valid checkpoints for ${chain}`); + console.log( + `${address}@${bucket} has valid checkpoints for ${chain}`, + ); } } catch (error) { - console.error(`Comparing validator ${address} failed:`); + console.error(`Comparing validator ${address}@${bucket} failed:`); console.error(error); throw error; } diff --git a/typescript/infra/src/agents/aws/validator.ts b/typescript/infra/src/agents/aws/validator.ts index 75f147d54..0476ae959 100644 --- a/typescript/infra/src/agents/aws/validator.ts +++ b/typescript/infra/src/agents/aws/validator.ts @@ -44,7 +44,7 @@ const ANNOUNCEMENT_KEY = 'announcement.json'; * Extension of BaseValidator that includes AWS S3 utilities. */ export class S3Validator extends BaseValidator { - private s3Bucket: S3Wrapper; + s3Bucket: S3Wrapper; constructor( address: string,