This post will be an update of the recent development progress and next steps that are required before the full mainnet launch. We have taken a snapshot of the Bitcoin blockchain after height 491406 and are now in the final stages of preparation for the launch of the Bitcoin Gold mainnet, which will begin with block 491407. The Equihash PoW change and new difficulty adjustment algorithm have already been completed and merged, and a DNSSeeder has been set up. There are other key tasks in progress, all on course to be completed within in a few weeks, according to our best estimate.
- Equihash PoW change
- Difficulty adjustment algorithm
- Setup DNSSeeder
Unique address format
ETA: Oct 27
Instead of address prefix “1” and “3” for Bitcoin, we choose “G” and “d” for Bitcoin Gold P2PKH and P2SH addresses. This is done by changing the address version to 39 (P2PKH) and 90 (P2SH). The address version for testnet and regtest are not changed. The code change is trivial but more test cases are needed.
SIGHASH_FORK_ID Replay Protection
ETA: Oct 31
PR 1: https://github.com/BTCGPU/BTCGPU/pull/55
PR 2: https://github.com/BTCGPU/BTCGPU/pull/83
We are working on the same 2-way replay protection as Bitcoin Cash. Currently we have two implementations. PR1 is from our dev team and PR2 is from an anonymous person seeking the bounty. The two implementations are roughly the same but both need improvements on testing.
The original intention to make a bounty for it was to find more devs to speed up the development and get more feedback. However a competing implementation is also welcome because we can be more confident by comparing them. So no matter which PR is finally merged, we are happy to see that the anonymous author can get the bounty.
Testing is always more important than coding for this kind of feature. We can’t rush to merge the code until it has been fully tested. So we may need a few days to test until we can be fully confident in it.
Adopt BTG mining protocol for pool server
ETA: Oct 29
The new block header format is designed for existing Zcash pool and miners. BTG client is mostly compatible with them but according to ZIP-1, some minor changes are still needed in the pool servers. More specifically, the first 4 bytes of hashReserved field should store the block height rather than zeros.
Merge other minor changes
ETA: Oct 31
- Support premine output whitelist (PR: https://github.com/BTCGPU/BTCGPU/pull/79)
- Enforce time lock for premined coins (pending, tracking issue: https://github.com/BTCGPU/BTCGPU/issues/58)
- Improve build experience and kill TravisCI failures.
Deploy Testnet Full Node
Testnet will be launched as soon as the unique address format and replay protection is merged. We have already launched a few testing nodes locally to test the p2p network and successfully mined a few Equihash blocks. But be aware, this is not the public testnet. It’s just a temporary local test.
BTG nodes can talk to regular Bitcoin nodes to download the original chain (before the fork height). However it’s just designed for bootstrapping the BTG p2p network. We will manually bootstrap a BTG full node from the Bitcoin network by downloading pre-fork blocks. After that, the magic number of released BTG client will be changed so that all they will sync from the bootstrapping node and won’t talk to Bitcoin p2p network anymore.
We are providing everyday updates on the development process and the work of the team. They will be posted here and on Twitter.