Pages:
Author

Topic: Fork November: Ledger wallet in "Legacy" or "Segwit" to get free coins? (Read 11322 times)

newbie
Activity: 9
Merit: 0
  • Some people here say, that for a replay of a transaction on the other side "someone else" need to take the transaction and broadcast it on the other side.
    This is not true.
    With the upcoming fork, the legacy chain and the Segwit2x chain broadcast their transactions to the same network. So, whenever you send a transaction (does not matter on which side), the transaction will always find a way to the nodes of the other chain (they are in the same network, they share the same transaction pool and so on). This causes always a replay of any transaction sent to the network.
  • The only save way to split the coins I know is with a time locked transaction.
    The idea here is, that after a split both chains will have a different hash rate. So it is very unlikely that they find new blocks with the same speed. The chain with more hash rate will find blocks faster than the one with less hash rate.

    Let's assume the chain splits at block height 1000 (I know the current block height is higher, but just as example).
    This means, that from block 1000 on, the blocks will look different.
    Lets say with hash rate of Chain A they will find blocks every 20 minutes, Chain B find blocks every 40 minutes. After 6 hours Chain A created 18 blocks (block height 1018) and Chain B created 9 blocks (block height 1009).

    Now comes the magic part.
    You create a transaction with the bitcoins you want to split and send them to a new address you created before (important, you need to send to an address you control the private key!!). The transaction should have the nLocktime Parameter set to the block height of the longer chain. In this example, set the nLocktime to 1018. This means, that this transaction is only allowed to add to a new block if the block height of the chain is equal or higher than 1018.
    Chain A has height 1018, so if you payed enough transaction fee, the transaction should be put into one of the next blocks.
    Chain B has height 1009, so this transaction with the locktime 1018 will not be mined into the next blocks. It will wait in the transaction pool until Chain B reaches height 1018.
    When this transaction got one confirmation on Chain A, you create a second transaction to a different address you created (also your own address), but this time without time lock.
    The second transaction will be picked up by Chain B and put into one of the next blocks. This makes the first unconfirmed transaction invalid on Chain B. The second transaction itself is invalid on Chain A, because the Bitcoins were already used in the first transaction.
    If everything was working fine, you should have your coins on a new address on Chain A and another new address on Chain B.
  • There is a chance, that this coin split might not work the first time.
    For example, if your first transaction did not get confirmed, before the second chain reach the nLockTime block height. In this case, you just wait again, until the two chains have a different height (maybe 10 to 20 blocks difference), and try again (that's the reason why you should always do this split and send the coins to your own addresses, so you can repeat in case it did not work the first time).

I hope that it is understandable what I wrote there  Smiley

One challenge is to create this nLocktime transaction, as I don't know any "easy" way to create them. Wallets usually don't support to create them directly...


Kogs, I see what you're getting at, but is it really necessary to timelock the transaction?  Assuming you're sending the coins to an address only you have the private key for, then the worst case if a replay occurs is that your coins get moved to an address you control and you could just start over, right?  Could you not just send the transaction, then once it arrives at its destination in one chain, safely send the same coins to a different address using the client for the other chain?  It's a race, and whoever wins will just ignore the second attempt as a double-spend.

Let me know if I missed something here.

ps. Sorry to revive an old post but I wanted to reference the original message.
full member
Activity: 196
Merit: 122
I've been in crypto not for long; in the beginning of september i bought some BTC, and put it on a Ledger.

My ledger asked me to choose between a segwit or legacy account, and i chose Segwit because word is that it's faster en has lower fees.
So now my balance shows up whenever i open my wallet as "Segwit", but when i choose "Legacy" the balance says 0 BTC.

With the upcoming fork in november, people are saying BTC holders get free coins of the newly created fork.

And I am wondering if it matters if the BTC wallet on the Ledger is in Legacy or Segwit mode to get these free new coins?
Because if it does,  i should transfer my BTC.

If searched the net like crazy, but nowhere i can find the answer to this...  Undecided


If i'm not mistaking, it shouldn't matter... Both legacy and segwit wallets use the same underlying blockchain (segwit was a soft fork). So, in case of a new hardfork, it shouldn't matter if you used a segwit or a legacy wallet, all transactions for both wallets were recorded on the same blockchain, and after the fork those transactions should be visible in the forked coin's wallet... Unless i'm missing something here.
Oh i see do you mean all the transaction was recorded in blockchain or in the other form of chain? I think this novermber fork for segwit is can help to make transaction much smoothly and lessen the delays of transaction also it will lessen the transaction fees in every chain wallet.
member
Activity: 392
Merit: 41
This text is irrelevant
I've been in crypto not for long; in the beginning of september i bought some BTC, and put it on a Ledger.

My ledger asked me to choose between a segwit or legacy account, and i chose Segwit because word is that it's faster en has lower fees.
So now my balance shows up whenever i open my wallet as "Segwit", but when i choose "Legacy" the balance says 0 BTC.

With the upcoming fork in november, people are saying BTC holders get free coins of the newly created fork.

And I am wondering if it matters if the BTC wallet on the Ledger is in Legacy or Segwit mode to get these free new coins?
Because if it does,  i should transfer my BTC.

If searched the net like crazy, but nowhere i can find the answer to this...  Undecided









It do not even matter were your bitcoin is at the time of the hardfork but you should know that even if your coins is in the online or offline or even exchangers site you will still get a free coins of the new coins after the splitting. This has happened during the last hardfork and I believe that the same thing will happen again.

However if your funds are held by online service it is up to that service to release your funds. Some services will say (we don't support this fork, therefore you will only get bitcoins). To avoid this sort of frustration transfer it to  some wallet you can access with your private key.
member
Activity: 392
Merit: 41
This text is irrelevant
I've been in crypto not for long; in the beginning of september i bought some BTC, and put it on a Ledger.

My ledger asked me to choose between a segwit or legacy account, and i chose Segwit because word is that it's faster en has lower fees.
So now my balance shows up whenever i open my wallet as "Segwit", but when i choose "Legacy" the balance says 0 BTC.

With the upcoming fork in november, people are saying BTC holders get free coins of the newly created fork.

And I am wondering if it matters if the BTC wallet on the Ledger is in Legacy or Segwit mode to get these free new coins?
Because if it does,  i should transfer my BTC.

If searched the net like crazy, but nowhere i can find the answer to this...  Undecided


You don't have any "account" in BitCoin. All you have is your private key and transactions that says "This money can be spent by someone who is in possession of this private key (i.e. can produce signature)." So instead of thinking that you have some money, you should shift your understanding to thinking "there are money that I can spend if I have a key". And by spending you should mean "I hand right to spend this money to someone else who owns his key". Your money isn't on your PC or on anybody's pc - they are scattered all over blockchain and stays there. It does not matter what software you use to broadcast transaction - your money will remain there.

After had fork nothing will change with existing blockchain - it will remain identical. Another, identical blockchain with slightly different rules of transactions will be created. It will have exactly same history and identical spendable funds in it that you (using your private key) can spend. The only difference is if you spend your funds in one chain it will remain unspent in another (at least if some sort of replay protection will be implemented).

This is essentially what fork is from user perspective.
newbie
Activity: 28
Merit: 0

There's a much simpler way to look at it.
You've got a girlfriend who has an identical twin sister. Both your girlfriend and her sister have secrets and motivations you are only dimly aware of. They have a habit of sharing each other's clothes.
You need to be very, very careful.


I like this image.

If you play this well, you'll get a pretty high reward !

legendary
Activity: 2926
Merit: 1386
Wow, this sounds waaaay to complicated for me to risk.

I think I'm just gonna keep my coins in legacy, and not touch the "2x"-coins until that team decides to implement replay protection.
I hope exchanges will reject their coin until they make it safe.

Or maybe Ledger will design a ready made application to safely split/send the 2x coins while keeping your BTC wallet untouched.

There's a much simpler way to look at it.

You've got a girlfriend who has an identical twin sister. Both your girlfriend and her sister have secrets and motivations you are only dimly aware of. They have a habit of sharing each other's clothes.

You need to be very, very careful.

Smiley

For Trezor a few weeks ago they advised everyone move from a legacy to a "New Style (Segwit)" account in order to get the benefits of the new style, such as faster transactions and lower fees. I read that as true but not accommodating all the possible variations of split forks.

Thus for Trezor it seems reasonable all coins should be on legacy, non segwit accounts.
full member
Activity: 980
Merit: 115
I've been in crypto not for long; in the beginning of september i bought some BTC, and put it on a Ledger.

My ledger asked me to choose between a segwit or legacy account, and i chose Segwit because word is that it's faster en has lower fees.
So now my balance shows up whenever i open my wallet as "Segwit", but when i choose "Legacy" the balance says 0 BTC.

With the upcoming fork in november, people are saying BTC holders get free coins of the newly created fork.

And I am wondering if it matters if the BTC wallet on the Ledger is in Legacy or Segwit mode to get these free new coins?
Because if it does,  i should transfer my BTC.

If searched the net like crazy, but nowhere i can find the answer to this...  Undecided









It do not even matter were your bitcoin is at the time of the hardfork but you should know that even if your coins is in the online or offline or even exchangers site you will still get a free coins of the new coins after the splitting. This has happened during the last hardfork and I believe that the same thing will happen again.
member
Activity: 70
Merit: 10
Ok wow, I am confused too all. In regards to the previous split did any software wallet or online wallet handle it more gracefully as in a quicker resolution? I am thinking with the legacy and segwit options on Ledger it might be better if I store elsewhere during the hard fork.
Considering my balance is small also, so less risk than someone that has alot.
member
Activity: 86
Merit: 26
I found some confusing answers here and also some not 100% correct answers.

For the upcoming Segwit2X fork (if they will not add replay protection in the last minute before forking) here are some points to mention.

  • Have your Bitcoins on addresses where you control the private key. If they are on a legacy address or on a Segwit address does not matter
  • You will have to split the coins on your own in any case if you don't want to lose the coins for one side
  • Some people here say, that for a replay of a transaction on the other side "someone else" need to take the transaction and broadcast it on the other side.
    This is not true.
    With the upcoming fork, the legacy chain and the Segwit2x chain broadcast their transactions to the same network. So, whenever you send a transaction (does not matter on which side), the transaction will always find a way to the nodes of the other chain (they are in the same network, they share the same transaction pool and so on). This causes always a replay of any transaction sent to the network.
  • The only save way to split the coins I know is with a time locked transaction.
    The idea here is, that after a split both chains will have a different hash rate. So it is very unlikely that they find new blocks with the same speed. The chain with more hash rate will find blocks faster than the one with less hash rate.

    Let's assume the chain splits at block height 1000 (I know the current block height is higher, but just as example).
    This means, that from block 1000 on, the blocks will look different.
    Lets say with hash rate of Chain A they will find blocks every 20 minutes, Chain B find blocks every 40 minutes. After 6 hours Chain A created 18 blocks (block height 1018) and Chain B created 9 blocks (block height 1009).

    Now comes the magic part.
    You create a transaction with the bitcoins you want to split and send them to a new address you created before (important, you need to send to an address you control the private key!!). The transaction should have the nLocktime Parameter set to the block height of the longer chain. In this example, set the nLocktime to 1018. This means, that this transaction is only allowed to add to a new block if the block height of the chain is equal or higher than 1018.
    Chain A has height 1018, so if you payed enough transaction fee, the transaction should be put into one of the next blocks.
    Chain B has height 1009, so this transaction with the locktime 1018 will not be mined into the next blocks. It will wait in the transaction pool until Chain B reaches height 1018.
    When this transaction got one confirmation on Chain A, you create a second transaction to a different address you created (also your own address), but this time without time lock.
    The second transaction will be picked up by Chain B and put into one of the next blocks. This makes the first unconfirmed transaction invalid on Chain B. The second transaction itself is invalid on Chain A, because the Bitcoins were already used in the first transaction.
    If everything was working fine, you should have your coins on a new address on Chain A and another new address on Chain B.
  • There is a chance, that this coin split might not work the first time.
    For example, if your first transaction did not get confirmed, before the second chain reach the nLockTime block height. In this case, you just wait again, until the two chains have a different height (maybe 10 to 20 blocks difference), and try again (that's the reason why you should always do this split and send the coins to your own addresses, so you can repeat in case it did not work the first time).

I hope that it is understandable what I wrote there  Smiley

One challenge is to create this nLocktime transaction, as I don't know any "easy" way to create them. Wallets usually don't support to create them directly...

Don't know if Ledger wallet is able to do it?
legendary
Activity: 1624
Merit: 2509
Wow, this sounds waaaay to complicated for me to risk.

I think I'm just gonna keep my coins in legacy, and not touch the "2x"-coins until that team decides to implement replay protection.
I hope exchanges will reject their coin until they make it safe.

Or maybe Ledger will design a ready made application to safely split/send the 2x coins while keeping your BTC wallet untouched.

A workaround already has been Posted
After the fork you have to Send your coins from your unspend Outputs (on both chains) to newly generated addresses (also on both chains).
This way an attacker can't replay the Transaction from one Chain to another.
legendary
Activity: 1288
Merit: 1087
wait for ledger themselves to say something. there's no point in listening to anyone else's opinion on this. if there is something that works then they'll implement it.

and as far as i know not one single exchange, wallet provider or any other service has come out with a concrete plan about how they're going to accommodate this. it's not looking like a straightforward hark fork with replay protection at present.
full member
Activity: 224
Merit: 100
If I am not wrong both segwit and legacy wallets have the same blockchain system
full member
Activity: 190
Merit: 100
All care to know is, will this fork nonsense stop in the future or are we going to have this shit every quarter?!
sr. member
Activity: 490
Merit: 389
Do not trust the government
15 ) This now empty wallet, is the one that you should move to the btc1 client or whatever other fork to access your coins

And when you sent your coins in step 14 someone just took that transaction, along with all the others, and replayed it on the other network, just because he can. Now that wallet is empty on both blockchains. You see, it is not that "simple" when there is no replay protection.
newbie
Activity: 6
Merit: 0
Wow, this sounds waaaay to complicated for me to risk.

I think I'm just gonna keep my coins in legacy, and not touch the "2x"-coins until that team decides to implement replay protection.
I hope exchanges will reject their coin until they make it safe.

Or maybe Ledger will design a ready made application to safely split/send the 2x coins while keeping your BTC wallet untouched.
legendary
Activity: 868
Merit: 1006
No need to do that. Segwit2x is not disabling segwit.

Right, so when a fork also has segwit and you have your coins in the format that begins with 3 (not sure how this is called) or the bc1 format, you will receive the coins just OK on the other chain in the same addresses. Well this is good to go, but for long term storage and to receive coins of forks that may not have segwit i think its better to store them in legacy format. For example I think Bitcoin Gold has no segwit.


No, that will probably confuse the btc1 client. You should make and have a backup of your wallet.dat before you moved your coins and use that backup with the btc1 client after the fork.

Well I didn't exactly mean move, I meant to make a copy and paste it on the other folder. Let's see if this is the fixed full version:

1 ) Get all of your coins in legacy format addresses (the ones that begin with 1 that is) but if the fork supports segwit then you are good to do with segwit addresses too
2 ) These keys must be ideally in a full node of the legacy chain (so Bitcoin Core will do)
3 ) Wait for the split to happen
4 ) Split day is here, you received the same amount of coins you are holding on the forked chain (in this case segwit2x chain, but Bitcoin Gold chain or whatever also when it happens)
5 ) Make a backup of your wallet.dat elsewhere on another folder in several places just in case
6 ) Shut down Bitcoin Core and delete your wallet.dat
7 ) Open Bitcoin Core again and now you have a brand new empty wallet
8 ) Create new receiving addresses (use coin control to know how many addresses you will need to retain privacy)
9 ) Put these addresses in a .txt file
10 ) Close Bitcoin Core
11 ) Now rename this wallet.dat to emtpywallet.dat or something
12 ) Put back the wallet.dat that actually has your coins
13 ) Run Bitcoin Core again
14 ) Send your coins to the created addresses
15 ) This now empty wallet, is the one that you should move to the btc1 client or whatever other fork to access your coins
16) Open btc1 client and once btc1 client is synced you will see the coins, now you are free to send them to an exchange and dump them for the real BTC
17) Now close btc1 client and open Bitcoin Core again with the wallet.dat where you moved the coins
18) Create receiving addresses there and send your free BTC coins from the exchange where you dumped 2xcoin for BTC
19 ) Profit!!!

wow this gave me an headache, but I think its correct.

staff
Activity: 3458
Merit: 6793
Just writing some code
Ok so from what I've gathered and please someone confirm if this is correct, this is how you get ready for a hardfork:

1 ) Get all of your coins in legacy format addresses (the ones that begin with 1 that is)
No need to do that. Segwit2x is not disabling segwit.

6 ) Your wallet.dat is now empty
7 ) Move this empty wallet.dat into a full node client of the forked chain
8 ) Once you sync it, your coins will show up there
No, that will probably confuse the btc1 client. You should make and have a backup of your wallet.dat before you moved your coins and use that backup with the btc1 client after the fork.
legendary
Activity: 868
Merit: 1006
Ok so from what I've gathered and please someone confirm if this is correct, this is how you get ready for a hardfork:

1 ) Get all of your coins in legacy format addresses (the ones that begin with 1 that is)
2 ) These keys must be ideally in a full node of the legacy chain (so Bitcoin Core will do)
3 ) Wait for the split to happen
4 ) Split day is here, you recieved the same amount of coins you are holding on the forked chain (in this case segwit2x chain, but Bitcoin Gold chain or whatever also when it happens)
5 ) You move all of your coins to other addresses in the legacy chain
6 ) Your wallet.dat is now empty
7 ) Move this empty wallet.dat into a full node client of the forked chain
8 ) Once you sync it, your coins will show up there
9 ) Now you are in full control of the coins on both chains and you can send your segwit2x/BCash/Gold/whatever fork coins into an exchange and dump for free real BTC
10 ) Profit!!!
legendary
Activity: 3612
Merit: 5297
https://merel.mobi => buy facemasks with BTC/LTC
Yeah, I read it again, you were correct. Smiley
The whole thing where OP called segwit2x "segwit" was confusing I probably thought you were talking about the other one or read it wrong, I don't remember by now. Sorry for calling you out when you were correct Cheesy

As to further comment on your post I replied to earlier, if I understand everything correctly here, S2X will accept the witness data from this Segwit network. It wouldn't make sense for them to implement new and/or different segwit protocol.

no worries, this stuff gets pretty confusing Wink
As for the rest of your post: thanks for the clarification... I haven're read up on the S2X fork (yet), so this information is pretty usefull to me.
sr. member
Activity: 490
Merit: 389
Do not trust the government
I don't think there was any confusion Wink
The OP asked if he had to chose "legacy" or "segwit" wallets on his hardware wallet in order to get "free" coins after the segwit2x fork.
I then proceeded explaining that bitcoin cash was a hard fork, it now has it's own blockchain. I explained that segwit was a softfork, so both "legacy" and "segwit" wallets share the same chain.

So, i explained that when the segwit2x hard fork would happen, it did not matter if you chose "segwit" or "legacy" as your wallet type in your hardware wallet. After the segwit2x hard fork, transactions generated by both the "segwit" and "legacy" wallet's unspent outputs *should* be spendable on both the old chain, as they will be spendable on the segwit2x chain.

This is what i wanted to convey, and i think it's still valid....

However, you are completely right about the replay protection. I haven't dug into segwit2x, but if it doesn't have proper replay protection, you have to be carefull.
There are ways to circumvent the problem tough...It's not even hard to do:

how to avoid replay attacks:
you have a wallet, containing the private keys to spend unspent outputs spendable by address X. there are 2 unspent outputs.

At a certain block height, there is a hard fork. You now have 2 unspent outputs on chain A and 2 unspent outputs on chain B.
IF you buy a pack of cigarettes using the unspent outputs on chain A, the seller can replay your transaction on chain B, and steal your funds...

However, if you create a NEW wallet on chain A, and a NEW wallet on chain B, then spend your 2 unspent outputs on chain A to fund an address generated by your new wallet on chain A, and do the same for chain B (spend all unspent outputs on chain B to fund an address from YOUR new wallet on chain B) the risk is gone...

Yeah, I read it again, you were correct. Smiley
The whole thing where OP called segwit2x "segwit" was confusing I probably thought you were talking about the other one or read it wrong, I don't remember by now. Sorry for calling you out when you were correct Cheesy

As to further comment on your post I replied to earlier, if I understand everything correctly here, S2X will accept the witness data from this Segwit network. It wouldn't make sense for them to implement new and/or different segwit protocol.
Pages:
Jump to: