GithubHelp home page GithubHelp logo

forkdrop / forkdrop_suite Goto Github PK

View Code? Open in Web Editor NEW
22.0 5.0 13.0 247 KB

A collection of tools and scripting for helping prepare and perform the task of claiming fork and airdrop value from Bitcoin keys

License: Other

Python 100.00%

forkdrop_suite's Introduction

Forkdrop Suite

A collection of tools and utilities to assist with privately and securely claiming of Bitcoin fork tokens. It is designed to be maximally secure and private by default by running on TAILS and only issuing external queries via Tor. It utilizes blockchain.info's onion gateway for obtaining Bitcoin balance info for specific addresses.

The tools included find (infer) fork and airdrop coins from a list of public addresses and blockchain data. It generates you a list of specific instructions for going about claiming them including generating the commands you need to run. It helps you keep organized through complicated claiming tasks by storing a save file which can be kept on an encrypted USB drive or SD card. It also provides tools for scraping block explorers and SPV providers of particular coins to help locate balances.

This project is affiliated with Forkdrop.io however it is licensed under the MIT for private use. We greatly appreciate any feedback, feature requests bug reports, contributions and donations to support this effort.

Warning

At present, this is still new software. We are still working on improvements.

These scripts do not access your private keys, but merely help getting you prepared and organized for using your private keys with another tool to transact.

Documentation

This is only a very brief overview, we suggest seeing our more detailed and screenshot-illustrated guides linked from the the forkdrop.io page to help you get started.

Transacting

This set of scripts generates instructions for using the bitcoin_fork_claimer tool which is not affiliated with this project. The Forkdrop Suite software does not handle your private keys, but rather prepares you for using your private keys with the bitcoin_fork_claimer for transacting.

claim-prep.py

This tool takes a list of public addresses and (optionally) queries blockchain.info's onion gateway to obtain the balances that the addresses may have held during relevant periods for getting credited with fork and airdrop value.

Unfortunately, blockchain.info's onion gatewaygateway has downtime, and sometimes rejects queries with a captcha to limit automated use (such as this). claim-prep.py has the option to provide an Electrum server to query address transaction history info from with the --electrum-server parameter. A .onion Electrum server can be selected here when on TAILS (or another system configured for Tor). --electrum-port and --electrum-no-ssl are also options that may be necessary for connecting to the Electrum server of your choosing.

The output is a generated report detailing which coins have been credited along with a long, detailed list of tailored instructions for claiming the value over Tor by providing the private key to the bitcoin_fork_claimer tool with the appropriate wrapper.

direct-query-claim-prep.py

Rather than querying blockchain.info's onion gateway, which is general information that can infer fork and airdrop value. This tool can query a subset of coin's SPV nodes and block explorers to obtain more specific balance info (but is less reliable than the non-coin-specific info on blockchain.info). It also generates a report of tailored instructions for claiming the value of this coin.

Also, since this has to exit Tor, this method is possibly less private due to understood de-anonymization attacks on Tor.

At present, only a small subset of coins have support implemented. These are the set of coins which are airdrops (such that the blockchain.info data is not adequate) and have some degree of market acceptance and ability to claim.

Plugins for more coins beyond this set could be implemented in the future.

mark-claimed.py

A script for marking particular pieces of value as claimed using a stored save file. This allows subsequent runs of claim-prep.py and direct-query-claim-prep.py to display these coins as already claimed such that the generated reports can focus on unclaimed value.

convert-addr.py

A utility for converting a Bitcoin (BTC) addresses with the Bitcoin prefixes into a corresponding equivalent address of another coin which has modified the prefix.

sync-forkdrop-data.py

This repository provides the relevant dataset from Forkdrop.io for offline private use by the scripts, however it is frozen at the time of the last update of the file in this branch. The dataset changes over time on the live website.

This script pulls down the current dataset from the site over Tor and overwrites the local copy.

Bech32 Addresses

Unfortunately, this set of tools does not support bech32 addresses since it relies on third party infrastructure (block explorers, Electrum servers) that don't currently have support. bitcoin_fork_claimer has limited support for bech32, but you must find the associated parameters yourself.

Third Party Code

The bitcoin/ subdirectory contains code from python-bitcoinlib which is licensed under LGPL v3 (or later)

forkdrop_suite's People

Contributors

forkdrop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

forkdrop_suite's Issues

blockchain.info .onion API access down

The script is having trouble requesting info from the .onion access point because it appears to be down during blockchain.info's migration to blockchain.com - we hope this is temporary.

We are doing what we can to resolve this ASAP.

add BCash CashAddr format to convert-addr.py

This is an important one to be able to do offline without having to trust a web service.

The python libraries here don't have the base32-style encoding ability yet, which will need to be added.

claim-prep.py produces KeyError: 'block_height'

python claim-prep.py --not-tails claim_save_file bunch_of_addresses

i've ran it once successfully, but upon rerun, it fails with this stacktrace

Traceback (most recent call last):
  File "claim-prep.py", line 43, in <module>
    vdb = ValueDb(settings)
  File "/home/user/coins/forkdrop_suite/lib/value_db.py", line 23, in __init__
    self['addrs'] = self._get_address_info(settings, addrs)
  File "/home/user/coins/forkdrop_suite/lib/value_db.py", line 44, in _get_address_info
    return [BlockchainAddressInfo(settings, addr) for addr in addrs]
  File "/home/user/coins/forkdrop_suite/lib/value_db.py", line 44, in <listcomp>
    return [BlockchainAddressInfo(settings, addr) for addr in addrs]
  File "/home/user/coins/forkdrop_suite/lib/address_info.py", line 143, in __init__
    tx_block_map = self._get_tx_block_map(ins, outs)
  File "/home/user/coins/forkdrop_suite/lib/address_info.py", line 182, in _get_tx_block_map
    self._iter_tx_blocks(ins + outs)}
  File "/home/user/coins/forkdrop_suite/lib/address_info.py", line 181, in <dictcomp>
    return {h: height for h, height in
  File "/home/user/coins/forkdrop_suite/lib/address_info.py", line 178, in _iter_tx_blocks
    yield h, d['block_height']
KeyError: 'block_height'

i did run sync-forkdrop-data.py in between, changing the content of forkdrop-data.json, if that matters. reverting this change to the latest git commit did however not fix this problem.

direct-query-claim-prep.py error: AttributeError: 'Namespace' object has no attribute 'electrum_server'

./direct-query-claim-prep.py --not-tails  claim_save_file bitcoin-private 1HE..<cut>
read: /home/user/coins/forkdrop_suite/forkdrop-data.json
read: /home/user/coins/forkdrop_suite/forkdrop-data.json
Traceback (most recent call last):
 File "./direct-query-claim-prep.py", line 48, in <module>
    vdb = ValueDb(settings)
  File "/home/user/coins/forkdrop_suite/lib/value_db.py", line 23, in __init__
    self['addrs'] = self._get_address_info(settings, addrs)
  File "/home/user/coins/forkdrop_suite/lib/value_db.py", line 41, in _get_address_info
    if settings.electrum_server:
AttributeError: 'Namespace' object has no attribute 'electrum_server'

any idea what's the problem here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.