From 95ad0b01bc710cd3159c5901932ea80f2e70ab47 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 21 Jun 2022 11:17:13 -0700 Subject: [PATCH 1/5] extract and reuse ClientDiversityWarning [Fixes #508] Adds component to Geth page --- src/components/ClientDiversityWarning.tsx | 54 +++++++++++++++++++++++ src/intl/compiled/en.json | 42 +++++++++++++----- src/intl/en.json | 21 ++++++--- src/pages/Clients/Consensus/Prysm.tsx | 30 +------------ src/pages/Clients/Execution/Geth.tsx | 5 +++ 5 files changed, 106 insertions(+), 46 deletions(-) create mode 100644 src/components/ClientDiversityWarning.tsx diff --git a/src/components/ClientDiversityWarning.tsx b/src/components/ClientDiversityWarning.tsx new file mode 100644 index 00000000..3f944228 --- /dev/null +++ b/src/components/ClientDiversityWarning.tsx @@ -0,0 +1,54 @@ +// Libary imports +import React from 'react'; +import styled from 'styled-components'; +import { FormattedMessage } from 'react-intl'; +// Component imports +import { Text } from './Text'; +import { Link } from './Link'; + +const Container = styled(Text as any)` + background: #ffdeb32e; + border: 1px solid burlywood; + padding: 30px; + border-radius: 4px; +`; + +export interface ClientDiversityWarningProps { + children: React.ReactNode; + className?: string; +} + +export const ClientDiversityWarning = (props: ClientDiversityWarningProps) => { + const { children, className } = props; + return ( + + {!!children &&

{children}

} +

+ +

+

+ +

+ +
+ ); +}; diff --git a/src/intl/compiled/en.json b/src/intl/compiled/en.json index 713ff7ab..21161d4e 100644 --- a/src/intl/compiled/en.json +++ b/src/intl/compiled/en.json @@ -5,12 +5,6 @@ "value": "Step 2: Generate deposit keys using the Ethereum Foundation deposit tool" } ], - "+M/NC/": [ - { - "type": 0, - "value": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." - } - ], "+UUcBt": [ { "type": 0, @@ -491,6 +485,12 @@ "value": "Nimbus key management documentation" } ], + "2rflCq": [ + { + "type": 0, + "value": "Client diversity is extremely important for the network health of Ethereum: A bug in a client with a share of over 33% can cause Ethereum to go offline. If the client has a supermajority (>66%), a bug could cause the chain to incorrectly split, potentially leading to slashing." + } + ], "2s0gAx": [ { "type": 0, @@ -1829,6 +1829,12 @@ "value": "Try again" } ], + "FcCHp4": [ + { + "type": 0, + "value": "Latest data on network client usage" + } + ], "Felr8P": [ { "type": 0, @@ -4397,6 +4403,12 @@ "value": "How much will I be penalized for acting maliciously?" } ], + "cnQKC2": [ + { + "type": 0, + "value": "Currently Geth is used by >66% of the network." + } + ], "cpxfOR": [ { "type": 0, @@ -5687,6 +5699,12 @@ "value": "Before you start" } ], + "oF4os+": [ + { + "type": 0, + "value": "Currently Prysm is used by >33% of the network." + } + ], "oLxfO1": [ { "type": 0, @@ -6399,6 +6417,12 @@ "value": "Become a validator with Nimbus" } ], + "ulgIVs": [ + { + "type": 0, + "value": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." + } + ], "uoKhQB": [ { "type": 0, @@ -6611,12 +6635,6 @@ "value": "We strongly recommended you complete these steps on the current testnet before Mainnet." } ], - "x8+8fi": [ - { - "type": 0, - "value": "Currently the majority of validators run Prysm as their consensus client. Client diversity is extremely important for the network health of Ethereum: A bug in a client with a share of over 33% can cause Ethereum to go offline. If the client has a supermajority (>66%), a bug could cause the chain to incorrectly split, potentially leading to slashing." - } - ], "xDyl3T": [ { "type": 0, diff --git a/src/intl/en.json b/src/intl/en.json index 99c87707..da01cf27 100644 --- a/src/intl/en.json +++ b/src/intl/en.json @@ -2,9 +2,6 @@ "+L0IkF": { "message": "Step 2: Generate deposit keys using the Ethereum Foundation deposit tool" }, - "+M/NC/": { - "message": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." - }, "+UUcBt": { "message": "Choose a language" }, @@ -194,6 +191,9 @@ "2iH8Zc": { "message": "Nimbus key management documentation" }, + "2rflCq": { + "message": "Client diversity is extremely important for the network health of Ethereum: A bug in a client with a share of over 33% can cause Ethereum to go offline. If the client has a supermajority (>66%), a bug could cause the chain to incorrectly split, potentially leading to slashing." + }, "2s0gAx": { "message": "Configuring a Fee Recipient Address" }, @@ -695,6 +695,9 @@ "FazwRl": { "message": "Try again" }, + "FcCHp4": { + "message": "Latest data on network client usage" + }, "Felr8P": { "message": "A {validatorClient} is the software that acts on behalf of the validator by holding and using its private key to make attestations about the state of the chain. A single validator client can hold many key pairs, controlling many validators." }, @@ -1691,6 +1694,9 @@ "clxIWO": { "message": "How much will I be penalized for acting maliciously?" }, + "cnQKC2": { + "message": "Currently Geth is used by >66% of the network." + }, "cpxfOR": { "message": "What are withdrawal credentials?" }, @@ -2181,6 +2187,9 @@ "o9QvTP": { "message": "Before you start" }, + "oF4os+": { + "message": "Currently Prysm is used by >33% of the network." + }, "oLxfO1": { "message": "Now that the keys are imported, all that is left to do (assuming your beacon node is already running) is to run the validator client." }, @@ -2451,6 +2460,9 @@ "ukfwum": { "message": "Become a validator with Nimbus" }, + "ulgIVs": { + "message": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." + }, "uoKhQB": { "message": "Authentication API" }, @@ -2544,9 +2556,6 @@ "x4/9vY": { "message": "We strongly recommended you complete these steps on the current testnet before Mainnet." }, - "x8+8fi": { - "message": "Currently the majority of validators run Prysm as their consensus client. Client diversity is extremely important for the network health of Ethereum: A bug in a client with a share of over 33% can cause Ethereum to go offline. If the client has a supermajority (>66%), a bug could cause the chain to incorrectly split, potentially leading to slashing." - }, "xDyl3T": { "description": "{ethereumorg} is a link to deposit contract page on ethereum.org", "message": "Cross check the deposit contract address against other websites – for example: Reddit, Twitter, and GitHub. There's also a list of trusted sources on {ethereumorg}" diff --git a/src/pages/Clients/Consensus/Prysm.tsx b/src/pages/Clients/Consensus/Prysm.tsx index 94b8726b..86cf99ca 100644 --- a/src/pages/Clients/Consensus/Prysm.tsx +++ b/src/pages/Clients/Consensus/Prysm.tsx @@ -1,6 +1,5 @@ import React from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; -import styled from 'styled-components'; import prysmBg from '../../../static/prysmatic-bg.png'; import { Hero, @@ -11,39 +10,14 @@ import { PageTemplate } from '../../../components/PageTemplate'; import { Text } from '../../../components/Text'; import { Link } from '../../../components/Link'; import { ClientMergeNotification } from '../../../components/ClientMergeNotification'; +import { ClientDiversityWarning } from '../../../components/ClientDiversityWarning'; import { PRYSM_INSTALLATION_URL } from '../../../utils/envVars'; -const ClientDiversityWarning = styled(Text as any)` - background: #ffdeb32e; - border: 1px solid burlywood; - padding: 30px; - border-radius: 4px; -`; - // eslint-disable-next-line no-unused-vars export const PrysmDetails = ({ shortened }: { shortened?: boolean }) => ( <> -

- -

-

- -

-

- - - -

+
Prysm diff --git a/src/pages/Clients/Execution/Geth.tsx b/src/pages/Clients/Execution/Geth.tsx index dd1f7584..c209a361 100644 --- a/src/pages/Clients/Execution/Geth.tsx +++ b/src/pages/Clients/Execution/Geth.tsx @@ -13,11 +13,16 @@ import { Code } from '../../../components/Code'; import { Heading } from '../../../components/Heading'; import { ClientMergeNotification } from '../../../components/ClientMergeNotification'; import { IS_GOERLI } from '../../ConnectWallet/web3Utils'; +import { ClientDiversityWarning } from '../../../components/ClientDiversityWarning'; + import { IS_MAINNET } from '../../../utils/envVars'; // eslint-disable-next-line no-unused-vars export const GethDetails = () => ( <> + + + Geth From 9523df3165b3a702e8ff86855ea7e19bc887f177 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 22 Jun 2022 14:45:02 -0700 Subject: [PATCH 2/5] execution client, consensus client removes "layer" from the terminology when referring to execution or consensus clients. --- src/intl/compiled/en.json | 192 +++++++++--------- src/intl/en.json | 74 +++---- src/pages/Checklist/index.tsx | 4 +- src/pages/FAQ/index.jsx | 4 +- src/pages/MergeReadiness/index.tsx | 12 +- .../SelectClient/SelectClientSection.tsx | 2 +- 6 files changed, 144 insertions(+), 144 deletions(-) diff --git a/src/intl/compiled/en.json b/src/intl/compiled/en.json index 713ff7ab..170ef4b8 100644 --- a/src/intl/compiled/en.json +++ b/src/intl/compiled/en.json @@ -5,12 +5,6 @@ "value": "Step 2: Generate deposit keys using the Ethereum Foundation deposit tool" } ], - "+M/NC/": [ - { - "type": 0, - "value": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." - } - ], "+UUcBt": [ { "type": 0, @@ -875,12 +869,6 @@ "value": " at any time during your setup for some friendly help!" } ], - "62zRxB": [ - { - "type": 0, - "value": "I am running my own consensus layer client." - } - ], "6CK2Nu": [ { "type": 0, @@ -1373,6 +1361,12 @@ "value": "Sharding will change the requirement that full nodes carry the entire history of the chain, and instead will distribute this load amongst the network while still ensuring data availability. This will significantly expand the capacity of layer 1 Ethereum while maintaining the ability to operate a full node on consumer hardware, keeping the network decentralized." } ], + "AfH0eO": [ + { + "type": 0, + "value": "All stakers must operate an execution client with their consensus client starting at the Merge. Make sure you're prepared." + } + ], "Affixg": [ { "type": 0, @@ -1403,6 +1397,12 @@ "value": "Top up validator" } ], + "AzjyIx": [ + { + "type": 0, + "value": "Since the genesis of the Beacon Chain, many validators running their own consensus client have opted to use third-party services for their execution layer connection. This has been acceptable since the only thing being listened to has been the staking deposit contract." + } + ], "B2EKj+": [ { "type": 0, @@ -1527,12 +1527,6 @@ "value": "Execution Client" } ], - "C82lUV": [ - { - "type": 0, - "value": "All stakers must operate an execution layer client with their consensus layer client starting at the Merge. Make sure you're prepared." - } - ], "C9fTX1": [ { "type": 0, @@ -2083,12 +2077,6 @@ "value": "Formerly TurboGeth, Erigon is an Ethereum client built to enable performance optimizations." } ], - "IJiJjD": [ - { - "type": 0, - "value": "All stakers must operate an execution layer client as well as a consensus layer client starting at the Merge. Make sure you're prepared." - } - ], "IJw06E": [ { "type": 0, @@ -2275,12 +2263,6 @@ "value": "What is your current operating system?" } ], - "K2pv1v": [ - { - "type": 0, - "value": "Why do I need to run an execution layer client now?" - } - ], "K6+jQ3": [ { "type": 0, @@ -2511,6 +2493,12 @@ "value": "Your initial deposit has already been made for this validator public key. Please wait and check the status of your deposit on the Beaconchain data provider." } ], + "LwEHRm": [ + { + "type": 0, + "value": "Why do I need to run an execution client now?" + } + ], "M3GwXS": [ { "type": 0, @@ -3117,6 +3105,28 @@ "value": "There’s no way for you to re-activate your validator, and you won’t be able to transfer or withdraw your funds until the Shanghai upgrade planned to follow the Merge (which means your funds will remain inaccessible until then)." } ], + "R58ea3": [ + { + "type": 0, + "value": "You need to run an " + }, + { + "type": 1, + "value": "executionClient" + }, + { + "type": 0, + "value": " as well as your " + }, + { + "type": 1, + "value": "consensusClient" + }, + { + "type": 0, + "value": " (formerly 'Eth2')." + } + ], "R8eePn": [ { "type": 0, @@ -3521,6 +3531,20 @@ "value": " (handles proof-of-stake Beacon Chain, formerly 'Eth2' or 'Ethereum 2.0')." } ], + "V5J3Uf": [ + { + "type": 0, + "value": "I have set up a shared JWT secret and made it available to " + }, + { + "type": 1, + "value": "both" + }, + { + "type": 0, + "value": " my execution client, and my consensus client (beacon node)" + } + ], "VASo1/": [ { "type": 0, @@ -3695,12 +3719,6 @@ "value": " will NOT be counted in your effective balance on the Beacon Chain. You also won't be able to withdraw it until the Beacon Chain merges with mainnet." } ], - "WGPxqY": [ - { - "type": 0, - "value": "Since the genesis of the Beacon Chain, many validators running their own consensus layer (CL) client have opted to use third-party services for their execution layer (EL) connection. This has been acceptable since the only thing being listened to has been the staking deposit contract." - } - ], "WJA1/H": [ { "type": 0, @@ -3723,12 +3741,6 @@ "value": "These steps are optional but are recommended to optimize your node." } ], - "WTfeiS": [ - { - "type": 0, - "value": "Post-merge, an Ethereum node will be comprised of both an execution layer (EL) client, and a consensus layer (CL) client. EL + CL = Ethereum." - } - ], "WdDGn6": [ { "type": 0, @@ -3801,12 +3813,6 @@ "value": "More on installing pip" } ], - "XBYgM2": [ - { - "type": 0, - "value": "As a staker you are required to maintain and operate a node, running BOTH a consensus layer client AND an execution layer client." - } - ], "XRxD8r": [ { "type": 0, @@ -4219,6 +4225,12 @@ "value": "Continue" } ], + "aozN2h": [ + { + "type": 0, + "value": "See your consensus client documentation for client-specific instructions on how to set this." + } + ], "azLmaD": [ { "type": 0, @@ -4263,12 +4275,6 @@ "value": "Use this as a reference during client setup to check off important steps." } ], - "bRGoZZ": [ - { - "type": 0, - "value": "See your consensus layer client documentation for client-specific instructions on how to set this." - } - ], "bUk/lm": [ { "type": 0, @@ -4443,6 +4449,12 @@ "value": " is a 32-byte field in the deposit, for verifying the destination of valid withdrawals. Currently, there are two types of withdrawals: BLS withdrawal and Ethereum address withdrawal." } ], + "dGWdPu": [ + { + "type": 0, + "value": "All stakers must operate an execution client as well as a consensus client starting at the Merge. Make sure you're prepared." + } + ], "dH5+MX": [ { "type": 0, @@ -4767,28 +4779,6 @@ "value": "Generate deposit keys using the Ethereum Foundation deposit tool" } ], - "gRMu7M": [ - { - "type": 0, - "value": "You need to run an " - }, - { - "type": 1, - "value": "executionClient" - }, - { - "type": 0, - "value": " as well as your " - }, - { - "type": 1, - "value": "consensusClient" - }, - { - "type": 0, - "value": " (formerly 'Eth2')." - } - ], "gVC0Wl": [ { "type": 0, @@ -4883,6 +4873,12 @@ "value": "clock" } ], + "h/n5+N": [ + { + "type": 0, + "value": "As a staker you are required to maintain and operate a node, running BOTH a consensus client AND an execution client." + } + ], "h8MTUo": [ { "type": 0, @@ -5099,12 +5095,6 @@ "value": " deposits" } ], - "j0Ee5w": [ - { - "type": 0, - "value": "I am running my own execution layer client." - } - ], "j8GPOH": [ { "type": 0, @@ -5383,20 +5373,6 @@ "value": " deposit have a URL you expect?" } ], - "lNzqua": [ - { - "type": 0, - "value": "I have set up a shared JWT secret and made it available to " - }, - { - "type": 1, - "value": "both" - }, - { - "type": 0, - "value": " my execution layer client, and my consensus layer client (beacon node)" - } - ], "lQzdpT": [ { "type": 0, @@ -5891,6 +5867,12 @@ "value": "Deposit summary" } ], + "q2PJEK": [ + { + "type": 0, + "value": "I am running my own consensus client." + } + ], "q2XW/k": [ { "type": 0, @@ -6331,6 +6313,12 @@ "value": "Uptime" } ], + "uGKswV": [ + { + "type": 0, + "value": "Post-merge, an Ethereum node will be comprised of both an execution client, and a consensus client." + } + ], "uJzGSb": [ { "type": 0, @@ -6399,6 +6387,12 @@ "value": "Become a validator with Nimbus" } ], + "ulgIVs": [ + { + "type": 0, + "value": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." + } + ], "uoKhQB": [ { "type": 0, @@ -6593,6 +6587,12 @@ "value": "Are there spelling mistakes?" } ], + "wuhO1L": [ + { + "type": 0, + "value": "I am running my own execution client." + } + ], "x+fF+M": [ { "type": 0, diff --git a/src/intl/en.json b/src/intl/en.json index 99c87707..02e3d32a 100644 --- a/src/intl/en.json +++ b/src/intl/en.json @@ -2,9 +2,6 @@ "+L0IkF": { "message": "Step 2: Generate deposit keys using the Ethereum Foundation deposit tool" }, - "+M/NC/": { - "message": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." - }, "+UUcBt": { "message": "Choose a language" }, @@ -310,9 +307,6 @@ "description": "{variables} are social media platform links to Discord and Reddit (do not translate names)", "message": "Visit EthStaker on {discord} or {reddit} at any time during your setup for some friendly help!" }, - "62zRxB": { - "message": "I am running my own consensus layer client." - }, "6CK2Nu": { "message": "Your wallet is on the wrong network. Switch to {network}" }, @@ -502,6 +496,9 @@ "Ad8+R5": { "message": "Sharding will change the requirement that full nodes carry the entire history of the chain, and instead will distribute this load amongst the network while still ensuring data availability. This will significantly expand the capacity of layer 1 Ethereum while maintaining the ability to operate a full node on consumer hardware, keeping the network decentralized." }, + "AfH0eO": { + "message": "All stakers must operate an execution client with their consensus client starting at the Merge. Make sure you're prepared." + }, "Affixg": { "message": "The deposit" }, @@ -517,6 +514,9 @@ "Aw1mMs": { "message": "Top up validator" }, + "AzjyIx": { + "message": "Since the genesis of the Beacon Chain, many validators running their own consensus client have opted to use third-party services for their execution layer connection. This has been acceptable since the only thing being listened to has been the staking deposit contract." + }, "B2EKj+": { "message": "I understand that I need to deposit {PRICE_PER_VALIDATOR} {TICKER_NAME} to become a validator, and that the transfer of {TICKER_NAME} to the Beacon Chain is one-way, and non-reversible." }, @@ -560,9 +560,6 @@ "C3jBPI": { "message": "Execution Client" }, - "C82lUV": { - "message": "All stakers must operate an execution layer client with their consensus layer client starting at the Merge. Make sure you're prepared." - }, "C9fTX1": { "message": "Answers to common questions on becoming a validator." }, @@ -807,9 +804,6 @@ "I7MjRD": { "message": "Formerly TurboGeth, Erigon is an Ethereum client built to enable performance optimizations." }, - "IJiJjD": { - "message": "All stakers must operate an execution layer client as well as a consensus layer client starting at the Merge. Make sure you're prepared." - }, "IJw06E": { "message": "Sign transaction with your wallet" }, @@ -881,9 +875,6 @@ "JtAiN/": { "message": "What is your current operating system?" }, - "K2pv1v": { - "message": "Why do I need to run an execution layer client now?" - }, "K6+jQ3": { "message": "Geth installation documentation" }, @@ -971,6 +962,9 @@ "Lv3Pmp": { "message": "Your initial deposit has already been made for this validator public key. Please wait and check the status of your deposit on the Beaconchain data provider." }, + "LwEHRm": { + "message": "Why do I need to run an execution client now?" + }, "M3GwXS": { "message": "You'll only get your full rewards if your validator is online and up to date. This is your responsibility. If your validator goes offline you'll be penalized. The penalties for being offline are roughly equal to the rewards for actively participating." }, @@ -1193,6 +1187,10 @@ "QtNVQP": { "message": "There’s no way for you to re-activate your validator, and you won’t be able to transfer or withdraw your funds until the Shanghai upgrade planned to follow the Merge (which means your funds will remain inaccessible until then)." }, + "R58ea3": { + "description": "{executionLayer} is a link labeled 'execution client'. {consensusLayer} is a link labeled 'consensus client'", + "message": "You need to run an {executionClient} as well as your {consensusClient} (formerly 'Eth2')." + }, "R8eePn": { "message": "If you're slashed you're prevented from participating in the protocol further and are forcibly exited." }, @@ -1365,6 +1363,9 @@ "description": "{executionLayer} is a link labeled 'execution layer'. {consensusLayer} is a link labeled 'consensus layer'", "message": "Ethereum will consist of the {executionLayer} (handles transactions and execution, formerly 'Eth1'), and the {consensusLayer} (handles proof-of-stake Beacon Chain, formerly 'Eth2' or 'Ethereum 2.0')." }, + "V5J3Uf": { + "message": "I have set up a shared JWT secret and made it available to {both} my execution client, and my consensus client (beacon node)" + }, "VASo1/": { "message": "Connect wallet" }, @@ -1416,9 +1417,6 @@ "WFVzvu": { "message": "{warning} Duplicate deposits with the same keyfile public key will be considered as a double deposit. Any extra balance more than {eth} will NOT be counted in your effective balance on the Beacon Chain. You also won't be able to withdraw it until the Beacon Chain merges with mainnet." }, - "WGPxqY": { - "message": "Since the genesis of the Beacon Chain, many validators running their own consensus layer (CL) client have opted to use third-party services for their execution layer (EL) connection. This has been acceptable since the only thing being listened to has been the staking deposit contract." - }, "WJA1/H": { "message": "Remember" }, @@ -1428,9 +1426,6 @@ "WTPUDZ": { "message": "These steps are optional but are recommended to optimize your node." }, - "WTfeiS": { - "message": "Post-merge, an Ethereum node will be comprised of both an execution layer (EL) client, and a consensus layer (CL) client. EL + CL = Ethereum." - }, "WdDGn6": { "message": "An implementation of the consensus protocol with a focus on usability, security, and reliability. Prysm is developed by Prysmatic Labs, a company with the sole focus on the development of their client." }, @@ -1467,9 +1462,6 @@ "XBEBYR": { "message": "More on installing pip" }, - "XBYgM2": { - "message": "As a staker you are required to maintain and operate a node, running BOTH a consensus layer client AND an execution layer client." - }, "XRxD8r": { "description": "Link to documentation about execution client Besu, specifically for Goerli testnet", "message": "Besu on Goerli documentation" @@ -1610,6 +1602,9 @@ "acrOoz": { "message": "Continue" }, + "aozN2h": { + "message": "See your consensus client documentation for client-specific instructions on how to set this." + }, "azLmaD": { "message": "Build deposit-cli from the Python source code" }, @@ -1628,9 +1623,6 @@ "bR1R2M": { "message": "Use this as a reference during client setup to check off important steps." }, - "bRGoZZ": { - "message": "See your consensus layer client documentation for client-specific instructions on how to set this." - }, "bUk/lm": { "message": "Besu installation documentation" }, @@ -1712,6 +1704,9 @@ "d75Ebj": { "message": "{withdrawalCredentials} is a 32-byte field in the deposit, for verifying the destination of valid withdrawals. Currently, there are two types of withdrawals: BLS withdrawal and Ethereum address withdrawal." }, + "dGWdPu": { + "message": "All stakers must operate an execution client as well as a consensus client starting at the Merge. Make sure you're prepared." + }, "dH5+MX": { "message": "Bad behaviour" }, @@ -1839,10 +1834,6 @@ "gQkd2y": { "message": "Generate deposit keys using the Ethereum Foundation deposit tool" }, - "gRMu7M": { - "description": "{executionLayer} is a link labeled 'execution layer'. {consensusLayer} is a link labeled 'consensus layer'", - "message": "You need to run an {executionClient} as well as your {consensusClient} (formerly 'Eth2')." - }, "gVC0Wl": { "message": "It uses the assisted password in your secrets folder." }, @@ -1871,6 +1862,9 @@ "gx6frf": { "message": "clock" }, + "h/n5+N": { + "message": "As a staker you are required to maintain and operate a node, running BOTH a consensus client AND an execution client." + }, "h8MTUo": { "message": "Your stake" }, @@ -1959,9 +1953,6 @@ "iv88b5": { "message": "Send all {totalTxCount} deposits" }, - "j0Ee5w": { - "message": "I am running my own execution layer client." - }, "j8GPOH": { "message": "Formerly known as Artemis, Teku is a consensus client built to meet institutional needs and security requirements. PegaSys is an arm of ConsenSys, dedicated to building enterprise-ready clients and tools for interacting with the core Ethereum platform." }, @@ -2076,9 +2067,6 @@ "description": "{ethAmount} will generally refer to 32 ETH", "message": "Does the site asking you for your {ethAmount} deposit have a URL you expect?" }, - "lNzqua": { - "message": "I have set up a shared JWT secret and made it available to {both} my execution layer client, and my consensus layer client (beacon node)" - }, "lQzdpT": { "description": "this is used as a command line flag, short for \"number of validators\"", "message": "num_validators" @@ -2261,6 +2249,9 @@ "pyWt01": { "message": "Deposit summary" }, + "q2PJEK": { + "message": "I am running my own consensus client." + }, "q2XW/k": { "message": "If your withdrawal key is stolen, the thief can transfer your validator’s balance, but only once the validator has exited." }, @@ -2427,6 +2418,9 @@ "u81G9+": { "message": "Uptime" }, + "uGKswV": { + "message": "Post-merge, an Ethereum node will be comprised of both an execution client, and a consensus client." + }, "uJzGSb": { "message": "Make sure you're aware of how to avoid phishing attacks. We've prepared a list of things to look out for." }, @@ -2451,6 +2445,9 @@ "ukfwum": { "message": "Become a validator with Nimbus" }, + "ulgIVs": { + "message": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." + }, "uoKhQB": { "message": "Authentication API" }, @@ -2535,6 +2532,9 @@ "wtTeex": { "message": "Are there spelling mistakes?" }, + "wuhO1L": { + "message": "I am running my own execution client." + }, "x+fF+M": { "message": "Testnet simulations" }, diff --git a/src/pages/Checklist/index.tsx b/src/pages/Checklist/index.tsx index edfab23a..5d036b9b 100644 --- a/src/pages/Checklist/index.tsx +++ b/src/pages/Checklist/index.tsx @@ -454,7 +454,7 @@ export const Checklist = () => { ), }} - description="{executionLayer} is a link labeled 'execution layer'. {consensusLayer} is a link labeled 'consensus layer'" + description="{executionLayer} is a link labeled 'execution client'. {consensusLayer} is a link labeled 'consensus client'" /> @@ -832,7 +832,7 @@ export const Checklist = () => { - + {formatMessage({ defaultMessage: 'Merge Readiness Checklist', diff --git a/src/pages/FAQ/index.jsx b/src/pages/FAQ/index.jsx index 3eeb81e4..3b57dde9 100644 --- a/src/pages/FAQ/index.jsx +++ b/src/pages/FAQ/index.jsx @@ -342,7 +342,7 @@ export const FAQ = () => { - +
@@ -355,7 +355,7 @@ export const FAQ = () => {
- + { {sections[0].title} - +
- + @@ -197,14 +197,14 @@ export const MergeReadiness = () => { - + } /> - + } /> @@ -348,7 +348,7 @@ export const MergeReadiness = () => { label={ both }} /> @@ -390,7 +390,7 @@ export const MergeReadiness = () => { - +
  • diff --git a/src/pages/SelectClient/SelectClientSection.tsx b/src/pages/SelectClient/SelectClientSection.tsx index 9c525498..98fefe86 100644 --- a/src/pages/SelectClient/SelectClientSection.tsx +++ b/src/pages/SelectClient/SelectClientSection.tsx @@ -93,7 +93,7 @@ const SelectClientSection = ({ - + From e25e94a117fa567e38c45883e1cd20028bcb49fd Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 27 Jun 2022 09:26:41 -0700 Subject: [PATCH 3/5] Await TTD notice added for MergeReadiness --- src/intl/compiled/en.json | 68 ++++++++++++++++++++++--- src/intl/en.json | 24 +++++++-- src/pages/MergeReadiness/index.tsx | 79 +++++++++++++++++++++++++----- 3 files changed, 149 insertions(+), 22 deletions(-) diff --git a/src/intl/compiled/en.json b/src/intl/compiled/en.json index 713ff7ab..1176c7ad 100644 --- a/src/intl/compiled/en.json +++ b/src/intl/compiled/en.json @@ -5,12 +5,6 @@ "value": "Step 2: Generate deposit keys using the Ethereum Foundation deposit tool" } ], - "+M/NC/": [ - { - "type": 0, - "value": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." - } - ], "+UUcBt": [ { "type": 0, @@ -409,6 +403,12 @@ "value": "Documentation on running Nethermind" } ], + "1wSJQU": [ + { + "type": 0, + "value": "Timing:" + } + ], "22EpKq": [ { "type": 0, @@ -1231,6 +1231,24 @@ "value": "Overview" } ], + "9vLu6E": [ + { + "type": 1, + "value": "note" + }, + { + "type": 0, + "value": " This step should be performed on " + }, + { + "type": 1, + "value": "testnetsOnly" + }, + { + "type": 0, + "value": " until the Mainnet TTD (terminal total difficulty) has been announced and clients have released an update. Info is presented for preparation in the meantime." + } + ], "9xeLhs": [ { "type": 0, @@ -1861,6 +1879,12 @@ "value": "Terms of service" } ], + "FqztZR": [ + { + "type": 0, + "value": "Note:" + } + ], "FzkbsB": [ { "type": 0, @@ -3009,6 +3033,20 @@ "value": " to max out your effective balance." } ], + "Q8fnvz": [ + { + "type": 0, + "value": "testnets only (e.g. " + }, + { + "type": 1, + "value": "kiln" + }, + { + "type": 0, + "value": ")" + } + ], "QKFeMq": [ { "type": 0, @@ -6237,6 +6275,12 @@ "value": "What should the address be?" } ], + "tgvES0": [ + { + "type": 0, + "value": "Now" + } + ], "tigMuZ": [ { "type": 0, @@ -6399,6 +6443,12 @@ "value": "Become a validator with Nimbus" } ], + "ulgIVs": [ + { + "type": 0, + "value": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." + } + ], "uoKhQB": [ { "type": 0, @@ -6455,6 +6505,12 @@ "value": "Proceed with caution. Our on-chain data source is down and we are unable to flag any double deposits." } ], + "vUxy+H": [ + { + "type": 0, + "value": "After TTD client releases" + } + ], "vV6ua0": [ { "type": 0, diff --git a/src/intl/en.json b/src/intl/en.json index 99c87707..c3025a73 100644 --- a/src/intl/en.json +++ b/src/intl/en.json @@ -2,9 +2,6 @@ "+L0IkF": { "message": "Step 2: Generate deposit keys using the Ethereum Foundation deposit tool" }, - "+M/NC/": { - "message": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." - }, "+UUcBt": { "message": "Choose a language" }, @@ -165,6 +162,9 @@ "1pUw7Y": { "message": "Documentation on running Nethermind" }, + "1wSJQU": { + "message": "Timing:" + }, "22EpKq": { "description": "{JSON} is filetype extension", "message": "This isn't a valid {JSON} file" @@ -456,6 +456,9 @@ "9uOFF3": { "message": "Overview" }, + "9vLu6E": { + "message": "{note} This step should be performed on {testnetsOnly} until the Mainnet TTD (terminal total difficulty) has been announced and clients have released an update. Info is presented for preparation in the meantime." + }, "9xeLhs": { "message": "Ethereum address withdrawal: If you want to withdraw to your Mainnet wallet address (formerly 'Eth1' address) after the post-merge cleanup upgrade, you can set {ethAddressWithdraw} when running deposit-cli. {boldWarning}" }, @@ -707,6 +710,9 @@ "FqgDIV": { "message": "Terms of service" }, + "FqztZR": { + "message": "Note:" + }, "FzkbsB": { "message": "validators" }, @@ -1157,6 +1163,9 @@ "Q8P0rZ": { "message": "Validators have a maximum effective balance of {PRICE_PER_VALIDATOR} {TICKER_NAME}. You only need to top up {maxTopupValue} {TICKER_NAME} to max out your effective balance." }, + "Q8fnvz": { + "message": "testnets only (e.g. {kiln})" + }, "QKFeMq": { "message": "Internet" }, @@ -2392,6 +2401,9 @@ "teyxVk": { "message": "What should the address be?" }, + "tgvES0": { + "message": "Now" + }, "tigMuZ": { "message": "Wait at least 30 minutes before trying to resubmit a transaction with this {depositData} file. This will give our on-chain data source time to flag any duplicate deposits." }, @@ -2451,6 +2463,9 @@ "ukfwum": { "message": "Become a validator with Nimbus" }, + "ulgIVs": { + "message": "After the merge, there will no longer be two distinct Ethereum networks; there will only be Ethereum." + }, "uoKhQB": { "message": "Authentication API" }, @@ -2476,6 +2491,9 @@ "vJez0K": { "message": "Proceed with caution. Our on-chain data source is down and we are unable to flag any double deposits." }, + "vUxy+H": { + "message": "After TTD client releases" + }, "vV6ua0": { "message": "Step 1: Download the Wagyu Key Gen app for your operating system" }, diff --git a/src/pages/MergeReadiness/index.tsx b/src/pages/MergeReadiness/index.tsx index 7cc041ff..09c58194 100644 --- a/src/pages/MergeReadiness/index.tsx +++ b/src/pages/MergeReadiness/index.tsx @@ -22,6 +22,10 @@ const ChecklistPageStyles = styled.div` margin-bottom: 5px; } } + section.pending { + filter: grayscale(100%); + opacity: 75%; + } label { padding: 1rem; } @@ -54,6 +58,7 @@ const Subtitle = styled.p` const CardContainer = styled.div` display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); + grid-auto-rows: 1fr; gap: 1rem; @media only screen and (max-width: ${p => p.theme.screenSizes.medium}) { flex-direction: column; @@ -61,12 +66,13 @@ const CardContainer = styled.div` `; const Card = styled.div` + display: flex; padding: 24px; border: 1px solid ${p => p.theme.gray.dark}; border-radius: 4px; width: 100%; + height: 100%; background: white; - display: flex; align-items: center; width: 100%; justify-content: space-between; @@ -74,13 +80,25 @@ const Card = styled.div` margin: 0px; margin-top: 16px; } + &.pending { + filter: grayscale(75%); + opacity: 60%; + } + transform: scale(1); + transition: transform 0.1s; &:hover { cursor: pointer; box-shadow: 0px 8px 17px rgba(0, 0, 0, 0.15); transition: transform 0.1s; transform: scale(1.02); } + + p.timing { + font-size: 0.875rem; + line-height: 140%; + margin-bottom: 0; + } `; const BoldGreen = styled.span` @@ -113,18 +131,23 @@ export const MergeReadiness = () => { const sections = [ { heading: , + timing: , title: , id: 'el-plus-cl', }, { heading: , + timing: , title: , id: 'authenticate', + pending: true, }, { heading: , + timing: , title: , id: 'fee-recipient', + pending: true, }, { heading: , @@ -133,6 +156,33 @@ export const MergeReadiness = () => { }, ]; + const TimingWarning = () => ( + + + + + + + ), + testnetsOnly: ( + + + + ), + }} + /> + + + + ); + return ( { - {sections.map(({ heading, title, id }) => ( + {sections.map(({ heading, title, timing, pending, id }) => ( - +
    {heading} @@ -158,13 +208,17 @@ export const MergeReadiness = () => { {title} + {timing && ( +

    + {timing} +

    + )}
    ))}
    - @@ -176,7 +230,7 @@ export const MergeReadiness = () => { -
    +
    @@ -219,10 +273,8 @@ export const MergeReadiness = () => { -
    - {/* - - */} + +
    { }} /> - {/* - - */} { /> } + disabled={sections[1].pending} />
    @@ -365,7 +415,8 @@ export const MergeReadiness = () => { -
    + +
    @@ -435,6 +486,7 @@ export const MergeReadiness = () => { } + disabled={sections[2].pending} /> { } + disabled={sections[2].pending} />
    From cba6aac46191a90a30ba3291d5d60e47daf4fb2c Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:09:39 -0700 Subject: [PATCH 4/5] add actions words for CTAs --- src/intl/compiled/en.json | 24 ++++++++++++------------ src/intl/en.json | 12 ++++++------ src/pages/MergeReadiness/index.tsx | 10 +++++++--- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/intl/compiled/en.json b/src/intl/compiled/en.json index 61c948cf..ccc23a92 100644 --- a/src/intl/compiled/en.json +++ b/src/intl/compiled/en.json @@ -83,6 +83,12 @@ "value": "Configure the Java Web" } ], + "/FpD8O": [ + { + "type": 0, + "value": "Do this after TTD client releases" + } + ], "/QPc9s": [ { "type": 0, @@ -5821,6 +5827,12 @@ "value": "Does the contract have a large balance?" } ], + "ouMFoC": [ + { + "type": 0, + "value": "Do this now" + } + ], "ouW9ov": [ { "type": 0, @@ -6287,12 +6299,6 @@ "value": "What should the address be?" } ], - "tgvES0": [ - { - "type": 0, - "value": "Now" - } - ], "tigMuZ": [ { "type": 0, @@ -6523,12 +6529,6 @@ "value": "Proceed with caution. Our on-chain data source is down and we are unable to flag any double deposits." } ], - "vUxy+H": [ - { - "type": 0, - "value": "After TTD client releases" - } - ], "vV6ua0": [ { "type": 0, diff --git a/src/intl/en.json b/src/intl/en.json index dc91dfad..dab71d90 100644 --- a/src/intl/en.json +++ b/src/intl/en.json @@ -35,6 +35,9 @@ "/E/Zm8": { "message": "Configure the Java Web" }, + "/FpD8O": { + "message": "Do this after TTD client releases" + }, "/QPc9s": { "message": "You can signal your intent to stop validating by signing a voluntary exit message with your validator." }, @@ -2226,6 +2229,9 @@ "orczlb": { "message": "Does the contract have a large balance?" }, + "ouMFoC": { + "message": "Do this now" + }, "ouW9ov": { "message": "Your validators" }, @@ -2407,9 +2413,6 @@ "teyxVk": { "message": "What should the address be?" }, - "tgvES0": { - "message": "Now" - }, "tigMuZ": { "message": "Wait at least 30 minutes before trying to resubmit a transaction with this {depositData} file. This will give our on-chain data source time to flag any duplicate deposits." }, @@ -2500,9 +2503,6 @@ "vJez0K": { "message": "Proceed with caution. Our on-chain data source is down and we are unable to flag any double deposits." }, - "vUxy+H": { - "message": "After TTD client releases" - }, "vV6ua0": { "message": "Step 1: Download the Wagyu Key Gen app for your operating system" }, diff --git a/src/pages/MergeReadiness/index.tsx b/src/pages/MergeReadiness/index.tsx index c0c89ea4..bd8830e2 100644 --- a/src/pages/MergeReadiness/index.tsx +++ b/src/pages/MergeReadiness/index.tsx @@ -131,20 +131,24 @@ export const MergeReadiness = () => { const sections = [ { heading: , - timing: , + timing: , title: , id: 'el-plus-cl', }, { heading: , - timing: , + timing: ( + + ), title: , id: 'authenticate', pending: true, }, { heading: , - timing: , + timing: ( + + ), title: , id: 'fee-recipient', pending: true, From 0f59624b3801c95cec3d6df2563c98b64b2a78eb Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:32:26 -0700 Subject: [PATCH 5/5] Add sync note to client selection --- src/intl/compiled/en.json | 6 ++++++ src/intl/en.json | 3 +++ src/pages/SelectClient/SelectClientSection.tsx | 18 ++++++++++++++---- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/intl/compiled/en.json b/src/intl/compiled/en.json index 61c948cf..49195769 100644 --- a/src/intl/compiled/en.json +++ b/src/intl/compiled/en.json @@ -4773,6 +4773,12 @@ "value": "During setup" } ], + "fZwn+P": [ + { + "type": 0, + "value": "After client installation, ensure you are fully synced before submitting your staking deposit. This can take several days." + } + ], "fbiteI": [ { "type": 0, diff --git a/src/intl/en.json b/src/intl/en.json index dc91dfad..dfe1e455 100644 --- a/src/intl/en.json +++ b/src/intl/en.json @@ -1825,6 +1825,9 @@ "fR8+bQ": { "message": "During setup" }, + "fZwn+P": { + "message": "After client installation, ensure you are fully synced before submitting your staking deposit. This can take several days." + }, "fbiteI": { "message": "only stored on one validator machine" }, diff --git a/src/pages/SelectClient/SelectClientSection.tsx b/src/pages/SelectClient/SelectClientSection.tsx index 98fefe86..031a40cf 100644 --- a/src/pages/SelectClient/SelectClientSection.tsx +++ b/src/pages/SelectClient/SelectClientSection.tsx @@ -93,10 +93,20 @@ const SelectClientSection = ({ - - - - +
      +
    • + {' '} + + + +
    • +
    • + {' '} + + + +
    • +