2

Suppose I want to mine the testnet with something like this:

geth --testnet --etherbase '<some address where I keep "real"/mainnet ether>' --mine

What will happen to the existing mainnet ether at that address? Would I be able to split up the mainnet and testnet ether from that address at that point (if so, how)? My main concern is that the different ether will be "mixed" in some way that would essentially render all of the tokens associated with that address worthless on the mainnet (eg. if testnet UTXOs have different metadata that may confuse most wallets when they need to deal with that address now controlling those UTXOs as well as mainnet UTXOs).

New to this (and the ethereum homestead documentation seems to be not up to date as evidenced by the fact that the official docs only mention the Morden testnet rather than the newer Ropsten testnet), so if anything in my verbiage implies any misunderstanding of any concepts, I would appreciate if you would help correct me (eg. what exactly is happening under the surface). Thanks

Note, I've seen this similar post, but the answers there don't seem to really answer the poster's 'what happens' question.

2 Answers 2

3

Each chain (main net, ropsten, ethereum classic, etc.) is a separate record of transactions. Transactions occurring on one chain are (assuming a normal wallet program is used) independent of other chains unless special steps are taken. That’s why sending 1 ether on the main chain (1 ETH) from A to B does not result in 1 ether on the Ethereum classic chain (1 ETC) from being transferred from A to B. Similarly -- and to directly answer your question -- mining a block in the main net does not add to ether on other chains nor does it "confuse" the blockchain. For example, the account 0xea674fdde714fd979de3edf0f56aa9716b898ec8 (ethermine.org) was mining Ethereum before the ETC hard fork. After the fork took place, it had both ETH and ETC. However, as you can see, ethermine.org is still mining to the account. The blockchain itself cannot become "mixed" -- only the human!

I think the only confusing part might be the fact that the transactions are both authorized using the same private key and have the same public account. You can think about it this way: you might have chequing accounts at several banks. They all have different balances. But they can all be unlocked with the same key (your hand-signature). That is, one hand-signature can unlock multiple accounts. Similarly, the same private key can enable transactions from multiple accounts on the different blockchains; the fact that they have the same account number is an artifact of the way accounts on Ethereum work. The important thing is that the balances are all independent.

It's not clear in the post you linked to what a "test account" is -- it could be interpreted as an account on the same chain that you use for testing purposes or it might be an account on one of the other chains.

Edit: I thought I had included this caveat, but I guess I deleted it in an edit before my first post: Ethereum (and tokens) can, in fact, become mixed when signing transactions using a wallet that does not support EIP-155. So long as you are using a current version of geth (or Parity or MEW/MyCrypto), this is not a problem. They're not really mixed so much as your transaction can be replayed onto multiple blockchains.

2
  • If a users private keys can control tokens for separate blockchains, what is the difference between geth account new and geth --testnet account new (which I only know about from here github.com/ethereum/go-ethereum/issues/15991)? I would think that you would never need to specify "--testnet" (for whatever it is doing) and just use geth account new to make some "for-testing-only" account that you simply choose to have only control ether from the testnet. Commented Feb 25, 2018 at 11:39
  • 1
    Great question (could post separately); I can think of a few reasons. The first is to prevent humans from getting confused (you don't want someone to send 100 ETH on the real network to someone who intended to send 100 ETH on a test net or 100 ETC). Second, you may not care as much about security for test net (in fact, you might share keys with co-developers if you're writing contracts). Third is it simplifies code: selecting the blockchain sticks all related files in a subdirectory of .ethereum. Fourth, future account formats may change. And more. Easier to combine than split later.
    – lungj
    Commented Feb 25, 2018 at 16:15
2

The mainnet ETH will still exist at the address as will the testnet ETH. However, the respective balances of the address will only be available when connected to associated network. That is to say that if you have 1 mainnet ETH and 2 testnet ETH held in the address your balance on the mainnet will be 1 ETH and your balance on the testnet will be 2 ETH. There shouldn't be a situation where you have a balance of 3 ETH. Hope this makes sense.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.