Verify Pool withdrawal address

Learn about the steps to verify the destination address of the Pool funds after the withdrawal.


In March 2021, ETH2 specifications enabled support for validator withdrawals to ETH1 addresses. This has enabled StakeWise to process validator withdrawals directly into the smart contracts. As a result, the intermediate step of the Horcruxes signing on the withdrawal transaction is not needed anymore. Starting from April 19th 2021, the Pool Escrow contract will be used as a destination address for withdrawing the validator deposits and rewards in Phase 1.5 of Ethereum 2.0. The mechanism for withdrawal will rely on the burning of sETH2 and rETH2 in exchange for pooled ETH at a 1:1 ratio. The contract to support this mechanism will be deployed by the DAO closer to the Phase 1.5 launch.

In this guide, you will learn how to verify whether the withdrawal credentials used for the validator creation match the address of the Pool Escrow contract. As a result, you can be sure that staking is indeed trustless and no one can withdraw your funds to another address on your behalf.

Install ETH2 Deposit CLI

Download and install the latest release of the ETH2 Deposit CLI for your OS. You can also check our guides for installing the ETH2 Deposit CLI in Generating withdrawal credentials section.

Generate withdrawal credentials

The destination address for all the Pool Validators' funds is the Pool Escrow contract address: 0x2296e122c1a20Fca3CAc3371357BdAd3be0dF079. Once the withdrawal from the validators is initiated, the funds will go directly to this contract without an intermediate party involved. You can generate the withdrawal credentials for that contract with the following command:

Linux or MacOS
deposit.exe new-mnemonic --eth1_withdrawal_address=0x2296e122c1a20Fca3CAc3371357BdAd3be0dF079 --mnemonic_language=english --num_validators=1 --chain=mainnet
Linux or MacOS
./deposit new-mnemonic --eth1_withdrawal_address=0x2296e122c1a20Fca3CAc3371357BdAd3be0dF079 --mnemonic_language=english --num_validators=1 --chain=mainnet

After completing the generation steps you should see the validator_keys directory created. In that directory, you will see the deposit_data-<number>.json file. Once you open that file and search for the withdrawal_credentials field, you will see that it corresponds to the 0100000000000000000000002296e122c1a20fca3cac3371357bdad3be0df079 value:

"pubkey": "9803d818e3e9773947b98035727cd280f1620a0ce7e8b7061731a1e7494554f871b5968d56720bcb8a48e1c82eb7a937",
"withdrawal_credentials": "0100000000000000000000002296e122c1a20fca3cac3371357bdad3be0df079",

Those are the withdrawal credentials that will be used for the validator withdrawals after the Phase 1.5 release of Ethereum 2.0.

Verify Pool contract withdrawal credentials

In this step, we will verify whether the withdrawal credentials specified in the Pool contract correspond to those that we have generated in the previous step.

  1. Go to the Pool contract Etherscan page

  2. Click on the Contract tab

  3. Click on the Read as Proxy tab

  4. Click on the withdrawalCredentials at the bottom of the page

  5. Check whether the value corresponds to the credentials we have generated above (prefixed with 0x)

Pool withdrawal credentials

Congrats on completing this guide! You have now learned how to verify the Pool withdrawal address and can be sure of the non-custodial nature of staking with the StakeWise Pool.