diff --git a/docs/wiki/epf.md b/docs/wiki/epf.md index 1fdc5b9b..6698dff9 100644 --- a/docs/wiki/epf.md +++ b/docs/wiki/epf.md @@ -1,11 +1,13 @@ -# Ethereum Protocol Fellowship + + +# Ethereum Protocol Fellowship EPF is a program for everyone interested in starting to contribute to Ethereum core protocol. Organized by EF Protocol Support, the program is divided into yearly cohorts, each running for 4-5 months. The program was originally started as CDAP by Piper Merriam and grew with each cohort. -Because the protocol, its development and research is fully public and open, anyone can start contributing. But the understanding of current issues, identifying a project to work on and connecting with other contributors can pose a barrier to start, EPF helps to smooth this process. +Because the protocol, its development and research is fully public and open, anyone can start contributing. But the understanding of current issues, identifying a project to work on and connecting with other contributors can pose a barrier to start, EPF helps to smooth this process. -The fellowship is fully open and permissionless, anyone can join the community to start working their area of interest. The cohort opens up with an application process and ends with EPF Day in-person event at Devcon. The most active and skilled contributors might be eligible for stipend at the start of the cohort based on their application or retrospectively. +The fellowship is fully open and permissionless, anyone can join the community to start working their area of interest. The cohort opens up with an application process and ends with EPF Day in-person event at Devcon. The most active and skilled contributors might be eligible for stipend at the start of the cohort based on their application or retrospectively. -> Upcoming EPF cohorts are announced when applications open. Follow the [mailing list, EPS discord and EF blog](/eps/intro.md#important-links) to stay informed. +> Upcoming EPF cohorts are announced when applications open. Follow the [mailing list, EPS discord and EF blog](/eps/intro.md#important-links) to stay informed. -All work done within EPF cohorts can be found in [eth-protocol-fellows repositories](https://github.com/orgs/eth-protocol-fellows/repositories). Each cohort repo includes `/projects` directory with all project proposals and `dev-updates.md` document tracking weekly progress of every participant. Use these resources to learn about the protocol, fellows' work and get inspiration for your own projects. \ No newline at end of file +All work done within EPF cohorts can be found in [eth-protocol-fellows repositories](https://github.com/orgs/eth-protocol-fellows/repositories). Each cohort repo includes `/projects` directory with all project proposals and `dev-updates.md` document tracking weekly progress of every participant. Use these resources to learn about the protocol, fellows' work and get inspiration for your own projects. diff --git a/docs/wiki/pectra-faq.md b/docs/wiki/pectra-faq.md index c8181d99..26e58996 100644 --- a/docs/wiki/pectra-faq.md +++ b/docs/wiki/pectra-faq.md @@ -1,3 +1,5 @@ + + # Pectra FAQ **What is Pectra?** @@ -6,11 +8,13 @@ Pectra, (Prague - Electra), is the next network upgrade scheduled for Ethereum. **Who is this guide for?** For App developers, Stakers and Node operators who are interested in the upcoming Pectra upgrade. -Overall ---- +## Overall + **FAQ**: -#### **Q:** What is Prague/Electra? -**A:** Prague and Electra are the names of the upcoming Ethereum hard fork. The included EIPs can be found [here](https://eips.ethereum.org/EIPS/eip-7600). Prague is the name of the fork on the execution client side, and Electra is the upgrade name on the consensus layer client side. + +### **Q:** What is Prague/Electra? + +**A:** Prague and Electra are the names of the upcoming Ethereum hard fork. The included EIPs can be found [here](https://eips.ethereum.org/EIPS/eip-7600). Prague is the name of the fork on the execution client side, and Electra is the upgrade name on the consensus layer client side. There are 3 main features along with some smaller EIPs included in Pectra. They are: [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) also known as Max effective balance (MaxEB), [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702), and [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) also known as Execution Layer triggered exits. @@ -20,57 +24,75 @@ With [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702), the user wallet would The [Execution Layer (EL) triggered exits](https://eips.ethereum.org/EIPS/eip-7002) is a new feature that allows the withdrawal address set in the `0x01` or `0x02` withdrawal credential to perform exits directly in EL, without relying on pre-signed BLS keys. This feature is mainly targeted at staking pools, enabling them to use smart contracts to fully control the validator lifecycle. +## Users/Devs + More resources and data on Pectra can be found at https://pectra.wtf/. -Users/Devs ---- **FAQ**: -#### **Q:** What is EIP-7702 and how does it relate to Account abstraction? + +### **Q:** What is EIP-7702 and how does it relate to Account abstraction? + While [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) isn’t quite account abstraction, it does provide execution abstraction, i.e adds additional functionality to externally owned accounts (EOAs. This allows your EOA to do things like send transaction batches and delegate to other cryptographic key schemes, like passkeys. It does this by setting the code associated with the EOA to a protocol-level proxy designation. A full specification can be found [here](https://eips.ethereum.org/EIPS/eip-7702). It introduces a new transaction type that temporarily authorizes specific contract code for an EOA during a single transaction, allowing EOAs to function as smart contract accounts. This enables several use cases for users, including transaction batching, gas sponsorship, and privilege de-escalation. #### **Q:** Where can I find the specification for EIP-7702? How can I use it as a wallet dev? + The specification for [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) can be found [here](https://eips.ethereum.org/EIPS/eip-7702). To get started as a wallet developer, you'll need to determine a smart contract wallet core to use with the EOA. Pay close attention to how the wallets [should be initialized](https://eips.ethereum.org/EIPS/eip-7702#front-running-initialization). Once you have determined the core wallet to use, you'll need to expose behavior like `eth_sendTransaction` and other custom methods for [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) specific functionality like batch transactions. #### **Q:** As a user, how can I use EIP-7702? -To get the [benefits](https://ethereum.org/en/roadmap/account-abstraction/) of EIP-7702, which is an early attempt at account abstraction, you need to use a wallet that supports it. Once your wallet of choice supports account abstraction, you will be able to make use of it. + +To get the [benefits](https://ethereum.org/en/roadmap/account-abstraction/) of EIP-7702, which is an early attempt at account abstraction, you need to use a wallet that supports it. Once your wallet of choice supports account abstraction, you will be able to make use of it. #### **Q:** Do I have to wait for my wallet to support EIP-7702? + Unfortunately yes, until your wallet integrates [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) it will not be possible to make use of the new functionalities it provides. #### **Q:** What do I need to know about EIP-7702 as a smart contract dev? + As a smart contract developer, you should know that after Prague the majority of users on Ethereum will now be able to interact with the chain in more complex ways than were feasible before. Many standards have been developed to work around the limitations of EOAs, such as [ERC-2612 Permit](https://eips.ethereum.org/EIPS/eip-2612). #### **Q:** What do I need to know about EIP-7702 as a security engineer/auditor? + As a security engineer / auditor, you must be aware that the previous assumption that a frame cannot be reentered when `msg.sender == tx.origin` no longer holds. This means the check is no longer suitable for reentrancy guards or flash loan protection. -#### **Q:** What does the EIP-2537 BLS precompile add in Pectra? -[EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) introduces operations on the BLS12-381 curve as precompiles to Ethereum. BLS12-381 precompiles enables efficient BLS signature verification. This is useful for applications where multiple signatures need to be verified, such as proof-checking systems. +#### **Q:** What does the EIP-2537 BLS precompile add in pectra? + +[EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) introduces operations on the BLS12-381 curve as precompiles to Ethereum. BLS12-381 precompiles enables efficient BLS signature verification. This is useful for applications where multiple signatures need to be verified, such as proof-checking systems. #### **Q:** How can I use the `BLOCKHASH` OPCODE? -The last 8192 blockhash are now stored and available for access in the `BLOCKHASH` system contract. The `BLOCKHASH` opcode semantics remains the same as before, just that the block number can now be specified in big-endian encoding. The blockhash system contract can also be called via the ethCall RPC method, with the block number in question being passed as calldata. + +The last 8192 blockhash are now stored and available for access in the `BLOCKHASH` system contract. The `BLOCKHASH` opcode semantics remains the same as before, just that the block number can now be specified in big-endian encoding. The blockhash system contract can also be called via the ethCall RPC method, with the block number in question being passed as calldata. #### **Q:** What are system contracts? + System contracts are interfaces defined as contracts, which are essential for certain Ethereum functions to occur. The contract approach is used instead of each client implementing the logic in order to simplify maintenance as well as allow for upgrades in the future with minimal overhead. ---- +## Stakers + **FAQ**: -#### **Q:** What changes about deposits? -The process of making and submitting deposits will not change. You can continue to use the same tools as earlier. However, the mechanism for processing deposits on Ethereum will undergo an improvement. This improvement is described by [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110) and will allow almost immediate processing of deposits. + +### **Q:** What changes about deposits? + +The process of making and submitting deposits will not change. You can continue to use the same tools as earlier. However, the mechanism for processing deposits on Ethereum will undergo an improvement. This improvement is described by [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110) and will allow almost immediate processing of deposits. #### **Q:** How long do I have to wait for my deposits to be included? -After the changes included in [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110), the deposits should show up in <20 minutes during regular finalizing periods of the chain. However, there is still a deposit queue for your validator to be activated, the EIP merely ensures that the deposit is seen faster and more securely by the chain and does not influence how quickly a validator is activated. + +After the changes included in [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110), the deposits should show up in <20 minutes during regular finalizing periods of the chain. However, there is still a deposit queue for your validator to be activated, the EIP merely ensures that the deposit is seen faster and more securely by the chain and does not influence how quickly a validator is activated. #### **Q:** What are `0x02` withdrawal credentials? -Up until the Pectra fork, Ethereum accepted two types of withdrawal credentials: `0x00` and `0x01`. The main change is that `0x01` contain an execution layer address that receives partial and full withdrawals. The `0x02` withdrawal credentials are a new type of withdrawal credentials that will be introduced in the Pectra upgrade. The `0x02` withdrawal credentials will allow for maximum effective balances of >32 ETH and <2048ETH either via larger deposits or via consolidations of existing validators. The `0x02` withdrawal credentials also enable the ability to exit validators with the execution layer withdrawal address, enabling complete control of the validator via the execution layer. + +Up until the Pectra fork, Ethereum accepted two types of withdrawal credentials: `0x00` and `0x01`. The main change is that `0x01` contain an execution layer address that receives partial and full withdrawals. The `0x02` withdrawal credentials are a new type of withdrawal credentials that will be introduced in the Pectra upgrade. The `0x02` withdrawal credentials will allow for maximum effective balances of >32 ETH and <2048ETH either via larger deposits or via consolidations of existing validators. The `0x02` withdrawal credentials also enable the ability to exit validators with the execution layer withdrawal address, enabling complete control of the validator via the execution layer. #### **Q:** How do I switch to `0x02` withdrawal credentials? How does it help me? + There are 2 ways in which a validator can have `0x02` withdrawal credentials: + 1. When you deposit a new validator with `0x02` withdrawal credentials 2. When you consolidate existing validators to `0x02` withdrawal credentials by sending a transaction to consolidation request address While both the `0x01` and `0x02` withdrawal credential enables you to control the validator exit from your execution layer address, only `0x02` allows the validator to possess a maximum effective balances of >32 ETH and <2048ETH. This means you can run one validator and have a single validator with a balance of up to 2048 ETH. #### **Q:** Can I deposit a validator with `0x02` credentials directly? + Yes, you can deposit a validator with `0x02` credentials directly. This will allow you to have a single validator with a balance of up to 2048 ETH. To try out deposits right now, you can use the [`staking-cli`](https://github.com/eth-educators/ethstaker-deposit-cli) from ethstaker, which already supports `0x02` credentials via the `--compounding` flag. You may also specify deposit amounts higher or lower than 32 ETH via the `--amount` flag. @@ -80,15 +102,19 @@ The generated deposit data files can then be sent to the networks launchpad to d For the testnets, you can use the [`Submit Deposits`](https://dora.mekong.ethpandaops.io/validators/deposits/submit) page in Dora to submit the generated deposits. Support for the official launchpad is coming in the next months too. #### **Q:** I have a validator with `0x00` credentials, how do I move to `0x02`? + There is no direct way to move from `0x00` to `0x02`. You will need to first move your validator from `0x00` to `0x01` withdrawal credentials with a BLS change operation, then consolidate your validators to `0x02` withdrawal credentials. You can alternatively exit the validator and make a new deposit with `0x02` withdrawal credentials during the deposit. #### **Q:** I have a validator with `0x01` credentials, how do i move to `0x02`? + You can consolidate your validator to `0x02` withdrawal credentials via a self consolidation with both, the source and target pointing to your validator. This will change your withdrawal credentials to `0x02` and allows you to have a single validator with a balance of up to 2048 ETH. For new deposits, the `staking-cli` will support the `0x02` withdrawal credentials in the coming months before the Pectra mainnet Ethereum fork. #### **Q:** What is MaxEB? + [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) or MaxEB increases the `MAX_EFFECTIVE_BALANCE` to 2048 ETH while keeping the minimum staking balance at 32 ETH. Before MaxEB, any entity that wanted to contribute a large amount of ETH to consensus had to spin up multiple validators because each was capped at a maximum of 32 ETH. [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) will allow large stake operators to consolidate their ETH into fewer validators, using the same stake with up to 64 times less individual validators. It also allows solo stakers' ETH to be compounded into their existing validator and contribute to their rewards without having to use the exact validator amount. For example, 35 ETH will be considered the validator's effective balance by the protocol, instead of leaving out 3 ETH ineffective and waiting till 64 ETH for 2 validators. Overall, consolidating validators will allow for fewer attestations in the consensus network and easing the bandwidth usage by nodes. #### **Q:** How do I consolidate my validators? + To consolidate your validators, you first need to ensure that both the source and target validators have either `0x01` or `0x02` credentials assigned. Validators with withdrawal credentials using the `0x00` prefix or pointing to different execution layer addresses cannot be consolidated. @@ -101,22 +127,29 @@ A consolidation where the source and target point to the same validator is calle In this situation, the validator will not be exited, and no funds will be moved. It will simply be assigned 0x02 credentials. #### **Q:** What are the validator requirements for consolidation? + The validators must be active on the beacon chain at the time of consolidation execution. This means they cannot be exiting, pending activation, or in any state other than active. Both the source and target validators must have `0x01` or `0x02` withdrawal credentials pointing to the same withdrawal address. If these two conditions are met, the validators may be consolidated. #### **Q:** What happens to my original, individual validators? -During a consolidation, there is a source and a target validator. The source validator is completely exited and the balance is then transferred to the target validator. The target validator will have the sum of the balances of the source validator and the target validator and will continue to perform its beacon chain duties without any change. + +During a consolidation, there is a source and a target validator. The source validator is completely exited and the balance is then transferred to the target validator. The target validator will have the sum of the balances of the source validator and the target validator and will continue to perform its beacon chain duties without any change. #### **Q:** When does the balance appear on my consolidated validator? -Once the source validator has completely exited and ceased performing all duties, the balance will be credited to the target validator. + +Once the source validator has completely exited and ceased performing all duties, the balance will be credited to the target validator. + #### **Q:** What happens if I consolidate one validator with `0x01` and another with `0x00` credentials? + The consolidation request will be deemed invalid and will not be processed. It will fail if both validators don't contain a `0x01` withdrawal credential with the exact same execution layer address. #### **Q:** What happens if I consolidate validators that are exited? + The consolidation will fail as the validators must be active on the beacon chain at the time of consolidation execution. #### **Q:** How can I partially withdraw some ETH from my `0x02` validator? + You can issue a EL triggered partial withdrawal to withdraw some ETH from the `0x02` validator. Send a transaction to the withdrawal system contract (pending address to be finalized when Electra goes live on mainnet) with your validator `pubkey` and the `amount` (a positive non-zero Gwei amount). As with consolidations, this transaction must be sent from the withdrawal address set in your validator's withdrawal credentials. @@ -125,20 +158,26 @@ We expect this functionality to be added to various tools in the coming months. For testing right now, you can use the [Submit Withdrawals](https://dora.mekong.ethpandaops.io/validators/submit_withdrawals) page in Dora. Connect with the wallet that is used as the withdrawal address for your validators, and you should be able to select between your validators and craft an appropriate withdrawal transaction. #### **Q:** How much ETH can I withdraw from my validator? + You can partially withdraw the portion above the full validator amount, as long as the validator contains >32 ETH at the time of withdrawal completion. For example, if you currently have 34 ETH and request a partial withdrawal, a maximum of 2 ETH can be withdrawn. You may also decide to request a full withdrawal by specifying an amount of `0` in the request. When sending such a full withdrawal request, your validator will be exited, and the full balance withdrawn. #### **Q:** What happens to the ETH balance if my validator has `0x02` credentials and goes below 32 ETH? + A normally behaved validator will not have its balance dropped below 32ETH even if you initiate a partial withdrawal request. This can only be achieved if validator receives penalty. Nothing will happen except reduced rewards. However if balance drops below 16ETH, the validator will be exited and the balance will be transferred to the execution layer withdrawal address. #### **Q:** What happens to the ETH balance if my validator has `0x02` credentials and goes above 2048 ETH? + The balance will continue to collect at the validator until the next partial withdrawal is triggered. The validator will however contain a maximum effective balance of 2048 ETH, the remaining balance will be considered ineffective in the beacon chain. #### **Q:** What balances between 32ETH and 2048ETH can I earn on? + The effective balance increments 1 ETH at a time. This means the accrued balance needs to meet a threshold before the effective balance changes. E.g, if the accrued balance is 33.74 ETH, the effective balance will be 33 ETH. If the accrued balance increases to 33.75 ETH, then the effective balance will also be 33 ETH. Consequently, an accrued balance of 34.25 ETH would correspond to an effective balance of 34 ETH. #### **Q:** Can I top up ETH in my `0x02` validator? + You can either consolidate a validator into the `0x02` validator to increase its balance or make a fresh deposit. #### **Q:** What happens to the ETH balance if I consolidate and my validator has `0x02` credentials and the total balance goes above 2048 ETH? + The balance will continue to collect at the validator until the next partial withdrawal is triggered. The validator will however contain a maximum effective balance of 2048 ETH, the remaining balance will be considered ineffective in the beacon chain. The portion over 2048ETH will be withdrawn when partial withdrawal sweep comes. diff --git a/docs/wiki/wiki-intro.md b/docs/wiki/wiki-intro.md index 843308ab..5f9fd2db 100644 --- a/docs/wiki/wiki-intro.md +++ b/docs/wiki/wiki-intro.md @@ -1,14 +1,15 @@ + + # Welcome to Protocol Wiki -Protocol Wiki is a learning resource for anyone diving into Ethereum protocol, its development and research. It has been created during EPF Study Group as collaborative effort to create a contextual documentation of important domains of the protocol. +Protocol Wiki is a learning resource for anyone diving into Ethereum protocol, its development and research. It has been created during EPF Study Group as collaborative effort to create a contextual documentation of important domains of the protocol. -## Using the wiki +## Using the wiki -The wiki structure follows the design of Ethereum protocol. It's divided into sections mapping to important areas of the protocol and its development. Each section consists of pages covering its most relevant parts and provides a technical overview. Sections and its topics can be navigated in the left sidebar. +The wiki structure follows the design of Ethereum protocol. It's divided into sections mapping to important areas of the protocol and its development. Each section consists of pages covering its most relevant parts and provides a technical overview. Sections and its topics can be navigated in the left sidebar. -> Wiki pages provide a context and explanation but also serve as a collection of external resources covering the topic. Use the resource section at the bottom of each page to learn more about the topic. +> Wiki pages provide a context and explanation but also serve as a collection of external resources covering the topic. Use the resource section at the bottom of each page to learn more about the topic. -To learn about a specific topic, identify what section it belongs to or use the search bar to find occurrences of the relevant term. If there is an important topic currently missing, open an [issue](https://github.com/eth-protocol-fellows/protocol-studies/issues) to let other know. For contributing yourself, check [contribution guidelines](/contributing.md) first. +To learn about a specific topic, identify what section it belongs to or use the search bar to find occurrences of the relevant term. If there is an important topic currently missing, open an [issue](https://github.com/eth-protocol-fellows/protocol-studies/issues) to let other know. For contributing yourself, check [contribution guidelines](/contributing.md) first. The wiki is written by a community of volunteers and continues to grow. Many pages are marked as _stubs_ and don't yet fully cover the topic. -