Getting bitcoin hardware wallets to support Bitcoin Cash was a tougher technical challenge than expected, according to SatoshiLabs. The company behind the popular TREZOR devices said limited time to test and eliminate bugs delayed its coin-splitting tool.
Bitcoin users who controlled their own private keys at the 1st August chain split suddenly had balances compatible with two separate blockchains. However, those without technical knowledge still rely on wallet software providers to split those balances with confidence.
Otherwise, sending coins to a Bitcoin (BTC) or Bitcoin Cash (BCH) address post-fork is a nerve-wracking experience. Will the transaction amount arrive OK? Will the other balance suddenly disappear?
Even technical advice on the issue is daunting. Some caution users to wait a while and use official, tested tools from wallet makers before attempting to split balances.
Protocol Code Changes Corrupted Database
In a blog post, SatoshiLabs’ development team said it ran into unexpected technical complications:
When we first promised that we would develop BCH integration in TREZOR Wallet, we never imagined that it would be such a difficult, stressful and lengthy process.
The developers’ firmware update for the wallet device itself worked OK. However, they encountered problems when BitcoinABC (the protocol software that created Bitcoin Cash) interacted with the Bitcoin server software TREZOR uses as its backend, called Bitcore.
Bitcore (which is completely different to majority protocol software Bitcoin Core) and similar server software usually cross-check their block database with the Bitcoin blockchain when starting up.
However, differences in BitcoinABC’s code from the main protocol affected Bitcore’s indexing process. This in turn led to some recent transactions disappearing, and some addresses even showing negative balances.
This corrupted SatoshiLabs’ entire BCH block database. Reindexing it was taking too long, so the team had to copy the indexes from its (main chain) Bitcoin node and manually invalidate block information from after the fork.
SatoshiLabs clarified there was nothing faulty with the BitcoinABC code itself. However its post did criticize the short time between ABC’s final release and the hard-fork, and BitcoinABC’s lack of a public testnet.
Created Bitcoin Cash Tools for TREZOR Despite Opposing Fork
SatoshiLabs and its spokespeople have been open in their support for implementing SegWit, and opposition to any “big-block” fork. Updates from the company initially used the term “Bcash” to refer to the forked coin, and used language implying the team did not consider the fork legitimate.
CEO Marek Palatinus, better known as “Slush”, has also been a personal supporter of Bitcoin Core developers and their scaling roadmap.
— slush (@slushcz) June 14, 2017
SatoshiLabs developer Jochen Hoenicke (a.k.a. “Johoe”) has also expressed frustration with Bitcoin Cash functionality on Reddit, saying “I resent it”.
Bitcoin Users Rely Heavily on Developers
However the company also kept its word by providing tools for its users to claim BCH if they wanted. It promised that if Bitcoin Cash developers included replay attack protection in their code, it would cooperate — as this would be better for both BTC and BCH.
TREZOR owners will still need to use the beta version of the wallet firmware to “claim” Bitcoin Cash balances, though. SatoshiLabs has indicated it doesn’t wish to support the coin longer-term.
Whatever your opinion on the hard fork, it has demonstrated that average Bitcoin users are still heavily reliant on skilled developers to protect their digital wealth — and make it useful.
Given Bitcoin’s youth and still-niche status, the talent pool of developers with a thorough understanding of Bitcoin’s innards is still relatively small.
Have you split your BTC and BCH balances? How was the experience? Let us know.
Images via SatoshiLabs, Jon Southurst