1. Move your main BTC, send all real BTC from your main wallet to your new address in main chain. Before going any further, at least 1 confirmation is must.
If you do that, you won't be able to redeem the forkcoins since that chain will consider the grandfathered coins moved, from my understanding. You have to move the Blake2B BTC first to a new address you control, and use SIGHASH_UNIFIED (0x21), not regular sighashes. This particular sighash ONLY works on BIPcoin.
The best way to sweep is by signing a transaction on an airgapped device, or even better with TailsOS, using Python. Import your seed phrase into an offline device's wallet (e.g. Electrum), go to Wallet -> Information, and copy the zpub. You will need this to gether the unspent UTXOs.
On the offline device, install
cryptography module for Python so that you can run the scripts:
# On an online device
mkdir cryptography-offline
cd cryptography-offline
python3 -m pip download cryptography \
--only-binary=:all:
# On the offline device
python3 -m pip install \
--no-index \
--find-links=./cryptography-offline \
cryptography
Use the Electrum console to export all of your private keys with balance to a text file (the signing script I will attach below will need it)
Run this in the console:
exec(open(r"/tmp/electrum_helpers.py", encoding="utf-8").read())
export_public_inventory(r"/tmp/offline/public_inventory.json", per_branch=2000)
I used thetmp folder because it gets cleared on reboot usually and it's easier for me than writing placeholders in the tutorial.
(
electrum_helpers.py on Github)
If you have more/less addresses you can adjust
per_batch.
Now transfer the JSON to an online device and place and the script
build_manifest.py to an online device so that we can scan mempool.guide (a Blake2B mempool) for coins unspent before the fork.
python build_manifest.py --inventory public_inventory.json --out fork_data
(
build_manifest.py on Github)
This creates a folder
fork_data with a file
manifest.json containing the unspent UTXOs.
Now take it back to the offline device and run this command in Electrum console:
export_manifest_keys(r"/tmp/offline/manifest.json", r"/tmp/offline/public_inventory.json", r"/tmp/offline/keys.txt")
keys.txt contains your funded private keys.
Keep it offline.Next, get an address you will send the funds to. It can be one within your own wallet, or even one that you are spending from. But it should belong to you. You can send it to an exchange or something, but I recommend sending it to yourself first.
python offline_sweep.py --manifest manifest.json --destination DESTINATION_ADDRESS --fee-rate 1 --max-tx-fee-sats 100000 --max-total-fee-sats 500000 --plan-only --out plan_review
# I would read the file in the `plan_review` folder just to make sure everything looks right.
python offline_sweep.py --manifest manifest.json --keys-file keys.txt --destination DESTINATION --fee-rate 1 --max-tx-fee-sats 100000 --max-total-fee-sats 500000 --reviewed-plan plan_review/report.json --out signed_review
(
offline_sweep.py on Github)
signed_review folder will contain a series of raw transactions
tx_*.hex, sized to fit inside Blake2B coin's blockchain. Now you can go to mempool.guide or some other explorer, and broadcast it there.
Do not broadcast it to a Bitcoin explorer - it will not work anyway because SIGHASH_UNIFIED is invalid in Bitcoin.
When the tx is confirmed, repeat the offline_sweep process for transferring the funds to your account at Nonkyc.io, then sell them for BTC. I would not use some other exchange unless someone can vouch for it.
Then delete all files on your offline device and reboot it.
Scripts require Python 3.10+