{"id":27022601,"url":"https://github.com/mx4/bitc","last_synced_at":"2025-04-04T20:37:54.273Z","repository":{"id":13625672,"uuid":"16318938","full_name":"mx4/bitc","owner":"mx4","description":"Lightweight Bitcoin client in C","archived":false,"fork":false,"pushed_at":"2025-03-28T15:40:05.000Z","size":7756,"stargazers_count":103,"open_issues_count":14,"forks_count":23,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-03-28T16:34:35.750Z","etag":null,"topics":["bitcoin","c","wallet"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mx4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-01-28T17:08:53.000Z","updated_at":"2025-03-28T15:41:23.000Z","dependencies_parsed_at":"2025-03-28T16:35:19.504Z","dependency_job_id":"cdccfa50-3e16-4f50-a6b5-902a6c9734db","html_url":"https://github.com/mx4/bitc","commit_stats":null,"previous_names":["mx4/bitc"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mx4%2Fbitc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mx4%2Fbitc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mx4%2Fbitc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mx4%2Fbitc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mx4","download_url":"https://codeload.github.com/mx4/bitc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249478,"owners_count":20908210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","c","wallet"],"created_at":"2025-04-04T20:37:53.706Z","updated_at":"2025-04-04T20:37:54.266Z","avatar_url":"https://github.com/mx4.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/mx4/bitc/actions/workflows/ci.yml/badge.svg)](https://github.com/mx4/bitc/actions/workflows/ci.yml)\n\n### BITC\n\nbitc is a *thin* SPV bitcoin client.\n* 100% C code,\n* support for linux, mac, OpenBSD platforms,\n* console based: uses ncurses,\n* home grown async network i/o stack,\n* home grown poll loop,\n* home grown bitcoin engine,\n* supports encrypted wallet,\n* supports connecting via Tor/Socks5,\n* multi-threaded,\n* valgrind clean.\n\n**WARNING:** this app is under development and may contain critical bugs.\n\n---\n\n#### Screenshots\n\n![dashboard](https://i.imgur.com/IJJU14s.png)\n\n---\n\n#### Dependencies\n\n - cJSON: a C library to parse JSON objects. It's released under MIT license.\n        http://sourceforge.net/projects/cjson/\n - libcurl: an http library. It's released under a MIT/X derivate license.  \n\thttp://curl.haxx.se/libcurl/\n - LevelDB: Google's key value store, released under the BSD 3-Clause License.  \n\thttps://github.com/google/leveldb\n - OpenSSL: crypto library.  \n        https://www.openssl.org/\n\n---\n\n#### Install\n\n##### Ubuntu 13.10, Saucy Salamander\n\nYou first need to install the libraries this app uses:\n```\n   # sudo apt-get install git make clang libssl-dev\n   # sudo apt-get install libcurl4-openssl-dev libncurses5-dev\n   # sudo apt-get install libleveldb-dev libsnappy-dev\n   # sudo apt-get install libstdc++-4.8-dev\n```\n\nthen clone the git repository:\n```\n   # git clone https://github.com/bit-c/bitc.git\n```\n\nfinally build and launch:\n```\n   # cd bitc \u0026\u0026 make\n   # ./bitc\n```\n\n##### Mac OS\n\n  You need to install libcurl, leveldb, libsnappy and ncurses via `port` or `brew`.\n\n---\n\n#### Usage\n\nThe first time you launch the app, a message will notify you\nof the list of files \u0026 directory it uses.\n\nbitc uses the folder `~/.bitc` to store various items:\n\n|    what              |    where                | avg size |\n|:---------------------|:------------------------|:--------:|\n| block headers        | ~/.bitc/headers.dat     | ~ 20MB   |\n| peer IP addresses    | ~/.bitc/peers.dat       |  ~ 2MB   |\n| transaction database | ~/.bitc/txdb            |  \u003c 1MB   |\n| config file          | ~/.bitc/main.cfg        |  \u003c 1KB   |\n| wallet keys          | ~/.bitc/wallet.cfg      |  \u003c 1KB   |\n| tx-label file        | ~/.bitc/tx-labels.cfg   |  \u003c 1KB   |\n| contacts file        | ~/.bitc/contacts.cfg    |  \u003c 1KB   |\n\n\nA log file is generated in `/tmp/bitc-$USER.log`.\n\nTo navigate the UI:\n - `\u003cleft\u003e` and `\u003cright\u003e` allow you to change panel,\n - `\u003cCTRL\u003e` + `t` to initiate a transaction,\n - type `q` or `back quote` to exit.\n\n---\n\n#### Encrypted wallet\n\nbitc has support for encrypted wallets. The first time you launch the app, it will\nautomatically generate a new bitcoin address for you, and the wallet file will\nhave private key **unencrypted**.\n\nTo turn on encryption, or to change the encryption password:\n```\n  # ./bitc -e\n```\n\nThe next time you launch the app, you may or may not specify `-p` on\nthe command line. If you do, you will be able to initiate transactions. If you\ndo not the dashboard will still be functional but you won't be able to\ninitiate transactions.\n\nNote that bitc encrypts each private key separately.\n\n**WARNING:** please remember to make back-ups.\n\n---\n\n#### Importing existing keys\n\nYou need to modify your `~/.bitc/wallet.cfg` so that it contains the private\nkey as exported by `bitcoin-qt` with the command `dumpprivkey`. More on that\nlater.\n\n---\n\n#### TOR / SOCKS5 support\n\nBitc can route all outgoing TCP connections through a socks5 proxy. Since TOR\nimplements a SOCKS5 proxy, you just need to put the entry:\n```\n\tnetwork.useSocks5=\"true\"\n```\nin your main config file to use bitc over Tor (for a local Tor client). If the\nTor proxy is not running locally, you need to modify the config options:\n```\n \tsocks5.hostname=\"localhost\"\n\tsocks5.port=9050\n```\n.. in the file `~/.bitc/main.cfg`. The default `hostname:port` is\n`localhost:9050` on linux, and `localhost:9150` on mac.\n\n---\n\n#### Watch-only Addresses\n\nIf you tag a key as\n```\n   key0.spendable = \"FALSE\"\n```\nin your `~/.bitc/wallet.cfg`, bitc won't attempt to spend the bitcoins held by\nthis address. This is not quite like a watch-only address, but we'll get there\neventually.\n\n---\n\n#### Problem?\n\nThere are still a variety of things that need to be fixed or implemented (cf [TODO\nfile](TODO.md)), and some of these may explain the behavior you're seeing.  If bitc\ncrashes, please collect the log file along with the core dump and open a ticket\non github:  \n\n\thttps://github.com/bit-c/bitc/issues\n\n---\n\n#### Feedback, comments?\n\nFeel free to reach out to me if you have any feedback or if you're planning to\nuse this code in interesting ways.\n\n   mailto:austruym@gmail.com\n   PGP: 1C774FA3925A3076752B2741054E32DFBEE883DB\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmx4%2Fbitc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmx4%2Fbitc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmx4%2Fbitc/lists"}