diff --git a/.npmrc b/.npmrc index 9ea7b3fb6..30e970205 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,3 @@ save-exact=true -minimum-release-age=3d -trust-policy=no-downgrade \ No newline at end of file +minimum-release-age=4320 +trust-policy=no-downgrade diff --git a/docs/about/networks/mainnet.md b/docs/about/networks/mainnet.md index 5fbe55aa4..18a68e019 100644 --- a/docs/about/networks/mainnet.md +++ b/docs/about/networks/mainnet.md @@ -26,10 +26,10 @@ keywords: | Execution Layer RPC | https://rpc.gnosischain.com | | More RPC endpoints | [RPC Providers](../../tools/RPC%20Providers/README.md) | | Execution Layer Explorer | https://gnosisscan.io | -| Execution Layer Explorer | https://blockscout.com/xdai/mainnet | +| Execution Layer Explorer | https://gnosis.blockscout.com/ | | Fork monitor | https://forkmon.gnosischain.com | | EthStats | https://ethstats.gnosischain.com | -| Forked Blocks | https://blockscout.com/xdai/mainnet/reorgs | +| Forked Blocks | https://gnosis.blockscout.com/reorgs | | Faucet | https://gnosisfaucet.com | ### Consensus Layer @@ -40,7 +40,6 @@ keywords: | Beacon Explorer | https://beaconchain.gnosischain.com/ | | Beacon Explorer Backup 1 | https://beacon-v1.gnosischain.com | | Beacon Explorer Backup 2 | https://beacon-v2.gnosischain.com | -| Beacon Checkpoint Sync | https://checkpoint.gnosis.gateway.fm | | Beacon Checkpoint Sync | https://checkpoint.gnosischain.com | | Beacon Checkpoint Sync | https://checkpoint-sync-gnosis.dappnode.io/ | @@ -85,6 +84,6 @@ Gnosis maintains a [Configs Repo](https://github.com/gnosischain/configs/) that ## Key Contracts - [xDai Bridge](../../bridges/About%20Token%20Bridges/xdai-bridge#key-contracts) -- [AMB Bridge](../../bridges/About%20Token%20Bridges/amb-bridge#key-contracts) +- [AMB Bridge](../../bridges/About%20Token%20Bridges/amb-bridge) - [OmniBridge](../../bridges/About%20Token%20Bridges/omnibridge#key-contracts) -- [Beacon Chain](/about/specs/gbc/README.md) \ No newline at end of file +- [Beacon Chain](/about/specs/gbc/README.md) diff --git a/docs/about/specs/hard-forks/pectra.md b/docs/about/specs/hard-forks/pectra.md index 08ff5173f..b3945ca5c 100644 --- a/docs/about/specs/hard-forks/pectra.md +++ b/docs/about/specs/hard-forks/pectra.md @@ -23,7 +23,7 @@ The table below lists differences if any. | [EIP-7840](https://eips.ethereum.org/EIPS/eip-7840): Add blob schedule to EL config files | EL | Not modified | [EIP-4844-pectra](https://eips.ethereum.org/EIPS/eip-4844): Collect Blob Gas Fee | EL | Added -* See [Differences with Ethereum mainnet](#differences-with-ethereum-mainnet) +* Differences with Ethereum mainnet are shown in the table above. diff --git a/docs/about/specs/hard-forks/shanghai-capella.md b/docs/about/specs/hard-forks/shanghai-capella.md index f878d0235..334c41d6b 100644 --- a/docs/about/specs/hard-forks/shanghai-capella.md +++ b/docs/about/specs/hard-forks/shanghai-capella.md @@ -27,7 +27,7 @@ Check out [validator withdrawal](/node/management/withdrawals) for more details. For any type of withdrawals, a validator need to have `0x01` withdrawal credential. You’re fine if you used `--eth1_withdrawal_address` to create your validator keys. If not, tooling will be made available. - Refer to [validator withdrawal](/node/management/withdrawals#check-withdrawal-credential) for more details. + Refer to [validator withdrawal](/node/management/withdrawals) for more details. 2. Update your clients diff --git a/docs/about/tokens/gno.md b/docs/about/tokens/gno.md index fd6fb9356..32325a26a 100644 --- a/docs/about/tokens/gno.md +++ b/docs/about/tokens/gno.md @@ -121,7 +121,7 @@ Historically, deposits on the Beacon Chain were made with a token called `mGNO` ::: -For those who prefer not to manage the infrastructure themselves, liquid staking providers offer the opportunity to stake without the need for personal infrastructure management. For more in-depth information about sGNO and rGNO tokens, please consult the [Stakewise](/tools/beacon-chain/liquid-staking#tokens-sgno--rgno) page. +For those who prefer not to manage the infrastructure themselves, liquid staking providers offer the opportunity to stake without the need for personal infrastructure management. For more in-depth information about sGNO and rGNO tokens, please consult the [Stakewise](/node/participate-validator/liquid-staking) page. ### GnosisDAO Governance @@ -132,4 +132,3 @@ For those who prefer not to manage the infrastructure themselves, liquid staking ## GNO Token Audit - [GNO Token v2.0.0 Audit](https://hackmd.io/@verilog/gno-token-v2-audit) by Verilog Solutions - diff --git a/docs/bridges/About Token Bridges/xdai-bridge.md b/docs/bridges/About Token Bridges/xdai-bridge.md index da6b6f48b..1289d0b64 100644 --- a/docs/bridges/About Token Bridges/xdai-bridge.md +++ b/docs/bridges/About Token Bridges/xdai-bridge.md @@ -160,7 +160,7 @@ Example: https://gnosis.blockscout.com/tx/0x5892a695860f6087a2d93140f05e6365142f 2. `UserRequestForSignature(address recipient, uint256 value, bytes32 nonce, address token)` event is emitted from [Home xDAI bridge contract](https://gnosis.blockscout.com/address/0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6). [Example](https://gnosisscan.io/tx/0xca6fa9395f734501a9497f409db12699782b0a068dc4463d736561572eda8441#eventlog) 3. Bridge validators observe the event and call `submitSignature(bytes signature, bytes message)` function on [Home xDAI bridge contract](https://gnosis.blockscout.com/address/0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6) on Gnosis Chain. 4. After enough signatures are collected, `CollectedSignatures` event is emitted/ -5. Anyone can execute the withdrawal on Ethereum by calling `executeSignatures(bytes message, bytes signatures)` on [Foreign xDAI bridge](https://etherscan.io/address/0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016) on Ethereum. To fetch the calldata value, please check the [guideline below](#how-to-claim-dai-on-ethereum). **USDS** is unlocked to the receiver or swap to **DAI** to the receive. +5. Anyone can execute the withdrawal on Ethereum by calling `executeSignatures(bytes message, bytes signatures)` on [Foreign xDAI bridge](https://etherscan.io/address/0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016) on Ethereum. To fetch the calldata value, please check the [guideline below](#how-to-claim-usds-on-ethereum). **USDS** is unlocked to the receiver or swap to **DAI** to the receive. 6. `RelayedMessage(address recipient, uint256 value, bytes32 transactionHash)` emitted on Foreign xDAI Bridge. Please be aware that after Hashi upgrade, `transactionHash` has been replaced with the value of `nonce`. Please check [here](../hashi/hashi-integration.md) for more information on how it works. ### Savings xDAI diff --git a/docs/faq/Node FAQs/offlineAndSyncIssue.md b/docs/faq/Node FAQs/offlineAndSyncIssue.md index 163d6c4d9..d394a430f 100644 --- a/docs/faq/Node FAQs/offlineAndSyncIssue.md +++ b/docs/faq/Node FAQs/offlineAndSyncIssue.md @@ -14,7 +14,7 @@ title: Offline and Sync Issue 1. **Anyone seeing errors with checkpoint sync today?** - If the usual checkpoint sync https://checkpoint.gnosischain.com/ doesn't work, you can try using https://checkpoint.gnosis.gateway.fm/ if they are both down, don't hesitate to report it as the team might not be aware yet + If the usual checkpoint sync https://checkpoint.gnosischain.com doesn't work, report it so the team can investigate. 2. **My (dapp)node have been offline for a couple of hours. After restart attestation and block proposing resumed, but duties in sync committee still shows missing even after a few hours since it's up again. Does anyone has an explanation for this?** @@ -30,7 +30,7 @@ title: Offline and Sync Issue 5. **Using checkpoint sync, but all my nodes are down. Why?** - If the usual checkpoint sync https://checkpoint.gnosischain.com/ doesn't work, you can try using https://checkpoint.gnosis.gateway.fm/ if they are both down, don't hesitate to report it as the team might not be aware yet + If the usual checkpoint sync https://checkpoint.gnosischain.com doesn't work, report it so the team can investigate. 6. **Just realized my validators are off line since the beginning of the month, can someone take a peek and help?** @@ -42,7 +42,7 @@ title: Offline and Sync Issue 8. **Is there a new checkpoint for Gnosis?** - The two common checkpoint sync are : https://checkpoint.gnosischain.com/ and https://checkpoint.gnosis.gateway.fm/ + The common checkpoint sync endpoint is: https://checkpoint.gnosischain.com 9. **My Gnosis node is crashed a month ago, was there a breaking chain upgrade a month ago?** diff --git a/docs/faq/Node FAQs/runningNode.md b/docs/faq/Node FAQs/runningNode.md index d969fef32..6eb9c1854 100644 --- a/docs/faq/Node FAQs/runningNode.md +++ b/docs/faq/Node FAQs/runningNode.md @@ -90,7 +90,7 @@ title: Running Nodes 20. **Is it worth to be a validator?** - Regardless of your number of validators by becoming one you're helping to secure and decentralize the network and you can earn a decent APY (who was ~14% as of October 2023 but who depends of the number of validators) + Regardless of your number of validators, by becoming one you're helping to secure and decentralize the network. Validator APY changes over time based on validator count and network conditions, so use the live dashboards in the docs for current estimates. 21. **How many deposits per epoch are allowed on GBC? How long would it take to deposit and start validating?** diff --git a/docs/faq/Node FAQs/staking.md b/docs/faq/Node FAQs/staking.md index c41b410dd..d2b04220a 100644 --- a/docs/faq/Node FAQs/staking.md +++ b/docs/faq/Node FAQs/staking.md @@ -18,7 +18,7 @@ title: Staking and Liquid Staking 3. **What’s the best place to stake my GNO bag?** - You can stake your GNO on liquid staking platforms like Stakewise or you could get/buy your own node and stake those GNO to validate the chain (~14% APY as October 2023) more information in the docs + You can stake your GNO on liquid staking platforms like StakeWise, or run your own node and stake directly as a validator. APY is variable, so check the live metrics linked in the docs for current values. 4. **Is there any official staking platform for GNO?** @@ -30,7 +30,7 @@ title: Staking and Liquid Staking 6. **Can you currently unstake sGNO or is that not ready yet?** - To withdraw directly you need to wait for Stakewise v3 that isn't out yet or if you really want to withdraw immediately, you can find some liquidity on Curve for sGNO and rGNO + StakeWise V3 is live on Gnosis Chain and StakeWise V2 is deprecated. If you still hold V2 assets (sGNO/rGNO), use the migration flow to move to V3. 7. **How can I convert rGNO?** diff --git a/docs/faq/node.md b/docs/faq/node.md index e8d87230e..89fbb745a 100644 --- a/docs/faq/node.md +++ b/docs/faq/node.md @@ -56,7 +56,7 @@ 9. Which clients are supported by GBC? - Lighthouse, Prysm, Nimbus, and Teku clients. [Read more here](../node/architecture.md#consensus-layer). + Lighthouse, Lodestar, Nimbus, and Teku clients. [Read more here](../node/architecture.md#consensus-layer). 10. How long does it take to sync the node? @@ -117,16 +117,22 @@ It depends on the mode and hardware specifications. Typically 24 hours should be 3. What are two types of withdrawals? There are 2 types of withdrawals: Partial Withdrawal and Full Withdrawal. - Partial Withdrawal: Any balance in excess of 1 GNO from the account balance gets withdrawn back to withdrawal address. - Full Withdrawal: All the balance from validator’s account gets withdrawn back to withdrawal address. This has to be initiated by validator, signing `voluntary_exit` message and broadcasting it to the network. It is irreversible. + Partial Withdrawal: Any eligible balance in excess of 1 GNO is processed for withdrawal. + Full Withdrawal: The validator exits and its full balance becomes withdrawable to the configured execution withdrawal address. This has to be initiated by the validator by signing a `voluntary_exit` message and broadcasting it to the network. It is irreversible. -4. What are 0x00 and 0x01 withdrawal credentials prefixes? +4. What are 0x00, 0x01, and 0x02 withdrawal credentials prefixes? - The beacon chain validators have a field called withdrawal credentials, where the first byte is referred to as the withdrawal prefix. Currently, this value can be either 0x00 or 0x01, depending on how it is set during the deposit process using a deposit tool. Validators with 0x00 withdrawal credentials won’t have immediate withdrawal capabilities. To enable partial and full withdrawals and unlock their funds, these validators must undergo a one-time migration to 0x01. As this is a one time process, it is essential to be careful performing it. + The beacon chain validators have a field called withdrawal credentials, where the first byte is referred to as the withdrawal prefix. + + `0x02` is the recommended execution-address prefix on Gnosis Chain. It supports the current withdrawal flow and is what new validators should use. + + `0x01` is a legacy execution-address prefix. It still works, but follows the older auto-sweep behavior and is no longer the recommended option for new validators. + + `0x00` is the old BLS-only prefix and does not support withdrawals until you perform a one-time BLS-to-execution credential change. 5. How do I change my withdrawal credential? - You can find a full tutorial on how to change your withdrawal credential [here](https://docs.gnosischain.com/node/management/withdrawals#how-to-change-the-withdrawal-credential). + You can find the current step-by-step guide here: [Validator Withdrawals](../node/management/withdrawals.md). 6. I have been running multiple validators. Can I set up the same withdrawal credential for all of them? @@ -134,42 +140,42 @@ It depends on the mode and hardware specifications. Typically 24 hours should be 7. Where can I check my withdrawal credential? - https://docs.gnosischain.com/node/management/withdrawals#check-withdrawal-credential + Check the Withdrawal tab for your validator on the [Beacon chain explorer](https://beaconchain.gnosischain.com/), or inspect the `withdrawal_credentials` field in your saved `deposit-data*.json` file. See [Validator Withdrawals](../node/management/withdrawals.md) for the current walkthrough. 8. Do partial withdrawals happen automatically? -As we have modified some specs regarding the withdrawals to enable withdrawing GNO instead of the native gas token xDai, unlike Ethereum, partial withdrawals currently do not happen automatically. So, for now, you will need to call [`claimWithdrawal`](https://gnosisscan.io/address/0x0b98057ea310f4d31f2a452b414647007d1645d9#writeProxyContract#F3) function on the [contract](https://gnosisscan.io/address/0x0b98057ea310f4d31f2a452b414647007d1645d9#writeProxyContract). However, it is in our plans to automate and subsidize partial withdrawals in the future. + The withdrawal processing itself is automatic once your validator is eligible. What is not automatic today is claiming the resulting GNO to the recipient address. After the withdrawal has been processed, you must claim it either on the [Deposit website](https://deposit.gnosischain.com/) or by calling [`claimWithdrawal`](https://gnosisscan.io/address/0x0B98057eA310F4d31F2a452B414647007d1645d9#writeProxyContract) or `claimWithdrawals(...)` on the deposit contract. 9. Do full withdrawals happen automatically? - No. If your validator is currently active and participating in the beacon chain, then the full withdrawal will not happen automatically. You will have to manually initiate an exit to cause this. + No. If your validator is currently active and participating in the beacon chain, the full withdrawal will not happen unless you first manually initiate a voluntary exit. - Additionally, if you initiate an exit but still have a 0x00 withdrawal credential, your funds will not be withdrawn until a `BLSToExecutionChange` message is included on chain. + Additionally, if you initiate an exit while still using `0x00` withdrawal credentials, your funds will remain locked until a `BLSToExecutionChange` is included on chain. 10. Is there a UI that I can use for withdrawals? - No, as you will have to interact with the beacon chain, it is not feasible to provide a UI that encompasses all the clients. + Yes. You can claim withdrawals on the [Deposit website](https://deposit.gnosischain.com/). Advanced users can also claim directly through the deposit contract on Gnosis Chain. 11. Where does the automatic balance withdraw to? - In case you are using a legacy withdrawal credential 0x00, it will not be withdrawn and you will have to perform a migration to 0x01 credentials to complete the withdrawal. If you have already configured your withdrawal address and have a withdrawal credential of 0x01, then rewards in excess of 1 GNO will be transferred to your withdrawal address. + Withdrawals are associated with the validator's configured execution withdrawal address, also referred to as the recipient address in the current docs. If you are still on `0x00`, withdrawals cannot complete until you convert to an execution-address credential. -12. Once I have changed my credential to 0x01, can I change it to an alternative withdrawal address? +12. Once I have changed my credential to an execution address, can I change it to an alternative withdrawal address? - No, the migration from 0x00 to 0x01 is a one time process and once you set the address, it cannot be changed. Please make this migration with the utmost care. Note, the withdrawal credential can either be an externally-owned account (EOA) or a smart contract such as a SAFE. + No. The BLS-to-execution change is a one-time operation. Once you set the execution withdrawal address, it cannot be changed later. Please perform this step carefully. The withdrawal address can be either an externally owned account (EOA) or a smart contract wallet such as a Safe. 13. I have lost the private key to my withdrawal address, what can I do? Unfortunately, there is nothing that can be done if the withdrawal address is lost. Please ensure this address is properly backed up and securely stored. -14. What happens to my GNO if I make a full withdrawal but I forget to set the withdrawal credential to 0x01? +14. What happens to my GNO if I make a full withdrawal but I forget to set the withdrawal credential to an execution address? - Nothing. Your validator will exit, and will no longer be assigned duties, neither able to earn nor lose any more additional GNO. You may still migrate your withdrawal credentials from 0x00 to 0x01. Once this is done, the validator’s balance will be withdrawn to the address you specify. + Your validator will exit and stop performing duties, but the funds will not be withdrawable until you complete the BLS-to-execution credential change. Once you do that, the validator balance can be withdrawn and claimed to the configured recipient address. 15. Can I cancel a withdrawal request that is in the queue? - No you cannot, this is a one time, irreversible process. Once you submit your withdrawal request (BLSToExecutionChange and/or exit) you can’t go back. Please only exit or change credentials when you are fully aware of what the specific operation will do and with utmost caution. + No. These are one-way operations. Once you submit a `BLSToExecutionChange` and/or a voluntary exit, you cannot reverse it. Make sure you understand the effect of each action before proceeding. 16. Where can I find the client updates for Shapella? - You can find all client updates in this [blog post](https://www.gnosis.io/blog/shapella-client-updates) or [validator withdrawal section](https://docs.gnosischain.com/node/management/withdrawals). Make sure you update your clients before the upgrade. + Refer to the current [Validator Withdrawals](../node/management/withdrawals.md) guide and each client's official release notes. The original Shapella client-update post is useful historical context, but the withdrawals guide should be treated as the current operator-facing source of truth. diff --git a/docs/node/Node Tools/dappnode.md b/docs/node/Node Tools/dappnode.md index b1bcfa201..d1db3a5c3 100644 --- a/docs/node/Node Tools/dappnode.md +++ b/docs/node/Node Tools/dappnode.md @@ -25,13 +25,13 @@ Make sure to select the Gnosis chain tab, The next step is to select the combination of client you want to use in your dappnode. For this process you need to select: -- 1. Select the execution client: Nethermind-xdai. Click on the package -- 2. Select the consensus client, here you can install one of the following options: Teku-gnosis, Lighthouse-gnosis and Prysm-gnosis +- 1. Select the execution client package available in your Stakers UI (for example Nethermind or Erigon, package names may vary by version). +- 2. Select the consensus client package (for example Teku or Lighthouse, package names may vary by version). - 3. Install the web3signer. This is required because this is the package that will contain the keystores. ![Select the execution and consensus clients](/img/node/dappnode-stakers-ui-2.png) -1. Select the Execution client. For now, or in the moment this guide was created, nethermind is the only execution client that supports gnosis chain. +1. Select the Execution client. In DAppNode's Gnosis Stakers UI, available execution client packages vary by version. ![Execution client ](/img/node/dappnode-execution-client.png) 2. Select the consensus client. You will see the next fields when you click in the package chart. @@ -95,7 +95,7 @@ Be patient, the installation process can take several minutes. You can check all @@ -151,4 +151,3 @@ In case you need some xDai for transaction fees you can get some from the [Offic 5. Check that you understand the risks and ensure you are interacting with the correct contract before proceeding. 6. Click `Ok` and confirm the transaction in your wallet to complete the deposit. 7. Our proxy smart contract will deposit the GNO(s) to your validators! YOU control the private keys, YOU control the withdrawal key(s)... these validators are now **yours**. Take good care of them! - diff --git a/docs/node/Node Tools/eth-docker.md b/docs/node/Node Tools/eth-docker.md index 32bbb89be..03815f00a 100644 --- a/docs/node/Node Tools/eth-docker.md +++ b/docs/node/Node Tools/eth-docker.md @@ -54,7 +54,7 @@ Configure eth-docker - have an Gnosis address handy where you want Execution Lay 3. Select consensus client: Lighthouse, Teku, or Nimbus. 4. Select execution client: Nethermind, or Erigon. 5. Select checkpoint sync: Choose Yes if you want to use CL rapid sync with remote checkpoint. -6. Configure checkpoint consensus client: paste the checkpoint URL from https://checkpoint.gnosischain.com/. +6. Configure checkpoint consensus client: paste the checkpoint URL from https://checkpoint.gnosischain.com. 7. Select MEV Boost 8. Select Grafana dashboard 9. Configure Graffiti: Enter the graffiti for your validator. diff --git a/docs/node/Node Tools/sedge.md b/docs/node/Node Tools/sedge.md index ef4ed6c1f..9a6f13735 100644 --- a/docs/node/Node Tools/sedge.md +++ b/docs/node/Node Tools/sedge.md @@ -1,6 +1,6 @@ # Nethermind Sedge -A one-click setup tool for PoS network/chain validators, this includes support for Gnosis chain mainnet and chiado testnet. **Sedge** takes care of the entire on-premise full node setup based on the chosen client, using generated docker-compose scripts based on the desired configuration. +A one-click setup tool for PoS network/chain validators, this includes support for Gnosis chain mainnet and chiado testnet. **Sedge** takes care of the entire on-premise full node setup based on the chosen client, using generated Compose files based on the desired configuration. Repository: https://github.com/NethermindEth/sedge diff --git a/docs/node/README.md b/docs/node/README.md index 1a62003d3..1d32f03e2 100644 --- a/docs/node/README.md +++ b/docs/node/README.md @@ -21,15 +21,15 @@ Gnosis is persistently committed to building the open infrastructure for a decen ### Featured Headlines - Gnosis minimum stake is 1 GNO to run a validator. -- Operating a Gnosis validator will earn you approximately 13% GNO validator rewards as well as transaction fees from the blocks you build in xDAI. +- Validator rewards are variable and depend on network participation and validator performance. See [Rewards & Penalties](./rewards-penalties.md) for live sources. - Gnosis has a strong culture of homestakers running nodes from their homes, that are not reliant on cloud providers or datacenters. -- Gnosis has a stretch goal to have a node in every country by 2025. +- Gnosis continues to encourage broad geographic distribution of independently operated nodes. #### Gnosis vs. Ethereum - Gnosis runs the same composite client software and tooling stack as Ethereum - In some cases, Gnosis clients are just Ethereum clients run with a `--network` flag! (e.g. [Nethermind](https://downloads.nethermind.io/), [Lighthouse](https://lighthouse.sigmaprime.io/), etc) -- Gnosis aims to be a learning ground for a new generation of node runners, requiring only 1 GNO (around $100 at April 2025) instead of the 32 ETH (around $47.000 at April 2025) minimum required for Ethereum +- Gnosis aims to be a learning ground for a new generation of node runners, requiring only 1 GNO instead of the 32 ETH minimum required for Ethereum - Gnosis Chain runs the same client software as Ethereum, with minor parameter tweaks. As such, Gnosis is a Proof-of-Stake network that uses Ethereum's Beacon Chain consensus. ## Choosing an Approach @@ -48,8 +48,6 @@ When the node is running and syncing, you are ready to use it. You must always k ## Environment and Hardware -### Environment and Hardware - #### **Local or Cloud** Gnosis clients are able to run on consumer grade computers and don't require any special hardware, like mining machines for example. Therefore, you have various options for deploying the node based on your needs. To simplify, let's think about running a node on both a local physical machine and a cloud server: @@ -94,7 +92,7 @@ Hardware requirements differ by client but generally are not that high since the Before installing any client, please ensure your computer has enough resources to run it. You can find the minimum and recommended requirements below. -The bottleneck for your hardware is mostly disk space. Syncing the Gnosis blockchain is very input/output intensive and requires a lot of space. It is best to have a solid-state drive (SSD) with hundreds of GBs of free space to spare even after the synchronization. Refer to [this post](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038) for good and bad SSD model. +The bottleneck for your hardware is mostly disk space. Syncing the Gnosis blockchain is very input/output intensive and requires substantial free storage. It is best to have a solid-state drive (SSD) with significant free space to spare even after synchronization. Refer to [this post](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038) for good and bad SSD models. The size of the database and speed of the initial synchronization depends on the chosen client, its configuration and sync strategy. @@ -102,34 +100,33 @@ Also make sure your internet connection is not limited by a bandwidth cap. It's **Operating System** -All clients support major operating systems - Linux, MacOS, Windows. This means you can run nodes on regular desktop or server machines with the operating system (OS) that suits you the best. Make sure your OS is up to date to avoid potential issues and security vulnerabilities. +Most clients publish binaries for Linux and macOS, and many also support Windows. Linux is the most common choice for production node operation. Always verify OS support in each client's documentation and keep systems up to date for security. -**Requirements** +**Baseline Requirements** - CPU with at least 4 threads - At least 16 GB of RAM - NVMe SSD (preferred) or SATA SSD -Requirements vary client to client, for more detail see the associated system requirements below. +Requirements vary by client and release. Use the client-specific requirement pages below as the source of truth. -| Execution Layer | | -| --------------- | ------------------------------------------------------------------------------------------------------------------------ | +| Execution Layer | Requirements | +| --------------- | ------------ | | Nethermind | [Nethermind: System Requirements](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/system-requirements) | -| Besu | [Besu: System Requirements](https://besu.hyperledger.org/en/stable/public-networks/get-started/system-requirements/) | -| Erigon | [Erigon: System Requirements](https://github.com/ledgerwatch/erigon#system-requirements) | -| Geth | [Geth: Hardware](https://geth.ethereum.org/docs/interface/hardware) | +| Erigon | [Erigon: System Requirements](https://github.com/erigontech/erigon#system-requirements) | +| Reth | [Reth: System Requirements](https://reth.rs/run/system-requirements/) | +| Geth | [Geth: Hardware Requirements](https://geth.ethereum.org/docs/getting-started/hardware-requirements) | -**Gnosis Chain only supports Nethermind and Erigon at the moment.** +Supported execution clients on Gnosis Chain include Nethermind, Erigon, Reth, and Geth. -| Consensus Layer | | -| --------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| Consensus Layer | Requirements | +| --------------- | ------------ | | Lighthouse | [Lighthouse: System Requirements](https://lighthouse-book.sigmaprime.io/installation.html#recommended-system-requirements) | | Lodestar | [Lodestar: Specifications](https://chainsafe.github.io/lodestar/#specifications) | | Nimbus | [Nimbus: Hardware](https://nimbus.guide/hardware.html) | -| Teku | TBD | -| Prysm | [Prysm: Prerequisites](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/#step-1-review-prerequisites-and-best-practices) | +| Teku | [Teku: System Requirements](https://docs.teku.consensys.io/get-started/system-requirements) | -**Gnosis Chain doesn't support Prysm at the moment.** +Supported consensus clients on Gnosis Chain include Lighthouse, Lodestar, Nimbus, and Teku. Check out [Rocketpool's excellent guide](https://docs.rocketpool.net/guides/node/local/hardware.html) that explains hardware requirements for running a node. @@ -212,7 +209,9 @@ Here are the release pages of clients where you can find their pre-built binarie **Execution clients** - [Nethermind](https://downloads.nethermind.io/) -- [Erigon](https://github.com/ledgerwatch/erigon/releases) +- [Erigon](https://github.com/erigontech/erigon/releases) +- [Geth](https://github.com/gnosischain/go-ethereum/releases) +- [Reth](https://github.com/gnosischain/reth_gnosis) **Consensus clients** @@ -306,9 +305,9 @@ The consensus client must be started with the right port configuration to establ The consensus client also needs the path to the execution client's `jwtsecret` in order to authenticate the RPC connection between them. Similar to execution examples above, each consensus client has a configuration flag which takes the jwt token file path as an argument. This must be consistent with the `jwtsecret` path provided to the execution client. -If you plan to run a validator, make sure to add a configuration flag specifying the Gnosis address of the fee recipient. This is where ether rewards for your validator accumulate. Each consensus client has an option, e.g. `--suggested-fee-recipient=0xabcd1`, that takes an Gnosis address as an argument. +If you plan to run a validator, make sure to add a configuration flag specifying the Gnosis address of the fee recipient. This is where execution-layer rewards for your validator accumulate. Each consensus client has an option, e.g. `--suggested-fee-recipient=0xabcd1`, that takes a Gnosis address as an argument. -When starting a Beacon Node on a testnet, you can save significant syncing time by using a public endpoint for [Checkpoint sync](https://checkpoint.gnosischain.com/). +When starting a Beacon Node on a testnet, you can save significant syncing time by using a public endpoint for [Checkpoint sync](https://checkpoint.gnosischain.com). #### **Running a consensus client** @@ -316,8 +315,8 @@ When starting a Beacon Node on a testnet, you can save significant syncing time Before running Lighthouse, learn more on how to install and configure it in [Lighthouse Book](https://lighthouse-book.sigmaprime.io/). ```bash - ./lighthouse \ - --network gnosis beacon_node \ + ./lighthouse beacon_node \ + --network gnosis \ --datadir=data \ --http \ --execution-endpoint http://localhost:8551 \ @@ -331,16 +330,16 @@ Before running Lighthouse, learn more on how to install and configure it in [Lig ```bash ./lodestar beacon \ ---network gnosis \ ---dataDir="/data" ---jwt-secret /path/to/jwtsecret \ ---eth1.enabled=true \ +--network=gnosis \ +--dataDir="/data" \ +--jwtSecret=/path/to/jwtsecret \ --execution.urls="http://127.0.0.1:8551" \ +--checkpointSyncUrl="https://checkpoint.gnosischain.com" ``` **Running Teku** -[Teku](https://docs.teku.consensys.net/) +[Teku](https://docs.teku.consensys.io/) ```bash teku \ @@ -356,7 +355,7 @@ A consensus client serves as a Beacon Node for validators to connect. Each conse Running your own validator allows for [solo staking](https://ethereum.org/en/staking/solo/), the most impactful and trustless method to support the Gnosis network. This requires only 1 GNO. Check out how to [deposit validators](/node/manual/validator/deposit). -If you don't want to run your own node but interested in staking your GNO to earn fee, look into [liquid staking](/tools/beacon-chain/liquid-staking) for an overview about staking options. +If you don't want to run your own node but interested in staking your GNO to earn fee, look into [liquid staking](/node/participate-validator/liquid-staking) for an overview about staking options. ## Reference diff --git a/docs/node/architecture.md b/docs/node/architecture.md index 51b7ce262..59cc45ad9 100644 --- a/docs/node/architecture.md +++ b/docs/node/architecture.md @@ -37,9 +37,10 @@ Node Operators will need to run an Execution Layer client, which will interact w - [Nethermind](./manual/execution/nethermind.md) - [Erigon](./manual/execution/erigon.md) -- [Geth](./manual/execution/geth.md) (in progress) +- [Reth](./manual/execution/reth.md) +- [Geth](./manual/execution/geth.md) -Gnosis used to be supported by the [Parity OpenEthereum client](./manual/execution/openethereum.md), but it has since been deprecated. +Gnosis used to be supported by the Parity OpenEthereum client, but that client has been deprecated. ### Consensus Layer @@ -61,7 +62,6 @@ Node operators will need to run a Consensus Layer client. In most cases, these a - [Nimbus](./manual/beacon/nimbus.md) - [Teku](./manual/beacon/teku.md) - [Lighthouse](./manual/beacon/lighthouse.md) -- [Prysm](./manual/beacon/prysm.md) (in progress) ### Inter-Layer Communication diff --git a/docs/node/management/migrating-validator.md b/docs/node/management/migrating-validator.md index 73349101e..f52e3669d 100644 --- a/docs/node/management/migrating-validator.md +++ b/docs/node/management/migrating-validator.md @@ -19,7 +19,7 @@ Specific instructions will differ depending on the client you are running. In ge 5. Import initial state and slashing protection history from original validator to the new validator. 6. Remove account data from original validator, make sure it is not running! This is critical to avoid slashing! Some recommendations: - Rename or move keys folder in the original validator to another location. - - Stop and remove containers (`docker-compose down`) if you are using Docker. + - Stop and remove containers (`docker compose down`) if you are using Docker. - Remove old images (`docker rmi $(docker images | grep 'gbc-')` if you used the Launchpad). 7. Start new validator. @@ -65,7 +65,7 @@ Import an interchange file to the slashing protection DB: validator slashing-protection import --network gnosis --file interchange.json ``` -- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#validator-slashing-protection-import). +- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#validator-slashing-protection-import). ## Nimbus @@ -87,26 +87,6 @@ build/nimbus_beacon_node slashingdb import path/to/export_dir/slashing-protectio - For more info, see the Nimbus [Migration](https://nimbus.guide/migration.html) docs. -## Prysm - -### Export {#prysm-export} - -Run the following to export your Prysm validator's slashing protection history: - -```bash -prysm.sh validator slashing-protection-history export --datadir=/your/prysm/wallet --slashing-protection-export-dir=/path/to/export_dir -``` - -### Import {#prysm-import} - -You can import it as follows using any installation method for your Prysm validator. - -```bash -prysm.sh validator slashing-protection-history import --datadir=/path/to/your/validator/db --slashing-protection-json-file=/path/to/desiredimportfile -``` - -- For more info, see the Prysm [Import & export slashing protection history](https://prysm.offchainlabs.com/docs/backup-and-migration/slashing-protection/) doc. - ## Teku ### Export {#teku-export} @@ -125,8 +105,8 @@ When importing the slashing-protection file, Teku imports the file to the ` - ``` +```shell --Metrics.Enabled true --Metrics.ExposePort $PORT --Metrics.PushGatewayUrl +``` -Refer to https://docs.nethermind.io/nethermind/ethereum-client/metrics/setting-up-local-metrics-infrastracture +- https://docs.nethermind.io/monitoring/metrics/ + + + +```shell +--metrics 127.0.0.1:$PORT ``` - + +- Prometheus metrics are served on `/metrics`. +- https://reth.rs/cli/cli/ +- https://reth.rs/run/faq/ports/ + + + +```shell +--metrics +--metrics.addr 127.0.0.1 +--metrics.port $PORT +``` + +- Prometheus-formatted metrics are served on `/debug/metrics/prometheus`. +- https://geth.ethereum.org/docs/monitoring/metrics -WIP +```shell +--metrics +--metrics.addr=0.0.0.0 +``` + +- By default, `metrics` uses port `6060`. +- If `--pprof` is also enabled, configure a separate `--pprof.port`. +- https://github.com/erigontech/erigon#other-ports @@ -73,15 +101,16 @@ https://github.com/sigp/lighthouse-metrics ```shell --metrics=true --metrics.port=$PORT +``` -https://chainsafe.github.io/lodestar/logging-and-metrics/prometheus-grafana/ -https://chainsafe.github.io/lodestar/beacon-management/beacon-cli/#-metrics +- https://chainsafe.github.io/lodestar/run/logging-and-metrics/prometheus-grafana/ +- https://chainsafe.github.io/lodestar/run/beacon-management/beacon-cli/#-metrics ``` --metrics-enabled=true ``` -https://docs.teku.consensys.net/en/latest/HowTo/Monitor/Metrics/ +https://docs.teku.consensys.io/how-to/monitor/use-metrics @@ -93,10 +122,6 @@ https://docs.teku.consensys.net/en/latest/HowTo/Monitor/Metrics/ https://nimbus.guide/metrics-pretty-pictures.html#simple-metrics - - - -https://prysm.offchainlabs.com/docs/monitoring-alerts-metrics/grafana-dashboard/ @@ -147,8 +172,7 @@ The site is deprecated #### Execution Layer -- **Gnosisscan** - [Gnosisscan](https://gnosisscan.io/) provides data about blocks, transactions, validator's reward on Execution Layer, etc. +- [Gnosisscan](https://gnosisscan.io/) provides data about blocks, transactions, validator's reward on Execution Layer, etc. To check your Execution Layer Reward (in xDAI): @@ -156,15 +180,13 @@ The site is deprecated 2. Click **Validated Blocks** ![GnosisScan Block Validated by Validator](../../../static/img/node/monitor-node/gnosisscan-validated-block.png) -- **Blockscout** - [Blockscout](https://blockscout.com/xdai/mainnet) is another block explorer similar to Gnosisscan. +- [Blockscout](https://gnosis.blockscout.com/) is another block explorer similar to Gnosisscan. ![Blockscout Block Validator by Validator](../../../static/img/node/monitor-node/blockscout-validated-block.png) #### Consensus Layer -- **Beacon chain explorer** - [Beacon chain explorer](https://beaconchain.gnosischain.com/) provides insight on consensus layer such as most recent epochs, most recent blocks, and validator's reward on Consensus layer. You can view your validator's info by using its public key or index. +- [Beacon chain explorer](https://beaconchain.gnosischain.com/) provides insight on consensus layer such as most recent epochs, most recent blocks, and validator's reward on Consensus layer. You can view your validator's info by using its public key or index. To check your Consensus Layer Reward (in mGNO): diff --git a/docs/node/management/voluntary-exit.md b/docs/node/management/voluntary-exit.md index 07d72af8b..738987cf6 100644 --- a/docs/node/management/voluntary-exit.md +++ b/docs/node/management/voluntary-exit.md @@ -4,14 +4,14 @@ title: Voluntary Exit If you decide to stop validating and disable your node, you can initiate a voluntary exit. This will freeze your balance at its current value (rewards and/or penalties will no longer accrue). -If you initiates a voluntary exit, your validator will receive the full staked funds to the withdrawal address, provided that the validator has [withdrawal credentials](withdrawals.md#check-withdrawal-credential) of type `0x01`. +If you initiate a voluntary exit, your validator can fully withdraw to the configured execution withdrawal address once exit processing is complete. See [validator withdrawals](withdrawals.md) for withdrawal credential details. Voluntary exit procedures vary depending on your client. :::caution Exits are non-reversible; once you have exited you cannot restart your validator. -It is recommended to update your withdrawal credentials to the `0x01` type before exiting your validator. Updating your withdrawal credentials later, when your node is stopped, will be more difficult. [withdrawal credentials](withdrawals.md#check-withdrawal-credential). +It is recommended to set execution withdrawal credentials before exiting your validator. Updating credentials later, after your node is stopped, can be more difficult. See [validator withdrawals](withdrawals.md). ::: ### Dappnode @@ -38,7 +38,7 @@ Follow the syntax of the Lodestar CLI commands and their options. validator voluntary-exit --network gnosis --pubkeys 0xF00 ``` -- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#validator-voluntary-exit). +- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#validator-voluntary-exit). ### Nimbus @@ -50,16 +50,6 @@ build/nimbus_beacon_node deposits exit --data-dir=build/data/shared_gnosis_0 --v - For more info, see the Nimbus [Perform a voluntary exit](https://nimbus.guide/voluntary-exit.html) docs. -### Prysm - -Use [prysmctl tool](https://prysm.offchainlabs.com/docs/configure-prysm/prysmctl/) to voluntarily exit your validator. - -```bash -prysmctl validator exit --wallet-dir= --beacon-rpc-provider=<127.0.0.1:4000> -``` - -- For more info, see the Prysm [Exit your validator](https://prysm.offchainlabs.com/docs/manage-validator/exiting-a-validator/) doc. - ### Teku Use the voluntary-exit subcommand to initiate a voluntary exit for specified validators. @@ -69,4 +59,4 @@ teku voluntary-exit --beacon-node-api-endpoint=http://consensus:5051 \ --validator-keys=validator/keys/validator_ABC.json:validator/passwords/validator_ABC.txt ``` -- For more info, see the Teku [Voluntarily exit a validator](https://docs.teku.consensys.net/how-to/voluntarily-exit#:~:text=A%20voluntary%20exit%20is%20when,successfully%20exited%20to%20avoid%20penalties.) docs. +- For more info, see the Teku [Voluntarily exit a validator](https://docs.teku.consensys.io/how-to/voluntarily-exit) docs. diff --git a/docs/node/manual/_partials/_multidimensional-content-controls-partial.md b/docs/node/manual/_partials/_multidimensional-content-controls-partial.md index 15944cdb5..c1774cdc8 100644 --- a/docs/node/manual/_partials/_multidimensional-content-controls-partial.md +++ b/docs/node/manual/_partials/_multidimensional-content-controls-partial.md @@ -31,13 +31,13 @@ import {MultiDimensionalContentWidget} from '@site/src/components/MultiDimension {label: 'Execution client:', value: 'label'}, {label: 'Nethermind', value: 'nethermind'}, {label: 'Erigon', value: 'erigon'}, - {label: 'Besu', value: 'besu'}, - {label: 'Geth', value: 'geth'}, + {label: 'Reth', value: 'reth'}, + {label: 'Geth', value: 'geth'} ]}> - + @@ -46,16 +46,13 @@ import {MultiDimensionalContentWidget} from '@site/src/components/MultiDimension {label: 'Lighthouse', value: 'lighthouse'}, {label: 'Lodestar', value: 'lodestar'}, {label: 'Teku', value: 'teku'}, - {label: 'Nimbus', value: 'nimbus'}, - {label: 'Prysm', value: 'prysm'} + {label: 'Nimbus', value: 'nimbus'} ]}> - -

* disabled options: unsupported clients

- \ No newline at end of file + diff --git a/docs/node/manual/beacon/_partials/_install_cl_lighthouse.md b/docs/node/manual/beacon/_partials/_install_cl_lighthouse.md index fc8f6c265..2dc6b5efc 100644 --- a/docs/node/manual/beacon/_partials/_install_cl_lighthouse.md +++ b/docs/node/manual/beacon/_partials/_install_cl_lighthouse.md @@ -14,66 +14,38 @@ import TabItem from '@theme/TabItem'; ]}> -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. +- Go to the [Lighthouse releases page](https://github.com/sigp/lighthouse/releases) and copy the URL of the latest release for your OS/architecture. -- Download the lighthouse-VERSION-ARQ.tar.gz binary. +- Download the `lighthouse--.tar.gz` binary. ```bash wget [URL_FROM_PREVIOUS_STEP] ``` -- Extract the downloaded file +- Extract the downloaded file. ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus + tar -xvf [FILE_NAME] --directory consensus ``` -- Get into the folder +- Get into the folder. ```bash cd consensus ``` - - Execute Lighthouse +- Execute Lighthouse beacon node. ```bash - ./lighthouse \ - --network gnosis beacon_node \ - --datadir=data \ - --http \ - --execution-endpoint http://localhost:8551 \ - --execution-jwt ../jwtsecret/jwt.hex \ - --checkpoint-sync-url "https://checkpoint.gnosischain.com" + ./lighthouse beacon_node \ + --network gnosis \ + --datadir=data \ + --http \ + --execution-endpoint=http://localhost:8551 \ + --execution-jwt=../jwtsecret/jwt.hex \ + --checkpoint-sync-url=https://checkpoint.gnosischain.com ``` -Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. - -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. - -- Download the lighthouse-VERSION-ARQ.tar.gz binary. - ```bash - wget [URL_FROM_PREVIOUS_STEP] - ``` - -- Extract the downloaded file - ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus - ``` - -- Get into the folder - ```bash - cd consensus - ``` - - - Execute Lighthouse - ```bash - ./lighthouse \ - --network gnosis beacon_node \ - --datadir=data \ - --http \ - --execution-endpoint http://localhost:8551 \ - --execution-jwt ../jwtsecret/jwt.hex \ - --checkpoint-sync-url "https://checkpoint.gnosischain.com" - ``` +Lighthouse only runs on Linux. To run it on Windows, [install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the same steps in the WSL terminal. @@ -87,77 +59,40 @@ Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows w ]}> -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. +- Go to the [Lighthouse releases page](https://github.com/sigp/lighthouse/releases) and copy the URL of the latest release for your OS/architecture. -- Download the lighthouse-VERSION-ARQ.tar.gz binary. +- Download the `lighthouse--.tar.gz` binary. ```bash wget [URL_FROM_PREVIOUS_STEP] ``` -- Extract the downloaded file +- Extract the downloaded file. ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus + tar -xvf [FILE_NAME] --directory consensus ``` -- Get into the folder +- Get into the folder. ```bash cd consensus ``` -- Clone Gonsis Chain configuration repository from github - ```bash - git clone https://github.com/gnosischain/configs.git - ``` - -- Run Lighthouse beacon node +- Run Lighthouse beacon node. ```bash - ./lighthouse bn \ + ./lighthouse beacon_node \ --network chiado \ - --execution-endpoints=http://localhost:8551 \ + --datadir=data \ + --execution-endpoint=http://localhost:8551 \ --execution-jwt=../jwtsecret/jwt.hex \ - --checkpoint-sync-url https://checkpoint.chiadochain.net \ - --disable-deposit-contract-sync + --checkpoint-sync-url=https://checkpoint.chiadochain.net ``` -Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. - -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. - -- Download the lighthouse-VERSION-ARQ.tar.gz binary. - ```bash - wget [URL_FROM_PREVIOUS_STEP] - ``` - -- Extract the downloaded file - ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus - ``` - -- Get into the folder - ```bash - cd consensus - ``` -- Clone Gonsis Chain configuration repository from github - ```bash - git clone https://github.com/gnosischain/configs.git - ``` - - -- Run Lighthouse beacon node - ```bash - ./lighthouse bn \ - --network chiado \ - --execution-endpoints=http://localhost:8551 \ - --execution-jwt=../jwtsecret/jwt.hex \ - --checkpoint-sync-url https://checkpoint.chiadochain.net \ - --disable-deposit-contract-sync - ``` +Lighthouse only runs on Linux. To run it on Windows, [install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the same steps in the WSL terminal. - \ No newline at end of file + diff --git a/docs/node/manual/beacon/_partials/_install_cl_lodestar.md b/docs/node/manual/beacon/_partials/_install_cl_lodestar.md index 5ae829ac8..1108beef6 100644 --- a/docs/node/manual/beacon/_partials/_install_cl_lodestar.md +++ b/docs/node/manual/beacon/_partials/_install_cl_lodestar.md @@ -14,94 +14,26 @@ import TabItem from '@theme/TabItem'; ]}> -- Clone the repo locally - -```shell -git clone https://github.com/chainsafe/lodestar.git -``` - -- Install and build all the packages -```shell -cd lodestar -yarn install -yarn build -``` - -Your repo will look like this -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 lodestar/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ -``` - -:::tip -Check that you are install correctly by running `./lodestar --help' -::: - - - Execute Lodestar Beacon Chain - ```bash - ./lodestar beacon \ - --network=gnosis \ - --execution.urls=http://localhost:8551 \ - --jwt-secret=../../jwtsecret/jwt.hex \ - --metrics=true \ - --metrics.port=8008 \ - --checkpointSyncUrl=https://checkpoint.gnosischain.com/ +- Download Lodestar from the [official release page](https://github.com/ChainSafe/lodestar/releases) and extract it in your `consensus` directory. + +- Run Lodestar beacon node. + ```bash + ./lodestar beacon \ + --network=gnosis \ + --dataDir=./data \ + --execution.urls=http://localhost:8551 \ + --jwtSecret=../jwtsecret/jwt.hex \ + --metrics=true \ + --metrics.port=8008 \ + --checkpointSyncUrl=https://checkpoint.gnosischain.com ``` - - -Lodestar only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. - -- Clone the repo locally - -```shell -git clone https://github.com/chainsafe/lodestar.git -``` - -- Install and build all the packages -```shell -cd lodestar -yarn install -yarn build -``` - -Your repo will look like this -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 lodestar/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ -``` - -:::tip -Check that you are install correctly by running `./lodestar --help' -::: - - - Execute Lodestar Beacon Chain - ```bash - ./lodestar beacon \ - --network=gnosis \ - --execution.urls=http://localhost:8551 \ - --jwt-secret=../../jwtsecret/jwt.hex \ - --metrics=true \ - --metrics.port=8008 \ - --checkpointSyncUrl=https://checkpoint.gnosischain.com/ - ``` - +Lodestar supports Windows, but for consistency with the rest of this guide we recommend [WSL](https://learn.microsoft.com/en-us/windows/wsl/install). +Run the same command from the WSL terminal. @@ -115,15 +47,21 @@ Check that you are install correctly by running `./lodestar --help' ]}> -Lodestar doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpointSyncUrl=https://checkpoint.gnosischain.com` with `--checkpointSyncUrl=https://checkpoint.chiadochain.net` -Lodestar doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpointSyncUrl=https://checkpoint.gnosischain.com` with `--checkpointSyncUrl=https://checkpoint.chiadochain.net` - \ No newline at end of file + diff --git a/docs/node/manual/beacon/_partials/_install_cl_nimbus.md b/docs/node/manual/beacon/_partials/_install_cl_nimbus.md index 710beb649..984a73a80 100644 --- a/docs/node/manual/beacon/_partials/_install_cl_nimbus.md +++ b/docs/node/manual/beacon/_partials/_install_cl_nimbus.md @@ -1,6 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; + -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +- Download Nimbus from the [official release page](https://github.com/status-im/nimbus-eth2/releases) and extract it in your `consensus` directory. + +- Run Nimbus beacon node. + +```shell +./nimbus_beacon_node \ + --network=gnosis \ + --data-dir=./data \ + --el=http://127.0.0.1:8551 \ + --jwt-secret=../jwtsecret/jwt.hex +``` + +:::tip +Nimbus can run validator duties in the beacon node process. Once your beacon node is synced, continue to [Step 4: Run a validator](../../README.md#step-4-run-a-validator) to import your keys and restart Nimbus with a fee recipient. +::: -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +- Download the Windows archive from the [official release page](https://github.com/status-im/nimbus-eth2/releases) and extract it in your `consensus` directory. + +- Run the same beacon node command from PowerShell, replacing `./nimbus_beacon_node` with `./nimbus_beacon_node.exe`. @@ -32,12 +49,17 @@ Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) ]}> -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `./nimbus_beacon_node` with `./nimbus_beacon_node.exe` diff --git a/docs/node/manual/beacon/_partials/_install_cl_teku.md b/docs/node/manual/beacon/_partials/_install_cl_teku.md index f4911c472..d11f002ce 100644 --- a/docs/node/manual/beacon/_partials/_install_cl_teku.md +++ b/docs/node/manual/beacon/_partials/_install_cl_teku.md @@ -15,137 +15,66 @@ import TabItem from '@theme/TabItem'; ## Prerequisites -1. Java 11+ - +1. Java runtime compatible with the current Teku release. See [Teku system requirements](https://docs.teku.consensys.io/get-started/system-requirements). ## Install and Run -- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the url of the binary distribution under **Downloads** section. - +- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the URL for your OS/architecture under **Downloads**. -- Download the teku Source code .tar.gz binary. +- Download the Teku archive. ```bash wget [URL_FROM_PREVIOUS_STEP] ``` -- Extract the downloaded file and move under consensus directory +- Extract the downloaded file under the `consensus` directory. ```bash - tar -xvf VERSION.tar.gz --directory consensus + tar -xvf [FILE_NAME].tar.gz --directory consensus ``` -- Get into the teku folder +- Get into the Teku folder. ```bash - cd consensus && cd teku-${version} + cd consensus && cd teku-[VERSION] ``` -Your repo will look like this - +Check that Teku is installed correctly: - -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 teku-${version}/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ +```bash +./bin/teku --help ``` -If you're installing on macOS with Homebrew, check out [here](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Installation-Options/Install-Binaries/#macos-with-homebrew). - -Check that you are installing correctly by running `./bin/teku --help' - - :::tip -You can run both beacon and validator with a single command. If you wish to run with a single command, skip to [step 4: Run a validator](../../README.md#step-4-run-a-validator). +You can run both beacon and validator with a single command. If you want this mode, continue to [Step 4: Run a validator](../../README.md#step-4-run-a-validator). ::: -- Execute beacon node(Optional) +- Execute beacon node (optional): ```shell ./bin/teku \ - --network=gnosis \ + --network=gnosis \ --ee-endpoint=http://localhost:8551 \ # highlight-next-line - --ee-jwt-secret-file=${PATH_TO_JWT_SECRET} \ - --metrics-enabled=true \ + --ee-jwt-secret-file=../jwtsecret/jwt.hex \ + --metrics-enabled=true \ --rest-api-enabled=true \ # highlight-next-line - --initial-state=${checkpoint url} \ + --checkpoint-sync-url=https://checkpoint.gnosischain.com ``` -Get the latest checkpoint url at https://checkpoint.gnosis.gateway.fm/. +You can also use `--initial-state` if you already have a checkpoint state file. ## Prerequisites -1. Java 11+ +1. Java runtime compatible with the current Teku release. See [Teku system requirements](https://docs.teku.consensys.io/get-started/system-requirements). 2. [Microsoft Visual C++ 2010 security update](https://www.microsoft.com/en-us/download/details.aspx?id=26999) ## Install and Run -- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the url of the binary distribution under **Downloads** section. - - -- Download the teku Source code .tar.gz binary. - ```bash - wget [URL_FROM_PREVIOUS_STEP] - ``` - -- Extract the downloaded file and move under consensus directory - ```bash - tar -xvf VERSION.tar.gz --directory consensus - ``` - -- Get into the teku folder - ```bash - cd consensus && cd teku-${version} - ``` - -Your repo will look like this - - - -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 teku-${version}/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ -``` - -If you're installing on macOS with Homebrew, check out [here](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Installation-Options/Install-Binaries/#macos-with-homebrew). - -Check that you are installing correctly by running `bin\teku --help' - - -:::tip -You can run both beacon and validator with a single command. If you wish to run with a single command, skip to [step 4: Run a validator](../../README.md#step-4-run-a-validator). -::: - -- Execute beacon node(Optional) - - -```shell -./bin/teku \ - --network=gnosis \ - --ee-endpoint=http://localhost:8551 \ -# highlight-next-line - --ee-jwt-secret-file=${PATH_TO_JWT_SECRET} \ - --metrics-enabled=true \ - --rest-api-enabled=true \ -# highlight-next-line - --initial-state=${checkpoint url} \ -``` - -Get the latest checkpoint url at https://checkpoint.gnosis.gateway.fm/. +- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the URL for your OS/architecture under **Downloads**. +- Download and extract Teku in your `consensus` directory. +- Run the same beacon command shown above from your Windows shell (or from WSL). @@ -159,15 +88,21 @@ Get the latest checkpoint url at https://checkpoint.gnosis.gateway.fm/. ]}> -Teku doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpoint-sync-url=https://checkpoint.gnosischain.com` with `--checkpoint-sync-url=https://checkpoint.chiadochain.net` -Teku doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpoint-sync-url=https://checkpoint.gnosischain.com` with `--checkpoint-sync-url=https://checkpoint.chiadochain.net` - \ No newline at end of file + diff --git a/docs/node/manual/beacon/_partials/_run-consensus-client.md b/docs/node/manual/beacon/_partials/_run-consensus-client.md index 037e5b56b..b83a687de 100644 --- a/docs/node/manual/beacon/_partials/_run-consensus-client.md +++ b/docs/node/manual/beacon/_partials/_run-consensus-client.md @@ -11,8 +11,7 @@ import InstallNimbusPartial from '@site/docs/node/manual/beacon/_partials/_insta {label: 'Lighthouse', value: 'lighthouse'}, {label: 'Lodestar', value: 'lodestar'}, {label: 'Teku', value: 'teku'}, - {label: 'Nimbus', value: 'nimbus'}, - {label: 'Prysm', value: 'prysm'} + {label: 'Nimbus', value: 'nimbus'} ]}> @@ -38,17 +37,5 @@ import InstallNimbusPartial from '@site/docs/node/manual/beacon/_partials/_insta - + ``` - -:::info - -Please refer to [Run a Beacon Node: Prysm](../prysm.md) - -::: - -```mdx-code-block - -``` - - \ No newline at end of file diff --git a/docs/node/manual/beacon/lighthouse.md b/docs/node/manual/beacon/lighthouse.md index b4a8d46d5..21fc06005 100644 --- a/docs/node/manual/beacon/lighthouse.md +++ b/docs/node/manual/beacon/lighthouse.md @@ -7,7 +7,7 @@ import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partia :::caution Version check -This page's content is up-to-date for [Lighthouse v7.0.1](https://github.com/sigp/lighthouse/releases/tag/v7.0.1). +This page's content is up-to-date for [Lighthouse v8.1.3](https://github.com/sigp/lighthouse/releases/tag/v8.1.3). ::: @@ -56,18 +56,18 @@ Gnosis maintains a repo with sample Lighthouse Dockerfiles and configs We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks. -Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com/. +Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com. ```shell # Usage $ lighthouse bn - --checkpoint-sync-url https://checkpoint.gnosischain.com/ + --checkpoint-sync-url https://checkpoint.gnosischain.com ``` :::info More about Checkpoint Sync - Lighthouse's [Checkpoint Sync docs](https://lighthouse-book.sigmaprime.io/checkpoint-sync.html) -- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com/) +- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com) ::: @@ -93,7 +93,7 @@ The Beacon Node requires an Execution client in order to operate. See [Step 2: R ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -137,7 +137,7 @@ services: --execution-endpoint=http://execution:8551 --execution-jwt=/jwt.hex // highlight-next-line - --checkpoint-sync-url=https://checkpoint.gnosischain.com/ + --checkpoint-sync-url=https://checkpoint.gnosischain.com logging: driver: "local" @@ -152,7 +152,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 4. Monitor Logs @@ -165,11 +165,11 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/\_partial ### 5. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/beacon/lodestar.md b/docs/node/manual/beacon/lodestar.md index d9cb0e673..ba5bc6bab 100644 --- a/docs/node/manual/beacon/lodestar.md +++ b/docs/node/manual/beacon/lodestar.md @@ -6,7 +6,7 @@ import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partia # Run Beacon Node: Lodestar :::caution Version check -This page's content is up-to-date for [Lodestar v25.5.0](https://github.com/Consensys/teku/releases/tag/25.5.0). +This page's content is up-to-date for [Lodestar v1.41.1](https://github.com/ChainSafe/lodestar/releases/tag/v1.41.1). ::: :::caution Prerequisites @@ -45,18 +45,18 @@ Gnosis' maintains a repo with sample Lodestar Dockerfiles and configs We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks. -Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com/. +Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com. ```shell # Usage $ lodestar beacon - --checkpointSyncUrl https://checkpoint.gnosischain.com/ + --checkpointSyncUrl https://checkpoint.gnosischain.com ``` :::info More about Checkpoint Sync -- Lodestar's [Checkpoint Sync docs](https://chainsafe.github.io/lodestar/getting-started/starting-a-node/#checkpoint-sync) -- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com/) +- Lodestar's [Checkpoint Sync docs](https://chainsafe.github.io/lodestar/run/beacon-management/starting-a-node#checkpoint-sync) +- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com) ::: @@ -74,7 +74,7 @@ Images are referenced under the following pattern `chainsafe/lodestar:{image-tag ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -110,11 +110,8 @@ services: // highlight-next-line --network=gnosis --dataDir=/data -// highlight-next-line - --preset=gnosis - --eth1=true --execution.urls=http://execution:8551 - --jwt-secret=/jwt.hex + --jwtSecret=/jwt.hex --logFile=/data/logs/beacon.log --logFileLevel=info --port=9000 @@ -127,7 +124,7 @@ services: --metrics=true --metrics.port=5054 // highlight-next-line - --checkpointSyncUrl=https://checkpoint.gnosischain.com/ + --checkpointSyncUrl=https://checkpoint.gnosischain.com logging: driver: "local" networks: @@ -141,7 +138,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 4. Monitor Logs @@ -154,11 +151,11 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/_partials ### 5. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/beacon/nimbus.md b/docs/node/manual/beacon/nimbus.md index 269ea71b3..754ab39ee 100644 --- a/docs/node/manual/beacon/nimbus.md +++ b/docs/node/manual/beacon/nimbus.md @@ -1,7 +1,6 @@ --- title: Nimbus --- -import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partials/\_beacon_folder_structure.md'; # Run Beacon Node + Validator: Nimbus @@ -10,7 +9,7 @@ Nimbus is a client implementation that strives to be as lightweight as possible :::tip Learn More about Nimbus - Nimbus Repo: [https://github.com/status-im/nimbus-eth2](https://github.com/status-im/nimbus-eth2) -- Nimbus Docs: [https://nimbus.team/docs/](https://nimbus.team/docs/) +- Nimbus Docs: [https://nimbus.guide](https://nimbus.guide/) ::: @@ -21,9 +20,16 @@ Nimbus is a client implementation that strives to be as lightweight as possible ::: +:::caution Prerequisites + +The Beacon Node requires an Execution client in order to operate. See [Step 2: Run Execution Client](/category/step--2---run-execution-client) for more information. + +::: + ## Option 1: Run as System Process -We currently do not release Gnosis compatible binaries for Nimbus, nor do we intend to for the time being. +Nimbus publishes binaries for Linux, Windows, and macOS. +For Gnosis/Chiado, the recommended path is the Gnosis-maintained Nimbus Docker image below, which already includes network-specific configuration. ## Option 2: Run using Docker @@ -38,54 +44,54 @@ Folder structure ├── jwtsecret/ ├── execution/ └── consensus/ - └── data/ - └── validator_key/ + ├── data/ + └── validators/ ``` ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: Create `docker-compose.yml` and insert the configuration below. ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" services: - execution: - # From Step 2 - # ... - consensus: - container_name: consensus - image: ghcr.io/gnosischain/gnosis-nimbus-eth2:latest - restart: unless-stopped - networks: - - gnosis_net - volumes: - - ./consensus/data:/data + execution: + # From Step 2 + # ... + consensus: + container_name: consensus + image: ghcr.io/gnosischain/gnosis-nimbus-eth2:latest + restart: unless-stopped + networks: + - gnosis_net + volumes: + - /home/$USER/gnosis/consensus/data:/data // highlight-start - - ${Path_to_jwtsecret}:/jwt:ro - - ${Path_to_keystore}:/validators + - /home/$USER/gnosis/jwtsecret/jwt.hex:/jwt:ro + - /home/$USER/gnosis/consensus/validators:/validators // highlight-end - ports: - - 9100:9100 - - 9100:9100/udp - command: | - --data-dir=/data - --web3-url=http://localhost:8551 - --jwt-secret=/jwt - --light-client-data-serve=true - --light-client-data-import-mode=full - --tcp-port:9100 - --udp-port:9100 - --validators-dir=/validators + ports: + - 9100:9100/tcp + - 9100:9100/udp + command: | + --data-dir=/data + --web3-url=http://execution:8551 + --jwt-secret=/jwt + --light-client-data-serve=true + --light-client-data-import-mode=full + --tcp-port=9100 + --udp-port=9100 + --validators-dir=/validators // highlight-start - --suggested-fee-recipient=${Fee address} - --graffiti=${Graffiti} + --suggested-fee-recipient=${FEE_RECIPIENT} + --graffiti=${GRAFFITI} // highlight-end - --rest - --rest-address=0.0.0.0 - --network=gnosis - --history=prune + --rest + --rest-address=0.0.0.0 + --network=gnosis + --history=prune logging: driver: "local" @@ -104,7 +110,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 4. Monitor Logs @@ -133,11 +139,11 @@ docker logs -f --tail 500 consensus ### 5. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/beacon/teku.md b/docs/node/manual/beacon/teku.md index 53e27912f..6aabc720a 100644 --- a/docs/node/manual/beacon/teku.md +++ b/docs/node/manual/beacon/teku.md @@ -7,7 +7,7 @@ import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partia :::caution Version check -This page's content is up-to-date for [Teku v25.4.1](https://github.com/Consensys/teku/releases/tag/25.4.1). +This page's content is up-to-date for [Teku v26.4.0](https://github.com/ConsenSys/teku/releases/tag/26.4.0). ::: @@ -40,25 +40,25 @@ Gnosis' maintains a repo with sample Teku Dockerfiles and configs | ------------------ | ------------------------------------------------------------------- | | Release Page | https://github.com/ConsenSys/teku/releases | | Docker Images | https://hub.docker.com/r/consensys/teku | -| Teku Docs | https://docs.teku.consensys.net/en/latest/ | -| Teku CLI Reference | https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/ | +| Teku Docs | https://docs.teku.consensys.io/ | +| Teku CLI Reference | https://docs.teku.consensys.io/reference/cli | ### Checkpoint Sync We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks. -Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com/. +Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com. ```shell # Usage $ teku - --initial-state https://checkpoint.gnosischain.com/eth/v2/debug/beacon/states/finalized + --checkpoint-sync-url https://checkpoint.gnosischain.com ``` :::info More about Checkpoint Sync -- Teku's [Checkpoint Sync docs](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Checkpoint-Start/) -- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com/) +- Teku's [Checkpoint Sync docs](https://docs.teku.consensys.io/get-started/checkpoint-start) +- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com) ::: @@ -77,7 +77,7 @@ Images are referenced under the following pattern `consensys/teku:{image-tag}` w ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -135,7 +135,7 @@ services: --metrics-interface=0.0.0.0 --metrics-port=8008 // highlight-next-line - --initial-state=https://checkpoint.gnosischain.com/eth/v2/debug/beacon/states/finalized + --checkpoint-sync-url=https://checkpoint.gnosischain.com logging: driver: "local" @@ -148,7 +148,7 @@ networks: Add an `.env` file with your user id (`id --user`) in `/home/$USER/gnosis/.env`. -``` title="/home/$USER/gnosis/.env +``` title="/home/$USER/gnosis/.env" PUID=1000 ``` @@ -158,7 +158,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -173,11 +173,11 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/_partials ### 6. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/configure-server.md b/docs/node/manual/configure-server.md index 7efde96eb..5eb5b4971 100644 --- a/docs/node/manual/configure-server.md +++ b/docs/node/manual/configure-server.md @@ -85,15 +85,11 @@ $ sudo ufw allow 30303 ### Allow Consensus Client port 9000 -Most Consensus Layer Clients use port `9000` to communicate with the Consensus Layer network peers, with the exception of Prysm, which uses ports `13000/TCP` and `12000/UDP` instead. +Supported Gnosis Consensus Layer clients use port `9000` to communicate with the Consensus Layer network peers. ```shell ## Lighthouse, Nimbus, Teku, Lodestar $ sudo ufw allow 9000 - -## Prysm -$ sudo ufw allow 13000/tcp -$ sudo ufw allow 12000/udp ``` ### Enable Firewall diff --git a/docs/node/manual/execution/_partials/_install_el_erigon.md b/docs/node/manual/execution/_partials/_install_el_erigon.md index 0ea667dec..beb105f3a 100644 --- a/docs/node/manual/execution/_partials/_install_el_erigon.md +++ b/docs/node/manual/execution/_partials/_install_el_erigon.md @@ -12,11 +12,11 @@ import TabItem from '@theme/TabItem'; ]}> -- Install and build [Erigon](https://github.com/ledgerwatch/erigon#documentation). +- Install and build [Erigon](https://github.com/erigontech/erigon#installation). ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git +git clone https://github.com/erigontech/erigon.git cd erigon make erigon ``` @@ -27,11 +27,10 @@ make erigon ./build/bin/erigon \ --chain=gnosis \ --datadir=/data \ - --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ - --prune=htcr + --authrpc.jwtsecret=../../jwtsecret/jwt.hex ``` -- Erigon run [Archive node](https://ethereum.org/en/developers/docs/nodes-and-clients/archive-nodes/#what-is-an-archive-node) by default. To run a pruned node, add `--prune=htcr`. +- Erigon uses `--prune.mode=full` by default. If you need archive data or minimal disk usage, set `--prune.mode=archive` or `--prune.mode=minimal` before the first start. @@ -40,7 +39,7 @@ make erigon ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git +git clone https://github.com/erigontech/erigon.git cd erigon make erigon ``` @@ -69,7 +68,7 @@ make erigon ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git +git clone https://github.com/erigontech/erigon.git cd erigon make erigon ``` @@ -90,7 +89,7 @@ make erigon ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git +git clone https://github.com/erigontech/erigon.git cd erigon make erigon ``` diff --git a/docs/node/manual/execution/_partials/_install_el_geth.md b/docs/node/manual/execution/_partials/_install_el_geth.md new file mode 100644 index 000000000..eaabeb9c8 --- /dev/null +++ b/docs/node/manual/execution/_partials/_install_el_geth.md @@ -0,0 +1,138 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Install prerequisites first: `git`, `make`, and a recent Go toolchain. + + + + + + +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). + +```shell +cd execution +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth +``` + +- Run Geth. + +```shell +./build/bin/geth \ + --gnosis \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + + + + +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). + +```shell +cd execution +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth +``` + +- Run Geth. + +```shell +./build/bin/geth \ + --gnosis \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + + + + + + + + + +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). + +```shell +cd execution +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth +``` + +- Run Geth. + +```shell +./build/bin/geth \ + --chiado \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + + + + +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). + +```shell +cd execution +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth +``` + +- Run Geth. + +```shell +./build/bin/geth \ + --chiado \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + + + + + + diff --git a/docs/node/manual/execution/_partials/_install_el_nethermind.md b/docs/node/manual/execution/_partials/_install_el_nethermind.md index 0dab56fa4..fbec32a63 100644 --- a/docs/node/manual/execution/_partials/_install_el_nethermind.md +++ b/docs/node/manual/execution/_partials/_install_el_nethermind.md @@ -140,7 +140,3 @@ import TabItem from '@theme/TabItem'; - -:::info Upgrading? -Remove `AuraMerge.Enabled` since it is now covered in the `Merge.Enabled` key. -::: \ No newline at end of file diff --git a/docs/node/manual/execution/_partials/_install_el_reth.md b/docs/node/manual/execution/_partials/_install_el_reth.md new file mode 100644 index 000000000..ca514c984 --- /dev/null +++ b/docs/node/manual/execution/_partials/_install_el_reth.md @@ -0,0 +1,150 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Install prerequisites first: `git`, a recent Rust toolchain, and common native build tools (`clang`, `cmake`, `pkg-config`). + + + + + + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain gnosis \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain gnosis \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + + + + + + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain chiado \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain chiado \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + + + + +:::info +On first startup, Reth initializes from the network-specific bootstrap state. Keep the process running until synchronization starts. +::: diff --git a/docs/node/manual/execution/_partials/_run-execution-client.md b/docs/node/manual/execution/_partials/_run-execution-client.md index 7ed5e4e08..9ed87ebf5 100644 --- a/docs/node/manual/execution/_partials/_run-execution-client.md +++ b/docs/node/manual/execution/_partials/_run-execution-client.md @@ -1,32 +1,31 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import InstallNethermindPartial from '@site/docs/node/manual/execution/_partials/_install_el_nethermind.md'; +import InstallErigonPartial from '@site/docs/node/manual/execution/_partials/_install_el_erigon.md'; +import InstallGethPartial from '@site/docs/node/manual/execution/_partials/_install_el_geth.md'; +import InstallRethPartial from '@site/docs/node/manual/execution/_partials/_install_el_reth.md'; - -import InstallNethermindPartial from '@site/docs/node/manual/execution/_partials/_install_el_nethermind.md'; -import InstallErigonPartial from '@site/docs/node/manual/execution/_partials/_install_el_erigon.md'; - - - -

Besu is not yet supported, use Nethermind instead.

-
- + + + + -

Geth is not yet supported, use Nethermind instead.

+
-
\ No newline at end of file + diff --git a/docs/node/manual/execution/erigon.md b/docs/node/manual/execution/erigon.md index 6c835815b..35a609aec 100644 --- a/docs/node/manual/execution/erigon.md +++ b/docs/node/manual/execution/erigon.md @@ -32,7 +32,7 @@ chown -R 1000:1000 /home/$USER/gnosis/execution ### 2. Docker Compose -Create a docker-compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: +Create a Compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: ```shell title="/home/$USER/gnosis/docker-compose.yml" version: "3" @@ -82,7 +82,7 @@ networks: ``` :::tip Note -[By default](https://github.com/ledgerwatch/erigon#other-ports), `metrics` and `pprof` use the same port, 6060. Therefore, it is required to configure the port correctly if both options are enabled. +[By default](https://github.com/erigontech/erigon#other-ports), `metrics` and `pprof` use the same port, `6060`. If both are enabled, configure separate ports. ::: ### 3. JWT Secret @@ -97,7 +97,7 @@ Start the Execution layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 5. Monitor Logs @@ -110,13 +110,13 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/\_partial ### 6. Updating your Node -To update, just pull the new image, then stop and restart your docker-compose file: +To update, just pull the new image, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` ## Option 2: Using system process {#as-system-process} @@ -125,6 +125,8 @@ Refer to [Erigon Guide](../README.md#step-2-run-an-execution-client). ## Erigon Archive Node -[Archive node](https://ethereum.org/en/developers/docs/nodes-and-clients/archive-nodes/#what-is-an-archive-node) is the default option by Erigon. It takes about 640GB (May 2025) to run a Gnosis Chain Archive node. Please check the [system requirements](https://github.com/ledgerwatch/erigon#system-requirements) of your server before running an archive node. +Erigon uses `--prune.mode=full` by default. If you need an archive node, set `--prune.mode=archive` before first start. -To run an Erigon pruned node, `--prune=htcr` command need to be added. +If you want lower disk usage for a validator setup, use `--prune.mode=minimal`. + +Always check the latest [system requirements](https://github.com/erigontech/erigon#system-requirements) before choosing a pruning mode. diff --git a/docs/node/manual/execution/geth.md b/docs/node/manual/execution/geth.md index 8bcc558e5..9b8194756 100644 --- a/docs/node/manual/execution/geth.md +++ b/docs/node/manual/execution/geth.md @@ -4,7 +4,7 @@ title: Geth # Geth -This is the most popular and majority Ethereum Client implementation written in Go, [Geth](https://geth.ethereum.org/) fully open source and licensed under the GNU LGPL v3. +This is the most popular and majority Ethereum Client implementation written in Go, [Geth](https://geth.ethereum.org/) fully open source and is now ported for Gnosis chain. Repository: [https://github.com/gnosischain/go-ethereum](https://github.com/gnosischain/go-ethereum) diff --git a/docs/node/manual/execution/nethermind.md b/docs/node/manual/execution/nethermind.md index 56de101c2..c9f4a906a 100644 --- a/docs/node/manual/execution/nethermind.md +++ b/docs/node/manual/execution/nethermind.md @@ -48,7 +48,7 @@ mkdir /home/$USER/gnosis/jwtsecret ### 2. Docker Compose -Create a docker-compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: +Create a Compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: ```mdx-code-block
@@ -82,7 +82,6 @@ services: --config gnosis --datadir /data --log INFO - --Sync.SnapSync false --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 --JsonRpc.Port 8545 @@ -119,7 +118,7 @@ Start the Execution layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -134,13 +133,13 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/_partials ### 6. Updating your Node -To update, just pull the new image, then stop and restart your docker-compose file: +To update, just pull the new image, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` ## Option 2: Running as System Process {#as-system-process} @@ -177,7 +176,7 @@ nethermind --config chiado --JsonRpc.JwtSecretFile path/to/jwt.hex An archival node executes a heavy historical sync verifying all the transactions and keeping all of the historical data. Archive sync is the 'heaviest' and slowest sync mode, and can take 2 - 6 weeks depending on the speed of your IO. :::caution -Make sure there's enough disk space to accommodate the archive data, the minimum amount of disk required to run the archive node is +2 TB (Feb 2023). +Make sure you have sufficient disk space and IOPS for archive mode. Requirements change frequently by release and network growth. ::: Edit your `/home/$USER/gnosis/docker-compose.yml` and change the `--config` from `gnosis` to `gnosis_archive`. @@ -186,4 +185,3 @@ Edit your `/home/$USER/gnosis/docker-compose.yml` and change the `--config` from command: | --config gnosis_archive ``` - diff --git a/docs/node/manual/execution/reth.md b/docs/node/manual/execution/reth.md index a35025e56..736bb6d6f 100644 --- a/docs/node/manual/execution/reth.md +++ b/docs/node/manual/execution/reth.md @@ -6,8 +6,6 @@ title: Reth Gnosis‑compatible **Reth** client — **not a fork**, but an **extension** built with the `NodeBuilder` API. -Refer to the official Reth documentation → [reth.rs](https://reth.rs) - Repository: [gnosischain/reth_gnosis](https://github.com/gnosischain/reth_gnosis) --- @@ -30,7 +28,7 @@ You can run the node in two ways: Pull the image: ```bash -docker pull ghcr.io/gnosischain/reth_gnosis:v0.1.0 +docker pull ghcr.io/gnosischain/reth_gnosis:v1.0.3 ``` @@ -53,13 +51,34 @@ cp /path/to/jwtsecret ./reth_data/jwtsecret #### Quick Chiado run ```bash -docker run -v ./reth_data:/data ghcr.io/gnosischain/reth_gnosis:v0.1.0 node --chain chiado --datadir /data --authrpc.jwtsecret=/data/jwtsecret +docker run \ + -v ./reth_data:/data \ + ghcr.io/gnosischain/reth_gnosis:v1.0.3 node \ + --chain chiado \ + --datadir /data \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=/data/jwtsecret ``` #### Full Gnosis Chain example ```bash -docker run --network host -v $PWD/reth_data:/data ghcr.io/gnosischain/reth_gnosis:v0.1.0 node -vvvv --chain gnosis --datadir /data --http --http.port=8545 --http.addr=0.0.0.0 --http.corsdomain='*' --http.api=admin,net,eth,web3,debug,trace --authrpc.port=8546 --authrpc.addr=0.0.0.0 --authrpc.jwtsecret=/data/jwtsecret --discovery.port=30303 --discovery.addr=0.0.0.0 +docker run --network host \ + -v $PWD/reth_data:/data \ + ghcr.io/gnosischain/reth_gnosis:v1.0.3 node \ + -vvvv \ + --chain gnosis \ + --datadir /data \ + --http \ + --http.port=8545 \ + --http.addr=0.0.0.0 \ + --http.corsdomain='*' \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.port=8551 \ + --authrpc.addr=0.0.0.0 \ + --authrpc.jwtsecret=/data/jwtsecret \ + --discovery.port=30303 \ + --discovery.addr=0.0.0.0 ``` --- @@ -94,7 +113,20 @@ cp /path/to/jwtsecret ./reth_data/jwtsecret ### Quick Chiado run ```bash -./target/release/reth node -vvvv --chain chiado --datadir ./reth_data --http --http.port=8545 --http.addr=0.0.0.0 --http.corsdomain='*' --http.api=admin,net,eth,web3,debug,trace --authrpc.port=8546 --authrpc.addr=0.0.0.0 --authrpc.jwtsecret=./reth_data/jwtsecret --discovery.port=30303 --discovery.addr=0.0.0.0 +./target/release/reth node \ + -vvvv \ + --chain chiado \ + --datadir ./reth_data \ + --http \ + --http.port=8545 \ + --http.addr=0.0.0.0 \ + --http.corsdomain='*' \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.port=8551 \ + --authrpc.addr=0.0.0.0 \ + --authrpc.jwtsecret=./reth_data/jwtsecret \ + --discovery.port=30303 \ + --discovery.addr=0.0.0.0 ``` Replace `--chain chiado` with `--chain gnosis` for **Gnosis mainnet**. @@ -110,10 +142,3 @@ If `--datadir` is omitted, Reth falls back to the OS‑specific default path: | Linux | `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/` | | macOS | `$HOME/Library/Application Support/reth/` | | Windows | `%APPDATA%\reth\` | - ---- - -## Next steps - -* Join the **Gnosis Reth Discord** → [discord.gg/gnosis](https://discord.gg/gnosis) -* Track upstream Reth development → [paradigmxyz/reth](https://github.com/paradigmxyz/reth) diff --git a/docs/node/manual/validator/Run Client/lighthouse.md b/docs/node/manual/validator/Run Client/lighthouse.md index e30e298ea..bd84c8355 100644 --- a/docs/node/manual/validator/Run Client/lighthouse.md +++ b/docs/node/manual/validator/Run Client/lighthouse.md @@ -37,7 +37,7 @@ Including the folders from your Execution and Consensus clients, your folder str ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggested-fee-recipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggested-fee-recipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -135,7 +135,7 @@ Import your validators: docker run \ --rm \ --volume /home/$USER/gnosis/consensus/keystores:/keystores \ - --volume /home/$USER/gnosis/consensus:/data sigp/lighthouse:latest-modern lighthouse account validator import \ + --volume /home/$USER/gnosis/consensus:/data sigp/lighthouse:v8.1.3 lighthouse account validator import \ --network gnosis \ --password-file /keystores/password.txt \ --reuse-password \ @@ -150,7 +150,7 @@ Start the validator service listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -176,11 +176,11 @@ _See section **Fund Validator**_ ### 9. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/validator/Run Client/lodestar.md b/docs/node/manual/validator/Run Client/lodestar.md index acb0283bb..6f39f2ed7 100644 --- a/docs/node/manual/validator/Run Client/lodestar.md +++ b/docs/node/manual/validator/Run Client/lodestar.md @@ -33,7 +33,7 @@ mkdir /home/$USER/gnosis/consensus/keystores ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggestedFeeRecipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggestedFeeRecipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -96,9 +96,9 @@ GRAFFITI=gnosischain/lodestar ``` Replace `suggestedFeeRecipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. +Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/run/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. -Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. ### 4. Keystore Location @@ -134,7 +134,7 @@ Start the validator service listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -160,11 +160,11 @@ See the [Validator Deposits](../deposit.md) section. ### 9. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/validator/Run Client/teku.md b/docs/node/manual/validator/Run Client/teku.md index b342f3a37..4cb8805a7 100644 --- a/docs/node/manual/validator/Run Client/teku.md +++ b/docs/node/manual/validator/Run Client/teku.md @@ -31,8 +31,8 @@ Including the folders from your Execution and Consensus clients, your folder str ├── jwtsecret/ ├── execution/ └── consensus/ - ├── beacon/ - └── validators/ + ├── data/ + └── validator/ ├── keys/ ├── passwords/ └── slashprotection/ @@ -40,7 +40,7 @@ Including the folders from your Execution and Consensus clients, your folder str ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the following commands to your `consensus` container. +Modify your Compose file with your favorite text editor and add the following commands to your `consensus` container. ``` --validators-proposer-default-fee-recipient=$FEE_RECIPIENT @@ -103,7 +103,7 @@ services: --metrics-host-allowlist=* --metrics-interface=0.0.0.0 --metrics-port=8008 - --initial-state=https://checkpoint.gnosis.gateway.fm//eth/v2/debug/beacon/states/finalized + --checkpoint-sync-url=https://checkpoint.gnosischain.com # highlight-start --validators-proposer-default-fee-recipient=$FEE_RECIPIENT --validator-keys=/data/validator/keys:/data/validator/passwords @@ -129,14 +129,14 @@ FEE_RECIPIENT=0x0000000000000000000000000000000000000000 GRAFFITI=gnosischain/teku ``` Replace `validators-proposer-default-fee-recipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-proposer-default-fee-recipient) flag in Teku docs. +Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.io/reference/cli#validators-proposer-default-fee-recipient) flag in Teku docs. -Replace [`validator-keys`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored. +Replace [`validator-keys`](https://docs.teku.consensys.io/reference/cli#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored. -Replace [`validators-graffiti`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace [`validators-graffiti`](https://docs.teku.consensys.io/reference/cli#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. -Learn more about the CLI commands and their options [here](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/). +Learn more about the CLI commands and their options [here](https://docs.teku.consensys.io/reference/cli). @@ -146,7 +146,7 @@ Add your keystores in `/home/$USER/gnosis/consensus/validator/keys/` and their p :::tip -When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#validator-keys)) +When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.io/reference/cli#validator-keys)) ::: @@ -157,8 +157,8 @@ When specifying directories, Teku expects to find identically named keystore and ├── jwtsecret/ ├── execution/ └── consensus/ - ├── beacon/ - └── validators/ + ├── data/ + └── validator/ # highlight-start ├── keys/ │   ├── keystore-001.json @@ -179,7 +179,7 @@ When the Teku `consensus` container starts, it will search the directories for k :::tip -When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#validator-keys)) +When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.io/reference/cli#validator-keys)) ::: @@ -190,8 +190,8 @@ Restart the execution layer client and consensus layer client listed in the comp ```shell cd /home/$USER/gnosis -docker-compose down -docker-compose up -d +docker compose down +docker compose up -d ``` @@ -217,11 +217,11 @@ _See section **Fund Validator**_ ### 9. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` diff --git a/docs/node/manual/validator/_partials/_install-validator.md b/docs/node/manual/validator/_partials/_install-validator.md index e3bad9a61..c79ef64d5 100644 --- a/docs/node/manual/validator/_partials/_install-validator.md +++ b/docs/node/manual/validator/_partials/_install-validator.md @@ -1,6 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import InstallNimbusValidatorPartial from '@site/docs/node/manual/validator/_partials/clients/_install_validator_nimbus.md'; import InstallTekuValidatorPartial from '@site/docs/node/manual/validator/_partials/clients/_install_validator_teku.md'; ```mdx-code-block @@ -8,7 +9,6 @@ import InstallTekuValidatorPartial from '@site/docs/node/manual/validator/_parti {label: 'Lighthouse', value: 'lighthouse'}, {label: 'Lodestar', value: 'lodestar'}, {label: 'Nimbus', value: 'nimbus'}, - {label: 'Prysm', value: 'prysm'}, {label: 'Teku', value: 'teku'} ]}> @@ -29,27 +29,9 @@ import InstallLodestarValidatorPartial from '@site/docs/node/manual/validator/_p -``` - -:::info -Please refer to [Run a Beacon Node: Nimbus](../../beacon/nimbus.md) + -::: - -```mdx-code-block - - - -``` - -:::info - -Please refer to [Run a Beacon Node: Prysm](../../beacon/prysm.md) - -::: - -```mdx-code-block @@ -58,4 +40,4 @@ Please refer to [Run a Beacon Node: Prysm](../../beacon/prysm.md) -``` \ No newline at end of file +``` diff --git a/docs/node/manual/validator/_partials/clients/_install_validator_lighthouse.md b/docs/node/manual/validator/_partials/clients/_install_validator_lighthouse.md index f0c971f2d..7094e83fd 100644 --- a/docs/node/manual/validator/_partials/clients/_install_validator_lighthouse.md +++ b/docs/node/manual/validator/_partials/clients/_install_validator_lighthouse.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; :::info -Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. +Lighthouse only runs on Linux. To run it on Windows, [install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions in the WSL terminal. ::: @@ -34,7 +34,7 @@ echo 'PLACE_HERE_YOUR_PASSWORD' > keystores/password.txt * Import the validator keys using lighthouse: ```shell -./lighthouse account_manager validator import \ +./lighthouse account validator import \ --network gnosis \ --password-file keystores/password.txt \ --reuse-password \ diff --git a/docs/node/manual/validator/_partials/clients/_install_validator_lodestar.md b/docs/node/manual/validator/_partials/clients/_install_validator_lodestar.md index d680a33f3..f85565b22 100644 --- a/docs/node/manual/validator/_partials/clients/_install_validator_lodestar.md +++ b/docs/node/manual/validator/_partials/clients/_install_validator_lodestar.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; :::info -Lodestar only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. +Lodestar supports Windows, but for consistency with the rest of this guide we recommend [WSL](https://learn.microsoft.com/en-us/windows/wsl/install). ::: @@ -40,17 +40,17 @@ You can import the keys when starting the validator. --network=gnosis \ --importKeystores=keystores \ --importKeystoresPassword=keystores/password.txt \ - --dataDir=/data/validators \ + --dataDir=validators \ # highlight-start - --suggestedFeeRecipient=${FEE_RECIPIENT} \ - --graffiti=${GRAFFITI} + --suggestedFeeRecipient=${FEE_RECIPIENT} \ + --graffiti=${GRAFFITI} # highlight-end ``` Replace `suggestedFeeRecipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. +Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/run/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. -Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. diff --git a/docs/node/manual/validator/_partials/clients/_install_validator_nimbus.md b/docs/node/manual/validator/_partials/clients/_install_validator_nimbus.md new file mode 100644 index 000000000..e18b50f75 --- /dev/null +++ b/docs/node/manual/validator/_partials/clients/_install_validator_nimbus.md @@ -0,0 +1,63 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + + +:::info +Nimbus supports Windows natively. Run the same commands from PowerShell, replacing `./nimbus_beacon_node` with `./nimbus_beacon_node.exe`. +::: + + + + + + + + +Nimbus runs validator duties in the beacon node process, so there is no separate validator client to launch in the interactive guide. + +- Stop the beacon node if it is still running. + +- Import the validator keys generated in the previous step: + +```shell +./nimbus_beacon_node deposits import \ + --data-dir=./data \ + ./keystores +``` + +Nimbus will print `Keystore imported` for each imported validator key. + +- Restart Nimbus beacon node with your execution client connection and validator settings: + +```shell +./nimbus_beacon_node \ + --network=gnosis \ + --data-dir=./data \ + --el=http://127.0.0.1:8551 \ + --jwt-secret=../jwtsecret/jwt.hex \ + --suggested-fee-recipient=${FEE_RECIPIENT} \ + --graffiti=${GRAFFITI} +``` + +Replace `suggested-fee-recipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. +Learn more about [suggested fee recipient](https://nimbus.guide/suggested-fee-recipient.html) flag in Nimbus docs. + +Replace `graffiti` with your own [graffiti](https://nimbus.guide/graffiti.html). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. + +To confirm the validator keys were loaded, look for `Local validator attached` in the Nimbus logs after restart. + + + +
+
+ +
diff --git a/docs/node/manual/validator/_partials/clients/_install_validator_teku.md b/docs/node/manual/validator/_partials/clients/_install_validator_teku.md index 09ecd8458..542261d02 100644 --- a/docs/node/manual/validator/_partials/clients/_install_validator_teku.md +++ b/docs/node/manual/validator/_partials/clients/_install_validator_teku.md @@ -33,14 +33,14 @@ To run a validator, we need to first import the keys generated in the previous s echo 'PLACE_HERE_YOUR_PASSWORD' > keystores/keystore-${m_...}.json.txt ``` -If the Launchpad creates a key named keystore-m_12381_3600_0_0_0-1596485378.json, then the password file must be named keystore-m_12381_3600_0_0_0-1596485378.txt to comply with [EIP-2335](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Connect/Connect-To-Mainnet/#create-a-password-file-for-each-validator-key) +If the Launchpad creates a key named keystore-m_12381_3600_0_0_0-1596485378.json, then the password file must be named keystore-m_12381_3600_0_0_0-1596485378.txt to comply with [EIP-2335](https://docs.teku.consensys.io/get-started/connect/mainnet#create-a-password-file-for-each-validator-key) You can import the keys when starting the validator. -* navigate to teku folder +* Navigate to the Teku folder. ```shell -cd teku-${version} +cd teku-[VERSION] ``` * Execute Teku Beacon Chain and Validator(s): @@ -54,9 +54,9 @@ cd teku-${version} --metrics-enabled=true \ --rest-api-enabled=true \ # highlight-start - --initial-state=https://checkpoint.gnosis.gateway.fm//eth/v2/debug/beacon/states/finalized \ - --validators-proposer-default-fee-recipient=${Fee Recipient Address} \ - --validator-keys=${path to key file}:${path to password file} + --checkpoint-sync-url=https://checkpoint.gnosischain.com \ + --validators-proposer-default-fee-recipient=${FEE_RECIPIENT} \ + --validator-keys=${KEYS_DIR}:${PASSWORDS_DIR} \ --validators-graffiti=${GRAFFITI} # highlight-end ``` @@ -67,20 +67,20 @@ If you wish to run validator only, run the following command: ./bin/teku validator-client \ --network=gnosis \ # highlight-start - --beacon-node-api-endpoint=${endpoint} \ - --validator-keys=${path to key file}:${path to password file} + --beacon-node-api-endpoint=${BEACON_NODE_API_ENDPOINT} \ + --validator-keys=${KEYS_DIR}:${PASSWORDS_DIR} # highlight-end ``` Replace `validators-proposer-default-fee-recipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-proposer-default-fee-recipient) flag in Teku docs. +Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.io/reference/cli#validators-proposer-default-fee-recipient) flag in Teku docs. -Replace [`validator-keys`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored, and [`beacon-node-api-endpoint`](https://docs.teku.consensys.net/Reference/CLI/Subcommands/Validator-Client#beacon-node-api-endpoint-beacon-node-api-endpoints) with the endpoint of the beacon node’s REST API (default is http://127.0.0.1:5051). +Replace [`validator-keys`](https://docs.teku.consensys.io/reference/cli#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored, and [`beacon-node-api-endpoint`](https://docs.teku.consensys.io/reference/cli/subcommands/validator-client#beacon-node-api-endpoint-beacon-node-api-endpoints) with the endpoint of the beacon node’s REST API (default is http://127.0.0.1:5051). -Replace [`validators-graffiti`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace [`validators-graffiti`](https://docs.teku.consensys.io/reference/cli#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. -Learn more about the CLI commands and their options [here](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/). +Learn more about the CLI commands and their options [here](https://docs.teku.consensys.io/reference/cli). diff --git a/docs/node/node-architecture.drawio b/docs/node/node-architecture.drawio index 4b4cbc535..d6549ba32 100644 --- a/docs/node/node-architecture.drawio +++ b/docs/node/node-architecture.drawio @@ -330,7 +330,7 @@ - + diff --git a/docs/node/participate-validator/swarm/a-quickstart-swarm.md b/docs/node/participate-validator/swarm/a-quickstart-swarm.md index 931efb02b..a29541785 100644 --- a/docs/node/participate-validator/swarm/a-quickstart-swarm.md +++ b/docs/node/participate-validator/swarm/a-quickstart-swarm.md @@ -60,7 +60,7 @@ The [`jq` utility](https://jqlang.github.io/jq/) is used in this guide to automa Run the install shell script using either `curl` or `wget`: :::caution -In the example below, the version is specified using `TAG=v2.2.0`, make sure that you [check if there is a newer tagged version of Bee](https://github.com/ethersphere/bee/tags) and if so, modify the commands below to use the most recent tag number so that you have the latest version of Bee. +In the example below, the version is specified using `TAG=v2.7.1`, make sure that you [check if there is a newer tagged version of Bee](https://github.com/ethersphere/bee/tags) and if so, modify the commands below to use the most recent tag number so that you have the latest version of Bee. ::: @@ -74,7 +74,7 @@ values={[ ```bash -curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.2.0 bash +curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.7.1 bash ``` @@ -82,7 +82,7 @@ curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TA **wget** ```bash -wget -q -O - https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.2.0 bash +wget -q -O - https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.7.1 bash ``` @@ -177,9 +177,9 @@ damage to hardware or loss of funds associated with the Ethereum account connect No developers or entity involved will be liable for any claims and damages associated with your use, inability to use, or your interaction with other nodes or the software. -version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ +version: 2.7.1 -"time"="2024-09-24 18:15:34.383102" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 18:15:34.383102" "level"="info" "logger"="node" "msg"="bee version" "version"="2.7.1" "time"="2024-09-24 18:15:34.428546" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="0373fe2ab33ab836635fc35864cf708fa0f4a775c0cf76ca851551e7787b58d040" "time"="2024-09-24 18:15:34.520686" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="03a341032724f1f9bb04f1d9b22607db485cccd74174331c701f3a6957d94d95c1" "time"="2024-09-24 18:15:34.520716" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" @@ -254,9 +254,9 @@ damage to hardware or loss of funds associated with the Ethereum account connect No developers or entity involved will be liable for any claims and damages associated with your use, inability to use, or your interaction with other nodes or the software. -version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ +version: 2.7.1 -"time"="2024-09-24 18:57:16.710417" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 18:57:16.710417" "level"="info" "logger"="node" "msg"="bee version" "version"="2.7.1" "time"="2024-09-24 18:57:16.760154" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="0373fe2ab33ab836635fc35864cf708fa0f4a775c0cf76ca851551e7787b58d040" "time"="2024-09-24 18:57:16.854594" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="03a341032724f1f9bb04f1d9b22607db485cccd74174331c701f3a6957d94d95c1" "time"="2024-09-24 18:57:16.854651" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" @@ -274,7 +274,7 @@ version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please Here we can see that after our node has been funded, it was able to issue the transactions for deploying the chequebook contract, which is a prerequisite for running a staking node. -Next your node will begin to sync [postage stamp data](https://docs.ethswarm.org/docs/develop/access-the-swarm/buy-a-stamp-batch), which can take ~5 to 10 minutes. You will see this log message while your node is syncing postage stamp data: +Next your node will begin to sync [postage stamp data](https://docs.ethswarm.org/docs/develop/tools-and-features/buy-a-stamp-batch), which can take ~5 to 10 minutes. You will see this log message while your node is syncing postage stamp data: ```bash "time"="2024-09-24 22:21:19.664897" "level"="info" "logger"="node" "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" diff --git a/docs/node/participate-validator/swarm/b-docker-swarm.md b/docs/node/participate-validator/swarm/b-docker-swarm.md index c9f1672ea..921dbc12a 100644 --- a/docs/node/participate-validator/swarm/b-docker-swarm.md +++ b/docs/node/participate-validator/swarm/b-docker-swarm.md @@ -8,7 +8,7 @@ keywords: [swarm, storage, decentralized, decentralised, docker, docker compose] The following is a guide to get you started running a Bee full node with staking on Swarm using Docker. Docker images for Bee are hosted at [Docker Hub](https://hub.docker.com/r/ethersphere/bee). :::caution -In the examples below we specify the exact version number of the image using the 2.2.0 tag. It's recommended to only use the exact version number tags. Make sure to check that you're on the latest version of Bee by reviewing the tags for Bee on [Docker Hub](https://hub.docker.com/r/ethersphere/bee/tags), and replace 2.2.0 in the commands below if there is a newer full release. +In the examples below we specify the exact version number of the image using the 2.7.1 tag. It's recommended to only use the exact version number tags. Make sure to check that you're on the latest version of Bee by reviewing the tags for Bee on [Docker Hub](https://hub.docker.com/r/ethersphere/bee/tags), and replace 2.7.1 in the commands below if there is a newer full release. ::: :::warning @@ -72,13 +72,13 @@ docker run -d --name bee-1 \ -e BEE_PASSWORD="flummoxedgranitecarrot" \ -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" \ -v bee-1:/home/bee/.bee \ - ethersphere/bee:2.2.0 start + ethersphere/bee:2.7.1 start ``` Here is the same command in a single line in case you run into issues with the line breaks in the command above: ```bash -docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 -e BEE_API_ADDR=":1633" -e BEE_FULL_NODE="true" -e BEE_SWAP_ENABLE="true" -e BEE_PASSWORD="flummoxedgranitecarrot" -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" -v bee-1:/home/bee/.bee ethersphere/bee:2.2.0 start +docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 -e BEE_API_ADDR=":1633" -e BEE_FULL_NODE="true" -e BEE_SWAP_ENABLE="true" -e BEE_PASSWORD="flummoxedgranitecarrot" -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" -v bee-1:/home/bee/.bee ethersphere/bee:2.7.1 start ``` #### Command explained: @@ -94,7 +94,7 @@ docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 - **`-e BEE_PASSWORD="flummoxedgranitecarrot"`**: Sets the keystore password, make sure to replace with your own. - **`-e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org"`**: Connects to the Gnosis Chain. - **`-v bee-1:/home/bee/.bee`**: Persists node data in the `bee-1` volume. -- **`ethersphere/bee:2.2.0 start`**: Runs Bee version 2.2.0 and starts the node. +- **`ethersphere/bee:2.7.1 start`**: Runs Bee version 2.7.1 and starts the node. This setup runs the Bee node in a container, with full-node functionality, SWAP enabled, and connections to the Gnosis blockchain for chequebook and postage stamp management, while persisting its data using a volume. @@ -111,7 +111,7 @@ If everything is set up correctly, you should see your Bee node listed: ```bash CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -37f4ad8b4060 ethersphere/bee:2.2.0 "bee start" 6 seconds ago Up 5 seconds 127.0.0.1:1633->1633/tcp, 0.0.0.0:1634->1634/tcp, :::1634->1634/tcp bee-1 +37f4ad8b4060 ethersphere/bee:2.7.1 "bee start" 6 seconds ago Up 5 seconds 127.0.0.1:1633->1633/tcp, 0.0.0.0:1634->1634/tcp, :::1634->1634/tcp bee-1 ``` And check the logs: @@ -204,9 +204,9 @@ damage to hardware or loss of funds associated with the Ethereum account connect No developers or entity involved will be liable for any claims and damages associated with your use, inability to use, or your interaction with other nodes or the software. -version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ +version: 2.7.1 -"time"="2024-09-24 22:21:04.543661" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 22:21:04.543661" "level"="info" "logger"="node" "msg"="bee version" "version"="2.7.1" "time"="2024-09-24 22:21:04.590823" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="02f0e59eafa3c5c06542c0a7a7fe9579c55a163cf1d28d9f6945a34469f88d1b2a" "time"="2024-09-24 22:21:04.686430" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="02ea739530bbf48eed49197f21660f3b6564709b95bf558dc3b472688c34096418" "time"="2024-09-24 22:21:04.686464" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x8288F1c8e3dE7c3bf42Ae67fa840EC61481D085e" @@ -238,7 +238,7 @@ version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please "time"="2024-09-24 22:21:19.664897" "level"="info" "logger"="node" "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" ``` -Your node will take some time to finish [syncing postage contract data](https://docs.ethswarm.org/docs/develop/access-the-swarm/buy-a-stamp-batch/) as indicated by the final line: +Your node will take some time to finish [syncing postage contract data](https://docs.ethswarm.org/docs/develop/tools-and-features/buy-a-stamp-batch/) as indicated by the final line: ```bash "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" diff --git a/docs/node/participate-validator/swarm/c-dappnode-swarm.md b/docs/node/participate-validator/swarm/c-dappnode-swarm.md index 16dc4c1aa..b9fc913d8 100644 --- a/docs/node/participate-validator/swarm/c-dappnode-swarm.md +++ b/docs/node/participate-validator/swarm/c-dappnode-swarm.md @@ -22,8 +22,8 @@ You will also need a Gnosis RPC Endpoint (such as Nethermind xDAI) for your bee ### Tokens -* A small amount of [xDAI](https://docs.ethswarm.org/docs/learn/tokens#xdai) to pay for Gnosis Chain transactions, 0.1 xDAI should be enough -* [xBZZ](https://docs.ethswarm.org/docs/learn/tokens#xbzz) (BZZ on Gnosis Chain) is required for funding the chequebook, buying stamps for storage and staking (minimum 10 xBZZ) +* A small amount of [xDAI](https://docs.ethswarm.org/docs/references/tokens#xdai) to pay for Gnosis Chain transactions, 0.1 xDAI should be enough +* [xBZZ](https://docs.ethswarm.org/docs/references/tokens#xbzz) (BZZ on Gnosis Chain) is required for funding the chequebook, buying stamps for storage and staking (minimum 10 xBZZ) ## Full node setup process diff --git a/docs/node/rewards-penalties.md b/docs/node/rewards-penalties.md index b8f336704..aac16f237 100644 --- a/docs/node/rewards-penalties.md +++ b/docs/node/rewards-penalties.md @@ -18,17 +18,15 @@ You are responsible for your node, including ensuring uptime, correct behavior, ### Current Yield - The current yield on GNO staking can be found in this [Dune Dashboard](https://dune.com/gnosischain_team/gnosischain). and [Gnosis Metrics](https://www.gnosismetrics.com/). -- As of Aug 2023, GNO staking has a ~14% yield. +- Yield changes over time with the size and performance of the active validator set. Always use the live dashboards above instead of a fixed percentage. ### Rewards Calculation: -- **Block Proposals**: The reward for proposing a block consists of a base reward and an additional reward proportional to the validator's index. While the base reward remains constant, the additional reward decreases as the validator's index increases, ensuring equal block proposal opportunities for all validators. +- **Consensus rewards** come from duties such as attestations, block proposals, and sync committee participation. +- **Execution rewards** (priority fees and MEV where applicable) are paid to the configured fee recipient when your validator proposes a block. +- **Penalties** are applied for missed duties and for slashable behavior. -Example: A validator with index 10 proposes a block. The base reward for proposing a block is 100, and the additional reward is 10 / 100 = 0.1. The total reward for the validator is 100 + 0.1 = 100.1. - -- **Block Attestations**: The reward for attesting to a block features a base reward that diminishes over time. Initially set at 100%, the base reward decreases by 1% for every 1000 slots, maintaining the attractiveness of block proposal rewards even as the number of validators grows. - -Example: A validator with index 100 attests to a block. The base reward for attesting to a block is 100, and the additional reward is 99%. The total reward for the validator is 100 \* 0.99 = 99. +For practical estimates, use live explorer and dashboard data rather than static examples. ### Understanding Gas Consumption and Transaction Fees diff --git a/docs/tools/Blockchain Explorers/blockscout.md b/docs/tools/Blockchain Explorers/blockscout.md index 70a78b561..a12d8b347 100644 --- a/docs/tools/Blockchain Explorers/blockscout.md +++ b/docs/tools/Blockchain Explorers/blockscout.md @@ -5,7 +5,7 @@ keywords: [explorer, block explorer, blockscout] # BlockScout -BlockScout is a full-featured, open-source explorer for Gnosis Mainnet, Chiado Testnet and many other chains. [The Gnosis explorer is available here](https://blockscout.com/xdai/mainnet). +BlockScout is a full-featured, open-source explorer for Gnosis Mainnet, Chiado Testnet and many other chains. [The Gnosis explorer is available here](https://gnosis.blockscout.com/). With BlockScout you can: @@ -16,8 +16,16 @@ With BlockScout you can: ![](/img/tools/blockscout.png) +## Blockscout Pro API + +Blockscout Pro API is a new service providing fast, reliable blockchain data access for 100+ chains, including Gnosis. It offers higher rate limits, custom endpoints, improved performance, and multichain support. + +You can check it out here: [https://dev.blockscout.com/](https://dev.blockscout.com/) + +Full docs: [https://docs.blockscout.com/devs/pro-api#pro-api-overview](https://docs.blockscout.com/devs/pro-api#pro-api-overview) + ## More links - GraphQL: [https://blockscout.com/poa/xdai/graphiql](https://blockscout.com/poa/xdai/graphiql) - RPC: [https://blockscout.com/xdai/mainnet/api-docs](https://blockscout.com/xdai/mainnet/api-docs) -- Eth RPC: [https://blockscout.com/xdai/mainnet/eth-rpc-api-docs](https://blockscout.com/xdai/mainnet/eth-rpc-api-docs) \ No newline at end of file +- Eth RPC: [https://gnosis.blockscout.com/api-docs?tab=eth_rpc_api](https://gnosis.blockscout.com/api-docs?tab=eth_rpc_api) diff --git a/docs/tools/wallets/safe.md b/docs/tools/wallets/safe.md index a3f0bf619..35fcf7278 100644 --- a/docs/tools/wallets/safe.md +++ b/docs/tools/wallets/safe.md @@ -32,7 +32,7 @@ Select the MetaMask option in the connect wallet menu. Check that the correct Me ### Connecting with WalletConnect -Current WalletConnect functionality is limited to wallets that support Gnosis Chain. You can use MetaMask Mobile with WalletConnect if you have set up the [Gnosis custom RPC](/tools/wallets/metamask/#manual-configuration). +Current WalletConnect functionality is limited to wallets that support Gnosis Chain. You can use MetaMask Mobile with WalletConnect if you have set up the [Gnosis custom RPC](/tools/wallets/metamask#b-manual-configuration). If you choose to use WalletConnect, select the WalletConnect option in the connect wallet menu. Scan the QR code with your application and accept the message to connect in your mobile wallet. @@ -96,4 +96,4 @@ You can connect to WalletConnect to interact with supported DApps using Safe. ## Need more help? -[Safe Support Page](https://help.safe.global/en/) \ No newline at end of file +[Safe Support Page](https://help.safe.global/en/) diff --git a/docusaurus.config.js b/docusaurus.config.js index b6acf5b91..1ed2be2b0 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -130,7 +130,7 @@ const config = { { href: "https://www.notion.so/gnosischain/The-dApp-Stack-1c03b92f9cd080039675db6ec9abc9c8", position: "left", - label: "dApp Stack", + label: "Open Internet Kit", }, { href: "https://twitter.com/gnosischain", diff --git a/package.json b/package.json index c1c382445..c3ec51114 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,18 @@ "@babel/preset-react": "7.23.3", "@docusaurus/module-type-aliases": "3.9.2" }, + "pnpm": { + "overrides": { + "copy-webpack-plugin": "14.0.0", + "css-minimizer-webpack-plugin": "8.0.0" + }, + "onlyBuiltDependencies": [ + "@parcel/watcher", + "core-js", + "core-js-pure", + "sharp" + ] + }, "browserslist": { "production": [ ">0.5%", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40b7b21b5..2a2fc9508 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + copy-webpack-plugin: 14.0.0 + css-minimizer-webpack-plugin: 8.0.0 + importers: .: @@ -36,8 +40,8 @@ importers: specifier: 0.0.1 version: 0.0.1(@docusaurus/core@3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3)) docusaurus-plugin-sass: - specifier: 0.2.2 - version: 0.2.2(@docusaurus/core@3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3))(sass@1.56.1)(webpack@5.104.1) + specifier: 0.2.6 + version: 0.2.6(@docusaurus/core@3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3))(sass@1.56.1)(webpack@5.104.1) dotenv: specifier: 16.4.4 version: 16.4.4 @@ -734,10 +738,6 @@ packages: resolution: {integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} @@ -754,6 +754,9 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@colordx/core@5.0.3': + resolution: {integrity: sha512-xBQ0MYRTNNxW3mS2sJtlQTT7C3Sasqgh1/PsHva7fyDb5uqYY+gv9V0utDdX8X80mqzbGz3u/IDJdn2d/uW09g==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1303,13 +1306,17 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/pattern@30.0.1': + resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/schemas@30.0.5': + resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@30.3.0': + resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1378,6 +1385,10 @@ packages: '@types/react': '>=16' react: '>=16' + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1394,6 +1405,40 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@peculiar/asn1-cms@2.6.1': + resolution: {integrity: sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==} + + '@peculiar/asn1-csr@2.6.1': + resolution: {integrity: sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==} + + '@peculiar/asn1-ecc@2.6.1': + resolution: {integrity: sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==} + + '@peculiar/asn1-pfx@2.6.1': + resolution: {integrity: sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==} + + '@peculiar/asn1-pkcs8@2.6.1': + resolution: {integrity: sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==} + + '@peculiar/asn1-pkcs9@2.6.1': + resolution: {integrity: sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==} + + '@peculiar/asn1-rsa@2.6.1': + resolution: {integrity: sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==} + + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} + + '@peculiar/asn1-x509-attr@2.6.1': + resolution: {integrity: sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==} + + '@peculiar/asn1-x509@2.6.1': + resolution: {integrity: sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==} + + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} + '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -1418,8 +1463,8 @@ packages: '@sideway/pinpoint@2.0.0': resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} @@ -1523,10 +1568,6 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -1605,9 +1646,6 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -1848,6 +1886,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + asn1js@3.0.7: + resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} + engines: {node: '>=12.0.0'} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -2004,6 +2046,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -2094,6 +2140,10 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -2156,6 +2206,10 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2222,9 +2276,9 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - copy-webpack-plugin@11.0.0: - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} + copy-webpack-plugin@14.0.0: + resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} + engines: {node: '>= 20.9.0'} peerDependencies: webpack: ^5.1.0 @@ -2287,9 +2341,9 @@ packages: webpack: optional: true - css-minimizer-webpack-plugin@5.0.1: - resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} - engines: {node: '>= 14.15.0'} + css-minimizer-webpack-plugin@8.0.0: + resolution: {integrity: sha512-9bEpzHs8gEq6/cbEj418jXL/YWjBUD2YTLLk905Npt2JODqnRITin0+So5Vx4Dp5vyi2Lpt9pp2QHzQ7fdxNrw==} + engines: {node: '>= 20.9.0'} peerDependencies: '@parcel/css': '*' '@swc/css': '*' @@ -2332,6 +2386,10 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -2356,18 +2414,36 @@ packages: peerDependencies: postcss: ^8.4.31 + cssnano-preset-default@7.0.12: + resolution: {integrity: sha512-B3Eoouzw/sl2zANI0AL9KbacummJTCww+fkHaDBMZad/xuVx8bUduPLly6hKVQAlrmvYkS1jB1CVQEKm3gn0AA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + cssnano-utils@4.0.2: resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + cssnano-utils@5.0.1: + resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + cssnano@6.1.2: resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + cssnano@7.1.4: + resolution: {integrity: sha512-T9PNS7y+5Nc9Qmu9mRONqfxG1RVY7Vuvky0XN6MZ+9hqplesTEwnj9r0ROtVuSwUVfaDhVlavuzWIVLUgm4hkQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -2483,10 +2559,10 @@ packages: peerDependencies: '@docusaurus/core': '>=2.0.0' - docusaurus-plugin-sass@0.2.2: - resolution: {integrity: sha512-ZZBpj3PrhGpYE2kAnkZB9NRwy/CDi4rGun1oec6PYR8YvGzqxYGtXvLgHi6FFbu8/N483klk8udqyYMh6Ted+A==} + docusaurus-plugin-sass@0.2.6: + resolution: {integrity: sha512-2hKQQDkrufMong9upKoG/kSHJhuwd+FA3iAe/qzS/BmWpbIpe7XKmq5wlz4J5CJaOPu4x+iDJbgAxZqcoQf0kg==} peerDependencies: - '@docusaurus/core': ^2.0.0-beta + '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha sass: ^1.30.0 dom-converter@0.2.0: @@ -2747,6 +2823,15 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + feed@4.2.2: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} @@ -2874,10 +2959,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3061,8 +3142,8 @@ packages: engines: {node: '>=16.x'} hasBin: true - immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + immutable@4.3.8: + resolution: {integrity: sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -3248,17 +3329,21 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@30.0.1: + resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-util@30.3.0: + resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@30.3.0: + resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} @@ -3317,10 +3402,6 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - latest-version@7.0.0: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} @@ -3363,8 +3444,8 @@ packages: lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -3462,6 +3543,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -3663,8 +3747,8 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -3719,10 +3803,6 @@ packages: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} - node-forge@1.3.3: - resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} - engines: {node: '>= 6.13.0'} - node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -3876,8 +3956,8 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} path-to-regexp@1.9.0: resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} @@ -3892,20 +3972,34 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} + pkijs@3.4.0: + resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} + engines: {node: '>=16.0.0'} + postcss-attribute-case-insensitive@7.0.1: resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + postcss-calc@9.0.1: resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} engines: {node: ^14 || ^16 || >=18.0} @@ -3942,12 +4036,24 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-colormin@7.0.7: + resolution: {integrity: sha512-sBQ628lSj3VQpDquQel8Pen5mmjFPsO4pH9lDLaHB1AVkMRHtkl0pRB5DCWznc9upWsxint/kV+AveSj7W1tew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-convert-values@6.1.0: resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-convert-values@7.0.9: + resolution: {integrity: sha512-l6uATQATZaCa0bckHV+r6dLXfWtUBKXxO3jK+AtxxJJtgMPD+VhhPCCx51I4/5w8U5uHV67g3w7PXj+V3wlMlg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-custom-media@11.0.6: resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} engines: {node: '>=18'} @@ -3978,24 +4084,48 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-discard-comments@7.0.6: + resolution: {integrity: sha512-Sq+Fzj1Eg5/CPf1ERb0wS1Im5cvE2gDXCE+si4HCn1sf+jpQZxDI4DXEp8t77B/ImzDceWE2ebJQFXdqZ6GRJw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-discard-duplicates@6.0.3: resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-discard-duplicates@7.0.2: + resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-discard-empty@6.0.3: resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-discard-empty@7.0.1: + resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-discard-overridden@6.0.2: resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-discard-overridden@7.0.1: + resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-discard-unused@6.0.5: resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==} engines: {node: ^14 || ^16 || >=18.0} @@ -4068,36 +4198,72 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-merge-longhand@7.0.5: + resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-merge-rules@6.1.1: resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-merge-rules@7.0.8: + resolution: {integrity: sha512-BOR1iAM8jnr7zoQSlpeBmCsWV5Uudi/+5j7k05D0O/WP3+OFMPD86c1j/20xiuRtyt45bhxw/7hnhZNhW2mNFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-minify-font-values@6.1.0: resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-minify-font-values@7.0.1: + resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-minify-gradients@6.0.3: resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-minify-gradients@7.0.2: + resolution: {integrity: sha512-fVY3AB8Um7SJR5usHqTY2Ngf9qh8IRN+FFzrBP0ONJy6yYXsP7xyjK2BvSAIrpgs1cST+H91V0TXi3diHLYJtw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-minify-params@6.1.0: resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-minify-params@7.0.6: + resolution: {integrity: sha512-YOn02gC68JijlaXVuKvFSCvQOhTpblkcfDre2hb/Aaa58r2BIaK4AtE/cyZf2wV7YKAG+UlP9DT+By0ry1E4VQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-minify-selectors@6.0.4: resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-minify-selectors@7.0.6: + resolution: {integrity: sha512-lIbC0jy3AAwDxEgciZlBullDiMBeBCT+fz5G8RcA9MWqh/hfUkpOI3vNDUNEZHgokaoiv0juB9Y8fGcON7rU/A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} @@ -4134,54 +4300,108 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-normalize-charset@7.0.1: + resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-display-values@6.0.2: resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-display-values@7.0.1: + resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-positions@6.0.2: resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-positions@7.0.1: + resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-repeat-style@6.0.2: resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-repeat-style@7.0.1: + resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-string@6.0.2: resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-string@7.0.1: + resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-timing-functions@6.0.2: resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-timing-functions@7.0.1: + resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-unicode@6.1.0: resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-unicode@7.0.6: + resolution: {integrity: sha512-z6bwTV84YW6ZvvNoaNLuzRW4/uWxDKYI1iIDrzk6D2YTL7hICApy+Q1LP6vBEsljX8FM7YSuV9qI79XESd4ddQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-url@6.0.2: resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-url@7.0.1: + resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-normalize-whitespace@6.0.2: resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-normalize-whitespace@7.0.1: + resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-opacity-percentage@3.0.0: resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==} engines: {node: '>=18'} @@ -4194,6 +4414,12 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-ordered-values@7.0.2: + resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-overflow-shorthand@6.0.0: resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==} engines: {node: '>=18'} @@ -4235,12 +4461,24 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-reduce-initial@7.0.6: + resolution: {integrity: sha512-G6ZyK68AmrPdMB6wyeA37ejnnRG2S8xinJrZJnOv+IaRKf6koPAVbQsiC7MfkmXaGmF1UO+QCijb27wfpxuRNg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-reduce-transforms@6.0.2: resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-reduce-transforms@7.0.1: + resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-replace-overflow-wrap@4.0.0: resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} peerDependencies: @@ -4272,12 +4510,24 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-svgo@7.1.1: + resolution: {integrity: sha512-zU9H9oEDrUFKa0JB7w+IYL7Qs9ey1mZyjhbf0KLxwJDdDRtoPvCmaEfknzqfHj44QS9VD6c5sJnBAVYTLRg/Sg==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.32 + postcss-unique-selectors@6.0.4: resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-unique-selectors@7.0.5: + resolution: {integrity: sha512-3QoYmEt4qg/rUWDn6Tc8+ZVPmbp4G1hXDtCNWDx0st8SjtCbRcxRXDDM1QrEiXGG3A45zscSJFb4QH90LViyxg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -4348,6 +4598,13 @@ packages: resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} engines: {node: '>=12.20'} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + qs@6.14.1: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} @@ -4359,9 +4616,6 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} @@ -4465,6 +4719,9 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + regenerate-unicode-properties@10.2.2: resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} @@ -4591,14 +4848,15 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-loader@10.5.2: - resolution: {integrity: sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==} - engines: {node: '>= 10.13.0'} + sass-loader@13.3.3: + resolution: {integrity: sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==} + engines: {node: '>= 14.15.0'} peerDependencies: fibers: '>= 3.1.0' node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 - webpack: ^4.36.0 || ^5.0.0 + sass-embedded: '*' + webpack: ^5.0.0 peerDependenciesMeta: fibers: optional: true @@ -4606,18 +4864,20 @@ packages: optional: true sass: optional: true + sass-embedded: + optional: true - sass-loader@13.3.3: - resolution: {integrity: sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==} - engines: {node: '>= 14.15.0'} + sass-loader@16.0.7: + resolution: {integrity: sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==} + engines: {node: '>= 18.12.0'} peerDependencies: - fibers: '>= 3.1.0' + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 sass-embedded: '*' webpack: ^5.0.0 peerDependenciesMeta: - fibers: + '@rspack/core': optional: true node-sass: optional: true @@ -4625,6 +4885,8 @@ packages: optional: true sass-embedded: optional: true + webpack: + optional: true sass@1.56.1: resolution: {integrity: sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==} @@ -4635,6 +4897,10 @@ packages: resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} engines: {node: '>=11.0.0'} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + scheduler@0.21.0: resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} @@ -4662,9 +4928,9 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} semver-diff@4.0.0: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} @@ -4683,11 +4949,12 @@ packages: resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serialize-javascript@7.0.5: + resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} + engines: {node: '>=20.0.0'} - serve-handler@6.1.6: - resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + serve-handler@6.1.7: + resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} @@ -4778,10 +5045,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -4895,6 +5158,12 @@ packages: peerDependencies: postcss: ^8.4.31 + stylehacks@7.0.8: + resolution: {integrity: sha512-I3f053GBLIiS5Fg6OMFhq/c+yW+5Hc2+1fgq7gElDMMSqwlRb3tBf2ef6ucLStYRpId4q//bQO1FjcyNyy4yDQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4910,11 +5179,16 @@ packages: svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + svgo@3.3.3: + resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==} engines: {node: '>=14.0.0'} hasBin: true + svgo@4.0.1: + resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} + engines: {node: '>=16'} + hasBin: true + swr@2.3.8: resolution: {integrity: sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w==} peerDependencies: @@ -4937,8 +5211,8 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - terser-webpack-plugin@5.3.16: - resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} + terser-webpack-plugin@5.4.0: + resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -4980,6 +5254,10 @@ packages: tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5008,9 +5286,16 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -5180,8 +5465,8 @@ packages: webpack: optional: true - webpack-dev-server@5.2.2: - resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} + webpack-dev-server@5.2.3: + resolution: {integrity: sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -6182,8 +6467,6 @@ snapshots: dependencies: core-js-pure: 3.47.0 - '@babel/runtime@7.28.4': {} - '@babel/runtime@7.28.6': {} '@babel/template@7.27.2': @@ -6209,6 +6492,8 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@colordx/core@5.0.3': {} + '@colors/colors@1.5.0': optional: true @@ -6558,7 +6843,7 @@ snapshots: '@babel/preset-env': 7.28.5(@babel/core@7.28.5) '@babel/preset-react': 7.28.5(@babel/core@7.28.5) '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@babel/runtime-corejs3': 7.28.4 '@babel/traverse': 7.28.5 '@docusaurus/logger': 3.9.2 @@ -6585,9 +6870,9 @@ snapshots: '@docusaurus/utils': 3.9.2(react-dom@18.0.0(react@18.0.0))(react@18.0.0) babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.104.1) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.104.1) + copy-webpack-plugin: 14.0.0(webpack@5.104.1) css-loader: 6.11.0(webpack@5.104.1) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.104.1) + css-minimizer-webpack-plugin: 8.0.0(clean-css@5.3.3)(webpack@5.104.1) cssnano: 6.1.2(postcss@8.5.6) file-loader: 6.2.0(webpack@5.104.1) html-minifier-terser: 7.2.0 @@ -6596,7 +6881,7 @@ snapshots: postcss: 8.5.6 postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1) postcss-preset-env: 10.6.0(postcss@8.5.6) - terser-webpack-plugin: 5.3.16(webpack@5.104.1) + terser-webpack-plugin: 5.4.0(webpack@5.104.1) tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1) webpack: 5.104.1 @@ -6642,7 +6927,7 @@ snapshots: html-tags: 3.3.1 html-webpack-plugin: 5.6.5(webpack@5.104.1) leven: 3.1.0 - lodash: 4.17.21 + lodash: 4.18.1 open: 8.4.2 p-map: 4.0.0 prompts: 2.4.2 @@ -6655,13 +6940,13 @@ snapshots: react-router-config: 5.1.1(react-router@5.3.4(react@18.0.0))(react@18.0.0) react-router-dom: 5.3.4(react@18.0.0) semver: 7.7.3 - serve-handler: 6.1.6 + serve-handler: 6.1.7 tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 webpack: 5.104.1 webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.2(webpack@5.104.1) + webpack-dev-server: 5.2.3(webpack@5.104.1) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -6696,7 +6981,7 @@ snapshots: dependencies: '@docusaurus/logger': 3.9.2 file-loader: 6.2.0(webpack@5.104.1) - lodash: 4.17.21 + lodash: 4.18.1 sharp: 0.32.6 tslib: 2.8.1 transitivePeerDependencies: @@ -6767,7 +7052,7 @@ snapshots: '@docusaurus/utils-validation': 3.9.2(react-dom@18.0.0(react@18.0.0))(react@18.0.0) eta: 2.2.0 fs-extra: 11.3.3 - lodash: 4.17.21 + lodash: 4.18.1 react: 18.0.0 react-dom: 18.0.0(react@18.0.0) tslib: 2.8.1 @@ -6803,7 +7088,7 @@ snapshots: cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.3.3 - lodash: 4.17.21 + lodash: 4.18.1 react: 18.0.0 react-dom: 18.0.0(react@18.0.0) schema-dts: 1.1.5 @@ -6845,7 +7130,7 @@ snapshots: combine-promises: 1.2.0 fs-extra: 11.3.3 js-yaml: 4.1.1 - lodash: 4.17.21 + lodash: 4.18.1 react: 18.0.0 react-dom: 18.0.0(react@18.0.0) schema-dts: 1.1.5 @@ -7198,7 +7483,7 @@ snapshots: '@mdx-js/react': 3.0.0(@types/react@19.2.7)(react@18.0.0) clsx: 2.1.1 infima: 0.2.0-alpha.45 - lodash: 4.17.21 + lodash: 4.18.1 nprogress: 0.2.0 postcss: 8.5.6 prism-react-renderer: 2.4.1(react@18.0.0) @@ -7266,7 +7551,7 @@ snapshots: clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.3 - lodash: 4.17.21 + lodash: 4.18.1 react: 18.0.0 react-dom: 18.0.0(react@18.0.0) tslib: 2.8.1 @@ -7339,7 +7624,7 @@ snapshots: fs-extra: 11.3.3 joi: 17.13.3 js-yaml: 4.1.1 - lodash: 4.17.21 + lodash: 4.18.1 tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -7364,7 +7649,7 @@ snapshots: gray-matter: 4.0.3 jiti: 1.21.7 js-yaml: 4.1.1 - lodash: 4.17.21 + lodash: 4.18.1 micromatch: 4.0.8 p-queue: 6.6.2 prompts: 2.4.2 @@ -7388,13 +7673,19 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@jest/schemas@29.6.3': + '@jest/pattern@30.0.1': + dependencies: + '@types/node': 25.0.3 + jest-regex-util: 30.0.1 + + '@jest/schemas@30.0.5': dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.34.49 - '@jest/types@29.6.3': + '@jest/types@30.3.0': dependencies: - '@jest/schemas': 29.6.3 + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 25.0.3 @@ -7499,6 +7790,8 @@ snapshots: '@types/react': 19.2.7 react: 18.0.0 + '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7513,6 +7806,96 @@ snapshots: '@opentelemetry/api@1.9.0': {} + '@peculiar/asn1-cms@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + '@peculiar/asn1-x509-attr': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.6.1': + dependencies: + '@peculiar/asn1-cms': 2.6.1 + '@peculiar/asn1-pkcs8': 2.6.1 + '@peculiar/asn1-rsa': 2.6.1 + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.6.1': + dependencies: + '@peculiar/asn1-cms': 2.6.1 + '@peculiar/asn1-pfx': 2.6.1 + '@peculiar/asn1-pkcs8': 2.6.1 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + '@peculiar/asn1-x509-attr': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.6.0': + dependencies: + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/x509@1.14.3': + dependencies: + '@peculiar/asn1-cms': 2.6.1 + '@peculiar/asn1-csr': 2.6.1 + '@peculiar/asn1-ecc': 2.6.1 + '@peculiar/asn1-pkcs9': 2.6.1 + '@peculiar/asn1-rsa': 2.6.1 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -7535,7 +7918,7 @@ snapshots: '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.34.49': {} '@sindresorhus/is@4.6.0': {} @@ -7634,7 +8017,7 @@ snapshots: '@svgr/core': 8.1.0(typescript@5.9.3) cosmiconfig: 8.3.6(typescript@5.9.3) deepmerge: 4.3.1 - svgo: 3.3.2 + svgo: 3.3.3 transitivePeerDependencies: - typescript @@ -7656,8 +8039,6 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@trysound/sax@0.2.0': {} - '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 @@ -7750,10 +8131,6 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 25.0.3 - '@types/node@17.0.45': {} '@types/node@25.0.3': @@ -7791,7 +8168,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 25.0.3 '@types/send@0.17.6': dependencies: @@ -8020,7 +8397,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 arg@5.0.2: {} @@ -8034,6 +8411,12 @@ snapshots: array-union@2.1.0: {} + asn1js@3.0.7: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + astring@1.9.0: {} autoprefixer@10.4.23(postcss@8.5.6): @@ -8217,6 +8600,8 @@ snapshots: bytes@3.1.2: {} + bytestreamjs@2.0.1: {} + cacheable-lookup@7.0.0: {} cacheable-request@10.2.14: @@ -8322,6 +8707,8 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.4.0: {} + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -8374,6 +8761,8 @@ snapshots: commander@10.0.1: {} + commander@11.1.0: {} + commander@2.20.3: {} commander@5.1.0: {} @@ -8433,14 +8822,13 @@ snapshots: cookie@0.7.2: {} - copy-webpack-plugin@11.0.0(webpack@5.104.1): + copy-webpack-plugin@14.0.0(webpack@5.104.1): dependencies: - fast-glob: 3.3.3 glob-parent: 6.0.2 - globby: 13.2.2 normalize-path: 3.0.0 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 + serialize-javascript: 7.0.5 + tinyglobby: 0.2.15 webpack: 5.104.1 core-js-compat@3.47.0: @@ -8501,14 +8889,14 @@ snapshots: optionalDependencies: webpack: 5.104.1 - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.104.1): + css-minimizer-webpack-plugin@8.0.0(clean-css@5.3.3)(webpack@5.104.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 - cssnano: 6.1.2(postcss@8.5.6) - jest-worker: 29.7.0 + cssnano: 7.1.4(postcss@8.5.6) + jest-worker: 30.3.0 postcss: 8.5.6 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 + serialize-javascript: 7.0.5 webpack: 5.104.1 optionalDependencies: clean-css: 5.3.3 @@ -8543,6 +8931,11 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + css-what@6.2.2: {} cssdb@8.6.0: {} @@ -8594,16 +8987,60 @@ snapshots: postcss-svgo: 6.0.3(postcss@8.5.6) postcss-unique-selectors: 6.0.4(postcss@8.5.6) + cssnano-preset-default@7.0.12(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + css-declaration-sorter: 7.3.1(postcss@8.5.6) + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 10.1.1(postcss@8.5.6) + postcss-colormin: 7.0.7(postcss@8.5.6) + postcss-convert-values: 7.0.9(postcss@8.5.6) + postcss-discard-comments: 7.0.6(postcss@8.5.6) + postcss-discard-duplicates: 7.0.2(postcss@8.5.6) + postcss-discard-empty: 7.0.1(postcss@8.5.6) + postcss-discard-overridden: 7.0.1(postcss@8.5.6) + postcss-merge-longhand: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.8(postcss@8.5.6) + postcss-minify-font-values: 7.0.1(postcss@8.5.6) + postcss-minify-gradients: 7.0.2(postcss@8.5.6) + postcss-minify-params: 7.0.6(postcss@8.5.6) + postcss-minify-selectors: 7.0.6(postcss@8.5.6) + postcss-normalize-charset: 7.0.1(postcss@8.5.6) + postcss-normalize-display-values: 7.0.1(postcss@8.5.6) + postcss-normalize-positions: 7.0.1(postcss@8.5.6) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) + postcss-normalize-string: 7.0.1(postcss@8.5.6) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) + postcss-normalize-unicode: 7.0.6(postcss@8.5.6) + postcss-normalize-url: 7.0.1(postcss@8.5.6) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) + postcss-ordered-values: 7.0.2(postcss@8.5.6) + postcss-reduce-initial: 7.0.6(postcss@8.5.6) + postcss-reduce-transforms: 7.0.1(postcss@8.5.6) + postcss-svgo: 7.1.1(postcss@8.5.6) + postcss-unique-selectors: 7.0.5(postcss@8.5.6) + cssnano-utils@4.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 + cssnano-utils@5.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + cssnano@6.1.2(postcss@8.5.6): dependencies: cssnano-preset-default: 6.1.2(postcss@8.5.6) lilconfig: 3.1.3 postcss: 8.5.6 + cssnano@7.1.4(postcss@8.5.6): + dependencies: + cssnano-preset-default: 7.0.12(postcss@8.5.6) + lilconfig: 3.1.3 + postcss: 8.5.6 + csso@5.0.5: dependencies: css-tree: 2.2.1 @@ -8693,14 +9130,15 @@ snapshots: '@docusaurus/core': 3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3) js-yaml: 4.1.1 - docusaurus-plugin-sass@0.2.2(@docusaurus/core@3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3))(sass@1.56.1)(webpack@5.104.1): + docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3))(sass@1.56.1)(webpack@5.104.1): dependencies: '@docusaurus/core': 3.9.2(@mdx-js/react@3.0.0(@types/react@19.2.7)(react@18.0.0))(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(typescript@5.9.3) sass: 1.56.1 - sass-loader: 10.5.2(sass@1.56.1)(webpack@5.104.1) + sass-loader: 16.0.7(sass@1.56.1)(webpack@5.104.1) transitivePeerDependencies: - - fibers + - '@rspack/core' - node-sass + - sass-embedded - webpack dom-converter@0.2.0: @@ -8943,7 +9381,7 @@ snapshots: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.12 + path-to-regexp: 0.1.13 proxy-addr: 2.0.7 qs: 6.14.1 range-parser: 1.2.1 @@ -8992,6 +9430,10 @@ snapshots: dependencies: websocket-driver: 0.7.4 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + feed@4.2.2: dependencies: xml-js: 1.6.11 @@ -9114,14 +9556,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - gopd@1.2.0: {} got@12.6.1: @@ -9267,7 +9701,7 @@ snapshots: history@4.10.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -9315,7 +9749,7 @@ snapshots: dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 - lodash: 4.17.21 + lodash: 4.18.1 pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: @@ -9399,7 +9833,7 @@ snapshots: image-size@2.0.2: {} - immutable@4.3.7: {} + immutable@4.3.8: {} import-fresh@3.3.1: dependencies: @@ -9526,14 +9960,16 @@ snapshots: isobject@3.0.1: {} - jest-util@29.7.0: + jest-regex-util@30.0.1: {} + + jest-util@30.3.0: dependencies: - '@jest/types': 29.6.3 + '@jest/types': 30.3.0 '@types/node': 25.0.3 chalk: 4.1.2 - ci-info: 3.9.0 + ci-info: 4.4.0 graceful-fs: 4.2.11 - picomatch: 2.3.1 + picomatch: 4.0.4 jest-worker@27.5.1: dependencies: @@ -9541,10 +9977,11 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@29.7.0: + jest-worker@30.3.0: dependencies: '@types/node': 25.0.3 - jest-util: 29.7.0 + '@ungap/structured-clone': 1.3.0 + jest-util: 30.3.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9597,8 +10034,6 @@ snapshots: kleur@3.0.3: {} - klona@2.0.6: {} - latest-version@7.0.0: dependencies: package-json: 8.1.1 @@ -9634,7 +10069,7 @@ snapshots: lodash.uniq@4.5.0: {} - lodash@4.17.21: {} + lodash@4.18.1: {} longest-streak@3.1.0: {} @@ -9856,6 +10291,8 @@ snapshots: mdn-data@2.0.30: {} + mdn-data@2.27.1: {} + media-typer@0.3.0: {} memfs@4.51.1: @@ -10175,7 +10612,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.33.0: {} @@ -10211,7 +10648,7 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@3.1.2: + minimatch@3.1.5: dependencies: brace-expansion: 1.1.12 @@ -10258,8 +10695,6 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 - node-forge@1.3.3: {} - node-releases@2.0.27: {} normalize-path@3.0.0: {} @@ -10418,7 +10853,7 @@ snapshots: path-parse@1.0.7: {} - path-to-regexp@0.1.12: {} + path-to-regexp@0.1.13: {} path-to-regexp@1.9.0: dependencies: @@ -10430,17 +10865,34 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} + + picomatch@4.0.4: {} pkg-dir@7.0.0: dependencies: find-up: 6.3.0 + pkijs@3.4.0: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.7 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-selector-parser: 7.1.1 + postcss-calc@10.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + postcss-calc@9.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -10481,12 +10933,26 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-colormin@7.0.7(postcss@8.5.6): + dependencies: + '@colordx/core': 5.0.3 + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-convert-values@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-convert-values@7.0.9(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-custom-media@11.0.6(postcss@8.5.6): dependencies: '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -10521,18 +10987,35 @@ snapshots: dependencies: postcss: 8.5.6 + postcss-discard-comments@7.0.6(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + postcss-discard-duplicates@6.0.3(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-discard-duplicates@7.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-empty@6.0.3(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-discard-empty@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-overridden@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-discard-overridden@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-unused@6.0.5(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -10605,6 +11088,12 @@ snapshots: postcss-value-parser: 4.2.0 stylehacks: 6.1.1(postcss@8.5.6) + postcss-merge-longhand@7.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.8(postcss@8.5.6) + postcss-merge-rules@6.1.1(postcss@8.5.6): dependencies: browserslist: 4.28.1 @@ -10613,11 +11102,24 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 + postcss-merge-rules@7.0.8(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + postcss-minify-font-values@6.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-minify-font-values@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-minify-gradients@6.0.3(postcss@8.5.6): dependencies: colord: 2.9.3 @@ -10625,6 +11127,13 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-minify-gradients@7.0.2(postcss@8.5.6): + dependencies: + '@colordx/core': 5.0.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-minify-params@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.28.1 @@ -10632,11 +11141,24 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-minify-params@7.0.6(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-minify-selectors@6.0.4(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-selector-parser: 6.1.2 + postcss-minify-selectors@7.0.6(postcss@8.5.6): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -10669,47 +11191,92 @@ snapshots: dependencies: postcss: 8.5.6 + postcss-normalize-charset@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-normalize-display-values@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-display-values@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-positions@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-positions@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-string@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-string@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-unicode@6.1.0(postcss@8.5.6): dependencies: browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-unicode@7.0.6(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-url@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-url@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-opacity-percentage@3.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -10720,6 +11287,12 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-ordered-values@7.0.2(postcss@8.5.6): + dependencies: + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-overflow-shorthand@6.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -10825,11 +11398,22 @@ snapshots: caniuse-api: 3.0.0 postcss: 8.5.6 + postcss-reduce-initial@7.0.6(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.5.6 + postcss-reduce-transforms@6.0.2(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + postcss-reduce-transforms@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -10858,13 +11442,24 @@ snapshots: dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - svgo: 3.3.2 + svgo: 3.3.3 + + postcss-svgo@7.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + svgo: 4.0.1 postcss-unique-selectors@6.0.4(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-selector-parser: 6.1.2 + postcss-unique-selectors@7.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + postcss-value-parser@4.2.0: {} postcss-zindex@6.0.2(postcss@8.5.6): @@ -10894,7 +11489,7 @@ snapshots: pretty-error@4.0.0: dependencies: - lodash: 4.17.21 + lodash: 4.18.1 renderkid: 3.0.0 pretty-time@1.1.0: {} @@ -10944,6 +11539,12 @@ snapshots: dependencies: escape-goat: 4.0.0 + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -10952,10 +11553,6 @@ snapshots: quick-lru@5.1.1: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - range-parser@1.2.0: {} range-parser@1.2.1: {} @@ -10994,7 +11591,7 @@ snapshots: react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.0.0))(webpack@5.104.1): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.0.0)' webpack: 5.104.1 @@ -11009,13 +11606,13 @@ snapshots: react-router-config@5.1.1(react-router@5.3.4(react@18.0.0))(react@18.0.0): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 react: 18.0.0 react-router: 5.3.4(react@18.0.0) react-router-dom@5.3.4(react@18.0.0): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -11026,7 +11623,7 @@ snapshots: react-router@5.3.4(react@18.0.0): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -11065,7 +11662,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 recma-build-jsx@1.0.0: dependencies: @@ -11096,6 +11693,8 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + reflect-metadata@0.2.2: {} + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -11213,7 +11812,7 @@ snapshots: css-select: 4.3.0 dom-converter: 0.2.0 htmlparser2: 6.1.0 - lodash: 4.17.21 + lodash: 4.18.1 strip-ansi: 6.0.1 repeat-string@1.6.1: {} @@ -11263,32 +11862,30 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@10.5.2(sass@1.56.1)(webpack@5.104.1): + sass-loader@13.3.3(sass@1.56.1)(webpack@5.104.1): dependencies: - klona: 2.0.6 - loader-utils: 2.0.4 neo-async: 2.6.2 - schema-utils: 3.3.0 - semver: 7.7.3 webpack: 5.104.1 optionalDependencies: sass: 1.56.1 - sass-loader@13.3.3(sass@1.56.1)(webpack@5.104.1): + sass-loader@16.0.7(sass@1.56.1)(webpack@5.104.1): dependencies: neo-async: 2.6.2 - webpack: 5.104.1 optionalDependencies: sass: 1.56.1 + webpack: 5.104.1 sass@1.56.1: dependencies: chokidar: 3.6.0 - immutable: 4.3.7 + immutable: 4.3.8 source-map-js: 1.2.1 sax@1.4.4: {} + sax@1.6.0: {} + scheduler@0.21.0: dependencies: loose-envify: 1.4.0 @@ -11319,10 +11916,10 @@ snapshots: select-hose@2.0.0: {} - selfsigned@2.4.1: + selfsigned@5.5.0: dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.3.3 + '@peculiar/x509': 1.14.3 + pkijs: 3.4.0 semver-diff@4.0.0: dependencies: @@ -11350,16 +11947,14 @@ snapshots: transitivePeerDependencies: - supports-color - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 + serialize-javascript@7.0.5: {} - serve-handler@6.1.6: + serve-handler@6.1.7: dependencies: bytes: 3.0.0 content-disposition: 0.5.2 mime-types: 2.1.18 - minimatch: 3.1.2 + minimatch: 3.1.5 path-is-inside: 1.0.2 path-to-regexp: 3.3.0 range-parser: 1.2.0 @@ -11490,8 +12085,6 @@ snapshots: slash@3.0.0: {} - slash@4.0.0: {} - snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -11619,6 +12212,12 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 + stylehacks@7.0.8(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -11631,15 +12230,25 @@ snapshots: svg-parser@2.0.4: {} - svgo@3.3.2: + svgo@3.3.3: dependencies: - '@trysound/sax': 0.2.0 commander: 7.2.0 css-select: 5.2.2 css-tree: 2.3.1 css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 + sax: 1.6.0 + + svgo@4.0.1: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.2.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.6.0 swr@2.3.8(react@18.0.0): dependencies: @@ -11685,12 +12294,11 @@ snapshots: - bare-abort-controller - react-native-b4a - terser-webpack-plugin@5.3.16(webpack@5.104.1): + terser-webpack-plugin@5.4.0(webpack@5.104.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 terser: 5.44.1 webpack: 5.104.1 @@ -11719,6 +12327,11 @@ snapshots: tiny-warning@1.0.3: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinypool@1.1.1: {} to-regex-range@5.0.1: @@ -11737,8 +12350,14 @@ snapshots: trough@2.2.0: {} + tslib@1.14.1: {} + tslib@2.8.1: {} + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -11930,7 +12549,7 @@ snapshots: optionalDependencies: webpack: 5.104.1 - webpack-dev-server@5.2.2(webpack@5.104.1): + webpack-dev-server@5.2.3(webpack@5.104.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -11954,7 +12573,7 @@ snapshots: open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 - selfsigned: 2.4.1 + selfsigned: 5.5.0 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 @@ -12006,7 +12625,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(webpack@5.104.1) + terser-webpack-plugin: 5.4.0(webpack@5.104.1) watchpack: 2.5.0 webpack-sources: 3.3.3 transitivePeerDependencies: diff --git a/src/components/MultiDimensionalContentWidget.js b/src/components/MultiDimensionalContentWidget.js index 2e8302a41..e03313511 100644 --- a/src/components/MultiDimensionalContentWidget.js +++ b/src/components/MultiDimensionalContentWidget.js @@ -73,10 +73,10 @@ export const MultiDimensionalContentWidget = () => { if (isSelectedByText('Nethermind')) selectedEL = "Nethermind"; - else if (isSelectedByText('Besu')) - selectedEL = "Besu"; else if (isSelectedByText('Erigon')) selectedEL = "Erigon"; + else if (isSelectedByText('Reth')) + selectedEL = "Reth"; else if (isSelectedByText('Geth')) selectedEL = "Geth"; @@ -86,8 +86,6 @@ export const MultiDimensionalContentWidget = () => { selectedCL = "Lodestar"; else if (isSelectedByText('Nimbus')) selectedCL = "Nimbus"; - else if (isSelectedByText('Prysm')) - selectedCL = "Prysm"; else if (isSelectedByText('Teku')) selectedCL = "Teku"; @@ -120,11 +118,6 @@ export const MultiDimensionalContentWidget = () => { } }); - //Disable unsupported clients - disableByText("Besu") - disableByText("Geth") - disableByText("Prysm") - stashConfig(); }, 100) } @@ -134,4 +127,4 @@ export const MultiDimensionalContentWidget = () => { {() => { bindTabs() }} ); -}; \ No newline at end of file +}; diff --git a/static/img/tools/blockscout.png b/static/img/tools/blockscout.png index e7e2c5c1f..05adecd7e 100644 Binary files a/static/img/tools/blockscout.png and b/static/img/tools/blockscout.png differ diff --git a/static/llms.txt b/static/llms.txt index 970d94240..7a7e3bf38 100644 --- a/static/llms.txt +++ b/static/llms.txt @@ -277,10 +277,10 @@ TODO --> | Execution Layer RPC | https://rpc.gnosischain.com | | More RPC endpoints | [RPC Providers](../../tools/RPC%20Providers/README.md) | | Execution Layer Explorer | https://gnosisscan.io | -| Execution Layer Explorer | https://blockscout.com/xdai/mainnet | +| Execution Layer Explorer | https://gnosis.blockscout.com/ | | Fork monitor | https://forkmon.gnosischain.com | | EthStats | https://ethstats.gnosischain.com | -| Forked Blocks | https://blockscout.com/xdai/mainnet/reorgs | +| Forked Blocks | https://gnosis.blockscout.com/reorgs | | Faucet | https://gnosisfaucet.com | ### Consensus Layer @@ -291,7 +291,6 @@ TODO --> | Beacon Explorer | https://beaconchain.gnosischain.com/ | | Beacon Explorer Backup 1 | https://beacon-v1.gnosischain.com | | Beacon Explorer Backup 2 | https://beacon-v2.gnosischain.com | -| Beacon Checkpoint Sync | https://checkpoint.gnosis.gateway.fm | | Beacon Checkpoint Sync | https://checkpoint.gnosischain.com | | Beacon Checkpoint Sync | https://checkpoint-sync-gnosis.dappnode.io/ | @@ -336,7 +335,7 @@ Gnosis maintains a [Configs Repo](https://github.com/gnosischain/configs/) that ## Key Contracts - [xDai Bridge](../../bridges/About%20Token%20Bridges/xdai-bridge#key-contracts) -- [AMB Bridge](../../bridges/About%20Token%20Bridges/amb-bridge#key-contracts) +- [AMB Bridge](../../bridges/About%20Token%20Bridges/amb-bridge) - [OmniBridge](../../bridges/About%20Token%20Bridges/omnibridge#key-contracts) - [Beacon Chain](/about/specs/gbc/README.md) @@ -1437,7 +1436,7 @@ The table below lists differences if any. | [EIP-7840](https://eips.ethereum.org/EIPS/eip-7840): Add blob schedule to EL config files | EL | Not modified | [EIP-4844-pectra](https://eips.ethereum.org/EIPS/eip-4844): Collect Blob Gas Fee | EL | Added -* See [Differences with Ethereum mainnet](#differences-with-ethereum-mainnet) +* Differences with Ethereum mainnet are shown in the table above. @@ -1507,7 +1506,7 @@ Check out [validator withdrawal](/node/management/withdrawals) for more details. For any type of withdrawals, a validator need to have `0x01` withdrawal credential. You’re fine if you used `--eth1_withdrawal_address` to create your validator keys. If not, tooling will be made available. - Refer to [validator withdrawal](/node/management/withdrawals#check-withdrawal-credential) for more details. + Refer to [validator withdrawal](/node/management/withdrawals) for more details. 2. Update your clients @@ -1917,7 +1916,7 @@ Historically, deposits on the Beacon Chain were made with a token called `mGNO` ::: -For those who prefer not to manage the infrastructure themselves, liquid staking providers offer the opportunity to stake without the need for personal infrastructure management. For more in-depth information about sGNO and rGNO tokens, please consult the [Stakewise](/tools/beacon-chain/liquid-staking#tokens-sgno--rgno) page. +For those who prefer not to manage the infrastructure themselves, liquid staking providers offer the opportunity to stake without the need for personal infrastructure management. For more in-depth information about sGNO and rGNO tokens, please consult the [Stakewise](/node/participate-validator/liquid-staking) page. ### GnosisDAO Governance @@ -2994,7 +2993,7 @@ Example: https://gnosis.blockscout.com/tx/0x5892a695860f6087a2d93140f05e6365142f 2. `UserRequestForSignature(address recipient, uint256 value, bytes32 nonce, address token)` event is emitted from [Home xDAI bridge contract](https://gnosis.blockscout.com/address/0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6). [Example](https://gnosisscan.io/tx/0xca6fa9395f734501a9497f409db12699782b0a068dc4463d736561572eda8441#eventlog) 3. Bridge validators observe the event and call `submitSignature(bytes signature, bytes message)` function on [Home xDAI bridge contract](https://gnosis.blockscout.com/address/0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6) on Gnosis Chain. 4. After enough signatures are collected, `CollectedSignatures` event is emitted/ -5. Anyone can execute the withdrawal on Ethereum by calling `executeSignatures(bytes message, bytes signatures)` on [Foreign xDAI bridge](https://etherscan.io/address/0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016) on Ethereum. To fetch the calldata value, please check the [guideline below](#how-to-claim-dai-on-ethereum). **USDS** is unlocked to the receiver or swap to **DAI** to the receive. +5. Anyone can execute the withdrawal on Ethereum by calling `executeSignatures(bytes message, bytes signatures)` on [Foreign xDAI bridge](https://etherscan.io/address/0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016) on Ethereum. To fetch the calldata value, please check the [guideline below](#how-to-claim-usds-on-ethereum). **USDS** is unlocked to the receiver or swap to **DAI** to the receive. 6. `RelayedMessage(address recipient, uint256 value, bytes32 transactionHash)` emitted on Foreign xDAI Bridge. Please be aware that after Hashi upgrade, `transactionHash` has been replaced with the value of `nonce`. Please check [here](../hashi/hashi-integration.md) for more information on how it works. ### Savings xDAI @@ -6545,7 +6544,7 @@ It takes about 4 hours for a deposit to be processed, you can check how your val 1. **Anyone seeing errors with checkpoint sync today?** - If the usual checkpoint sync https://checkpoint.gnosischain.com/ doesn't work, you can try using https://checkpoint.gnosis.gateway.fm/ if they are both down, don't hesitate to report it as the team might not be aware yet + If the usual checkpoint sync https://checkpoint.gnosischain.com doesn't work, report it so the team can investigate. 2. **My (dapp)node have been offline for a couple of hours. After restart attestation and block proposing resumed, but duties in sync committee still shows missing even after a few hours since it's up again. Does anyone has an explanation for this?** @@ -6561,7 +6560,7 @@ It takes about 4 hours for a deposit to be processed, you can check how your val 5. **Using checkpoint sync, but all my nodes are down. Why?** - If the usual checkpoint sync https://checkpoint.gnosischain.com/ doesn't work, you can try using https://checkpoint.gnosis.gateway.fm/ if they are both down, don't hesitate to report it as the team might not be aware yet + If the usual checkpoint sync https://checkpoint.gnosischain.com doesn't work, report it so the team can investigate. 6. **Just realized my validators are off line since the beginning of the month, can someone take a peek and help?** @@ -6573,7 +6572,7 @@ It takes about 4 hours for a deposit to be processed, you can check how your val 8. **Is there a new checkpoint for Gnosis?** - The two common checkpoint sync are : https://checkpoint.gnosischain.com/ and https://checkpoint.gnosis.gateway.fm/ + The common checkpoint sync endpoint is: https://checkpoint.gnosischain.com 9. **My Gnosis node is crashed a month ago, was there a breaking chain upgrade a month ago?** @@ -6675,7 +6674,7 @@ It takes about 4 hours for a deposit to be processed, you can check how your val 20. **Is it worth to be a validator?** - Regardless of your number of validators by becoming one you're helping to secure and decentralize the network and you can earn a decent APY (who was ~14% as of October 2023 but who depends of the number of validators) + Regardless of your number of validators, by becoming one you're helping to secure and decentralize the network. Validator APY changes over time based on validator count and network conditions, so use the live dashboards in the docs for current estimates. 21. **How many deposits per epoch are allowed on GBC? How long would it take to deposit and start validating?** @@ -6753,7 +6752,7 @@ It takes about 4 hours for a deposit to be processed, you can check how your val 3. **What’s the best place to stake my GNO bag?** - You can stake your GNO on liquid staking platforms like Stakewise or you could get/buy your own node and stake those GNO to validate the chain (~14% APY as October 2023) more information in the docs + You can stake your GNO on liquid staking platforms like StakeWise, or run your own node and stake directly as a validator. APY is variable, so check the live metrics linked in the docs for current values. 4. **Is there any official staking platform for GNO?** @@ -6765,7 +6764,7 @@ It takes about 4 hours for a deposit to be processed, you can check how your val 6. **Can you currently unstake sGNO or is that not ready yet?** - To withdraw directly you need to wait for Stakewise v3 that isn't out yet or if you really want to withdraw immediately, you can find some liquidity on Curve for sGNO and rGNO + StakeWise V3 is live on Gnosis Chain and StakeWise V2 is deprecated. If you still hold V2 assets (sGNO/rGNO), use the migration flow to move to V3. 7. **How can I convert rGNO?** @@ -6994,7 +6993,7 @@ main(); 9. Which clients are supported by GBC? - Lighthouse, Prysm, Nimbus, and Teku clients. [Read more here](../node/architecture.md#consensus-layer). + Lighthouse, Lodestar, Nimbus, and Teku clients. [Read more here](../node/architecture.md#consensus-layer). 10. How long does it take to sync the node? @@ -7055,16 +7054,22 @@ It depends on the mode and hardware specifications. Typically 24 hours should be 3. What are two types of withdrawals? There are 2 types of withdrawals: Partial Withdrawal and Full Withdrawal. - Partial Withdrawal: Any balance in excess of 1 GNO from the account balance gets withdrawn back to withdrawal address. - Full Withdrawal: All the balance from validator’s account gets withdrawn back to withdrawal address. This has to be initiated by validator, signing `voluntary_exit` message and broadcasting it to the network. It is irreversible. + Partial Withdrawal: Any eligible balance in excess of 1 GNO is processed for withdrawal. + Full Withdrawal: The validator exits and its full balance becomes withdrawable to the configured execution withdrawal address. This has to be initiated by the validator by signing a `voluntary_exit` message and broadcasting it to the network. It is irreversible. -4. What are 0x00 and 0x01 withdrawal credentials prefixes? +4. What are 0x00, 0x01, and 0x02 withdrawal credentials prefixes? - The beacon chain validators have a field called withdrawal credentials, where the first byte is referred to as the withdrawal prefix. Currently, this value can be either 0x00 or 0x01, depending on how it is set during the deposit process using a deposit tool. Validators with 0x00 withdrawal credentials won’t have immediate withdrawal capabilities. To enable partial and full withdrawals and unlock their funds, these validators must undergo a one-time migration to 0x01. As this is a one time process, it is essential to be careful performing it. + The beacon chain validators have a field called withdrawal credentials, where the first byte is referred to as the withdrawal prefix. + + `0x02` is the recommended execution-address prefix on Gnosis Chain. It supports the current withdrawal flow and is what new validators should use. + + `0x01` is a legacy execution-address prefix. It still works, but follows the older auto-sweep behavior and is no longer the recommended option for new validators. + + `0x00` is the old BLS-only prefix and does not support withdrawals until you perform a one-time BLS-to-execution credential change. 5. How do I change my withdrawal credential? - You can find a full tutorial on how to change your withdrawal credential [here](https://docs.gnosischain.com/node/management/withdrawals#how-to-change-the-withdrawal-credential). + You can find the current step-by-step guide here: [Validator Withdrawals](../node/management/withdrawals.md). 6. I have been running multiple validators. Can I set up the same withdrawal credential for all of them? @@ -7072,45 +7077,45 @@ It depends on the mode and hardware specifications. Typically 24 hours should be 7. Where can I check my withdrawal credential? - https://docs.gnosischain.com/node/management/withdrawals#check-withdrawal-credential + Check the Withdrawal tab for your validator on the [Beacon chain explorer](https://beaconchain.gnosischain.com/), or inspect the `withdrawal_credentials` field in your saved `deposit-data*.json` file. See [Validator Withdrawals](../node/management/withdrawals.md) for the current walkthrough. 8. Do partial withdrawals happen automatically? -As we have modified some specs regarding the withdrawals to enable withdrawing GNO instead of the native gas token xDai, unlike Ethereum, partial withdrawals currently do not happen automatically. So, for now, you will need to call [`claimWithdrawal`](https://gnosisscan.io/address/0x0b98057ea310f4d31f2a452b414647007d1645d9#writeProxyContract#F3) function on the [contract](https://gnosisscan.io/address/0x0b98057ea310f4d31f2a452b414647007d1645d9#writeProxyContract). However, it is in our plans to automate and subsidize partial withdrawals in the future. + The withdrawal processing itself is automatic once your validator is eligible. What is not automatic today is claiming the resulting GNO to the recipient address. After the withdrawal has been processed, you must claim it either on the [Deposit website](https://deposit.gnosischain.com/) or by calling [`claimWithdrawal`](https://gnosisscan.io/address/0x0B98057eA310F4d31F2a452B414647007d1645d9#writeProxyContract) or `claimWithdrawals(...)` on the deposit contract. 9. Do full withdrawals happen automatically? - No. If your validator is currently active and participating in the beacon chain, then the full withdrawal will not happen automatically. You will have to manually initiate an exit to cause this. + No. If your validator is currently active and participating in the beacon chain, the full withdrawal will not happen unless you first manually initiate a voluntary exit. - Additionally, if you initiate an exit but still have a 0x00 withdrawal credential, your funds will not be withdrawn until a `BLSToExecutionChange` message is included on chain. + Additionally, if you initiate an exit while still using `0x00` withdrawal credentials, your funds will remain locked until a `BLSToExecutionChange` is included on chain. 10. Is there a UI that I can use for withdrawals? - No, as you will have to interact with the beacon chain, it is not feasible to provide a UI that encompasses all the clients. + Yes. You can claim withdrawals on the [Deposit website](https://deposit.gnosischain.com/). Advanced users can also claim directly through the deposit contract on Gnosis Chain. 11. Where does the automatic balance withdraw to? - In case you are using a legacy withdrawal credential 0x00, it will not be withdrawn and you will have to perform a migration to 0x01 credentials to complete the withdrawal. If you have already configured your withdrawal address and have a withdrawal credential of 0x01, then rewards in excess of 1 GNO will be transferred to your withdrawal address. + Withdrawals are associated with the validator's configured execution withdrawal address, also referred to as the recipient address in the current docs. If you are still on `0x00`, withdrawals cannot complete until you convert to an execution-address credential. -12. Once I have changed my credential to 0x01, can I change it to an alternative withdrawal address? +12. Once I have changed my credential to an execution address, can I change it to an alternative withdrawal address? - No, the migration from 0x00 to 0x01 is a one time process and once you set the address, it cannot be changed. Please make this migration with the utmost care. Note, the withdrawal credential can either be an externally-owned account (EOA) or a smart contract such as a SAFE. + No. The BLS-to-execution change is a one-time operation. Once you set the execution withdrawal address, it cannot be changed later. Please perform this step carefully. The withdrawal address can be either an externally owned account (EOA) or a smart contract wallet such as a Safe. 13. I have lost the private key to my withdrawal address, what can I do? Unfortunately, there is nothing that can be done if the withdrawal address is lost. Please ensure this address is properly backed up and securely stored. -14. What happens to my GNO if I make a full withdrawal but I forget to set the withdrawal credential to 0x01? +14. What happens to my GNO if I make a full withdrawal but I forget to set the withdrawal credential to an execution address? - Nothing. Your validator will exit, and will no longer be assigned duties, neither able to earn nor lose any more additional GNO. You may still migrate your withdrawal credentials from 0x00 to 0x01. Once this is done, the validator’s balance will be withdrawn to the address you specify. + Your validator will exit and stop performing duties, but the funds will not be withdrawable until you complete the BLS-to-execution credential change. Once you do that, the validator balance can be withdrawn and claimed to the configured recipient address. 15. Can I cancel a withdrawal request that is in the queue? - No you cannot, this is a one time, irreversible process. Once you submit your withdrawal request (BLSToExecutionChange and/or exit) you can’t go back. Please only exit or change credentials when you are fully aware of what the specific operation will do and with utmost caution. + No. These are one-way operations. Once you submit a `BLSToExecutionChange` and/or a voluntary exit, you cannot reverse it. Make sure you understand the effect of each action before proceeding. 16. Where can I find the client updates for Shapella? - You can find all client updates in this [blog post](https://www.gnosis.io/blog/shapella-client-updates) or [validator withdrawal section](https://docs.gnosischain.com/node/management/withdrawals). Make sure you update your clients before the upgrade. + Refer to the current [Validator Withdrawals](../node/management/withdrawals.md) guide and each client's official release notes. The original Shapella client-update post is useful historical context, but the withdrawals guide should be treated as the current operator-facing source of truth. --- @@ -7272,13 +7277,13 @@ Make sure to select the Gnosis chain tab, The next step is to select the combination of client you want to use in your dappnode. For this process you need to select: -- 1. Select the execution client: Nethermind-xdai. Click on the package -- 2. Select the consensus client, here you can install one of the following options: Teku-gnosis, Lighthouse-gnosis and Prysm-gnosis +- 1. Select the execution client package available in your Stakers UI (for example Nethermind or Erigon, package names may vary by version). +- 2. Select the consensus client package (for example Teku or Lighthouse, package names may vary by version). - 3. Install the web3signer. This is required because this is the package that will contain the keystores. ![Select the execution and consensus clients](/img/node/dappnode-stakers-ui-2.png) -1. Select the Execution client. For now, or in the moment this guide was created, nethermind is the only execution client that supports gnosis chain. +1. Select the Execution client. In DAppNode's Gnosis Stakers UI, available execution client packages vary by version. ![Execution client ](/img/node/dappnode-execution-client.png) 2. Select the consensus client. You will see the next fields when you click in the package chart. @@ -7342,7 +7347,7 @@ Be patient, the installation process can take several minutes. You can check all
  • NUM The number of signing keys (validators) to generate.
  • START_NUM Index for the first validator key. If this is the first time generating keys with this mnemonic, use 0. If keys were previously generated with this mnemonic, use the subsequent index number (e.g., if 4 keys have been generated before (keys #0, #1, #2, #3, then enter 4 here).
  • -
  • WITHDRAWAL_ADDRESS Use this parameter to provide a regular Gnosis Chain 0x address for mGNO withdrawal. This parameter can also be omitted to generate withdrawal credentials with the mnemonic-derived withdrawal public key in the EIP-2334 format (ETH2 address format). Withdrawals will not be available until after the Shanghai upgrade.
  • +
  • WITHDRAWAL_ADDRESS Use this parameter to provide a regular Gnosis Chain 0x address for GNO withdrawals. This parameter can also be omitted to generate withdrawal credentials with the mnemonic-derived withdrawal public key in the EIP-2334 format.
  • /path/to/ should be replaced with a valid and existing path where you want to create the validator_keys folder. Or, to create the validator_keys folder in your current working directory, use $(PWD)/validator_keys:/app/validator_keys
  • More details about command line arguments can be found here
@@ -7455,7 +7460,7 @@ Configure eth-docker - have an Gnosis address handy where you want Execution Lay 3. Select consensus client: Lighthouse, Teku, or Nimbus. 4. Select execution client: Nethermind, or Erigon. 5. Select checkpoint sync: Choose Yes if you want to use CL rapid sync with remote checkpoint. -6. Configure checkpoint consensus client: paste the checkpoint URL from https://checkpoint.gnosischain.com/. +6. Configure checkpoint consensus client: paste the checkpoint URL from https://checkpoint.gnosischain.com. 7. Select MEV Boost 8. Select Grafana dashboard 9. Configure Graffiti: Enter the graffiti for your validator. @@ -7509,7 +7514,7 @@ Once the execution and consensus clients are fully synced, you may proceed to [d # Nethermind Sedge -A one-click setup tool for PoS network/chain validators, this includes support for Gnosis chain mainnet and chiado testnet. **Sedge** takes care of the entire on-premise full node setup based on the chosen client, using generated docker-compose scripts based on the desired configuration. +A one-click setup tool for PoS network/chain validators, this includes support for Gnosis chain mainnet and chiado testnet. **Sedge** takes care of the entire on-premise full node setup based on the chosen client, using generated Compose files based on the desired configuration. Repository: https://github.com/NethermindEth/sedge @@ -7576,15 +7581,15 @@ Gnosis is persistently committed to building the open infrastructure for a decen ### Featured Headlines - Gnosis minimum stake is 1 GNO to run a validator. -- Operating a Gnosis validator will earn you approximately 13% GNO validator rewards as well as transaction fees from the blocks you build in xDAI. +- Validator rewards are variable and depend on network participation and validator performance. See [Rewards & Penalties](./rewards-penalties.md) for live sources. - Gnosis has a strong culture of homestakers running nodes from their homes, that are not reliant on cloud providers or datacenters. -- Gnosis has a stretch goal to have a node in every country by 2025. +- Gnosis continues to encourage broad geographic distribution of independently operated nodes. #### Gnosis vs. Ethereum - Gnosis runs the same composite client software and tooling stack as Ethereum - In some cases, Gnosis clients are just Ethereum clients run with a `--network` flag! (e.g. [Nethermind](https://downloads.nethermind.io/), [Lighthouse](https://lighthouse.sigmaprime.io/), etc) -- Gnosis aims to be a learning ground for a new generation of node runners, requiring only 1 GNO (around $100 at April 2025) instead of the 32 ETH (around $47.000 at April 2025) minimum required for Ethereum +- Gnosis aims to be a learning ground for a new generation of node runners, requiring only 1 GNO instead of the 32 ETH minimum required for Ethereum - Gnosis Chain runs the same client software as Ethereum, with minor parameter tweaks. As such, Gnosis is a Proof-of-Stake network that uses Ethereum's Beacon Chain consensus. ## Choosing an Approach @@ -7603,8 +7608,6 @@ When the node is running and syncing, you are ready to use it. You must always k ## Environment and Hardware -### Environment and Hardware - #### **Local or Cloud** Gnosis clients are able to run on consumer grade computers and don't require any special hardware, like mining machines for example. Therefore, you have various options for deploying the node based on your needs. To simplify, let's think about running a node on both a local physical machine and a cloud server: @@ -7649,7 +7652,7 @@ Hardware requirements differ by client but generally are not that high since the Before installing any client, please ensure your computer has enough resources to run it. You can find the minimum and recommended requirements below. -The bottleneck for your hardware is mostly disk space. Syncing the Gnosis blockchain is very input/output intensive and requires a lot of space. It is best to have a solid-state drive (SSD) with hundreds of GBs of free space to spare even after the synchronization. Refer to [this post](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038) for good and bad SSD model. +The bottleneck for your hardware is mostly disk space. Syncing the Gnosis blockchain is very input/output intensive and requires substantial free storage. It is best to have a solid-state drive (SSD) with significant free space to spare even after synchronization. Refer to [this post](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038) for good and bad SSD models. The size of the database and speed of the initial synchronization depends on the chosen client, its configuration and sync strategy. @@ -7657,34 +7660,33 @@ Also make sure your internet connection is not limited by a bandwidth cap. It's **Operating System** -All clients support major operating systems - Linux, MacOS, Windows. This means you can run nodes on regular desktop or server machines with the operating system (OS) that suits you the best. Make sure your OS is up to date to avoid potential issues and security vulnerabilities. +Most clients publish binaries for Linux and macOS, and many also support Windows. Linux is the most common choice for production node operation. Always verify OS support in each client's documentation and keep systems up to date for security. -**Requirements** +**Baseline Requirements** - CPU with at least 4 threads - At least 16 GB of RAM - NVMe SSD (preferred) or SATA SSD -Requirements vary client to client, for more detail see the associated system requirements below. +Requirements vary by client and release. Use the client-specific requirement pages below as the source of truth. -| Execution Layer | | -| --------------- | ------------------------------------------------------------------------------------------------------------------------ | +| Execution Layer | Requirements | +| --------------- | ------------ | | Nethermind | [Nethermind: System Requirements](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/system-requirements) | -| Besu | [Besu: System Requirements](https://besu.hyperledger.org/en/stable/public-networks/get-started/system-requirements/) | -| Erigon | [Erigon: System Requirements](https://github.com/ledgerwatch/erigon#system-requirements) | -| Geth | [Geth: Hardware](https://geth.ethereum.org/docs/interface/hardware) | +| Erigon | [Erigon: System Requirements](https://github.com/erigontech/erigon#system-requirements) | +| Reth | [Reth: System Requirements](https://reth.rs/run/system-requirements/) | +| Geth | [Geth: Hardware Requirements](https://geth.ethereum.org/docs/getting-started/hardware-requirements) | -**Gnosis Chain only supports Nethermind and Erigon at the moment.** +Supported execution clients on Gnosis Chain include Nethermind, Erigon, Reth, and Geth. -| Consensus Layer | | -| --------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| Consensus Layer | Requirements | +| --------------- | ------------ | | Lighthouse | [Lighthouse: System Requirements](https://lighthouse-book.sigmaprime.io/installation.html#recommended-system-requirements) | | Lodestar | [Lodestar: Specifications](https://chainsafe.github.io/lodestar/#specifications) | | Nimbus | [Nimbus: Hardware](https://nimbus.guide/hardware.html) | -| Teku | TBD | -| Prysm | [Prysm: Prerequisites](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/#step-1-review-prerequisites-and-best-practices) | +| Teku | [Teku: System Requirements](https://docs.teku.consensys.io/get-started/system-requirements) | -**Gnosis Chain doesn't support Prysm at the moment.** +Supported consensus clients on Gnosis Chain include Lighthouse, Lodestar, Nimbus, and Teku. Check out [Rocketpool's excellent guide](https://docs.rocketpool.net/guides/node/local/hardware.html) that explains hardware requirements for running a node. @@ -7767,7 +7769,9 @@ Here are the release pages of clients where you can find their pre-built binarie **Execution clients** - [Nethermind](https://downloads.nethermind.io/) -- [Erigon](https://github.com/ledgerwatch/erigon/releases) +- [Erigon](https://github.com/erigontech/erigon/releases) +- [Geth](https://github.com/gnosischain/go-ethereum/releases) +- [Reth](https://github.com/gnosischain/reth_gnosis) **Consensus clients** @@ -7861,9 +7865,9 @@ The consensus client must be started with the right port configuration to establ The consensus client also needs the path to the execution client's `jwtsecret` in order to authenticate the RPC connection between them. Similar to execution examples above, each consensus client has a configuration flag which takes the jwt token file path as an argument. This must be consistent with the `jwtsecret` path provided to the execution client. -If you plan to run a validator, make sure to add a configuration flag specifying the Gnosis address of the fee recipient. This is where ether rewards for your validator accumulate. Each consensus client has an option, e.g. `--suggested-fee-recipient=0xabcd1`, that takes an Gnosis address as an argument. +If you plan to run a validator, make sure to add a configuration flag specifying the Gnosis address of the fee recipient. This is where execution-layer rewards for your validator accumulate. Each consensus client has an option, e.g. `--suggested-fee-recipient=0xabcd1`, that takes a Gnosis address as an argument. -When starting a Beacon Node on a testnet, you can save significant syncing time by using a public endpoint for [Checkpoint sync](https://checkpoint.gnosischain.com/). +When starting a Beacon Node on a testnet, you can save significant syncing time by using a public endpoint for [Checkpoint sync](https://checkpoint.gnosischain.com). #### **Running a consensus client** @@ -7871,8 +7875,8 @@ When starting a Beacon Node on a testnet, you can save significant syncing time Before running Lighthouse, learn more on how to install and configure it in [Lighthouse Book](https://lighthouse-book.sigmaprime.io/). ```bash - ./lighthouse \ - --network gnosis beacon_node \ + ./lighthouse beacon_node \ + --network gnosis \ --datadir=data \ --http \ --execution-endpoint http://localhost:8551 \ @@ -7886,16 +7890,16 @@ Before running Lighthouse, learn more on how to install and configure it in [Lig ```bash ./lodestar beacon \ ---network gnosis \ ---dataDir="/data" ---jwt-secret /path/to/jwtsecret \ ---eth1.enabled=true \ +--network=gnosis \ +--dataDir="/data" \ +--jwtSecret=/path/to/jwtsecret \ --execution.urls="http://127.0.0.1:8551" \ +--checkpointSyncUrl="https://checkpoint.gnosischain.com" ``` **Running Teku** -[Teku](https://docs.teku.consensys.net/) +[Teku](https://docs.teku.consensys.io/) ```bash teku \ @@ -7911,7 +7915,7 @@ A consensus client serves as a Beacon Node for validators to connect. Each conse Running your own validator allows for [solo staking](https://ethereum.org/en/staking/solo/), the most impactful and trustless method to support the Gnosis network. This requires only 1 GNO. Check out how to [deposit validators](/node/manual/validator/deposit). -If you don't want to run your own node but interested in staking your GNO to earn fee, look into [liquid staking](/tools/beacon-chain/liquid-staking) for an overview about staking options. +If you don't want to run your own node but interested in staking your GNO to earn fee, look into [liquid staking](/node/participate-validator/liquid-staking) for an overview about staking options. ## Reference @@ -7956,9 +7960,10 @@ Node Operators will need to run an Execution Layer client, which will interact w - [Nethermind](./manual/execution/nethermind.md) - [Erigon](./manual/execution/erigon.md) -- [Geth](./manual/execution/geth.md) (in progress) +- [Reth](./manual/execution/reth.md) +- [Geth](./manual/execution/geth.md) -Gnosis used to be supported by the [Parity OpenEthereum client](./manual/execution/openethereum.md), but it has since been deprecated. +Gnosis used to be supported by the Parity OpenEthereum client, but that client has been deprecated. ### Consensus Layer @@ -7980,7 +7985,6 @@ Node operators will need to run a Consensus Layer client. In most cases, these a - [Nimbus](./manual/beacon/nimbus.md) - [Teku](./manual/beacon/teku.md) - [Lighthouse](./manual/beacon/lighthouse.md) -- [Prysm](./manual/beacon/prysm.md) (in progress) ### Inter-Layer Communication @@ -8020,7 +8024,7 @@ Specific instructions will differ depending on the client you are running. In ge 5. Import initial state and slashing protection history from original validator to the new validator. 6. Remove account data from original validator, make sure it is not running! This is critical to avoid slashing! Some recommendations: - Rename or move keys folder in the original validator to another location. - - Stop and remove containers (`docker-compose down`) if you are using Docker. + - Stop and remove containers (`docker compose down`) if you are using Docker. - Remove old images (`docker rmi $(docker images | grep 'gbc-')` if you used the Launchpad). 7. Start new validator. @@ -8066,7 +8070,7 @@ Import an interchange file to the slashing protection DB: validator slashing-protection import --network gnosis --file interchange.json ``` -- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#validator-slashing-protection-import). +- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#validator-slashing-protection-import). ## Nimbus @@ -8088,26 +8092,6 @@ build/nimbus_beacon_node slashingdb import path/to/export_dir/slashing-protectio - For more info, see the Nimbus [Migration](https://nimbus.guide/migration.html) docs. -## Prysm - -### Export {#prysm-export} - -Run the following to export your Prysm validator's slashing protection history: - -```bash -prysm.sh validator slashing-protection-history export --datadir=/your/prysm/wallet --slashing-protection-export-dir=/path/to/export_dir -``` - -### Import {#prysm-import} - -You can import it as follows using any installation method for your Prysm validator. - -```bash -prysm.sh validator slashing-protection-history import --datadir=/path/to/your/validator/db --slashing-protection-json-file=/path/to/desiredimportfile -``` - -- For more info, see the Prysm [Import & export slashing protection history](https://prysm.offchainlabs.com/docs/backup-and-migration/slashing-protection/) doc. - ## Teku ### Export {#teku-export} @@ -8126,11 +8110,11 @@ When importing the slashing-protection file, Teku imports the file to the ` - ``` +```shell --Metrics.Enabled true --Metrics.ExposePort $PORT --Metrics.PushGatewayUrl +``` + +- https://docs.nethermind.io/monitoring/metrics/ + -Refer to https://docs.nethermind.io/nethermind/ethereum-client/metrics/setting-up-local-metrics-infrastracture + +```shell +--metrics 127.0.0.1:$PORT ``` - + +- Prometheus metrics are served on `/metrics`. +- https://reth.rs/cli/cli/ +- https://reth.rs/run/faq/ports/ + + + +```shell +--metrics +--metrics.addr 127.0.0.1 +--metrics.port $PORT +``` + +- Prometheus-formatted metrics are served on `/debug/metrics/prometheus`. +- https://geth.ethereum.org/docs/monitoring/metrics -WIP +```shell +--metrics +--metrics.addr=0.0.0.0 +``` + +- By default, `metrics` uses port `6060`. +- If `--pprof` is also enabled, configure a separate `--pprof.port`. +- https://github.com/erigontech/erigon#other-ports @@ -8207,15 +8219,16 @@ https://github.com/sigp/lighthouse-metrics ```shell --metrics=true --metrics.port=$PORT +``` -https://chainsafe.github.io/lodestar/logging-and-metrics/prometheus-grafana/ -https://chainsafe.github.io/lodestar/beacon-management/beacon-cli/#-metrics +- https://chainsafe.github.io/lodestar/run/logging-and-metrics/prometheus-grafana/ +- https://chainsafe.github.io/lodestar/run/beacon-management/beacon-cli/#-metrics ``` --metrics-enabled=true ``` -https://docs.teku.consensys.net/en/latest/HowTo/Monitor/Metrics/ +https://docs.teku.consensys.io/how-to/monitor/use-metrics @@ -8227,10 +8240,6 @@ https://docs.teku.consensys.net/en/latest/HowTo/Monitor/Metrics/ https://nimbus.guide/metrics-pretty-pictures.html#simple-metrics - - - -https://prysm.offchainlabs.com/docs/monitoring-alerts-metrics/grafana-dashboard/ @@ -8281,8 +8290,7 @@ The site is deprecated #### Execution Layer -- **Gnosisscan** - [Gnosisscan](https://gnosisscan.io/) provides data about blocks, transactions, validator's reward on Execution Layer, etc. +- [Gnosisscan](https://gnosisscan.io/) provides data about blocks, transactions, validator's reward on Execution Layer, etc. To check your Execution Layer Reward (in xDAI): @@ -8290,15 +8298,13 @@ The site is deprecated 2. Click **Validated Blocks** ![GnosisScan Block Validated by Validator](../../../static/img/node/monitor-node/gnosisscan-validated-block.png) -- **Blockscout** - [Blockscout](https://blockscout.com/xdai/mainnet) is another block explorer similar to Gnosisscan. +- [Blockscout](https://gnosis.blockscout.com/) is another block explorer similar to Gnosisscan. ![Blockscout Block Validator by Validator](../../../static/img/node/monitor-node/blockscout-validated-block.png) #### Consensus Layer -- **Beacon chain explorer** - [Beacon chain explorer](https://beaconchain.gnosischain.com/) provides insight on consensus layer such as most recent epochs, most recent blocks, and validator's reward on Consensus layer. You can view your validator's info by using its public key or index. +- [Beacon chain explorer](https://beaconchain.gnosischain.com/) provides insight on consensus layer such as most recent epochs, most recent blocks, and validator's reward on Consensus layer. You can view your validator's info by using its public key or index. To check your Consensus Layer Reward (in mGNO): @@ -8346,14 +8352,14 @@ This bot is compatible with all consensus and execution clients. If you decide to stop validating and disable your node, you can initiate a voluntary exit. This will freeze your balance at its current value (rewards and/or penalties will no longer accrue). -If you initiates a voluntary exit, your validator will receive the full staked funds to the withdrawal address, provided that the validator has [withdrawal credentials](withdrawals.md#check-withdrawal-credential) of type `0x01`. +If you initiate a voluntary exit, your validator can fully withdraw to the configured execution withdrawal address once exit processing is complete. See [validator withdrawals](withdrawals.md) for withdrawal credential details. Voluntary exit procedures vary depending on your client. :::caution Exits are non-reversible; once you have exited you cannot restart your validator. -It is recommended to update your withdrawal credentials to the `0x01` type before exiting your validator. Updating your withdrawal credentials later, when your node is stopped, will be more difficult. [withdrawal credentials](withdrawals.md#check-withdrawal-credential). +It is recommended to set execution withdrawal credentials before exiting your validator. Updating credentials later, after your node is stopped, can be more difficult. See [validator withdrawals](withdrawals.md). ::: ### Dappnode @@ -8380,7 +8386,7 @@ Follow the syntax of the Lodestar CLI commands and their options. validator voluntary-exit --network gnosis --pubkeys 0xF00 ``` -- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#validator-voluntary-exit). +- For more info, see the [Lodestar Command Line Reference doc](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#validator-voluntary-exit). ### Nimbus @@ -8392,16 +8398,6 @@ build/nimbus_beacon_node deposits exit --data-dir=build/data/shared_gnosis_0 --v - For more info, see the Nimbus [Perform a voluntary exit](https://nimbus.guide/voluntary-exit.html) docs. -### Prysm - -Use [prysmctl tool](https://prysm.offchainlabs.com/docs/configure-prysm/prysmctl/) to voluntarily exit your validator. - -```bash -prysmctl validator exit --wallet-dir= --beacon-rpc-provider=<127.0.0.1:4000> -``` - -- For more info, see the Prysm [Exit your validator](https://prysm.offchainlabs.com/docs/manage-validator/exiting-a-validator/) doc. - ### Teku Use the voluntary-exit subcommand to initiate a voluntary exit for specified validators. @@ -8411,7 +8407,7 @@ teku voluntary-exit --beacon-node-api-endpoint=http://consensus:5051 \ --validator-keys=validator/keys/validator_ABC.json:validator/passwords/validator_ABC.txt ``` -- For more info, see the Teku [Voluntarily exit a validator](https://docs.teku.consensys.net/how-to/voluntarily-exit#:~:text=A%20voluntary%20exit%20is%20when,successfully%20exited%20to%20avoid%20penalties.) docs. +- For more info, see the Teku [Voluntarily exit a validator](https://docs.teku.consensys.io/how-to/voluntarily-exit) docs. --- @@ -8652,15 +8648,11 @@ $ sudo ufw allow 30303 ### Allow Consensus Client port 9000 -Most Consensus Layer Clients use port `9000` to communicate with the Consensus Layer network peers, with the exception of Prysm, which uses ports `13000/TCP` and `12000/UDP` instead. +Supported Gnosis Consensus Layer clients use port `9000` to communicate with the Consensus Layer network peers. ```shell ## Lighthouse, Nimbus, Teku, Lodestar $ sudo ufw allow 9000 - -## Prysm -$ sudo ufw allow 13000/tcp -$ sudo ufw allow 12000/udp ``` ### Enable Firewall @@ -8842,13 +8834,13 @@ import {MultiDimensionalContentWidget} from '@site/src/components/MultiDimension {label: 'Execution client:', value: 'label'}, {label: 'Nethermind', value: 'nethermind'}, {label: 'Erigon', value: 'erigon'}, - {label: 'Besu', value: 'besu'}, - {label: 'Geth', value: 'geth'}, + {label: 'Reth', value: 'reth'}, + {label: 'Geth', value: 'geth'} ]}> - + @@ -8857,18 +8849,15 @@ import {MultiDimensionalContentWidget} from '@site/src/components/MultiDimension {label: 'Lighthouse', value: 'lighthouse'}, {label: 'Lodestar', value: 'lodestar'}, {label: 'Teku', value: 'teku'}, - {label: 'Nimbus', value: 'nimbus'}, - {label: 'Prysm', value: 'prysm'} + {label: 'Nimbus', value: 'nimbus'} ]}> - -

* disabled options: unsupported clients

--- @@ -8911,66 +8900,38 @@ import TabItem from '@theme/TabItem'; ]}> -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. +- Go to the [Lighthouse releases page](https://github.com/sigp/lighthouse/releases) and copy the URL of the latest release for your OS/architecture. -- Download the lighthouse-VERSION-ARQ.tar.gz binary. +- Download the `lighthouse--.tar.gz` binary. ```bash wget [URL_FROM_PREVIOUS_STEP] ``` -- Extract the downloaded file +- Extract the downloaded file. ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus + tar -xvf [FILE_NAME] --directory consensus ``` -- Get into the folder +- Get into the folder. ```bash cd consensus ``` - - Execute Lighthouse +- Execute Lighthouse beacon node. ```bash - ./lighthouse \ - --network gnosis beacon_node \ - --datadir=data \ - --http \ - --execution-endpoint http://localhost:8551 \ - --execution-jwt ../jwtsecret/jwt.hex \ - --checkpoint-sync-url "https://checkpoint.gnosischain.com" + ./lighthouse beacon_node \ + --network gnosis \ + --datadir=data \ + --http \ + --execution-endpoint=http://localhost:8551 \ + --execution-jwt=../jwtsecret/jwt.hex \ + --checkpoint-sync-url=https://checkpoint.gnosischain.com ``` -Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. - -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. - -- Download the lighthouse-VERSION-ARQ.tar.gz binary. - ```bash - wget [URL_FROM_PREVIOUS_STEP] - ``` - -- Extract the downloaded file - ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus - ``` - -- Get into the folder - ```bash - cd consensus - ``` - - - Execute Lighthouse - ```bash - ./lighthouse \ - --network gnosis beacon_node \ - --datadir=data \ - --http \ - --execution-endpoint http://localhost:8551 \ - --execution-jwt ../jwtsecret/jwt.hex \ - --checkpoint-sync-url "https://checkpoint.gnosischain.com" - ``` +Lighthouse only runs on Linux. To run it on Windows, [install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the same steps in the WSL terminal. @@ -8984,74 +8945,37 @@ Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows w ]}> -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. +- Go to the [Lighthouse releases page](https://github.com/sigp/lighthouse/releases) and copy the URL of the latest release for your OS/architecture. -- Download the lighthouse-VERSION-ARQ.tar.gz binary. +- Download the `lighthouse--.tar.gz` binary. ```bash wget [URL_FROM_PREVIOUS_STEP] ``` -- Extract the downloaded file +- Extract the downloaded file. ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus + tar -xvf [FILE_NAME] --directory consensus ``` -- Get into the folder +- Get into the folder. ```bash cd consensus ``` -- Clone Gonsis Chain configuration repository from github - ```bash - git clone https://github.com/gnosischain/configs.git - ``` - -- Run Lighthouse beacon node +- Run Lighthouse beacon node. ```bash - ./lighthouse bn \ + ./lighthouse beacon_node \ --network chiado \ - --execution-endpoints=http://localhost:8551 \ + --datadir=data \ + --execution-endpoint=http://localhost:8551 \ --execution-jwt=../jwtsecret/jwt.hex \ - --checkpoint-sync-url https://checkpoint.chiadochain.net \ - --disable-deposit-contract-sync + --checkpoint-sync-url=https://checkpoint.chiadochain.net ``` -Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. - -- Go to the [lighhouse releases page](https://github.com/sigp/lighthouse/releases) and copy the url of the latest release based on your OS version. - -- Download the lighthouse-VERSION-ARQ.tar.gz binary. - ```bash - wget [URL_FROM_PREVIOUS_STEP] - ``` - -- Extract the downloaded file - ```bash - tar -xvf lighthouse-VERSION-ARQ.tar.gz --directory consensus - ``` - -- Get into the folder - ```bash - cd consensus - ``` -- Clone Gonsis Chain configuration repository from github - ```bash - git clone https://github.com/gnosischain/configs.git - ``` - - -- Run Lighthouse beacon node - ```bash - ./lighthouse bn \ - --network chiado \ - --execution-endpoints=http://localhost:8551 \ - --execution-jwt=../jwtsecret/jwt.hex \ - --checkpoint-sync-url https://checkpoint.chiadochain.net \ - --disable-deposit-contract-sync - ``` +Lighthouse only runs on Linux. To run it on Windows, [install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the same steps in the WSL terminal. @@ -9079,94 +9003,26 @@ import TabItem from '@theme/TabItem'; ]}> -- Clone the repo locally +- Download Lodestar from the [official release page](https://github.com/ChainSafe/lodestar/releases) and extract it in your `consensus` directory. -```shell -git clone https://github.com/chainsafe/lodestar.git -``` - -- Install and build all the packages -```shell -cd lodestar -yarn install -yarn build -``` - -Your repo will look like this -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 lodestar/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ -``` - -:::tip -Check that you are install correctly by running `./lodestar --help' -::: - - - Execute Lodestar Beacon Chain - ```bash - ./lodestar beacon \ - --network=gnosis \ - --execution.urls=http://localhost:8551 \ - --jwt-secret=../../jwtsecret/jwt.hex \ - --metrics=true \ - --metrics.port=8008 \ - --checkpointSyncUrl=https://checkpoint.gnosischain.com/ +- Run Lodestar beacon node. + ```bash + ./lodestar beacon \ + --network=gnosis \ + --dataDir=./data \ + --execution.urls=http://localhost:8551 \ + --jwtSecret=../jwtsecret/jwt.hex \ + --metrics=true \ + --metrics.port=8008 \ + --checkpointSyncUrl=https://checkpoint.gnosischain.com ``` - - -Lodestar only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. - -- Clone the repo locally - -```shell -git clone https://github.com/chainsafe/lodestar.git -``` - -- Install and build all the packages -```shell -cd lodestar -yarn install -yarn build -``` - -Your repo will look like this -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 lodestar/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ -``` - -:::tip -Check that you are install correctly by running `./lodestar --help' -::: - - - Execute Lodestar Beacon Chain - ```bash - ./lodestar beacon \ - --network=gnosis \ - --execution.urls=http://localhost:8551 \ - --jwt-secret=../../jwtsecret/jwt.hex \ - --metrics=true \ - --metrics.port=8008 \ - --checkpointSyncUrl=https://checkpoint.gnosischain.com/ - ``` - +Lodestar supports Windows, but for consistency with the rest of this guide we recommend [WSL](https://learn.microsoft.com/en-us/windows/wsl/install). +Run the same command from the WSL terminal. @@ -9180,12 +9036,18 @@ Check that you are install correctly by running `./lodestar --help' ]}> -Lodestar doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpointSyncUrl=https://checkpoint.gnosischain.com` with `--checkpointSyncUrl=https://checkpoint.chiadochain.net` -Lodestar doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpointSyncUrl=https://checkpoint.gnosischain.com` with `--checkpointSyncUrl=https://checkpoint.chiadochain.net` @@ -9200,6 +9062,7 @@ Lodestar doesn't support Chiado at the moment. import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; + -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +- Download Nimbus from the [official release page](https://github.com/status-im/nimbus-eth2/releases) and extract it in your `consensus` directory. + +- Run Nimbus beacon node. + +```shell +./nimbus_beacon_node \ + --network=gnosis \ + --data-dir=./data \ + --el=http://127.0.0.1:8551 \ + --jwt-secret=../jwtsecret/jwt.hex +``` + +:::tip +Nimbus can run validator duties in the beacon node process. Once your beacon node is synced, continue to [Step 4: Run a validator](../../README.md#step-4-run-a-validator) to import your keys and restart Nimbus with a fee recipient. +::: -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +- Download the Windows archive from the [official release page](https://github.com/status-im/nimbus-eth2/releases) and extract it in your `consensus` directory. + +- Run the same beacon node command from PowerShell, replacing `./nimbus_beacon_node` with `./nimbus_beacon_node.exe`. @@ -9231,12 +9110,17 @@ Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) ]}> -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` -Please refer to [Run a Beacon Node: Nimbus](../nimbus.md) +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `./nimbus_beacon_node` with `./nimbus_beacon_node.exe` @@ -9265,137 +9149,66 @@ import TabItem from '@theme/TabItem'; ## Prerequisites -1. Java 11+ - +1. Java runtime compatible with the current Teku release. See [Teku system requirements](https://docs.teku.consensys.io/get-started/system-requirements). ## Install and Run -- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the url of the binary distribution under **Downloads** section. - +- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the URL for your OS/architecture under **Downloads**. -- Download the teku Source code .tar.gz binary. +- Download the Teku archive. ```bash wget [URL_FROM_PREVIOUS_STEP] ``` -- Extract the downloaded file and move under consensus directory +- Extract the downloaded file under the `consensus` directory. ```bash - tar -xvf VERSION.tar.gz --directory consensus + tar -xvf [FILE_NAME].tar.gz --directory consensus ``` -- Get into the teku folder +- Get into the Teku folder. ```bash - cd consensus && cd teku-${version} + cd consensus && cd teku-[VERSION] ``` -Your repo will look like this - +Check that Teku is installed correctly: - -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 teku-${version}/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ +```bash +./bin/teku --help ``` -If you're installing on macOS with Homebrew, check out [here](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Installation-Options/Install-Binaries/#macos-with-homebrew). - -Check that you are installing correctly by running `./bin/teku --help' - - :::tip -You can run both beacon and validator with a single command. If you wish to run with a single command, skip to [step 4: Run a validator](../../README.md#step-4-run-a-validator). +You can run both beacon and validator with a single command. If you want this mode, continue to [Step 4: Run a validator](../../README.md#step-4-run-a-validator). ::: -- Execute beacon node(Optional) +- Execute beacon node (optional): ```shell ./bin/teku \ - --network=gnosis \ + --network=gnosis \ --ee-endpoint=http://localhost:8551 \ # highlight-next-line - --ee-jwt-secret-file=${PATH_TO_JWT_SECRET} \ - --metrics-enabled=true \ + --ee-jwt-secret-file=../jwtsecret/jwt.hex \ + --metrics-enabled=true \ --rest-api-enabled=true \ # highlight-next-line - --initial-state=${checkpoint url} \ + --checkpoint-sync-url=https://checkpoint.gnosischain.com ``` -Get the latest checkpoint url at https://checkpoint.gnosis.gateway.fm/. +You can also use `--initial-state` if you already have a checkpoint state file. ## Prerequisites -1. Java 11+ +1. Java runtime compatible with the current Teku release. See [Teku system requirements](https://docs.teku.consensys.io/get-started/system-requirements). 2. [Microsoft Visual C++ 2010 security update](https://www.microsoft.com/en-us/download/details.aspx?id=26999) ## Install and Run -- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the url of the binary distribution under **Downloads** section. - - -- Download the teku Source code .tar.gz binary. - ```bash - wget [URL_FROM_PREVIOUS_STEP] - ``` - -- Extract the downloaded file and move under consensus directory - ```bash - tar -xvf VERSION.tar.gz --directory consensus - ``` - -- Get into the teku folder - ```bash - cd consensus && cd teku-${version} - ``` - -Your repo will look like this - - - -``` -📂gnosis -├── 📂 jwtsecret/ -├── 📂 execution/ -└── 📂 consensus/ - ├── 📂 teku-${version}/ - ├── 📂 data/ - ├── 📂 keystores/ - └── 📂 validators/ -``` - -If you're installing on macOS with Homebrew, check out [here](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Installation-Options/Install-Binaries/#macos-with-homebrew). - -Check that you are installing correctly by running `bin\teku --help' - - -:::tip -You can run both beacon and validator with a single command. If you wish to run with a single command, skip to [step 4: Run a validator](../../README.md#step-4-run-a-validator). -::: - -- Execute beacon node(Optional) - - -```shell -./bin/teku \ - --network=gnosis \ - --ee-endpoint=http://localhost:8551 \ -# highlight-next-line - --ee-jwt-secret-file=${PATH_TO_JWT_SECRET} \ - --metrics-enabled=true \ - --rest-api-enabled=true \ -# highlight-next-line - --initial-state=${checkpoint url} \ -``` - -Get the latest checkpoint url at https://checkpoint.gnosis.gateway.fm/. +- Go to the [Teku release page](https://github.com/ConsenSys/teku/releases) and copy the URL for your OS/architecture under **Downloads**. +- Download and extract Teku in your `consensus` directory. +- Run the same beacon command shown above from your Windows shell (or from WSL). @@ -9409,12 +9222,18 @@ Get the latest checkpoint url at https://checkpoint.gnosis.gateway.fm/. ]}> -Teku doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpoint-sync-url=https://checkpoint.gnosischain.com` with `--checkpoint-sync-url=https://checkpoint.chiadochain.net` -Teku doesn't support Chiado at the moment. +Use the same setup as Gnosis and replace: + +- `--network=gnosis` with `--network=chiado` +- `--checkpoint-sync-url=https://checkpoint.gnosischain.com` with `--checkpoint-sync-url=https://checkpoint.chiadochain.net` @@ -9439,8 +9258,7 @@ import InstallNimbusPartial from '@site/docs/node/manual/beacon/_partials/_insta {label: 'Lighthouse', value: 'lighthouse'}, {label: 'Lodestar', value: 'lodestar'}, {label: 'Teku', value: 'teku'}, - {label: 'Nimbus', value: 'nimbus'}, - {label: 'Prysm', value: 'prysm'} + {label: 'Nimbus', value: 'nimbus'} ]}> @@ -9466,20 +9284,8 @@ import InstallNimbusPartial from '@site/docs/node/manual/beacon/_partials/_insta - -``` - -:::info - -Please refer to [Run a Beacon Node: Prysm](../prysm.md) - -::: - -```mdx-code-block - -``` - +``` --- @@ -9491,7 +9297,7 @@ import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partia :::caution Version check -This page's content is up-to-date for [Lighthouse v7.0.1](https://github.com/sigp/lighthouse/releases/tag/v7.0.1). +This page's content is up-to-date for [Lighthouse v8.1.3](https://github.com/sigp/lighthouse/releases/tag/v8.1.3). ::: @@ -9540,18 +9346,18 @@ Gnosis maintains a repo with sample Lighthouse Dockerfiles and configs We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks. -Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com/. +Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com. ```shell # Usage $ lighthouse bn - --checkpoint-sync-url https://checkpoint.gnosischain.com/ + --checkpoint-sync-url https://checkpoint.gnosischain.com ``` :::info More about Checkpoint Sync - Lighthouse's [Checkpoint Sync docs](https://lighthouse-book.sigmaprime.io/checkpoint-sync.html) -- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com/) +- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com) ::: @@ -9577,7 +9383,7 @@ The Beacon Node requires an Execution client in order to operate. See [Step 2: R ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -9621,7 +9427,7 @@ services: --execution-endpoint=http://execution:8551 --execution-jwt=/jwt.hex // highlight-next-line - --checkpoint-sync-url=https://checkpoint.gnosischain.com/ + --checkpoint-sync-url=https://checkpoint.gnosischain.com logging: driver: "local" @@ -9636,7 +9442,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 4. Monitor Logs @@ -9649,13 +9455,13 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/\_partial ### 5. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` --- @@ -9667,7 +9473,7 @@ import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partia # Run Beacon Node: Lodestar :::caution Version check -This page's content is up-to-date for [Lodestar v25.5.0](https://github.com/Consensys/teku/releases/tag/25.5.0). +This page's content is up-to-date for [Lodestar v1.41.1](https://github.com/ChainSafe/lodestar/releases/tag/v1.41.1). ::: :::caution Prerequisites @@ -9706,18 +9512,18 @@ Gnosis' maintains a repo with sample Lodestar Dockerfiles and configs We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks. -Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com/. +Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com. ```shell # Usage $ lodestar beacon - --checkpointSyncUrl https://checkpoint.gnosischain.com/ + --checkpointSyncUrl https://checkpoint.gnosischain.com ``` :::info More about Checkpoint Sync -- Lodestar's [Checkpoint Sync docs](https://chainsafe.github.io/lodestar/getting-started/starting-a-node/#checkpoint-sync) -- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com/) +- Lodestar's [Checkpoint Sync docs](https://chainsafe.github.io/lodestar/run/beacon-management/starting-a-node#checkpoint-sync) +- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com) ::: @@ -9735,7 +9541,7 @@ Images are referenced under the following pattern `chainsafe/lodestar:{image-tag ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -9771,11 +9577,8 @@ services: // highlight-next-line --network=gnosis --dataDir=/data -// highlight-next-line - --preset=gnosis - --eth1=true --execution.urls=http://execution:8551 - --jwt-secret=/jwt.hex + --jwtSecret=/jwt.hex --logFile=/data/logs/beacon.log --logFileLevel=info --port=9000 @@ -9788,7 +9591,7 @@ services: --metrics=true --metrics.port=5054 // highlight-next-line - --checkpointSyncUrl=https://checkpoint.gnosischain.com/ + --checkpointSyncUrl=https://checkpoint.gnosischain.com logging: driver: "local" networks: @@ -9802,7 +9605,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 4. Monitor Logs @@ -9815,21 +9618,19 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/_partials ### 5. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` --- // File: node/manual/beacon/nimbus -import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partials/\_beacon_folder_structure.md'; - # Run Beacon Node + Validator: Nimbus Nimbus is a client implementation that strives to be as lightweight as possible in terms of resources used. Nimbus has consensus layer clients for Ethereum and Gnosis Chain. @@ -9837,7 +9638,7 @@ Nimbus is a client implementation that strives to be as lightweight as possible :::tip Learn More about Nimbus - Nimbus Repo: [https://github.com/status-im/nimbus-eth2](https://github.com/status-im/nimbus-eth2) -- Nimbus Docs: [https://nimbus.team/docs/](https://nimbus.team/docs/) +- Nimbus Docs: [https://nimbus.guide](https://nimbus.guide/) ::: @@ -9848,9 +9649,16 @@ Nimbus is a client implementation that strives to be as lightweight as possible ::: +:::caution Prerequisites + +The Beacon Node requires an Execution client in order to operate. See [Step 2: Run Execution Client](/category/step--2---run-execution-client) for more information. + +::: + ## Option 1: Run as System Process -We currently do not release Gnosis compatible binaries for Nimbus, nor do we intend to for the time being. +Nimbus publishes binaries for Linux, Windows, and macOS. +For Gnosis/Chiado, the recommended path is the Gnosis-maintained Nimbus Docker image below, which already includes network-specific configuration. ## Option 2: Run using Docker @@ -9865,54 +9673,54 @@ Folder structure ├── jwtsecret/ ├── execution/ └── consensus/ - └── data/ - └── validator_key/ + ├── data/ + └── validators/ ``` ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: Create `docker-compose.yml` and insert the configuration below. ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" services: - execution: - # From Step 2 - # ... - consensus: - container_name: consensus - image: ghcr.io/gnosischain/gnosis-nimbus-eth2:latest - restart: unless-stopped - networks: - - gnosis_net - volumes: - - ./consensus/data:/data + execution: + # From Step 2 + # ... + consensus: + container_name: consensus + image: ghcr.io/gnosischain/gnosis-nimbus-eth2:latest + restart: unless-stopped + networks: + - gnosis_net + volumes: + - /home/$USER/gnosis/consensus/data:/data // highlight-start - - ${Path_to_jwtsecret}:/jwt:ro - - ${Path_to_keystore}:/validators + - /home/$USER/gnosis/jwtsecret/jwt.hex:/jwt:ro + - /home/$USER/gnosis/consensus/validators:/validators // highlight-end - ports: - - 9100:9100 - - 9100:9100/udp - command: | - --data-dir=/data - --web3-url=http://localhost:8551 - --jwt-secret=/jwt - --light-client-data-serve=true - --light-client-data-import-mode=full - --tcp-port:9100 - --udp-port:9100 - --validators-dir=/validators + ports: + - 9100:9100/tcp + - 9100:9100/udp + command: | + --data-dir=/data + --web3-url=http://execution:8551 + --jwt-secret=/jwt + --light-client-data-serve=true + --light-client-data-import-mode=full + --tcp-port=9100 + --udp-port=9100 + --validators-dir=/validators // highlight-start - --suggested-fee-recipient=${Fee address} - --graffiti=${Graffiti} + --suggested-fee-recipient=${FEE_RECIPIENT} + --graffiti=${GRAFFITI} // highlight-end - --rest - --rest-address=0.0.0.0 - --network=gnosis - --history=prune + --rest + --rest-address=0.0.0.0 + --network=gnosis + --history=prune logging: driver: "local" @@ -9931,7 +9739,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 4. Monitor Logs @@ -9960,13 +9768,13 @@ docker logs -f --tail 500 consensus ### 5. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` --- @@ -9979,7 +9787,7 @@ import BeaconFolderStructurePartial from '@site/docs/node/manual/beacon/\_partia :::caution Version check -This page's content is up-to-date for [Teku v25.4.1](https://github.com/Consensys/teku/releases/tag/25.4.1). +This page's content is up-to-date for [Teku v26.4.0](https://github.com/ConsenSys/teku/releases/tag/26.4.0). ::: @@ -10012,25 +9820,25 @@ Gnosis' maintains a repo with sample Teku Dockerfiles and configs | ------------------ | ------------------------------------------------------------------- | | Release Page | https://github.com/ConsenSys/teku/releases | | Docker Images | https://hub.docker.com/r/consensys/teku | -| Teku Docs | https://docs.teku.consensys.net/en/latest/ | -| Teku CLI Reference | https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/ | +| Teku Docs | https://docs.teku.consensys.io/ | +| Teku CLI Reference | https://docs.teku.consensys.io/reference/cli | ### Checkpoint Sync We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks. -Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com/. +Gnosis provides a checkpoint sync server at https://checkpoint.gnosischain.com. ```shell # Usage $ teku - --initial-state https://checkpoint.gnosischain.com/eth/v2/debug/beacon/states/finalized + --checkpoint-sync-url https://checkpoint.gnosischain.com ``` :::info More about Checkpoint Sync -- Teku's [Checkpoint Sync docs](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Checkpoint-Start/) -- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com/) +- Teku's [Checkpoint Sync docs](https://docs.teku.consensys.io/get-started/checkpoint-start) +- Gnosis' [Checkpoint Sync server Status](https://checkpoint.gnosischain.com) ::: @@ -10049,7 +9857,7 @@ Images are referenced under the following pattern `consensys/teku:{image-tag}` w ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -10107,7 +9915,7 @@ services: --metrics-interface=0.0.0.0 --metrics-port=8008 // highlight-next-line - --initial-state=https://checkpoint.gnosischain.com/eth/v2/debug/beacon/states/finalized + --checkpoint-sync-url=https://checkpoint.gnosischain.com logging: driver: "local" @@ -10120,7 +9928,7 @@ networks: Add an `.env` file with your user id (`id --user`) in `/home/$USER/gnosis/.env`. -``` title="/home/$USER/gnosis/.env +``` title="/home/$USER/gnosis/.env" PUID=1000 ``` @@ -10130,7 +9938,7 @@ Start the consensus layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -10140,27 +9948,144 @@ Check your logs for each service (`execution` or `consensus`) with: import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/_partials/_monitor_logs_docker.md'; - + + + +### 6. Updating your Node + +To update, just pull the new images, then stop and restart your services: + +```shell +cd /home/$USER/gnosis +docker compose pull +docker compose stop +docker compose up -d +``` + +--- + +// File: node/manual/execution/_partials/_install_el_erigon + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + + + +- Install and build [Erigon](https://github.com/erigontech/erigon#installation). + +```shell +cd execution +git clone https://github.com/erigontech/erigon.git +cd erigon +make erigon +``` + +- Run Erigon + +```shell +./build/bin/erigon \ + --chain=gnosis \ + --datadir=/data \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + +- Erigon uses `--prune.mode=full` by default. If you need archive data or minimal disk usage, set `--prune.mode=archive` or `--prune.mode=minimal` before the first start. + + + + +- Install and build Erigon. + +```shell +cd execution +git clone https://github.com/erigontech/erigon.git +cd erigon +make erigon +``` + +- Run Erigon + +```shell +./build/bin/erigon \ + --chain=gnosis \ + --datadir=/data \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + + + + + + + + + +- Install and build Erigon. + +```shell +cd execution +git clone https://github.com/erigontech/erigon.git +cd erigon +make erigon +``` + +- Run Erigon + +```shell +./build/bin/erigon \ + --chain=chiado \ + --datadir=/data \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex +``` + + + +- Install and build Erigon. -### 6. Updating your Node +```shell +cd execution +git clone https://github.com/erigontech/erigon.git +cd erigon +make erigon +``` -To update, just pull the new images, then stop and restart your docker-compose file: +- Run Erigon ```shell -cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +./build/bin/erigon \ + --chain=chiado \ + --datadir=/data \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex ``` + + + + + + --- -// File: node/manual/execution/_partials/_install_el_erigon +// File: node/manual/execution/_partials/_install_el_geth import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +Install prerequisites first: `git`, `make`, and a recent Go toolchain. + -- Install and build [Erigon](https://github.com/ledgerwatch/erigon#documentation). +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git -cd erigon -make erigon +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth ``` -- Run Erigon +- Run Geth. ```shell -./build/bin/erigon \ - --chain=gnosis \ +./build/bin/geth \ + --gnosis \ --datadir=/data \ - --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ - --prune=htcr + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex ``` -- Erigon run [Archive node](https://ethereum.org/en/developers/docs/nodes-and-clients/archive-nodes/#what-is-an-archive-node) by default. To run a pruned node, add `--prune=htcr`. - -- Install and build Erigon. +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git -cd erigon -make erigon +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth ``` -- Run Erigon +- Run Geth. ```shell -./build/bin/erigon \ - --chain=gnosis \ +./build/bin/geth \ + --gnosis \ --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ --authrpc.jwtsecret=../../jwtsecret/jwt.hex ``` @@ -10225,42 +10161,56 @@ make erigon ]}> -- Install and build Erigon. +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git -cd erigon -make erigon +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth ``` -- Run Erigon +- Run Geth. ```shell -./build/bin/erigon \ - --chain=chiado \ +./build/bin/geth \ + --chiado \ --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ --authrpc.jwtsecret=../../jwtsecret/jwt.hex ``` -- Install and build Erigon. +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Gnosis Geth](https://github.com/gnosischain/go-ethereum). ```shell cd execution -git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git -cd erigon -make erigon +git clone https://github.com/gnosischain/go-ethereum.git +cd go-ethereum +make geth ``` -- Run Erigon +- Run Geth. ```shell -./build/bin/erigon \ - --chain=chiado \ +./build/bin/geth \ + --chiado \ --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=eth,net,web3 \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ --authrpc.jwtsecret=../../jwtsecret/jwt.hex ``` @@ -10417,8 +10367,159 @@ import TabItem from '@theme/TabItem'; -:::info Upgrading? -Remove `AuraMerge.Enabled` since it is now covered in the `Merge.Enabled` key. +--- + +// File: node/manual/execution/_partials/_install_el_reth + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Install prerequisites first: `git`, a recent Rust toolchain, and common native build tools (`clang`, `cmake`, `pkg-config`). + + + + + + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain gnosis \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain gnosis \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + + + + + + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain chiado \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + +For Windows, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and run the same commands from the WSL terminal. + +- Install and build [Reth for Gnosis](https://github.com/gnosischain/reth_gnosis). + +```shell +cd execution +git clone https://github.com/gnosischain/reth_gnosis.git +cd reth_gnosis +cargo build --release +``` + +- Run Reth. + +```shell +./target/release/reth node \ + --chain chiado \ + --datadir=/data \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.addr=127.0.0.1 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=../../jwtsecret/jwt.hex \ + --discovery.addr=0.0.0.0 \ + --discovery.port=30303 +``` + + + + + + + +:::info +On first startup, Reth initializes from the network-specific bootstrap state. Keep the process running until synchronization starts. ::: --- @@ -10427,33 +10528,32 @@ Remove `AuraMerge.Enabled` since it is now covered in the `Merge.Enabled` key. import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import InstallNethermindPartial from '@site/docs/node/manual/execution/_partials/_install_el_nethermind.md'; +import InstallErigonPartial from '@site/docs/node/manual/execution/_partials/_install_el_erigon.md'; +import InstallGethPartial from '@site/docs/node/manual/execution/_partials/_install_el_geth.md'; +import InstallRethPartial from '@site/docs/node/manual/execution/_partials/_install_el_reth.md'; - -import InstallNethermindPartial from '@site/docs/node/manual/execution/_partials/_install_el_nethermind.md'; -import InstallErigonPartial from '@site/docs/node/manual/execution/_partials/_install_el_erigon.md'; - - - -

Besu is not yet supported, use Nethermind instead.

-
- + + + + -

Geth is not yet supported, use Nethermind instead.

+
@@ -10492,7 +10592,7 @@ chown -R 1000:1000 /home/$USER/gnosis/execution ### 2. Docker Compose -Create a docker-compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: +Create a Compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: ```shell title="/home/$USER/gnosis/docker-compose.yml" version: "3" @@ -10542,7 +10642,7 @@ networks: ``` :::tip Note -[By default](https://github.com/ledgerwatch/erigon#other-ports), `metrics` and `pprof` use the same port, 6060. Therefore, it is required to configure the port correctly if both options are enabled. +[By default](https://github.com/erigontech/erigon#other-ports), `metrics` and `pprof` use the same port, `6060`. If both are enabled, configure separate ports. ::: ### 3. JWT Secret @@ -10557,7 +10657,7 @@ Start the Execution layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` ### 5. Monitor Logs @@ -10570,13 +10670,13 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/\_partial ### 6. Updating your Node -To update, just pull the new image, then stop and restart your docker-compose file: +To update, just pull the new image, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` ## Option 2: Using system process {#as-system-process} @@ -10585,9 +10685,11 @@ Refer to [Erigon Guide](../README.md#step-2-run-an-execution-client). ## Erigon Archive Node -[Archive node](https://ethereum.org/en/developers/docs/nodes-and-clients/archive-nodes/#what-is-an-archive-node) is the default option by Erigon. It takes about 640GB (May 2025) to run a Gnosis Chain Archive node. Please check the [system requirements](https://github.com/ledgerwatch/erigon#system-requirements) of your server before running an archive node. +Erigon uses `--prune.mode=full` by default. If you need an archive node, set `--prune.mode=archive` before first start. + +If you want lower disk usage for a validator setup, use `--prune.mode=minimal`. -To run an Erigon pruned node, `--prune=htcr` command need to be added. +Always check the latest [system requirements](https://github.com/erigontech/erigon#system-requirements) before choosing a pruning mode. --- @@ -10595,7 +10697,7 @@ To run an Erigon pruned node, `--prune=htcr` command need to be added. # Geth -This is the most popular and majority Ethereum Client implementation written in Go, [Geth](https://geth.ethereum.org/) fully open source and licensed under the GNU LGPL v3. +This is the most popular and majority Ethereum Client implementation written in Go, [Geth](https://geth.ethereum.org/) fully open source and is now ported for Gnosis chain. Repository: [https://github.com/gnosischain/go-ethereum](https://github.com/gnosischain/go-ethereum) @@ -10669,7 +10771,7 @@ mkdir /home/$USER/gnosis/jwtsecret ### 2. Docker Compose -Create a docker-compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: +Create a Compose file with your favorite text editor in `/home/$USER/gnosis/docker-compose.yml`: ```mdx-code-block
@@ -10703,7 +10805,6 @@ services: --config gnosis --datadir /data --log INFO - --Sync.SnapSync false --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 --JsonRpc.Port 8545 @@ -10740,7 +10841,7 @@ Start the Execution layer client listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -10755,13 +10856,13 @@ import MonitorLogsDockerPartial from '@site/docs/node/manual/validator/_partials ### 6. Updating your Node -To update, just pull the new image, then stop and restart your docker-compose file: +To update, just pull the new image, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` ## Option 2: Running as System Process {#as-system-process} @@ -10798,7 +10899,7 @@ nethermind --config chiado --JsonRpc.JwtSecretFile path/to/jwt.hex An archival node executes a heavy historical sync verifying all the transactions and keeping all of the historical data. Archive sync is the 'heaviest' and slowest sync mode, and can take 2 - 6 weeks depending on the speed of your IO. :::caution -Make sure there's enough disk space to accommodate the archive data, the minimum amount of disk required to run the archive node is +2 TB (Feb 2023). +Make sure you have sufficient disk space and IOPS for archive mode. Requirements change frequently by release and network growth. ::: Edit your `/home/$USER/gnosis/docker-compose.yml` and change the `--config` from `gnosis` to `gnosis_archive`. @@ -10816,8 +10917,6 @@ Edit your `/home/$USER/gnosis/docker-compose.yml` and change the `--config` from Gnosis‑compatible **Reth** client — **not a fork**, but an **extension** built with the `NodeBuilder` API. -Refer to the official Reth documentation → [reth.rs](https://reth.rs) - Repository: [gnosischain/reth_gnosis](https://github.com/gnosischain/reth_gnosis) --- @@ -10840,7 +10939,7 @@ You can run the node in two ways: Pull the image: ```bash -docker pull ghcr.io/gnosischain/reth_gnosis:v0.1.0 +docker pull ghcr.io/gnosischain/reth_gnosis:v1.0.3 ``` @@ -10863,13 +10962,34 @@ cp /path/to/jwtsecret ./reth_data/jwtsecret #### Quick Chiado run ```bash -docker run -v ./reth_data:/data ghcr.io/gnosischain/reth_gnosis:v0.1.0 node --chain chiado --datadir /data --authrpc.jwtsecret=/data/jwtsecret +docker run \ + -v ./reth_data:/data \ + ghcr.io/gnosischain/reth_gnosis:v1.0.3 node \ + --chain chiado \ + --datadir /data \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=/data/jwtsecret ``` #### Full Gnosis Chain example ```bash -docker run --network host -v $PWD/reth_data:/data ghcr.io/gnosischain/reth_gnosis:v0.1.0 node -vvvv --chain gnosis --datadir /data --http --http.port=8545 --http.addr=0.0.0.0 --http.corsdomain='*' --http.api=admin,net,eth,web3,debug,trace --authrpc.port=8546 --authrpc.addr=0.0.0.0 --authrpc.jwtsecret=/data/jwtsecret --discovery.port=30303 --discovery.addr=0.0.0.0 +docker run --network host \ + -v $PWD/reth_data:/data \ + ghcr.io/gnosischain/reth_gnosis:v1.0.3 node \ + -vvvv \ + --chain gnosis \ + --datadir /data \ + --http \ + --http.port=8545 \ + --http.addr=0.0.0.0 \ + --http.corsdomain='*' \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.port=8551 \ + --authrpc.addr=0.0.0.0 \ + --authrpc.jwtsecret=/data/jwtsecret \ + --discovery.port=30303 \ + --discovery.addr=0.0.0.0 ``` --- @@ -10904,7 +11024,20 @@ cp /path/to/jwtsecret ./reth_data/jwtsecret ### Quick Chiado run ```bash -./target/release/reth node -vvvv --chain chiado --datadir ./reth_data --http --http.port=8545 --http.addr=0.0.0.0 --http.corsdomain='*' --http.api=admin,net,eth,web3,debug,trace --authrpc.port=8546 --authrpc.addr=0.0.0.0 --authrpc.jwtsecret=./reth_data/jwtsecret --discovery.port=30303 --discovery.addr=0.0.0.0 +./target/release/reth node \ + -vvvv \ + --chain chiado \ + --datadir ./reth_data \ + --http \ + --http.port=8545 \ + --http.addr=0.0.0.0 \ + --http.corsdomain='*' \ + --http.api=admin,net,eth,web3,debug,trace \ + --authrpc.port=8551 \ + --authrpc.addr=0.0.0.0 \ + --authrpc.jwtsecret=./reth_data/jwtsecret \ + --discovery.port=30303 \ + --discovery.addr=0.0.0.0 ``` Replace `--chain chiado` with `--chain gnosis` for **Gnosis mainnet**. @@ -10923,13 +11056,6 @@ If `--datadir` is omitted, Reth falls back to the OS‑specific default path: --- -## Next steps - -* Join the **Gnosis Reth Discord** → [discord.gg/gnosis](https://discord.gg/gnosis) -* Track upstream Reth development → [paradigmxyz/reth](https://github.com/paradigmxyz/reth) - ---- - // File: node/manual/server/_partials/_install-initial import Tabs from '@theme/Tabs'; @@ -11091,7 +11217,7 @@ Including the folders from your Execution and Consensus clients, your folder str ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggested-fee-recipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggested-fee-recipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -11189,7 +11315,7 @@ Import your validators: docker run \ --rm \ --volume /home/$USER/gnosis/consensus/keystores:/keystores \ - --volume /home/$USER/gnosis/consensus:/data sigp/lighthouse:latest-modern lighthouse account validator import \ + --volume /home/$USER/gnosis/consensus:/data sigp/lighthouse:v8.1.3 lighthouse account validator import \ --network gnosis \ --password-file /keystores/password.txt \ --reuse-password \ @@ -11204,7 +11330,7 @@ Start the validator service listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -11230,13 +11356,13 @@ _See section **Fund Validator**_ ### 9. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` --- @@ -11274,7 +11400,7 @@ mkdir /home/$USER/gnosis/consensus/keystores ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggestedFeeRecipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: +Modify your Compose file with your favorite text editor and add the `validator` container. You will also need to add the command `--suggestedFeeRecipient=$FEE_RECIPIENT` to your `consensus` container. The file should now look like: ```yaml title="/home/$USER/gnosis/docker-compose.yml" showLineNumbers version: "3" @@ -11337,9 +11463,9 @@ GRAFFITI=gnosischain/lodestar ``` Replace `suggestedFeeRecipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. +Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/run/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. -Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. ### 4. Keystore Location @@ -11375,7 +11501,7 @@ Start the validator service listed in the compose file: ```shell cd /home/$USER/gnosis -docker-compose up -d +docker compose up -d ``` @@ -11401,13 +11527,13 @@ See the [Validator Deposits](../deposit.md) section. ### 9. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` --- @@ -11451,8 +11577,8 @@ Including the folders from your Execution and Consensus clients, your folder str ├── jwtsecret/ ├── execution/ └── consensus/ - ├── beacon/ - └── validators/ + ├── data/ + └── validator/ ├── keys/ ├── passwords/ └── slashprotection/ @@ -11460,7 +11586,7 @@ Including the folders from your Execution and Consensus clients, your folder str ### 2. Docker Compose -Modify your docker-compose file with your favorite text editor and add the following commands to your `consensus` container. +Modify your Compose file with your favorite text editor and add the following commands to your `consensus` container. ``` --validators-proposer-default-fee-recipient=$FEE_RECIPIENT @@ -11523,7 +11649,7 @@ services: --metrics-host-allowlist=* --metrics-interface=0.0.0.0 --metrics-port=8008 - --initial-state=https://checkpoint.gnosis.gateway.fm//eth/v2/debug/beacon/states/finalized + --checkpoint-sync-url=https://checkpoint.gnosischain.com # highlight-start --validators-proposer-default-fee-recipient=$FEE_RECIPIENT --validator-keys=/data/validator/keys:/data/validator/passwords @@ -11549,14 +11675,14 @@ FEE_RECIPIENT=0x0000000000000000000000000000000000000000 GRAFFITI=gnosischain/teku ``` Replace `validators-proposer-default-fee-recipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-proposer-default-fee-recipient) flag in Teku docs. +Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.io/reference/cli#validators-proposer-default-fee-recipient) flag in Teku docs. -Replace [`validator-keys`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored. +Replace [`validator-keys`](https://docs.teku.consensys.io/reference/cli#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored. -Replace [`validators-graffiti`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace [`validators-graffiti`](https://docs.teku.consensys.io/reference/cli#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. -Learn more about the CLI commands and their options [here](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/). +Learn more about the CLI commands and their options [here](https://docs.teku.consensys.io/reference/cli). @@ -11566,7 +11692,7 @@ Add your keystores in `/home/$USER/gnosis/consensus/validator/keys/` and their p :::tip -When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#validator-keys)) +When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.io/reference/cli#validator-keys)) ::: @@ -11577,8 +11703,8 @@ When specifying directories, Teku expects to find identically named keystore and ├── jwtsecret/ ├── execution/ └── consensus/ - ├── beacon/ - └── validators/ + ├── data/ + └── validator/ # highlight-start ├── keys/ │   ├── keystore-001.json @@ -11599,7 +11725,7 @@ When the Teku `consensus` container starts, it will search the directories for k :::tip -When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#validator-keys)) +When specifying directories, Teku expects to find identically named keystore and password files. For each keystore file a corresponding password txt file is required. This is the case even if the password is the same for each validator. For example `validator_217179e.json` and `validator_217179e.txt`. ([source](https://docs.teku.consensys.io/reference/cli#validator-keys)) ::: @@ -11610,8 +11736,8 @@ Restart the execution layer client and consensus layer client listed in the comp ```shell cd /home/$USER/gnosis -docker-compose down -docker-compose up -d +docker compose down +docker compose up -d ``` @@ -11637,13 +11763,13 @@ _See section **Fund Validator**_ ### 9. Updating your Node -To update, just pull the new images, then stop and restart your docker-compose file: +To update, just pull the new images, then stop and restart your services: ```shell cd /home/$USER/gnosis -docker-compose pull -docker-compose stop -docker-compose up -d +docker compose pull +docker compose stop +docker compose up -d ``` --- @@ -11818,6 +11944,7 @@ Please note that once you have chosen a withdrawal address (either at this step import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import InstallNimbusValidatorPartial from '@site/docs/node/manual/validator/_partials/clients/_install_validator_nimbus.md'; import InstallTekuValidatorPartial from '@site/docs/node/manual/validator/_partials/clients/_install_validator_teku.md'; ```mdx-code-block @@ -11825,7 +11952,6 @@ import InstallTekuValidatorPartial from '@site/docs/node/manual/validator/_parti {label: 'Lighthouse', value: 'lighthouse'}, {label: 'Lodestar', value: 'lodestar'}, {label: 'Nimbus', value: 'nimbus'}, - {label: 'Prysm', value: 'prysm'}, {label: 'Teku', value: 'teku'} ]}> @@ -11846,27 +11972,9 @@ import InstallLodestarValidatorPartial from '@site/docs/node/manual/validator/_p -``` - -:::info - -Please refer to [Run a Beacon Node: Nimbus](../../beacon/nimbus.md) - -::: - -```mdx-code-block - - - -``` - -:::info - -Please refer to [Run a Beacon Node: Prysm](../../beacon/prysm.md) -::: + -```mdx-code-block @@ -11958,7 +12066,7 @@ import TabItem from '@theme/TabItem'; :::info -Lighthouse only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. +Lighthouse only runs on Linux. To run it on Windows, [install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions in the WSL terminal. ::: @@ -11983,7 +12091,7 @@ echo 'PLACE_HERE_YOUR_PASSWORD' > keystores/password.txt * Import the validator keys using lighthouse: ```shell -./lighthouse account_manager validator import \ +./lighthouse account validator import \ --network gnosis \ --password-file keystores/password.txt \ --reuse-password \ @@ -12037,7 +12145,7 @@ import TabItem from '@theme/TabItem'; :::info -Lodestar only runs on Linux. To run it on Windows, [Install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install), and follow the instructions on the WSL terminal. +Lodestar supports Windows, but for consistency with the rest of this guide we recommend [WSL](https://learn.microsoft.com/en-us/windows/wsl/install). ::: @@ -12068,17 +12176,17 @@ You can import the keys when starting the validator. --network=gnosis \ --importKeystores=keystores \ --importKeystoresPassword=keystores/password.txt \ - --dataDir=/data/validators \ + --dataDir=validators \ # highlight-start - --suggestedFeeRecipient=${FEE_RECIPIENT} \ - --graffiti=${GRAFFITI} + --suggestedFeeRecipient=${FEE_RECIPIENT} \ + --graffiti=${GRAFFITI} # highlight-end ``` Replace `suggestedFeeRecipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. +Learn more about [suggestedFeeRecipient](https://chainsafe.github.io/lodestar/run/validator-management/vc-configuration/#configuring-the-fee-recipient-address) flag in Lodestar docs. -Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar/run/validator-management/validator-cli/#-graffiti). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. @@ -12092,6 +12200,74 @@ Replace `graffiti` with your own [graffiti](https://chainsafe.github.io/lodestar --- +// File: node/manual/validator/_partials/clients/_install_validator_nimbus + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + + +:::info +Nimbus supports Windows natively. Run the same commands from PowerShell, replacing `./nimbus_beacon_node` with `./nimbus_beacon_node.exe`. +::: + + + + + + + + +Nimbus runs validator duties in the beacon node process, so there is no separate validator client to launch in the interactive guide. + +- Stop the beacon node if it is still running. + +- Import the validator keys generated in the previous step: + +```shell +./nimbus_beacon_node deposits import \ + --data-dir=./data \ + ./keystores +``` + +Nimbus will print `Keystore imported` for each imported validator key. + +- Restart Nimbus beacon node with your execution client connection and validator settings: + +```shell +./nimbus_beacon_node \ + --network=gnosis \ + --data-dir=./data \ + --el=http://127.0.0.1:8551 \ + --jwt-secret=../jwtsecret/jwt.hex \ + --suggested-fee-recipient=${FEE_RECIPIENT} \ + --graffiti=${GRAFFITI} +``` + +Replace `suggested-fee-recipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. +Learn more about [suggested fee recipient](https://nimbus.guide/suggested-fee-recipient.html) flag in Nimbus docs. + +Replace `graffiti` with your own [graffiti](https://nimbus.guide/graffiti.html). It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. + +To confirm the validator keys were loaded, look for `Local validator attached` in the Nimbus logs after restart. + + + +
+
+ +
+ +--- + // File: node/manual/validator/_partials/clients/_install_validator_teku import Tabs from '@theme/Tabs'; @@ -12129,14 +12305,14 @@ To run a validator, we need to first import the keys generated in the previous s echo 'PLACE_HERE_YOUR_PASSWORD' > keystores/keystore-${m_...}.json.txt ``` -If the Launchpad creates a key named keystore-m_12381_3600_0_0_0-1596485378.json, then the password file must be named keystore-m_12381_3600_0_0_0-1596485378.txt to comply with [EIP-2335](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Connect/Connect-To-Mainnet/#create-a-password-file-for-each-validator-key) +If the Launchpad creates a key named keystore-m_12381_3600_0_0_0-1596485378.json, then the password file must be named keystore-m_12381_3600_0_0_0-1596485378.txt to comply with [EIP-2335](https://docs.teku.consensys.io/get-started/connect/mainnet#create-a-password-file-for-each-validator-key) You can import the keys when starting the validator. -* navigate to teku folder +* Navigate to the Teku folder. ```shell -cd teku-${version} +cd teku-[VERSION] ``` * Execute Teku Beacon Chain and Validator(s): @@ -12150,9 +12326,9 @@ cd teku-${version} --metrics-enabled=true \ --rest-api-enabled=true \ # highlight-start - --initial-state=https://checkpoint.gnosis.gateway.fm//eth/v2/debug/beacon/states/finalized \ - --validators-proposer-default-fee-recipient=${Fee Recipient Address} \ - --validator-keys=${path to key file}:${path to password file} + --checkpoint-sync-url=https://checkpoint.gnosischain.com \ + --validators-proposer-default-fee-recipient=${FEE_RECIPIENT} \ + --validator-keys=${KEYS_DIR}:${PASSWORDS_DIR} \ --validators-graffiti=${GRAFFITI} # highlight-end ``` @@ -12163,20 +12339,20 @@ If you wish to run validator only, run the following command: ./bin/teku validator-client \ --network=gnosis \ # highlight-start - --beacon-node-api-endpoint=${endpoint} \ - --validator-keys=${path to key file}:${path to password file} + --beacon-node-api-endpoint=${BEACON_NODE_API_ENDPOINT} \ + --validator-keys=${KEYS_DIR}:${PASSWORDS_DIR} # highlight-end ``` Replace `validators-proposer-default-fee-recipient` with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. -Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-proposer-default-fee-recipient) flag in Teku docs. +Learn more about [validators-proposer-default-fee-recipient](https://docs.teku.consensys.io/reference/cli#validators-proposer-default-fee-recipient) flag in Teku docs. -Replace [`validator-keys`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored, and [`beacon-node-api-endpoint`](https://docs.teku.consensys.net/Reference/CLI/Subcommands/Validator-Client#beacon-node-api-endpoint-beacon-node-api-endpoints) with the endpoint of the beacon node’s REST API (default is http://127.0.0.1:5051). +Replace [`validator-keys`](https://docs.teku.consensys.io/reference/cli#validator-keys) with the location where `keystores- *.json` and `keystore- *.txt` are stored, and [`beacon-node-api-endpoint`](https://docs.teku.consensys.io/reference/cli/subcommands/validator-client#beacon-node-api-endpoint-beacon-node-api-endpoints) with the endpoint of the beacon node’s REST API (default is http://127.0.0.1:5051). -Replace [`validators-graffiti`](https://docs.teku.consensys.net/Reference/CLI/CLI-Syntax#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. +Replace [`validators-graffiti`](https://docs.teku.consensys.io/reference/cli#validators-graffiti) with your own graffiti. It is an optional field that can be used to add a message to the [block](https://ethereum.org/en/developers/docs/blocks/) by the proposer. -Learn more about the CLI commands and their options [here](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/). +Learn more about the CLI commands and their options [here](https://docs.teku.consensys.io/reference/cli). @@ -12641,7 +12817,7 @@ The [`jq` utility](https://jqlang.github.io/jq/) is used in this guide to automa Run the install shell script using either `curl` or `wget`: :::caution -In the example below, the version is specified using `TAG=v2.2.0`, make sure that you [check if there is a newer tagged version of Bee](https://github.com/ethersphere/bee/tags) and if so, modify the commands below to use the most recent tag number so that you have the latest version of Bee. +In the example below, the version is specified using `TAG=v2.7.1`, make sure that you [check if there is a newer tagged version of Bee](https://github.com/ethersphere/bee/tags) and if so, modify the commands below to use the most recent tag number so that you have the latest version of Bee. ::: @@ -12655,7 +12831,7 @@ values={[ ```bash -curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.2.0 bash +curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.7.1 bash ``` @@ -12663,7 +12839,7 @@ curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TA **wget** ```bash -wget -q -O - https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.2.0 bash +wget -q -O - https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.7.1 bash ``` @@ -12758,9 +12934,9 @@ damage to hardware or loss of funds associated with the Ethereum account connect No developers or entity involved will be liable for any claims and damages associated with your use, inability to use, or your interaction with other nodes or the software. -version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ +version: 2.7.1 -"time"="2024-09-24 18:15:34.383102" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 18:15:34.383102" "level"="info" "logger"="node" "msg"="bee version" "version"="2.7.1" "time"="2024-09-24 18:15:34.428546" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="0373fe2ab33ab836635fc35864cf708fa0f4a775c0cf76ca851551e7787b58d040" "time"="2024-09-24 18:15:34.520686" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="03a341032724f1f9bb04f1d9b22607db485cccd74174331c701f3a6957d94d95c1" "time"="2024-09-24 18:15:34.520716" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" @@ -12835,9 +13011,9 @@ damage to hardware or loss of funds associated with the Ethereum account connect No developers or entity involved will be liable for any claims and damages associated with your use, inability to use, or your interaction with other nodes or the software. -version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ +version: 2.7.1 -"time"="2024-09-24 18:57:16.710417" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 18:57:16.710417" "level"="info" "logger"="node" "msg"="bee version" "version"="2.7.1" "time"="2024-09-24 18:57:16.760154" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="0373fe2ab33ab836635fc35864cf708fa0f4a775c0cf76ca851551e7787b58d040" "time"="2024-09-24 18:57:16.854594" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="03a341032724f1f9bb04f1d9b22607db485cccd74174331c701f3a6957d94d95c1" "time"="2024-09-24 18:57:16.854651" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" @@ -12855,7 +13031,7 @@ version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please Here we can see that after our node has been funded, it was able to issue the transactions for deploying the chequebook contract, which is a prerequisite for running a staking node. -Next your node will begin to sync [postage stamp data](https://docs.ethswarm.org/docs/develop/access-the-swarm/buy-a-stamp-batch), which can take ~5 to 10 minutes. You will see this log message while your node is syncing postage stamp data: +Next your node will begin to sync [postage stamp data](https://docs.ethswarm.org/docs/develop/tools-and-features/buy-a-stamp-batch), which can take ~5 to 10 minutes. You will see this log message while your node is syncing postage stamp data: ```bash "time"="2024-09-24 22:21:19.664897" "level"="info" "logger"="node" "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" @@ -13032,7 +13208,7 @@ You can read more other important endpoints for monitoring your Bee node in the The following is a guide to get you started running a Bee full node with staking on Swarm using Docker. Docker images for Bee are hosted at [Docker Hub](https://hub.docker.com/r/ethersphere/bee). :::caution -In the examples below we specify the exact version number of the image using the 2.2.0 tag. It's recommended to only use the exact version number tags. Make sure to check that you're on the latest version of Bee by reviewing the tags for Bee on [Docker Hub](https://hub.docker.com/r/ethersphere/bee/tags), and replace 2.2.0 in the commands below if there is a newer full release. +In the examples below we specify the exact version number of the image using the 2.7.1 tag. It's recommended to only use the exact version number tags. Make sure to check that you're on the latest version of Bee by reviewing the tags for Bee on [Docker Hub](https://hub.docker.com/r/ethersphere/bee/tags), and replace 2.7.1 in the commands below if there is a newer full release. ::: :::warning @@ -13096,13 +13272,13 @@ docker run -d --name bee-1 \ -e BEE_PASSWORD="flummoxedgranitecarrot" \ -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" \ -v bee-1:/home/bee/.bee \ - ethersphere/bee:2.2.0 start + ethersphere/bee:2.7.1 start ``` Here is the same command in a single line in case you run into issues with the line breaks in the command above: ```bash -docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 -e BEE_API_ADDR=":1633" -e BEE_FULL_NODE="true" -e BEE_SWAP_ENABLE="true" -e BEE_PASSWORD="flummoxedgranitecarrot" -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" -v bee-1:/home/bee/.bee ethersphere/bee:2.2.0 start +docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 -e BEE_API_ADDR=":1633" -e BEE_FULL_NODE="true" -e BEE_SWAP_ENABLE="true" -e BEE_PASSWORD="flummoxedgranitecarrot" -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" -v bee-1:/home/bee/.bee ethersphere/bee:2.7.1 start ``` #### Command explained: @@ -13118,7 +13294,7 @@ docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 - **`-e BEE_PASSWORD="flummoxedgranitecarrot"`**: Sets the keystore password, make sure to replace with your own. - **`-e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org"`**: Connects to the Gnosis Chain. - **`-v bee-1:/home/bee/.bee`**: Persists node data in the `bee-1` volume. -- **`ethersphere/bee:2.2.0 start`**: Runs Bee version 2.2.0 and starts the node. +- **`ethersphere/bee:2.7.1 start`**: Runs Bee version 2.7.1 and starts the node. This setup runs the Bee node in a container, with full-node functionality, SWAP enabled, and connections to the Gnosis blockchain for chequebook and postage stamp management, while persisting its data using a volume. @@ -13135,7 +13311,7 @@ If everything is set up correctly, you should see your Bee node listed: ```bash CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -37f4ad8b4060 ethersphere/bee:2.2.0 "bee start" 6 seconds ago Up 5 seconds 127.0.0.1:1633->1633/tcp, 0.0.0.0:1634->1634/tcp, :::1634->1634/tcp bee-1 +37f4ad8b4060 ethersphere/bee:2.7.1 "bee start" 6 seconds ago Up 5 seconds 127.0.0.1:1633->1633/tcp, 0.0.0.0:1634->1634/tcp, :::1634->1634/tcp bee-1 ``` And check the logs: @@ -13228,9 +13404,9 @@ damage to hardware or loss of funds associated with the Ethereum account connect No developers or entity involved will be liable for any claims and damages associated with your use, inability to use, or your interaction with other nodes or the software. -version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ +version: 2.7.1 -"time"="2024-09-24 22:21:04.543661" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 22:21:04.543661" "level"="info" "logger"="node" "msg"="bee version" "version"="2.7.1" "time"="2024-09-24 22:21:04.590823" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="02f0e59eafa3c5c06542c0a7a7fe9579c55a163cf1d28d9f6945a34469f88d1b2a" "time"="2024-09-24 22:21:04.686430" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="02ea739530bbf48eed49197f21660f3b6564709b95bf558dc3b472688c34096418" "time"="2024-09-24 22:21:04.686464" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x8288F1c8e3dE7c3bf42Ae67fa840EC61481D085e" @@ -13262,7 +13438,7 @@ version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please "time"="2024-09-24 22:21:19.664897" "level"="info" "logger"="node" "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" ``` -Your node will take some time to finish [syncing postage contract data](https://docs.ethswarm.org/docs/develop/access-the-swarm/buy-a-stamp-batch/) as indicated by the final line: +Your node will take some time to finish [syncing postage contract data](https://docs.ethswarm.org/docs/develop/tools-and-features/buy-a-stamp-batch/) as indicated by the final line: ```bash "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" @@ -13415,8 +13591,8 @@ You will also need a Gnosis RPC Endpoint (such as Nethermind xDAI) for your bee ### Tokens -* A small amount of [xDAI](https://docs.ethswarm.org/docs/learn/tokens#xdai) to pay for Gnosis Chain transactions, 0.1 xDAI should be enough -* [xBZZ](https://docs.ethswarm.org/docs/learn/tokens#xbzz) (BZZ on Gnosis Chain) is required for funding the chequebook, buying stamps for storage and staking (minimum 10 xBZZ) +* A small amount of [xDAI](https://docs.ethswarm.org/docs/references/tokens#xdai) to pay for Gnosis Chain transactions, 0.1 xDAI should be enough +* [xBZZ](https://docs.ethswarm.org/docs/references/tokens#xbzz) (BZZ on Gnosis Chain) is required for funding the chequebook, buying stamps for storage and staking (minimum 10 xBZZ) ## Full node setup process @@ -13498,17 +13674,15 @@ You are responsible for your node, including ensuring uptime, correct behavior, ### Current Yield - The current yield on GNO staking can be found in this [Dune Dashboard](https://dune.com/gnosischain_team/gnosischain). and [Gnosis Metrics](https://www.gnosismetrics.com/). -- As of Aug 2023, GNO staking has a ~14% yield. +- Yield changes over time with the size and performance of the active validator set. Always use the live dashboards above instead of a fixed percentage. ### Rewards Calculation: -- **Block Proposals**: The reward for proposing a block consists of a base reward and an additional reward proportional to the validator's index. While the base reward remains constant, the additional reward decreases as the validator's index increases, ensuring equal block proposal opportunities for all validators. - -Example: A validator with index 10 proposes a block. The base reward for proposing a block is 100, and the additional reward is 10 / 100 = 0.1. The total reward for the validator is 100 + 0.1 = 100.1. - -- **Block Attestations**: The reward for attesting to a block features a base reward that diminishes over time. Initially set at 100%, the base reward decreases by 1% for every 1000 slots, maintaining the attractiveness of block proposal rewards even as the number of validators grows. +- **Consensus rewards** come from duties such as attestations, block proposals, and sync committee participation. +- **Execution rewards** (priority fees and MEV where applicable) are paid to the configured fee recipient when your validator proposes a block. +- **Penalties** are applied for missed duties and for slashable behavior. -Example: A validator with index 100 attests to a block. The base reward for attesting to a block is 100, and the additional reward is 99%. The total reward for the validator is 100 \* 0.99 = 99. +For practical estimates, use live explorer and dashboard data rather than static examples. ### Understanding Gas Consumption and Transaction Fees @@ -15341,7 +15515,7 @@ Gnosis supports the following explorers: # BlockScout -BlockScout is a full-featured, open-source explorer for Gnosis Mainnet, Chiado Testnet and many other chains. [The Gnosis explorer is available here](https://blockscout.com/xdai/mainnet). +BlockScout is a full-featured, open-source explorer for Gnosis Mainnet, Chiado Testnet and many other chains. [The Gnosis explorer is available here](https://gnosis.blockscout.com/). With BlockScout you can: @@ -15352,11 +15526,19 @@ With BlockScout you can: ![](/img/tools/blockscout.png) +## Blockscout Pro API + +Blockscout Pro API is a new service providing fast, reliable blockchain data access for 100+ chains, including Gnosis. It offers higher rate limits, custom endpoints, improved performance, and multichain support. + +You can check it out here: [https://dev.blockscout.com/](https://dev.blockscout.com/) + +Full docs: [https://docs.blockscout.com/devs/pro-api#pro-api-overview](https://docs.blockscout.com/devs/pro-api#pro-api-overview) + ## More links - GraphQL: [https://blockscout.com/poa/xdai/graphiql](https://blockscout.com/poa/xdai/graphiql) - RPC: [https://blockscout.com/xdai/mainnet/api-docs](https://blockscout.com/xdai/mainnet/api-docs) -- Eth RPC: [https://blockscout.com/xdai/mainnet/eth-rpc-api-docs](https://blockscout.com/xdai/mainnet/eth-rpc-api-docs) +- Eth RPC: [https://gnosis.blockscout.com/api-docs?tab=eth_rpc_api](https://gnosis.blockscout.com/api-docs?tab=eth_rpc_api) --- @@ -17649,7 +17831,7 @@ Select the MetaMask option in the connect wallet menu. Check that the correct Me ### Connecting with WalletConnect -Current WalletConnect functionality is limited to wallets that support Gnosis Chain. You can use MetaMask Mobile with WalletConnect if you have set up the [Gnosis custom RPC](/tools/wallets/metamask/#manual-configuration). +Current WalletConnect functionality is limited to wallets that support Gnosis Chain. You can use MetaMask Mobile with WalletConnect if you have set up the [Gnosis custom RPC](/tools/wallets/metamask#b-manual-configuration). If you choose to use WalletConnect, select the WalletConnect option in the connect wallet menu. Scan the QR code with your application and accept the message to connect in your mobile wallet.