Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 58 additions & 25 deletions packages/admin-ui/src/pages/stakers/components/StakerNetwork.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,25 +116,45 @@ export default function StakerNetwork({ network, description }: { network: Netwo
}
}

// Determine which columns to show and construct the instructions dynamically
const showRemoteSigner: boolean = [
Network.Mainnet,
Network.Prater,
Network.Gnosis,
Network.Lukso,
Network.Holesky,
Network.Hoodi
].includes(network);

const showMevBoost: boolean = [
Network.Prater,
Network.Mainnet,
Network.Holesky,
Network.Hoodi
].includes(network) && !!currentStakerConfigReq.data?.mevBoost;

// Get dynamic setup instructions
const setupInstructions = getStakerSetupInstructions(showRemoteSigner, showMevBoost);

return (
<>
{network === "prater" && (
{network === Network.Prater && (
<AlertDismissible variant="warning">
<p>
The prater network is deprecated, please migrate to <b>Hoodi</b>.
</p>
</AlertDismissible>
)}

{network === "holesky" && (
{network === Network.Holesky && (
<AlertDismissible variant="warning">
<p>
The holesky network is deprecated, please migrate to <b>Hoodi</b>.
</p>
</AlertDismissible>
)}

{(network === "hoodi" || network === "mainnet") && (
{(network === Network.Hoodi || network === Network.Mainnet) && (
<AlertDismissible variant="info">
<p>
<BsInfoCircleFill className="smooth-alert-icon" />
Expand All @@ -154,19 +174,7 @@ export default function StakerNetwork({ network, description }: { network: Netwo
{currentStakerConfigReq.data ? (
<div>
<Card>
<p>
Set up your Proof-of-Stake validator configuration for Ethereum and Ethereum-based chains. You will need
to: <br />
(1) Choose an Execution Layer client <br />
(2) Choose a Consensus Layer client (+ validator) <br />
(3) Install the web3signer, which will hold the validator keys and sign <br />
{network !== "gnosis" && network !== "lukso" && (
<>
(4) Optional; delegate block-building capacities through the MEV Boost network and potentially
profit from MEV
</>
)}
</p>
<p dangerouslySetInnerHTML={{ __html: setupInstructions }} />
<p className="network-description">{description}</p>
</Card>

Expand Down Expand Up @@ -195,15 +203,18 @@ export default function StakerNetwork({ network, description }: { network: Netwo
))}
</Col>

<Col>
<SubTitle>Remote signer</SubTitle>
<RemoteSigner
signer={currentStakerConfigReq.data.web3Signer}
setNewWeb3signer={setNewWeb3signer}
isSelected={Boolean(newWeb3signer)}
/>
</Col>
{["prater", "mainnet", "holesky", "hoodi"].includes(network) && currentStakerConfigReq.data.mevBoost && (
{showRemoteSigner && (
<Col>
<SubTitle>Remote signer</SubTitle>
<RemoteSigner
signer={currentStakerConfigReq.data.web3Signer}
setNewWeb3signer={setNewWeb3signer}
isSelected={Boolean(newWeb3signer)}
/>
</Col>
)}

{showMevBoost && currentStakerConfigReq.data?.mevBoost && (
<Col>
<SubTitle>Mev Boost</SubTitle>
<MevBoost
Expand Down Expand Up @@ -254,3 +265,25 @@ export default function StakerNetwork({ network, description }: { network: Netwo
</>
);
}

/* =======================
* Helper Functions
* ======================= */

function getStakerSetupInstructions(showRemoteSigner: boolean, showMevBoost: boolean) {
let instructions = `
Set up your Proof-of-Stake validator configuration for Ethereum and Ethereum-based chains. You will need to: <br />
(1) Choose an Execution Layer client <br />
(2) Choose a Consensus Layer client (+ validator) <br />
`;

if (showRemoteSigner) {
instructions += `(3) Install the web3signer, which will hold the validator keys and sign transactions. <br />`;
}

if (showMevBoost) {
instructions += `(4) Delegate block-building capacities through the MEV Boost network and potentially profit from MEV.`;
}

return instructions;
}
Loading