Showing posts with label Bitcoin Unlimited. Show all posts
Showing posts with label Bitcoin Unlimited. Show all posts

2017-03-29

Hard fork contingency plans and SegWit readiness - a challenge to solution evangelists

Currently, the biggest discussion in the Bitcoin community concerns the possible forks we might see this year - Bitcoin Unlimited and SegWit. Whether those forks should or should not be activated and whether they will create a network split is an important discussion, but what is less discussed is the risk mitigation in case either of those forks happen. I would like to post a challenge to the various solution evangelists to see if their software is ready for any outcome.

Note - some questions apply to more than one scenario. Duplicates have been omitted for conciseness.

Scenario 1 - SegWit activates before Bitcoin Unlimited


Lets say SegWit activates before Bitcoin Unlimited or any other block scaling solution takes place.

First, some questions to the Core team:

How much extra transaction throughput are you expecting to see with this solution?
Do you have any estimates as to how many transactions should move off-chain in the near future? When do you expect this solution to start reaching critical mass to alleviate the block congestion?

How many of the big Bitcoin companies will be ready for SegWit?
This important question is somewhat answered by a handy spreadsheet or two. Let's have a look and see if some important players are missing... Coinbase is "planned" so far. BitPay is nowhere to be seen. BitGo is "wip". Top exchanges - Poloniex, bitFlyer, BTC-E, OKCoin are missing. For the wallets - Armory, BreadWallet are wip, Bither, Exodus and Multibit HD are planned.

All in all, the coverage looks good, but some top players still need to get on board.

What are the fees users should be expecting?
A large pressure for the increase in the network capacity comes from the high fees to the average user. What fees should the users expect under SegWit? I've seen mention that on-chain fees will drop from 0.5BTC/block to about 0.2BTC/block, but some numbers on the off-chain fees would also be interesting.

What is the block scaling plan going forward?
Are you planning on changing the block size following SegWit? If so, when are we likely to see the size change and what would it be?

And a big question for the Bitcoin Unlimited team:

Is your client SegWit ready?
Are you ready to integrate SegWit into your client? Will it have some issues in case SegWit activates?

Scenario 2 - Bitcoin Unlimited activates first, network splits


In this scenario, Bitcoin Unlimited activates first and the network splits itself into Bitcoin Core and Bitcoin Unlimited.

Question to both sides:

How are you mitigating the damages of the split for your users?
There are many things that need to be considered when the network splits. How are you mitigating the cross-split replay vulnerability? How will you avoid the confusion when it comes to addresses being the same on both networks?

Bitcoin Unlimited devs:

Is your code ready to be pulled to Bitcoin Core?
A lot of people consider Bitcoin Core to be the "gold standard" when it comes to Bitcoin clients. Developing a different client without allowing the options to be pulled into Bitcoin Core cleanly will only make the adoption of your client harder.

So, is your code ready to create a pull request to Bitcoin Core? Do you have a branch that is up-to-date with the latest commits to Core, or will you need to catch up? If you don't have these ready, it is almost inviting a network split, rather than working on keeping the network unified.

Will you be activating SegWit on your network?
There are some good use cases for off-chain transactions - will you be activating SegWit or other soft forks required to run off-chain transactions on your network anytime soon?

How are you planning to convince more exchanges to adopt Bitcoin Unlimited?
Some developers have sworn off BU completely - for example, BitGo (and thus indirectly - BitStamp, OKCoin, Kraken, etc.), while others might be on the fence. Do you have any plans on convincing them to start supporting your software?

Bitcoin Core devs:

Will you make your client opt-in compatible with Bitcoin Unlimited?
This question was originally asked by Gavin - since "Bitcoin Core does not want to and does not make decisions on Bitcoin’s consensus rules", is Bitcoin Core prepared to let the users op-in to be able to connect to the Bitcoin Unlimited network? It shouldn't be that much work to add a flag disabling the block size check at the very least.

Scenario 3 - Bitcoin Unlimited activates first, minority network gets attacked


In this scenario, Bitcoin Unlimited activates first, the network splits, but the minority chain gets attacked by miners in hopes of preserving only one side of the fork.

Bitcoin Core devs:

What is your contingency plan for such an attack?
As I understand, the current plan is to change the PoW algorithm in a hardfork. Is that hard fork already in the works? Is the new PoW algorithm decided on yet? Has the hardfork been tested? It is a large change - you don't want to be scrambling around trying to figure this out while an attack is ongoing. Do you have your legal side of things covered? Will you be coordinating actions with important Bitcoin players, such as exchanges?

Since hardforks don't come as often, are you planning on implementing any of the hardfork wishlist items while you're at it? Will the hardfork also include SegWit?

Bitcoin Unlimited devs:

What is your plan for such an outcome?
Will you be endorsing the attack, or will you be disowning it? Are you prepared for potential legal, community, etc. backlash you might receive if the attack takes place (even if it's not of your own doing)?

Conclusions


There are many important questions that need to be addressed early on before Bitcoin starts forking. While we might still have some time before either fork activates, it's better to mitigate the potential risks early on than to scramble when they actually take place. I'm looking forward to developers from either of the sides sharing their thoughts on the issues raised here.

2017-03-26

Bitcoin hard fork - if you want peace, prepare for war

Over the last few weeks we had a lot of people discussing Bitcoin forks. Every member of the Bitcoin community is voicing their opinions on the matter, so I figured I'd write down my thoughts as well.

Historical perspective


While the debate has picked up a lot recently, it's by no means a new problem. BIP101 proposed increasing the block size in mid-2015 and BIP-141 introduced SegWit in late 2015. Since then we had a number of projects wanting to fork Bitcoin - BitcoinXT, Bitcoin Unlimited and Bitcoin Classic. This is in addition to things like Sidechains, Liquid, user-activated soft forks, etc.

All in all, we can all agree (well, with some exceptions) that we need to expand the Bitcoin network transaction capacity. We can't really wait much longer - this was starting to be an issue in 2015, and now it has become a necessity.

Bitcoin slowing down


Bitcoin for a long while had the first mover advantage - everyone wanted to get into it, develop on top of the platform, etc. Being in the community early was really fun - seeing the first ATM launch, getting merchants on board, etc. However, nowadays it's a different story. Waiting multiple blocks to get one confirmation, paying over 30 cents in fees, etc. - that's not an ideal situation in comparison to what we saw years ago.

If nothing changes, we'll probably see a lot of the big Bitcoin companies expand or migrate to other platforms. Coinbase already doesn't want to pay the fees by themselves, Storj has moved to Ethereum, etc. With Ethereum's growing market cap, there are only so many reasons to stay with Bitcoin...

The fork


So this brings us to the fork situation. There is currently a lot going on in the community, but from what I can understand, there are two main camps when it comes to forking at the moment - those that want to activate Bitcoin Unlimited and soon, and those that want to get SegWit activated sometime this year.

When figuring out what can happen next, we have to keep in mind the scant few examples we had of contentious coin hard forks in the past.

From what I can tell, Bitcoin Unlimited is heading in the direction of activating its hard fork no matter what. It's ramping up in node and mining power count. It is likely that the node count is fake, and there have been some reports about the possibility of attacks on pools that don't signal Bitcoin Unlimited (by orphaning non-signalling blocks in a minority attack). There is also a concern with miners being blacklisted by the effective monopoly in mining ASICs if they signal SegWit.

Lastly, we need to keep in mind the man pushing for Bitcoin Unlimited adoption - Roger Ver. I'm not going to get into discussing his past or personality (there are plenty of trolls that have you covered), instead, lets focus on one fact - he's an early Bitcoin adopter, and he appears to be loaded. Being able to trade 130k BTC loaded. That's more than 4 times the amount of BTC Ethereum raised during its presale. So my guess is, that he could safely pay out of pocket to fund the forking effort, even if it doesn't make economic sense.


So because of this, I think the Bitcoin Unlimited will activate its fork sometime soon. Now, what will happen next?

The aftermath


It was interesting hearing Gavin's exchange with Matt on whether Bitcoin Core should have an opt-in flag to accept the possible fork or not. It looks like the answer for the time being is "no", which means the repository everyone considers to be the "gold standard" for Bitcoin will not accept Bitcoin Unlimited blocks, causing a fork.

If you want to keep Bitcoin network on only one side of the fork, you have to attack the other side. Whether that is a moral or legal way of handling the situation - it's up for debate. At any rate, 51% attack on the Bitcoin Core side of the fork is a possibility that has to be kept in mind. Luckily, there is "a nuclear option" to defend against something like that - PoW change. Since the vast majority of Bitcoin mining power is in ASICs, any change to the mining algorithm makes all of that hardware obsolete. This will mean that an attacker that has been stacking up on ASICs will end up with a large pile of useless hardware, but also that your honest miners will have the same issue.

So if Bitcoin Unlimited forks and tries attacking the Bitcoin Core side of the fork, it is likely we will end up with a PoW change fork and the unchanged, SHA256 fork. The SHA256 fork will either be kept alive by miners that oppose the Unlimited fork, or it will be left by the wayside as they will realise where the wind is blowing and switch over to Bitcoin Unlimited to maintain some income from their hardware.

Early on, the PoW fork would still be vulnerable to an attack. There are a lot of altcoin miners out there ready to put their CPUs and GPUs to work. Whether they will stand with the Bitcoin PoW fork supporters or be mercenaries for hire by the attackers remains to be seen.

If there is no attack on the minority fork, the Bitcoin landscape will probably be more peaceful, but also more divided. A number of exchanges have already signed a statement on the hard fork matter, and it looks like they will either be ignoring Bitcoin Unlimited, or treating it as an altcoin. So all in all, we'll have the Ethereum / Ethereum Classic scenario once more.

If a fork happens and Bitcoin Unlimited doesn't secure key supporters early on (miners, exchanges, developers, etc.), it is possible it will go the way of Elacoin. A coin needs to be traded and developed upon to stay relevant.

Preparations


Since the fork has not yet happened, there is still some time for preparations. Every Bitcoin business will have to consider the implications of the fork on what they're doing. How will customer BTC balance be handled? How will you prepare for the relay attack? What are the edge cases you need to think about?

Even working for Factom I had a discussion about this issue, and we're not holding BTC balance for our users.

Finally, every Bitcoin user will have to prepare for the fork. Whether you decide to hold onto bitcoins at a responsible exchange, keep it in your wallet, or sell it for now in hopes of buying cheap coins during the turmoil, you should make a conscious decision on what to do, or risk getting some of your coins lost in the process.

Conclusions


Bitcoin needs to address its transaction throughput sooner than leter. It is likely Bitcoin Unlimited will attempt to hard fork soon. The fork will either lead to the community being divided, or an attack on the minority chain to force everyone to switch. The attack will likely lead to another fork and an uncertain future fo the minority chain. Everyone should ready themselves for the fork.

If you want peace, prepare for war.