Ethereum Fork: Step-by-Step Guide to Safely Splitting your ETH/ETC

in #ethereum8 years ago

Background

Recently the Ethereum network successfully forked it's protocol so as to return the compromised funds taken from the DAO smart contract and return them to DAO token holders.

While there was a healthy amount of debate and disagreement, eventually most of the Ethereum network switched to the hard fork. However those strongly against the hard fork have decided to maintain the pre-fork chain and reject the new chain. Thus the Ethereum Classic project (ETC) was born.

As of yesterday Poloniex, the largest ETH exchange, announced that they have added market support for Ethereum classic.

What this means is that if you were holding ETH before the hard fork, your tokens now exist in 2 separate realities: ETH and ETC. Markets exist for both so you are free to hedge your bets on whichever version of the chain you think will be successful. You can essentially sell all of your ETC while maintaining all of your ETH, or vice-versa.

The problem is that separating your tokens on each chain carries risk. Specifically something called a replay attack. A number of solutions have been proposed and this post aims to walk you through one such method. While I make no guarantees for this method, I can confirm that I have used this method successfully using 5+ accounts. I'll be making use of smart contracts which you need to trust for this procedure, but I'll give a brief explanation of how they work.

Prerequisities

  • Mist Wallet 0.8.1 with the Hard Fork option activated (when prompted on startup, select 'Yes')
  • Loaded Mist account(s) with ETH that you wish to split between the chains.
  • Separate accounts for each chain. You can either create new accounts in Mist, or use another wallet provider/exchange. I would highly recommend only using Mist for one chain, and some other provider for the other (another computer will work as well). Otherwise you will need to switch between chains and re-sync Mist every time. I used Mist for ETH and Poloniex for ETC.

Step 1: Adding the Split Contract

In order to split the same ETH into ETH/ETC on two separate accounts, we'll make use of a contract designed to split funds between chains and which was deployed before the hard fork. It is now in a different state on each chain and will send to a different address in each version. The contract details can be found here. I encourage you to look over the code yourself and not trust my word for it. If you are unsure, have someone you trust check the code for you to ensure it's doing what you intend and that I'm not simply stealing your funds ;)

  • In Mist, navigate over to the 'CONTRACTS' tab.
  • Under 'CUSTOM CONTRACTS', click 'WATCH CONTRACT'
  • Fill in these details:
    • CONTRACT NAME: ReplaySafeSplit
    • CONTRACT ADDRESS: 0xaa1a6e3e6ef20068f7f8d8c835d2d22fd5116444
    • JSON INTERFACE
[{"constant":false,"inputs":[{"name":"targetFork","type":"address"},{"name":"targetNoFork","type":"address"}],"name":"split","outputs":[{"name":"","type":"bool"}],"type":"function"}]
  • Click OK

You should now have a new contract listed under CUSTOM CONTRACTS called 'ReplaySafeSplit'.

Step 2: Calling the Split Function on the Contract

Now that we've added the contract let's click on it. It should look something like this:

Under 'WRITE TO CONTRACT' there's a dropdown with only 1 option called 'Split'. Let's select it.

**THIS IS THE IMPORTANT PART**

  • The 'Target fork' field is the address of the ETH account you will use
  • The 'Target no fork' field is the address of the ETC account you will use

DON'T MIX THESE UP!!!!!

Fill in these fields with your two separate accounts. Double check that they are correct. Send whatever amount of ETH you would like to split between the chains.

Step 3: Keep Them Separate

You now have ETH/ETC in separate accounts on each chain. In order to avoid confusion and mistakes keep these separate going forward. Don't send ETC into your ETH account or vice-versa.

Hope this was useful to some of you and that you can now make your own decisions about which version of Ethereum reality you choose, or choose not, to participate in.

Sort:  

I should be able to down vote... and in so doing take money from you. Hey, @steemit... make it so! That will make people think twice before they spam, don't you think?

Referrals don't get any better than that!

This is really great and is living proof that all other Crypto and Socialmediaplatforms are monitoring our Steemit Family very carefully. They should, because there will only be one form of socialmediaplatform, the usergenerated and compensated one ;)

keep up the good posts coming!

Yeah, Steemit rocks!

This is so awesome!

Pauls, I just tried this today with 1 ether and...it didn't seem to work. Followed the steps exactly and had @lukestokes double check my work. The ETH was returned by the contract to the output address, but the ETC has never shown up. It's been over two hours. The contract shows as fully executed with dozens of confirmation but the ETC balance still shows as zero both in my wallet and on the ETC block explorer. Any thoughts? I'd be grateful for any guidance you could give. Perhaps it just takes a long time for some reason?

BTW, I'm using MyEtherWallet (with Trezor) for the ETC wallet and the latest version of Mist for the ETH wallet, both on the same computer.

This doesn't seem to work if I am trying to send from a multisig contract. Can anybody confirm?

I had a similar issue, but found the account approval/signature had to take place on both chains. I downloaded the non-fork chain on a different user account in my laptop. When I switched over to that user and booted up Ethereum-no-fork, there was an approval sitting there. Hope that helps someone. :)

when does the fork/nonfork option show up?

Can you confirm you have a balance on both chains?

Can you clarify 'this'? Multisig will require the correct amount of signatures to send Ether, on either chain.

good job!

I dont like the hard fork

people screwing up the system

Me either. I bought into the Eth ICO because of terms like immutability, uncensorable, etc. In our case, we can sell our eth and with those funds, purchase a much higher percentage of the etc platform.

Thanks for sharing such knowledge with us, it is well needed! Namaste :)

Yes I didn´t know this too and I have some ETH... :) Thanks @pauls

It's retarded that we even have 2 chains at the same time. Both have the same functionality.

Thanks man, I was looking for this on google and didn't find anything. Looks like steemit could be a searching engine as well.


I love STEEMIT... oooh.. me too! is not impressive? yes yes yes yes yes!