BIP 148 - The Beginner's Guide To A User Activated Soft Fork (UASF)

In a few months, beginning 1 August 2017, there may be some turbulence ahead for the Bitcoin network.

Bitcoin Core full-nodes comprise more than 95% of the Bitcoin network and are susceptible to CVE-2017-9230. BIP 148 upgraded nodes would fix this security vulnerability.

Don't be scared though since this serious CVE bug and security vulnerability is being intensively reviewed by the technical community. If you run and rely on the most recent version of a Bitcoin Core full-node then you should be 99% safe (but for the 1% chance)!

The UASF will result from a fork of Bitcoin Core and BIP 148 coins that will be listed by Bitfinex.

To be clear, you will need to be running two full-nodes: (1) legacy Bitcoin Core and (2) BIP 148 enforcing Bitcoin Core fork. We assume you have an understanding of best practices as outlined in the Glacier Protocol.

To help you protect your money, this guide will be frequently updated with the latest developments.

Share this guide with your friends by directing them to: www.uasfguide.com

What is BIP 148?

Bitcoin Improvement Proposal (BIP) 148 is a User Activated Soft Fork (UASF) that requires that miners signal for Segregated Witness (SegWit). SegWit readiness is signalled by miners by setting the version number of blocks mined.

Signalling this bit does not mean miners support SegWit, but is a signal for readiness that miners are ready to enforce the rules.

Miners are still allowed to mine blocks that do not support SegWit and are only required to not mine non-standard blocks that spend SegWit transactions along with not building on top of blocks that do this.

Beginning 1 August 2017, nodes that enforce BIP 148 will reject any block from miners that do not signal SegWit readiness, along with any block that is built on top of a block that does not signal support.

Hard Fork v. Soft Fork

Bitcoin Core developer Eric Lombrozo can help you understand the differences between a hard fork and a soft fork.

Many people do not fully understand the difference between hard and soft forks and the implications for the network and ecosystem.

Hard forks is a permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules.

Soft forks is a temporary divergence in the block chain caused by non-upgraded nodes not following new consensus rules

Why BIP 148?

This guide is about helping you protect your money by providing objective actionable things to do as a result of BIP 148 and not delving into the political, economic or other reasons.

Additionally, BIP 148 would patch the CVE-2017-9230 that is currently active in the Bitcoin Core software.

If you want a quick background and reasoning then this piece by the extremely respected open-source Linux kernal developer, Rusty Russell, who has been working on the Lighting Network should hit the spot.

Those optimistic towards BIP 148

Long-time Bitcoin Core developer Luke Dashjr.

Lead Maintainer of Bitcoin Core Wladimir J. van der Laan has signed Bitcoin Core based wallet binaries.

Long-time Bitcoin Core developer Eric Lombrozo.

The infamous bearwhale is in favor of BIP 148.

Those ambivalent towards BIP 148

It seems that most community members are ambivalent towards BIP 148.

Trace Mayer and Jeff Berwick discuss BIP 148 and both are ambivalent towards it but think and feel it is important to be prepared for it.

Here is an interesting analysis by Jimmy Song on how BIP 148 impacts various actors in the Bitcoin ecosystem.

MadBitcoins interviews Jimmy Song about the UASF and BIP 148.

An article by Nicolas Dorier why all users and businesses should prepare for BIP 148 and a great decision tree.

Those pessimistic towards BIP 148

Greg Maxwell

Bitcoin Core Dev Meeting

Current BIP 148 Support

What really matters in a UASF situation is which chain the economic actors like users, institutions, exchanges, payment processors, etc. support. There is no easy way to quantify this with a decentralized peer-to-peer network.

The UASF Mining Pool is BIP 148 ready.

This graph represents the total number of full nodes currently signaling BIP 148.

This graph represents the percentage of total number of full nodes currently signaling BIP 148.

Block Height Differences

What could happen on 1 August 2017?

If miners activate SegWit prior to 1 August 2017 then BIP 148 will not be enforced. All users of Bitcoin will remain on the same chain no matter what client they use.

If miners do not activate SegWit then there may be a chain split. A chain split will mean that some users will see a different set of transactions than others.

If the majority of miners enforce BIP 148 then these chain splits will be temporary and eventually all clients will see the same chain and SegWit will activate for all SegWit compatible clients (0.13.1+ for Bitcoin Core).

If the majority of miners do not enforce BIP 148, users that enforce BIP 148 will diverge from users that do not enforce it.

If the majority of miners do start enforcing BIP 148 at a later date then the legacy chain (without BIP 148 enforcement) may be reorganized once the BIP 148 chain has more work.

The users who are running BIP 148 would be undisturbed, but users running legacy clients may see a large amount of history re-written and could lose funds.

How do I prepare for BIP 148 if there is a split?

The most important thing you can do is perform your own network consensus by running a full-node and creating and storing your own private keys.

This means you will need to run a full-node for the legacy chain, likely Bitcoin Core, and a full-node for the BIP 148 chain, likely a fork of Bitcoin Core with the BIP 148 rules enforced.

This will put you in firm control of all decisions related to how you interact instead of having some third-party make those decisions for you.

Additionally, it is unknown how the legacy chain or the BIP 148 chain will be labeled.

This could lead to significant confusion in the marketplace so it is important for you to know exactly what you are buying or selling.

Where can I get more information?

Another great resource is: uasf.co

Possible scenarios from BIP 148

BIP148 requires support from the economic majority, particularly exchanges and wallets. If this does not occur, node software supporting BIP148 should not be run after August 1st as it will cause a chain split leading to the abandonment of BIP148.

There are strong economic incentives in the Bitcoin system for nodes to cooperate and remain in consensus to prevent chain splits. If the economic majority is signalling as of August 1st, miners have many incentives to follow along.

Not following along would make it difficult to sell coins mined after August 1st as the blocks would not be accepted by the economic majority. Essentially, miners would be producing an altcoin not recognized by users and exchanges, making them less useful and in lower demand.

Some miners could opt to ignore the BIP148 rule and attempt to split the chain, but this would require a majority of miners who would be out of consensus from the rest of the economic majority.

If a majority of hash power follows BIP148, all nodes will follow the chain regardless of if they are running BIP148. Non-compliant blocks will be orphaned. All SegWit nodes will eventually activate SegWit.

If a minority of the hash power (under 51%) follows BIP148, nodes running BIP148 will be fine, but those not running BIP148 will be out of consensus with the rest of the economy. In this scenario, the more of the economy that runs BIP148, the better.

Miners will find it difficult to sell their coins leading economically motivated miners to start enforcing BIP148.

How do I signal support?

If you operate a full-node then you can signal support with your current software. This is a way you can show support without actually upgrading to enforcing BIP 148 rules.

Many users are alter their node’s user agent string to include BIP148.

To signal #BIP148 on Linux or Mac on your node before binaries are released go to Help --> Debug Window --> Console:

echo "uacomment=UASF-SegWit-BIP148" >> ~/.bitcoin/bitcoin.conf && bitcoin-cli stop && sleep 5 && bitcoind

To signal #BIP148 on Windows, you can edit the shortcut for Bitcoin as follows:

bip148

You can signal your support in person, great for meetups, conferences, etc., with this UASF hat.

Wallets Supporting BIP 148

A listing of wallets here does not imply any endorsement of the quality or security of the software.

Put on your big boy or big girl pants and use at your own risk.

  1. 09 Apr 2017 - Electrum - UASF Server: 158.69.102.114 port 50002
  2. 09 Apr 2017 - Samourai Wallet
  3. 11 Apr 2017 - Coinkite
  4. 12 Apr 2017 - Coinomi
  5. 22 May 2017 - GreenAddress
  6. 24 May 2017 - Ledger Wallet
  7. 27 May 2017 - Mycelium - one of the most popular mobile wallets
  8. 28 May 2017 - Electrum - one of the most popular desktop wallets
  9. 29 May 2017 - Airbitz - popular mobile wallet; guide to change node
  10. 09 Jun 2017 - Bitgo - however this is hearsay

Operate an exchange and want to make sure your customer funds are safe and secure? Check out: How An Exchange Supports BIP 148

As a Hodler (Long Term Investor)

If a chain split occurs then long term investors will have equal amounts of coins on both sides of the chain.

If a chain split is resolved then they will have their original balance on the unified chain and need to take no actions.

As A Bitcoin Trader

As a trader you will need to find an exchange that supports, preferrably, both the legacy chain and the BIP 148 chain.

Traders may have an opportunity to trade coins from one side to another. If exchanges support both chains then they could sell one and buy on the other.

If sufficient demand exists on the BIP 148 chain, it may encourage miners to mine on that chain, which could eliminate any split.

Traders should excercise caution when trading on the legacy chain as it may be reorganized without warning. Traders should also excercise caution on the BIP 148 chain, as if interest in it is insufficient, it may not hold long term value.

The following is a list of exchanges that have or will support BIP 148.

The list is ordered by date of an unequivocal public announcement for support of BIP 148.

Exchanges Supporting BIP 148

A listing of exchanges here does not imply any endorsement of the quality or security of the service.

Put on your big boy or big girl pants and use at your own risk.

  1. 11 Apr 2017 - Bitrefill
  2. 12 Apr 2017 - Prasos
  3. 13 Apr 2017 - Bylls
  4. 13 Apr 2017 - Satoshi Counter
  5. 21 May 2017 - Vaultoro - Gold dealer
  6. 21 May 2017 - MojBitcoin - European ATM
  7. 23 May 2017 - Bittylicious
  8. 25 May 2017 - Bitfinex - one of the largest exchanges
  9. 09 Jun 2017 - BitStamp - however this is hearsay
  10. 16 Jun 2017 - BitTonic

Operate an exchange and want to make sure your customer funds are safe and secure? Check out: How An Exchange Supports BIP 148

Spending Bitcoins

If you are spending Bitcoins then you should protect yourself from accidentally spending on both chains.

Since many transactions are valid on both chains, the same transaction could be “replayed” on the other chain, thus making it you spend on the other side as well.

Before you send a transaction, you should split your coins and be sure which chain your receiver honors.

You can either use a coin splitting service or you can split your own coins by creating and broadcasting your own transactions on both chains.

Receiving Bitcoins

If you are receiving Bitcoins then you need to pick which side of the chain you honor.

WARNING: Since the legacy chain could be re-organized then you need to evaluate this risk when you receive coins on the legacy chain.

The common security practice is to wait at least six confirmations before relying on a transaction or block.

If there is a chain split then users should excercise extreme caution and closely monitor the split along with requiring more confirmations because the security of the chain may be weakened.

To be extremely safe we recommend having at least 100-200 confirmations before you rely on the transaction or block.

As A Miner

BIP can easily and cheaply be supported by users, businesses, exchanges, wallets, etc.

However, miners have to make a choice between the legacy chain and the BIP 148 chain and this directly impacts their revenue.

These pools mine the BIP 148 chain.

  1. UASF Mining Pool
  2. Pa.Xro.Ca
  3. Slush Pool

Storing Bitcoins with Third Parties

We highly recommend you contact any third-parties to determine whether they will be supporting the legacy chain, BIP 148 or both.

Be sure to get any commitments in writing so that, if needed, your lawyer will have it for any litigation. For example, when something similar happened with Ethereum there was significant confusion at Coinbase.

If you store your coins with a third party, such as an exchange, then you should understand their policy for which chain they support.

Some custodians may only honor one chain and you may not get the full value of your coins if they only honor on one side.

Under the theory of unjust enrichment, significant legal issues could be raised if third-parties are accuring benefit to themselves that should accure to the benefit of users.

The safest plan for storing coins on August 1, 2017 is to gain control of your coins, operate your own full node(s) and evaluate your options after a potential chain split.

What are companies saying about BIP148?

  1. Abra
  2. Bitcoin Embassy.io
  3. Bitcoin Reminder
  4. Bitfury
  5. BitKong
  6. BitPay
  7. Bitrated
  8. Bitrefill
  9. Bitvest
  10. Blockonomics
  11. Bustabit
  12. Bylls
  13. CoinGate
  14. Coinkite
  15. Coinomi
  16. Dark Net Heroes League (DHL)
  17. Freedom Node
  18. oin MarketJ
  19. Microsoft
  20. Prasos
  21. Samourai Wallet
  22. Satoshi Counter
  23. Satoshi Portal
  24. Stampery Inc.
  25. Trezor
  26. Vaultoro
  27. Walltime
  28. yogh.io

[Add your business here by creating a pull request (must include public announcement link).

As A Third Party

The safest route would be support both chains.

Operate an exchange and want to make sure your customer funds are safe and secure? Check out: How An Exchange Supports BIP 148

Conclusion

If BIP 148 is successful then little to no action is needed from most users.

However, around August 1, 2017 users should be cautious, especially when receiving coins.

Most users will likely wait until more clear information is available.

How An Exchange Supports BIP 148

Credit: This guide to help exchanges support BIP 148.

UTTA - Underlying (or unbiased) Token Trading in Advance:

An Exchange ABC could start trading (1) "Bitcoin-BIP148" SegWit-enabled tokens, as well as (2) "Bitcoin-Old" Non-SegWit tokens, starting 1st July 2017, i.e. one month before BIP148 flag day.

The exchange's customers will find the underlying coins, and not any future, derivative or bet, in their account balances, and can trade them exactly as if the two chains exist already!

This would help gauge the economic support for both chains.

Here is an illustrative and exhaustive guidance on how trading will work for customers on an exchange:

Technically, and practically, it works like this:

Starting 1st July 2017, each customer on Exchange ABC will see 3 Bitcoin accounts:

  • (a) The normal Bitcoin account

  • (b) An account laballed "Bitcoin-Old-NonSegWit"

  • (c) An account labelled "Bitcoin-BIP148-SegWit"

By default, a customer having 1 BTC on his account will find the follwoing balances, when he logs in on 1st July 2017:

  • (a) Bitcoin: 1.00000000 BTC

  • (b) Bitcoin-Old: 0.00000000 BTC

  • (c) Bitcoin-148: 0.00000000 BTC

If the customer does nothing special, he can continue trading, withdrawing or loading bitcoins as usual and does not need to change anything. He can just ignore (b) and (c).

Optionally, the customer can move back and forth the balances between (a) and (b) and (c), e.g. as follows:

  • (a) Bitcoin: 0.60000000 BTC

  • (b) Bitcoin-Old: 0.40000000 BTC

  • (c) Bitcoin-148: 0.40000000 BTC

This means, he now has moved 0.4 BTC from his "default" Bitcoin account (a) to his "new" Bitcoin accounts (b) and (c). This kind of account keeping respects the fact that after a chain split, i.e. after 1st August 2017, each Bitcoin that exists before the chain-split will duplicate into one "Bitcoin-Old" and one "Bitcoin-148".

Let's assume that there are two customers on Exchange ABC, call them Alice and Bob, with the following account balances:

Let's assume that Alice and Bob "re-arrange" their accounts in their account settings, as follows:

Now, Alice and Bob can start trading. Let's assume, for the sake of simplicity and ease of understanding, that 1 BTC is valued == 1000 EUR.

Also, trading fees earned by the Exchange operator are assumed to be 0.00% here for simplicity.

Alice and Bob can now place buy and sell orders for Bitcoin-Old (b) or Bitcoin-148 (c), exactly the same way as for normal Bitcoin (a), or for any other crypto-currency traded on Exchange ABC. For example, Alice places a buy-order for 0.25 tokens of "Bitcoin-148" for 300 EUR, and Bob accepts this order. After settlement, their account balances look like this:

After another trade where Alice is selling 0.2 "Bitcoin Old" tokens to Bob for 150 EUR, their balances read:

Now let's assume Alice wants to withdraw 0.7 BTC (0.8 BTC would be the maximum possible in the current situation for her) to her local Trezor wallet. For this she will first "re-arrange" her account (again via account settings) as follows:

She will now withdraw 0.7 BTC:

Alice couldn't withdraw her remaining 0.45 "Bitcoin-148" tokens, because they do not yet exist on any public blockchain. To withdraw them as well already now, she'd either have to sell the 0.45 Bitcoin-148 tokens on the Exchange ABC and buy legacy Bitcoin tokens from that Fiat money, or she'd buy 0.45 Bitcoin-Old tokens to match her "Bitcoin-148" tokens.

Thereafter she could again "re-arrange" her account and then withdraw all the BTC.

Let's assume that no further activity occurs on Alice's and Bob's accounts for the rest of July 2017.

On 1st August 2017, Bitcoin-BIP148 shall activate. As a result, the legacy account balance (a) ceases to exist, and the Bitcoin balances in the customers' accounts read:

As we can see, Bob's former 0.6 BTC was moved (or "re-arranged") to his "Bitcoin-Old" and "Bitcin-148" balance. This reflects the fact that both chains (b) and (c) have the same pre-decessor chain (a).

Now let's assume that first the "Bitcoin-Old" chain grows faster than the "Bitcoin-148 chain", such that there are indeed TWO public Bitcoin blockchains (in the other case we'd have only one common chain, and we'll come to that scenario later).

From this moment on, trading of Bitcoin-Old tokens and Bitcoin-148 tokens on Exchange ABC works like tokens of any other crypto-currency, they are simply treated as what they are - separate chains.

Alice or Bob could e.g. withdraw "Bitcoin-Old" or "Bitcin-148" tokens. Exchange ABC will make sure that no replay attacks are possible when their customers withdraw tokens.

It can easily guarantee this e.g. by a mechanism as described here.

Also, Alice and Bob can load their account balances with new coins. In this case, of course Exchange ABC cannot guarantee that no replay attack will occur. However, for fairness reasons, Exchange ABC will always monitor the receiving address on BOTH chains, and should coins arrive on the "other chain", the received amount will also be credited to the customer's balance, such that no coins get lost when a customer gets "replay-attacked" when loading coins onto his/her account at Exchange ABC.

Now let's consider what happens if one of the two public blockchains disappears - let's look at different possible scenarios:

1.) The blockchain of BIP148 (UASF, SegWit) is not mined at all because of lack of interest, or is slower from the start then "Old-Chain", and gets slower and slower and gets less and less valuation and less and less miners and nodes operate this chain.

At some point, this chain "dies" because no more block is mined on this chain at all.

--> In this case, customer balances for Bitcoin-148 coins will not be withdrawable any more as the chain dies, Exchange ABC will quit support trading its tokens a short time later, and customers will lose their balances for this token, since the coin has become unusable and worthless.

2.) After a "slow start" on 1st August 2017, the tokens of Bitcoin-BIP148 (UASF, SegWit) become more and more valuable, more and more miners hence switch to mine them, the BIP-148 chain hence becomes longer and longer and at one point overtakes the "Old-Non-SegWit-Chain".

At this point, the "Old-Non-SegWit-Chain" reorganises and becomes identical to the "BIP148-SegWit-Chain". As a consequence, the "Bitcoin-Old" tokens cannot be withdrawn any more and cannot be traded any more - they will be displayed "grayed-out" in the account balance view, just for information, and will a few days afterwards be removed from the user accounts altogether.

3.) On 1st August 2017, if from the first moment on, the BIP-148 SegWit chain is faster than the other "Non-SegWit" chain, then no "Bitcoin-Old" chain will be created in the first place, and the customer balance for "Bitcoin-Old" tokens will not be withdrawable.

These tokens, however, will still be tradeable for the first time starting 1st August, because the initial faster block creation of BIP-148 SegWit blocks might well be a result of statistical coincidence, i.e. the "Bitcoin-Old" chain may still turn out faster and longer and fork-off from the BIP148-chain some time later.

Another reason why there don't immediately have to be two parallel chains is that the "Old-chain" will accept BIP148-blocks (because of the SOFT fork characteristics) such that there is no reason to immediately fork-off. However, injection of SegWit transaction into the "Old chain" that look like "anyone can spend" transactions to the "Old-chain miners", as well as old Non-BIP148 blocks that are rejected by BIP148-miners, should sooner cause a chain-split with Old-chain forking off from BIP148-chain, if "old-chain" miner hash power is greater than "BIP148-chain" hash power.

So trading of Old-Chain tokens will be possible for some time (maybe even some days) on Exchange ABC, in expectation that an Old-chain creation may still happen. In case the Old-Chain should indeed fork-off, as soon as it is [10] blocks longer than BIP148-chain, Exchange ABC will recognize the existence of this Old-Chain and will allow withdrawals of "Bitcoin-Old" tokens.

After this moment, the two chains will either coexist forever, or one of the cases 1.) or 2.) will occur at some point in time, sooner or later.

SUMMARY

By opening a fair and unbiased market for directly trading "Non-SegWit-Bitcoin" tokens and "BIP148-SegWit-Bitcoin" tokens well in advance before actual BIP148 activation, a market demand for a SegWit-disabled coin on the one hand, and for a SegWit-enabled Bitcoin on the other hand, can be determined in a fair and reliable way, before SegWit activation on 1st August 2017 happens.

This solves the dilemma that nobody knows in advance of 1st August what the actual market/user demand for SegWit is, because today's miner hashrate is not representing real market demands.

Written by WeUseCoins on May 21, 2017.