Skip to content

Commit

Permalink
Merge branch 'main' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
taxmeifyoucan authored Nov 4, 2024
2 parents ca7b3a9 + eaad526 commit 8e7e094
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 27 deletions.
95 changes: 68 additions & 27 deletions docs/wiki/pectra-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ 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.

[toc]

Overall
---
**FAQ**:
Expand All @@ -18,52 +16,95 @@ Overall
---
**FAQ**:
#### **Q:** What is EIP-7702/Account abstraction?
While 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?
#### **Q:** How do I use account abstraction?
The specification for EIP-7702 is 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 specific functionality like batch transactions.

#### **Q:** As a user, how can I use account abstraction?
To get the [benefits](https://ethereum.org/en/roadmap/account-abstraction/) of 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?
#### **Q:** What do i need to know about EIP-7702 as a smart contract dev?
#### **Q:** What do i need to know as a security engineer/auditor?
#### **Q:** What does the BLS opcodes add in pectra?
#### **Q:** How can i use the `BLOCKHASH` OPCODE?
Unfortunately yes, until your wallet integrates 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 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?

#### **Q:** How can I use the `BLOCKHASH` OPCODE?

#### **Q:** What are system contracts?

## Stakers
---
**FAQ**:
#### **Q:** What changes about deposits?
#### **Q:** How long do I have to wait for deposits now?
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.

#### **Q:** What are `0x02` withdrawal credentials?
Withdrawal credentials with `0x02` prefix means it is a compounding credential. Its associated validator will have its max effective balance increased from 32ETH to 2048ETH and immune to partial withdrawal sweep unless the balance goes over 2048ETH. The word compounding comes from the idea the validator is earning compound interest (up to 2048ETH) since the reward one earns depends on its effective balance. Validators in Deneb are earning simple interest as any amount over 32ETH will be automatically withdrawn.
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?
Only `0x01` validators can switch to `0x02`. There are two ways:
1) Send a transaction to consolidation request address (pending address to be finalized when Electra goes live on mainnet) with `source_pubkey == target_pubkey`.
2) Send a transaction to consolidation request address with `source_pubkey != target_pubkey`. If target validator has `0x01` credential, it will automatically switch to `0x02`.
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

The `0x02` withdrawal credential enables you to control the validator exit from your execution layer address as well as allows you to possess 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, just make sure `withdrawal_credentials` in the deposit request have `0x02` prefix.
#### **Q:** I have a validator with `0x00` credentials, how do i move to `0x02`?
You will need to convert to `0x01` first using the existed mechanism (no new mechanism introduced in Electra on this regard) then switch to `0x02` from there.
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. The `staking-cli` will support the `0x02` withdrawal credentials in the coming months before the Pectra mainnet Ethereum fork.

#### **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 validators to `0x02` withdrawal credentials. This will allow you to have a single validator with a balance of up to 2048 ETH. The `staking-cli` will support the `0x02` withdrawal credentials in the coming months before the Pectra mainnet Ethereum fork.

#### **Q:** What is MaxEB?
MaxEB or the [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) 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 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 validator?
Send a transaction to consolidation request address with `source_pubkey != target_pubkey`. Note that both source and target validator must not have `0x00` credential and their exits have not been initiated.

#### **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 or pending activation or any other state besides active. Both the source and the target validators must have the same `0x01` withdrawal credentials. If these two conditions are met, then the validator may be consolidated.

#### **Q:** What happens to my original, individual validators?
The source validator after consolidation is processed will have its balance decreased to zero. Afterwards it will be ejected from the network since its balance drops below 16ETH.
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.

#### **Q:** When 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.
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 request will be deemed invalid and will not be processed.
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?
Send a transaction to partial withdrawal request address (pending address to be finalized when Electra goes live on mainnet) with `amount` being a positive non-zero Gwei amount.
#### **Q:** How much ETH can i withdraw from my validator?
For partial withdrawals on a `0x02` validator, only the portion over 32ETH can be withdrawn. For example, if you currently have 34ETH, and you request a partial withdrawal of 10ETH, only 2ETH will be withdrawn.
You can issue a EL triggered exit to partially withdraw some ETH from the `0x02` validator. Send a transaction to partial withdrawal request address (pending address to be finalized when Electra goes live on mainnet) with `amount` being a positive non-zero Gwei amount.

#### **Q:** How much ETH can I withdraw from my validator?
You can withdraw the portion above full validator amount, as long as the validator contains >32ETH at the time of completion of the withdrawal. For example, if you currently have 34ETH, and you request a partial withdrawal, 2ETH will be 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 you receive penalty. Nothing will happen except you will receive reduced rewards. If balance drops below 16ETH you will be ejected from the network.
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?
You will be subject to partial withdrawal sweep. Any portion over 2048ETH will be automatically withdrawn. Similar to how partial withdrawal sweep sweeps anything over 32ETH in Deneb.
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 1ETH at a time. This means the accrued balance needs to meet a threshold before the effective balance changes. e.g, If your balance is 33.74 effective balance will be 33. If you effective balance is 33.75 then your effective balance will be 34.

#### **Q:** Can I top up ETH in my `0x02` validator?
Yes.
#### **Q:** How can I top up ETH in my `0x02` validator?
There is no difference topping up a `0x01` vs `0x02` validator. Send a deposit transaction to deposit contract.
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 briefly goes over 2048ETH. The portion over 2048ETH will be withdrawn when partial withdrawal sweep comes.
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.
1 change: 1 addition & 0 deletions wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,7 @@ README
reciept
referrerpolicy
remerkleable
reentrancy
reorganisation
reorganisations
replayable
Expand Down

0 comments on commit 8e7e094

Please sign in to comment.