LedgerHQ / app-ethereum

Ethereum wallet application for Ledger devices
Apache License 2.0
196 stars 218 forks source link

Add BLS to ETH1 change request #416

Open mbaranovski opened 1 year ago

mbaranovski commented 1 year ago

Description

I staked ETH and set the withdrawal credentials to the BLS ones using Ledger device. Shanghai upgrade is approaching, in order to withdraw the funds from my validators I need to update withdrawal credentials from BLS to ETH1. There are some existing guides like this one, but how do I do it on the ledger device?

Your environment

loosferatu commented 1 year ago

@jmspinelli Yes this is just for the address conversion. I assume (and hope) that withdrawals will be something we can easily do from the Stakefish interface after the upgrade.

loosferatu commented 1 year ago

@yzhuang Could you clarify for us who are stakefish users what is happening behind the scenes for the option I'm seeing on my stakefish dashboard "Exit without ETH1 credentials"? I think a lot of us assumed that we needed to have the credentials changed before we would be able to exit.

mbaranovski commented 1 year ago

@loosferatu Using Exit without ETH1 credentials will exit your validator and it will stop validating, earning protocol rewards and the validator will be removed from the Stakefish MEV/Fee rewards pool. You will still have to update your withdrawal credentials to ETH1 in order to withdraw the balance and protocol rewards (you can update the credentials before or after exiting, it will work in both cases). The only reason why you'd want to exit your validator before setting your ETH1 credentials is to shorten the time for your validator to fully withdraw your funds (validator must be exited in order for it to be queued up for full withdrawal - don't mistake it with partial withdrawals).

CleanShot 2023-04-13 at 18 02 41

johanneskares commented 1 year ago

Push for this issue! Naturally, I don't want to type in my Ledger Seed Phrase anywhere.

seaniesean commented 1 year ago

hope the ledger team can push this soon, staked my eth with stake fish and would love to perform the partial withdrawal without exposing my seed phrase

fanaticalfishing commented 1 year ago

@adrienlacombe-ledger Unfortunately the way with Ethdo isn't working properly (I try'd it with only menomic-ledger-seedphrase on my airgapped laptop) like @jmspinelli told. I was a bit shocked as a non-tech expert when I got the message from ethdo offline: no validator could be found to this mnemonic, it searched 1024 indices. So I used the Ledger Recovery Check app to check my phrase, and at least withdrawal credentials are on my ledger.

I am having the same problem. How did you finally fix it?

ksheni56 commented 1 year ago

@fanaticalfishing I used the deposit stakingCLI tool.

fanaticalfishing commented 1 year ago

.

Unfortunately it doesn't work for me. I also tried the eip-2333tool and ethdo

jmspinelli commented 1 year ago

So has anyone been able to fully withdraw yet? @loosferatu I know you successfully changed the address and was just curious if you were able to process the exit as well?

loosferatu commented 1 year ago

@jmspinelli yes, the stakefish dashboard allows validators to process an exit even if the withdrawal credentials haven't been updated yet. The exit process is currently taking about one week. Since my withdrawal credentials have been updated I'll be able to enter the withdrawal queue after the exit process is complete.

yzhuang commented 1 year ago

So has anyone been able to fully withdraw yet? @loosferatu I know you successfully changed the address and was just curious if you were able to process the exit as well?

Yes, we (stakefish) have Ledger users who have fully withdrawn using the workarounds mentioned before. Not officially supported procedures by stakefish, but they worked.

foxfortventures commented 1 year ago

The fact that this tool doesn't already exist and will be released "sometime in June maybe lol! don't like it build yourself :-D" is absolutely insane to me. How is this real. I can't believe I'm in crypto, jesus christ.

seaniesean commented 1 year ago

yeah, it's pretty disappointing Ledger wasn't prepared for the withdrawal feature. The Shanghai update was hyped for months through multiple testnet. it's pretty unacceptable to think that the leading cold storage device maker wasn't following the development of the 2nd largest cryptocurrency

yzhuang commented 1 year ago

ho are stakefish users what is happening behind the scenes for the option I'm seeing on my stakefish dashboard "Exit without ETH1 credentials"? I think a lot of us assumed that we needed to have the credentials changed before we would be able to exit.

@loosferatu Exit and withdrawal are two separate concepts. Even before Shapella, you could exit a validator to stop validating, but you simply could not withdraw the ethers. Exiting was useful even before Shapella for people who wanted to stop operating their validators without getting penalties.

johanneskares commented 1 year ago

@loosferatu I think you can't use stakingCLI because I couldn't see a option to choose random derivation path. You'll need ethdo with eip2333 tool, because stakefish uses non-standard path like allnodes did. I hope this will work for you.

  1. Prepare offline file: ./ethdo validator credentials set --prepare-offline (optionally, you can use --connection to set your own endpoint, otherwise it defaults to the Attestant RPC endpoint).
  2. Use eip2333-tool (with offline computer) and generate private key using ledger mnemonic + passphrase with the non-standard derivation address: m/12381/3600/0/0 -->Put 0x before the derived Private Ley, called Secret Key under the m/0 path of Derived Keys at the bottom (https://github.com/iancoleman/eip2333-tool/releases/tag/0.2.0)
  3. Use the above derived private key in ethdo using an offline computer: ./ethdo validator credentials set --offline (optional, use if doing offline) --private-key=0x0123...cdef --withdrawal-address=0x0123…cdef --validator=123 (optional, should automatically find all validators without this and put in a single json. Use if you need individual jsons for something like CLWP)
  4. This will prepare the bls2execution json file for those validators called change-operations.json. Can then submit this either via beaconcha.in (https://beaconcha.in/tools/broadcast) or your own node CL

I can confirm this approach worked for me using stakefish and the ledger seed phrase. I used a separate offline computer that I completely wiped after generating the message and reconnecting it to the internet. You copy the generated JSON to a drive and it is pretty easy to verify to make sure the correct withdrawal address is used.

fanaticalfishing commented 1 year ago

I can confirm this approach worked for me using stakefish and the ledger seed phrase. I used a separate offline computer that I completely wiped after generating the message and reconnecting it to the internet. You copy the generated JSON to a drive and it is pretty easy to verify to make sure the correct withdrawal address is used.

It absolutely is not working for me. I have tried the menomonic with staking-deposit-cli I have tried using the private key generated by the eip2333-tool with ethdo I have tried the using the private key treated by ethdo with ethdo

all the errors say that it can not find the validators

The validators are in the offline-prepartion.json because I found them with grep. The mneomonic for the ledger is correct because I checked with the Ledger tool.

Which Ledger did you use please? I used the Ledger X.

loosferatu commented 1 year ago

@fanaticalfishing are you trying to withdraw a stakefish validator?

johanneskares commented 1 year ago

I can confirm this approach worked for me using stakefish and the ledger seed phrase. I used a separate offline computer that I completely wiped after generating the message and reconnecting it to the internet. You copy the generated JSON to a drive and it is pretty easy to verify to make sure the correct withdrawal address is used.

It absolutely is not working for me. I have tried the menomonic with staking-deposit-cli I have tried using the private key generated by the eip2333-tool with ethdo I have tried the using the private key treated by ethdo with ethdo

all the errors say that it can not find the validators

The validators are in the offline-prepartion.json because I found them with grep. The mneomonic for the ledger is correct because I checked with the Ledger tool.

Which Ledger did you use please? I used the Ledger X.

I think you might have the highest chance playing with the derivation path. For me picking m/12381/3600/i/0 worked.

Screenshot 2023-04-19 at 21 19 50

Make sure you enter all leters of theBIP39 Mnemonic words into the tool. Some hardware metal storage options only include the first four letters.

loosferatu commented 1 year ago

@johanneskares +1 it didn't work for me until I entered the full words. I had to use a site like this to figure them out since I had only saved the first four in my backup- https://www.blockplate.com/pages/bip-39-wordlist

Manumolero commented 1 year ago

Hello guys, I hope that you can help me? i have two questions. I have one validator(ledger supported) in stakefish so, 1) I need 3 ETH of my rewards no put my second. But I need my new BSL. 2)If I put my second validator, I will receive the new credentials?

Thanks.

dmdm09 commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

adrienlacombe commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

ferrucc10 commented 1 year ago

@loosferatu I think you can't use stakingCLI because I couldn't see a option to choose random derivation path. You'll need ethdo with eip2333 tool, because stakefish uses non-standard path like allnodes did. I hope this will work for you.

  1. Prepare offline file: ./ethdo validator credentials set --prepare-offline (optionally, you can use --connection to set your own endpoint, otherwise it defaults to the Attestant RPC endpoint).
  2. Use eip2333-tool (with offline computer) and generate private key using ledger mnemonic + passphrase with the non-standard derivation address: m/12381/3600/0/0 -->Put 0x before the derived Private Ley, called Secret Key under the m/0 path of Derived Keys at the bottom (https://github.com/iancoleman/eip2333-tool/releases/tag/0.2.0)
  3. Use the above derived private key in ethdo using an offline computer: ./ethdo validator credentials set --offline (optional, use if doing offline) --private-key=0x0123...cdef --withdrawal-address=0x0123…cdef --validator=123 (optional, should automatically find all validators without this and put in a single json. Use if you need individual jsons for something like CLWP)
  4. This will prepare the bls2execution json file for those validators called change-operations.json. Can then submit this either via beaconcha.in (https://beaconcha.in/tools/broadcast) or your own node CL

This guide works pretty well for StakeFish validators, I'd just like to add:

Thanks again man!

dmdm09 commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

adrienlacombe commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

mbaranovski commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

Can Ledger provide an official work-around for Nano S users then please?

adrienlacombe commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

Can Ledger provide an official work-around for Nano S users then please?

No, sorry, there won't be one right now, except maybe buying a X... I keep you posted if I ever hear we are going to support the S in the future.

SmellyFreckle commented 1 year ago

Will the Nano X BLS functionality require the latest firmware 2.2.1 ?

adrienlacombe commented 1 year ago

Will the Nano X BLS functionality require the latest firmware 2.2.1 ?

Nope

jmspinelli commented 1 year ago

Hi Adrien,

I think all of us have been pretty patient in waiting for the update from Ledger for the BLS conversion. Now that June (the proposed ETA) is nearly here, I think it would be fair to everybody to have a status update with a little more detail.

Any insights on how the upgrade is going, what features are left, any roadblocks, etc would be appreciated by the broader Ledger community.

Joe

adrienlacombe commented 1 year ago

Hi Adrien,

I think all of us have been pretty patient in waiting for the update from Ledger for the BLS conversion. Now that June (the proposed ETA) is nearly here, I think it would be fair to everybody to have a status update with a little more detail.

Any insights on how the upgrade is going, what features are left, any roadblocks, etc would be appreciated by the broader Ledger community.

Joe

The security audit has been done and now some code needs to be updated by the devs, we are almost there.

dmdm09 commented 1 year ago

Just checking in, now that's it's June. Is this feature expected in the early or later part of June?

adrienlacombe commented 1 year ago

Just checking in, now that's it's June. Is this feature expected in the early or later part of June?

looking good for early June :)

0x-Stoic commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

Can Ledger provide an official work-around for Nano S users then please?

No, sorry, there won't be one right now, except maybe buying a X... I keep you posted if I ever hear we are going to support the S in the future.

hmm... dont see mention of Nano S Plus. What about Nano S Plus? or will it only work with the Nano X?

adrienlacombe commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

Can Ledger provide an official work-around for Nano S users then please?

No, sorry, there won't be one right now, except maybe buying a X... I keep you posted if I ever hear we are going to support the S in the future.

hmm... dont see mention of Nano S Plus. What about Nano S Plus? or will it only work with the Nano X?

Only Nano X to begin with

0x-Stoic commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

Can Ledger provide an official work-around for Nano S users then please?

No, sorry, there won't be one right now, except maybe buying a X... I keep you posted if I ever hear we are going to support the S in the future.

hmm... dont see mention of Nano S Plus. What about Nano S Plus? or will it only work with the Nano X?

Only Nano X to begin with

Ok. If Nano X is some time in June, when Nano S Plus? Thanks

adrienlacombe commented 1 year ago

Hi Ledger Team - Any updates on this BLS functionality to be able to update withdrawal credentials?

we are on track

Can you please confirm whether this will or won't be available on the Ledger Nano S? I was reading that it might require buying a Nano X because the Nano S will not be capable of handling.

No plan to have it on Ledger Nano S currently, only Ledger Nano X.

Can Ledger provide an official work-around for Nano S users then please?

No, sorry, there won't be one right now, except maybe buying a X... I keep you posted if I ever hear we are going to support the S in the future.

hmm... dont see mention of Nano S Plus. What about Nano S Plus? or will it only work with the Nano X?

Only Nano X to begin with

Ok. If Nano X is some time in June, when Nano S Plus? Thanks

no ETA yet for S+ sorry

adrienlacombe commented 1 year ago

Thank you everyone following this issue for your patience, the technical tools are now released, please check https://github.com/LedgerHQ/staking-deposit-cli for the whole procedure and https://github.com/LedgerHQ/app-btec for the Nano app. I can't close this issue but please, let's now take the discussion in one of these repo in case of any follow up needed.

0x-Stoic commented 1 year ago

Thank you everyone following this issue for your patience, the technical tools are now released, please check https://github.com/LedgerHQ/staking-deposit-cli for the whole procedure and https://github.com/LedgerHQ/app-btec for the Nano app. I can't close this issue but please, let's now take the discussion in one of these repo in case of any follow up needed.

Congrats. Now would be really helpful to the community if Ledger releases a version for the less expensive S+ and/or the S. Forcing people to buy an Nano X comes across as a bit of money grab

adrienlacombe commented 1 year ago

Thank you everyone following this issue for your patience, the technical tools are now released, please check https://github.com/LedgerHQ/staking-deposit-cli for the whole procedure and https://github.com/LedgerHQ/app-btec for the Nano app. I can't close this issue but please, let's now take the discussion in one of these repo in case of any follow up needed.

Congrats. Now would be really helpful to the community if Ledger releases a version for the less expensive S+ and/or the S. Forcing people to buy an Nano X comes across as a bit of money grab

Yes I understand, I'll ask if there is an ETA for the firmware upgrade.

jmspinelli commented 1 year ago

Thanks Adrien, kudos on sticking to the June timeframe.

So with this release @yzhuang I'm assuming now Stakefish is integrating the new native Ledger BLS conversion method into Stakefish's withdrawals page?

jaschlan commented 1 year ago

Hello,

I have been following your tutorial and have done everything as recommended. However, I've come across an issue that I'm unable to resolve. I'm not a programmer and my understanding of these topics is relatively limited, so I appreciate any assistance you can provide.

Attached is a screenshot of the problem that has arisen.

Ledger BLS

Could someone please help me understand what's happening and guide me through the steps to resolve this?

Thank you in advance for your support.

Best regards

Thank you everyone following this issue for your patience, the technical tools are now released, please check https://github.com/LedgerHQ/staking-deposit-cli for the whole procedure and https://github.com/LedgerHQ/app-btec for the Nano app. I can't close this issue but please, let's now take the discussion in one of these repo in case of any follow up needed.

Congrats. Now would be really helpful to the community if Ledger releases a version for the less expensive S+ and/or the S. Forcing people to buy an Nano X comes across as a bit of money grab

adrienlacombe commented 1 year ago

Hello,

I have been following your tutorial and have done everything as recommended. However, I've come across an issue that I'm unable to resolve. I'm not a programmer and my understanding of these topics is relatively limited, so I appreciate any assistance you can provide.

Attached is a screenshot of the problem that has arisen.

Ledger BLS

Could someone please help me understand what's happening and guide me through the steps to resolve this?

Thank you in advance for your support.

Best regards

Thank you everyone following this issue for your patience, the technical tools are now released, please check https://github.com/LedgerHQ/staking-deposit-cli for the whole procedure and https://github.com/LedgerHQ/app-btec for the Nano app. I can't close this issue but please, let's now take the discussion in one of these repo in case of any follow up needed.

Congrats. Now would be really helpful to the community if Ledger releases a version for the less expensive S+ and/or the S. Forcing people to buy an Nano X comes across as a bit of money grab

Are you running this form a VM? Make sure the VM has access to the device.

SmellyFreckle commented 1 year ago

I had this too, the Nano X is not accessible to the program. Install Ledger Live on Linux and follow command line instructions. In particular, number 6. Worked for me. I now have a 0x01 set and withdrawals flowing.

https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true

leocaval commented 1 year ago

hi @adrienlacombe-ledger , thanks for all the updates. Unfortunately, I too had issues trying to follow the instructions, I can't run the Linux VM on my Windows machine. Is there a Windows based app (batch or executable file, instead of the .sh) being developed as well? If so, what is the estimated date of release please?

jaschlan commented 1 year ago

Hello, I have been following your tutorial and have done everything as recommended. However, I've come across an issue that I'm unable to resolve. I'm not a programmer and my understanding of these topics is relatively limited, so I appreciate any assistance you can provide. Attached is a screenshot of the problem that has arisen. Ledger BLS Could someone please help me understand what's happening and guide me through the steps to resolve this? Thank you in advance for your support. Best regards

Thank you everyone following this issue for your patience, the technical tools are now released, please check https://github.com/LedgerHQ/staking-deposit-cli for the whole procedure and https://github.com/LedgerHQ/app-btec for the Nano app. I can't close this issue but please, let's now take the discussion in one of these repo in case of any follow up needed.

Congrats. Now would be really helpful to the community if Ledger releases a version for the less expensive S+ and/or the S. Forcing people to buy an Nano X comes across as a bit of money grab

Are you running this form a VM? Make sure the VM has access to the device.

Yes that was the problem, I solved it with this command, with that it wasn`t necessary to install Ledger Live on Ubuntu $ wget -q -O - https://raw.githubusercontent.com/LedgerHQ/udev-rules/master/add_udev_rules.sh | sudo bash

adrienlacombe commented 1 year ago

hi @adrienlacombe-ledger , thanks for all the updates. Unfortunately, I too had issues trying to follow the instructions, I can't run the Linux VM on my Windows machine. Is there a Windows based app (batch or executable file, instead of the .sh) being developed as well? If so, what is the estimated date of release please?

Let me check

mbaranovski commented 1 year ago

@adrienlacombe-ledger could Ledger please provide pre-built binaries + checksums for most common architectures? Like:

CleanShot 2023-06-14 at 20 06 07@2x

That would make it much easier for less technical individuals to perform the BLS to ETH1 change. Thank you!

jmspinelli commented 1 year ago

Also, is anyone from stake fish on this thread? What is the expected timeframe for integrating this on stake fish’s user interface website? Looks like theres already a placeholder tab.

Manumolero commented 1 year ago

Good evening team, I would like to know if there is any friendly way to change my withdrawal credentials (Ledger) I have a Ledger NANO X, I tried but it is very difficult for me, isn't there any video or an easy way that I can change the credentials? I don't understand the github forum and no one can comment or help in a correct way. I hope for a solution, thank you.