Tuesday, November 20, 2018

PSA for casual users. Why you need to split coins and what all this means.

It occurred to me that a lot of people aren't as obsessed with the internals of Bitcoin as I and my developer friends are -- and that perhaps a lot of stuff we take for granted is not obvious to users.

People use mental images, analogies, and heuristics to reason about a system and unfortunately in Bitcoin there are several unfortunately named concepts that can cause confusion.

So.. here goes.

A Wallet Does NOT Store Coins.

You do not need to copy-paste your wallet file to transact on both chains.

In the normal world we are accustomed to -- you put your cash in a wallet. Your money is IN your wallet. It physically exists there and only there.

In the crypto world, the term wallet was perhaps unfortunately chosen -- because your coins do not live in your wallet. (I hate it when scientists or engineers or experts pick the wrong term. I think the term wallet is unfortunate because it causes confusion about what's really going on).

A "wallet" is just a collection of private keys and some other metadata. You are free to "copy-paste" the wallets but it's a little pointless to do so.

Your coins live on the blockchain. Your wallet is just the keys to sign transactions.

The "key" (heh) to it all is to connect to the correct chain you wish to sign transactions for using your wallet software like Electron Cash.

I know mentally it's weird to think about. The term "wallet" is not a great name since it makes you think your coins are in your wallet. They are not. Your coins are on the blockchain. You need to connect to the right blockchain using your wallet's keys. :) That's the correct mental image.

So, in summary: Your keys are in your wallet, your coins are on the blockchain. (Perhaps keyring would have been a better name for the concept).

What is splitting, exactly.. and why does it matter?

So -- in the normal crypto currency world your wallet (a collection of keys for signing transactions -- not a storage for coins) is used to sign transactions on a blockchain.

What is a transaction? It's essentially a signed transfer of custody for something called a "coin".

What is a coin, you say? It is a history of a chain of custody of transactions! You own a coin if there is a long (or short) history of that coin having been transferred around until its final resting place is an address you control (and by control -- I mean an address you have the keys for, and thus can transfer ownership for in the future should you so desire to).

Coins live their lives as little temporary slaves being signed over to the next owner over and over again. They have a thankless existence, don't they?

Furthermore, all transactions are public once broadcast (this concept is important as it dovetails into why you need to split coins).

So -- basically in the normal world, on a normal crypto -- each blockchain (where the coins are stored) has a unique chain of custody. Your wallet can only sign transactions for the coins on that blockchain and no other coins.

However -- in a fork that lacked replay protection such as the BSV fork of the BCH chain, what happened is your keys (read: wallet) can now unlock two sets of coins -- the ones on each side of the fork!

Why is this a problem?

Well.. What you want: I want to spend coin A on chain A for recipient A.

And.. What you usually don't want: To spend coin A on chain A&B for recipient A at the same time.

OK, I get it. You don't want to spend on both chains at the same time simultaneously (usually). So.. how does a split work?

Simple. You create a new chain of custody on either or both chains A & B -- thus your keys now are signing slightly different "histories" and the exact same signed transaction is no longer valid on both chains.

OK, Great. So what happens if I don't split

If you ONLY care about BSV coins? Nothing.

If you ONLY care about BCH coins? Nothing.

If you care to someday redeem or use BOTH BSV and BCH coins independently of one another -- then you need to split or else you will lose funds.

Maybe not today, maybe not tomorrow -- but at some point you will end up signing a transaction for coins on chain A and the same tx will inadvertently end up on network B and the same coins will get spent there too.

OK, I think I get it. Now how do i split?

Read Mark's guide: https://www.reddit.com/r/btc/comments/9yefov/if_you_want_to_dump_bsv_some_tips_on_splitting/

Or my mini-howto: https://www.reddit.com/r/btc/comments/9xmh2n/psa_how_to_split_your_coins_with_electron_cash/

APPENDIX 1: Great. I split my coins. Do I need to do this all the time now? Bitcoin sucks!

No no no no! Once split, your coins are forever split!

And what's even better: Any coins that appear in the same transaction as your split coins also "get the cooties" and are split too.

This is because once a coin obtains a unique history, a unique tx is required to transfer custody of the coin to somebody else. Splitting just boils down to creating a unique history for your coins on either (or both) chains so that the same byte-for-byte tx cannot be valid on both chains at the same time.

So an easy way to help your friend split his coins is just to send him a split coin on chain A and make him issue a tx using that coin plus all his other coins on chain A. Done. His coins (that were included in said "splitting tx") now also got the cooties and are split as well!



No comments:

Post a Comment