Bitcoin Core: What Is It And How Does It Work?
In this guide, we'll explore the Bitcoin Core software, which is the original Bitcoin wallet software and successor of the one introduced by Satoshi Nakamoto back in 2009. Explore its functionalities, learn about its maintenance, and grasp the steps for installing and using it.
What Is Bitcoin Core?
Bitcoin Core stands as the foremost Bitcoin client software, tracing its lineage directly from Satoshi Nakamoto's original Bitcoin software release following the publication of the renowned Bitcoin whitepaper.
Bitcoin Core encompasses dual functionalities: serving as "full-node" software for comprehensive blockchain validation and as a bitcoin wallet. The project also oversees associated software, including the cryptography library libsecp256k1, among others, accessible on GitHub.
Bitcoin operates as a protocolβa set of rules dictating the validation of transactions and blocks. These rules undergo alteration solely through forks.
Practically, Bitcoin Core serves multiple purposes:
- Facilitating communication with other nodes, by connecting to the Bitcoin peer-to-peer network
- Enabling the composition, signing, and verification of transactions (according to the Bitcoin protocol)
- Supporting the download, storage, and verification of blocks (meeting Bitcoin protocol standards)
- Receiving transactions from others and storing them in the mempool
- Selecting transactions from the mempool and mining them into a block
- Providing wallet functionality
- And more
In essence, Bitcoin Core serves as a client that facilitates interaction with other entities in the network while adhering to the Bitcoin protocol.
Just as Bitcoin Core exists, there are other software solutions offering similar functionalities, such as Bitcoin Knots or BTCD. Furthermore, new clients can always be developed, showcasing the beauty of an open-source protocol like Bitcoin.
How Bitcoin Core Works
Bitcoin Core operates by independently determining the validity of transactions within the blockchain. Users of Bitcoin Core exclusively recognize transactions within this validated blockchain, making it the preferred blockchain for all. This decentralized approach is maintained by individual users running their own Bitcoin Core full nodes, each adhering to identical rules to assess blockchain validity.
There's no voting or manipulative process involved; instead, the software relies on mathematical algorithms to evaluate blocks consistently. This consensus ensures that only valid bitcoins are accepted, upholding Bitcoin's regulations even against the most influential miners.
In addition to enhancing decentralization, Bitcoin Core users benefit from:
- Enhanced security for their bitcoins.
- Privacy features not found in other wallets.
- User-friendly interfaces and robust functionalities.
Bitcoin Core offers a built-in wallet with both graphical and command line/API modes, supporting multiple lightweight wallets simultaneously with comparable security and privacy levels.
However, it's essential to ensure secure and private connections to Bitcoin Core for lightweight wallet usage, typically requiring specific configurations.
The Bitcoin Core Wallet GUI provides:
- Fee slider for selecting between low fees and fast confirmations
- Network monitoring to track bandwidth usage
- QR code generation for receiving payments
- Clear overview of current balance and recent transactions
- Proxy configuration for privacy using Tor or other proxies
- Coin control to enhance privacy or reduce costs by choosing inputs
- Unique invoices for easy payment tracking
- Watch-only support for tracking offline stored bitcoins
The Bitcoin Core Wallet RPC/REST CLI (Command Line Interface) offers functionalities such as:
- Generating new addresses for receiving payments
- Creating, signing, and sending raw transactions
- Sending single payments to multiple addresses
- Instantly checking available Bitcoin balance
- Notifications for new blocks and transactions
- Viewing received transactions available for spending
Lightweight wallets, when connecting to multiple random full nodes, may compromise privacy and security. However, connecting lightweight wallets exclusively to one's Bitcoin Core full node, termed a trusted peer, with secure and private connections ensures most security and privacy benefits alongside aiding decentralization.
Who Are The Bitcoin Core Developers?
The Bitcoin Core website reflects an open and decentralized ethos, indicating that there are no formal companies or entities behind the project. Instead, it operates as open-source software, welcoming contributions from anyone, including casual contributors who can submit pull requests to the codebase.
At the helm of Bitcoin Core are the maintainers, similar to esteemed moderators. These maintainers oversee changes to the Bitcoin Core codebase, known as "commits," which are proposed by fellow Bitcoin developers or contributors in the form of pull requests (PRs).
Who exactly are these Bitcoin Core maintainers? They are contributors who have earned significant trust and respect within the project by consistently making valuable contributions over time. When the existing group of maintainers deems it appropriate, they may grant commit access to a contributor's GitHub account based on their demonstrated competence, reliability, and dedication within specific areas of the project.
The lead maintainer role holds ultimate responsibility for overseeing all facets of the project and coordinating releases. This position has been passed down voluntarily over the years:
- Satoshi Nakamoto: January 3, 2009 - February 23, 2011
- Gavin Andresen: February 23, 2011 - April 7, 2014
- Wladimir van der Laan: April 7, 2014 β February 15, 2023
- Gloria Zhao: February 15, 2023 - present
It is assumed that Gloria Zhao currently holds the lead maintainer position, as her PGP key is listed as the first in the document bitcoin/contrib/verify-commits/trusted-keys on the official Bitcoin GitHub repository.
Additional notable contributors to Bitcoin Core include Luke Dashjr, Andrew Poelstra, Gregory Maxwell, Matt Corallo, Peter Todd, Pieter Wuille, and numerous others.
Who Pays The Bitcoin Core Developers?
You might wonder if all the contributors and maintainers of Bitcoin Core volunteer their time and efforts for free. While most contributors likely dedicate their coding and reviewing skills without compensation, some individuals work on Bitcoin Core full-time as their primary occupation, often supported by sponsors.
In the image I shared earlier featuring the maintainers, you may have noticed that one logo appeared more frequently: "Brink." Brink is a nonprofit organization entirely funded by donations, dedicated to supporting Bitcoin developers in their efforts to build, secure, test, and review the Bitcoin Core software that underpins the Bitcoin network.
Then, Who Owns Bitcoin Core?
Bitcoin Core maintainers do have a degree of control over the codebase and the development process due to their ability to approve and merge code changes using their PGP keys. However, this control is exercised within the framework of decentralized decision-making and consensus among the broader community of developers and users.
While maintainers play a crucial role in ensuring the integrity and security of Bitcoin Core, their decisions are subject to scrutiny and review by other contributors and stakeholders. The decentralized nature of the project means that no single individual or group can unilaterally dictate the direction of development or make decisions that are contrary to the consensus of the community.
Anyone can propose code improvements by opening a pull request on the github master branch of bitcoin/bitcoin. Developers review these requests to ensure they're safe. There's no formal entrance requirement for contributing to Bitcoin Core; anyone can review and give feedback on pull requests. If a request garners no reasonable objections, a maintainer merges it.
Changes to the Bitcoin protocol are typically proposed through the Bitcoin Improvement Proposal (BIP) process (see image up here), but adherence is voluntary. It serves as a structured method for peer review and consensus building.
Bitcoin Core Quick Review
If you don't have time to read the full Bitcoin Core review, you can have a look at the table done here which features the main privacy functions and other features of the original Bitcoin wallet. We also gave it a blockdyor score.
Category | Feature | Score |
---|---|---|
π Privacy & Security (44/50) | ||
π Open Source Compliance | Source code is publicly available and is Open Source | 10/10 |
π Software Integrity | Software can be built from source and binaries match | 10/10 |
π Security | The wallet is non custodial, features a passphrase but the inscriptions exploit hasn't been fixed yet | 1/5 |
π± Seed Generation | Uses Java's SecureRandom function to generate its entropy | 5/5 |
πΎ Seed Storage | Is stored in a data directory of the Bitcoin Core application | 3/5 |
πΌ Hardware Wallet | Supports External Signers | 5/5 |
π° Purchase Procedure | The app is free of charge | 5/5 |
πΈ Fees | Fees are depending on Bitcoin Network fees | 5/5 |
π Features (42/50) | ||
π₯οΈ User-Friendly UX | Can be intimidating at first, but it's actually easy to use | 4/5 |
π¨ Design | Evergreen. It passed the test of times | 5/5 |
π‘ Air Gap / PSBT / SeedQR | It supports PSBT (Partially Signed Bitcoin Transactions | 3/5 |
πΎ MicroSD Backup | You can backup the wallets wherever you want | 5/5 |
π€ Multisignature Support | Support Multisig wallets | 5/5 |
π Passphrase (BIP39) | Doesn't support BIP39 Passphrases (13th or 25th word) | 1/5 |
π Connection | Can connect to clearnet, Proxy or TOR | 4/5 |
π¦ Ready-to-Use | Comes with everything needed to start immediately | 5/5 |
π Documentation | Detailed user guides available online | 5/5 |
π οΈ Customer Support | Bitcoin Core offers customer support on Github or on the website | 5/5 |
π§±blockdyor Score (86/100) |
How To Install Bitcoin Core
While it remains possible, bitcoin.org is no longer the official source to download Bitcoin Core. It is recommended to obtain releases from bitcoincore.org and follow the verification instructions provided there.
Moreover, Bitcoin.org may not offer the latest releases. Since version 23.0, Bitcoin Core has altered its release signing process. Future releases will no longer be signed by a single release key but rather by a collective of Bitcoin Core developers.
You can verify the signature(s) using the keys of your chosen developers, and your software should support retrieving and updating keys from a keyserver, with keys.openpgp.org being the primary choice.
To download Bitcoin Core, navigate to bitcoincore.org and select the download option from the menu. The website will suggest the most suitable version based on your browser's user agent.
Notably, there are no mobile versions available as Bitcoin Core is better suited for desktops, considering the size of the blockchain, which is expected to surpass 1 TB in the coming years.
Bitcoin Core will be downloaded in a matter of seconds, depending on the speed of your internet connection.
Depending on the operating system you are using, you can now open/install the Bitcoin Core application. After it's installed, click on the Bitcoin Core app to get started.
Bitcoin Core doesn't come with many bells and whistles; its user interface remains quite spartan, much like when Satoshi Nakamoto first introduced it. Consequently, using it for the first time might feel a bit daunting.
Upon opening Bitcoin Core, you'll encounter several prompts, primarily due to the substantial size of the blockchain download nowadays. These prompts include:
- A warning about the amount of free space available on your computer (1).
- A suggestion to run Bitcoin Core in Pruned mode (2) to save space. However, Pruned mode comes with limitations, such as the inability to view transactions older than 6 days, if you set a max storage of 2GB for example. Therefore, it may be impractical if you need to access older transactions .
- If you have terabytes of available space, you can opt out of the pruned node (2) option and proceed with the full download by pressing OK (3).
Upon clicking "OK," the Initial Block Download (IBD) will start. In pruned mode, it might only take a few minutes, whereas in full node mode, it could span several days, weeks, or even months. Rest assured, the Bitcoin Network, along with your connection speed and setup capabilities, will handle the rest.
After closing all disclaimers and other information, you'll arrive at the main dashboard of Bitcoin Core, structured as follows:
- Overview (1): This section functions as your wallet, displaying your balance. Here, you can create a new wallet (5) or import an existing one.
- Send (2): In this section, you can initiate transactions on the Bitcoin Network. Before sending funds, ensure you've received some.
- Receive (3): Generate fresh addresses here to receive bitcoins.
- Transactions (4): View the history of transactions made in this wallet.
- Blockchain Sync (6): This bar indicates the status of blockchain download. Ensure it's fully loaded before attempting any actions in Bitcoin Core.
- Units and Network (7): Located at the bottom right, here you'll find settings like the Units selector (BTC, mBTC, uBTC, Satoshi), information about enabled HD Key Generation, active peer connections, and more.
Create A New Wallet In Bitcoin Core
You can initiate the creation of a new wallet even before the client has finished downloading the blockchain. It's straightforward: simply click the button located at the center of the main Overview screen, or alternatively, navigate to the menu bar, click "File," and then select "Create Wallet."
During the process of creating a new wallet, Bitcoin Core will prompt you to provide information such as the wallet name (1) and whether you want to encrypt the wallet with a passphrase (2). Additionally, you have the option to select other advanced settings (3). When you are ready, click on "Create" (4).
In case you chose to encrypt the wallet, choose the passphrase to encrypt your wallet and click "OK".
Click on the "Yes" button to go to the next step.
Click on "OK" to finalize the process.
The name of the wallet will appear in the title bar and Available, Pending and Total will show "0.00000000 BTC".
Backup A Wallet In Bitcoin Core
Despite common misconceptions, Bitcoin Core actually incorporates a somewhat "old school" wallet approach. Unlike many modern wallets, the original Bitcoin wallet software does not generate any backup phrases, also known as recovery or seed phrases. Instead, it relies on a wallet.dat file to store private keys and other pertinent wallet data.
To create a backup, you can navigate to "File > Backup Wallet..." within the Bitcoin Core interface.
Alternatively, you can locate the folder within the data directory of the Bitcoin Core application. This directory typically resembles the following structure: [/users/yourusername/Library/Application Support/Bitcoin]. (Please note that the default directory for Windows/Linux systems may differ.)
Within the wallets folder, you'll discover additional folders corresponding to the number of wallets you've created in Bitcoin Core. Each of these folders represents one of your wallets. Simply copying and relocating these folders serves as your backup strategy. Now, let's have a look into how these wallets are structured internally.
Within the wallet folder, you'll encounter two files:
- wallet.dat (1): This file constitutes the wallet itself. It functions as a Personal wallet, employing a SQLite database format to store all your keys and transaction data.
- wallet.dat-journal (2): This file serves as the SQLite Rollback Journal for wallet.dat. Typically generated upon startup, it is removed upon shutdown. It's imperative for users to safeguard this file just as diligently as the wallet.dat file.
Bitcoin Core Fees
Bitcoin Core itself doesn't impose fees; they are instead determined by the Bitcoin Network. However, Bitcoin Core offers a comprehensive fee section with various customizable features, including a "replace by fee" function, which can be valuable if your transaction gets stuck in the mempool due to a low fee setting.
Here are the fee settings available in Bitcoin Core:
- Transaction fee (1): Automatically estimated based on current network conditions. This feature becomes visible after the Initial Blockchain Download (IBD).
- Recommended (2): Provides settings for achieving transaction confirmation. You can specify a target confirmation time in minutes or hours. Shorter times come at a higher cost, so choose accordingly.
- Custom (3): Allows you to set fees in BTC/sats per kilobyte according to your preferences.
Additionally, you can enable the "Replace by fee" function (4), which allows you to replace a pending transaction with a new one that includes a higher fee. This feature is useful if you initially set a low fee for your transaction and need to expedite its confirmation.
Design & UX
Less is more, and Bitcoin Core perfectly represent this. Over the years were added some minor UI improvements but it's still really a software that stayed true to itself without major UI overhauls and I appreciate this, because it means that user don't have to re-apprehend how to use it.
Bitcoin Core is the original hardware wallet, and should be simple and lightweight and it's what it really is.
Connectivity
Bitcoin Core can connect to the internet via clearnet. To run it over TOR, you simply need to install TOR (not the browser) and run TOR in the background as a daemon.
Upon restarting bitcoind, it will automatically generate a TOR address for you, which will be displayed in the debug.log file:
tor: Got service ID <myTorAddress>, advertising service <myTorAddress>.onion:8333
AddLocal(<myTorAddress>.onion:8333,4)
When you see this message, your setup is ready to go.
Moreover, Bitcoin Core can be configured to function as an RPC server, allowing it to serve as a backend for other lightweight software wallets such as Sparrow. It also supports mapping ports using UPNP, SOCKS5 Proxy, and several other connectivity options.
Advanced Features
Bitcoin Core doesn't have many advanced features, but one of the most interesting is the support of hardware wallets, also called "external signers". External signers such as hardware wallets can now be used through the new RPC methods enumeratesigners
and displayaddress
. Support is also added to the send
RPC call.
To connect an external signer to Bitcoin Core, you can use HWI (Hardware Wallet Interface), developed by Bitcoin Core developers, albeit it's currently in an experimental phase. Alternatively, if your hardware wallet vendor provides a compatible script, you can use that.
To enable the external signer feature, start bitcoind with the parameter:
shellCopy code$ bitcoind -signer=<path/to/hwi.py>
If you prefer using the Bitcoin Core GUI, you can input the script path in the "External signer script path" field found in the "Wallet" tab.
Warranty
Bitcoin Core comes with the MIT License, which essentially means it's provided "as is" without any warranty. This means there's no guarantee that it will work perfectly or meet all your needs.
Users are free to use, modify, and distribute the software, but they do so at their own risk. The developers and copyright holders cannot be held liable for any issues or damages that may arise from using the software.
Security & Privacy
Bitcoin Core is built on open-source principles, allowing its code to be meticulously scrutinized line by line. Additionally, it boasts robust security features such as strong entropy for seed generation and the option to encrypt the wallet.dat file.
Code Openness & Reproducibility
Bitcoin Core prioritizes transparency and reproducibility in its codebase. Being open-source, the entirety of its code is publicly accessible, allowing developers and users alike to review, verify, and contribute to its development. This transparency ensures that the software can be thoroughly examined, fostering trust and confidence within the community.
Seed Generation
Bitcoin Core employs an HD (Hierarchical Deterministic) seed for private key generation, deriving entropy from four key sources: low-level processor instructions, entropy extracted from the operating system, dynamic events, and static events.
Bitcoin Core Alternatives
There are many popular Bitcoin only software wallets, but software wallets that can work also as a full node, downloading inside of it also the full blockchain are much less. As I recall, the most famous ones are Bitcoin Knots (i won't include SPV wallets such as Electrum and such).
- Bitcoin Knots: Bitcoin Knots serves as a robust Bitcoin client, providing essential support to the network with its emphasis on security, privacy, and stability. It has several additional features compared to Bitcoin Core, and some of them are targeted at blocking spam such as the recent inscriptions bug.
- Specter: Specter Desktop is a user-friendly desktop wallet interface designed to complement Bitcoin Core, prioritizing privacy, coin control, and both single and multisignature setups. Specter operates on a non-custodial basis and offers seamless integration with major hardware wallets, simplifying the user experience beyond that of Bitcoin Core.
Pros & Cons of Bitcoin Core
Pros | Cons |
---|---|
β The original Bitcoin wallet/node software | β Doesn't support seed phrases |
β Originally created by Satoshi Nakamoto | β Hardware wallet integration difficult for beginners |
β Maintained by thousands of contributors | |
β Open Source | |
β Free of charge | |
β Easy to use |
Is Bitcoin Core right for you?
In today's evolving landscape, relying solely on Bitcoin Core as your primary wallet for daily transactions may seem excessive compared to a decade ago.
However, if you prefer the security of software maintained by Bitcoin Core developers and don't want to invest in a hardware wallet, it remains a viable option.
Using Bitcoin Core can also serve as an educational tool, allowing you to explore Bitcoin by experimenting with small amounts or utilizing the testnet feature (add testnet=1 to your bitcoin.conf).
Keep in mind that Bitcoin Core requires downloading the entire blockchain, so sufficient storage space is essential unless opting for a pruned node. As for its role as a node, running Bitcoin Core on your computer or dedicated hardware like a Raspberry Pi or HTPC is still a commendable choice.
Many popular Bitcoin node solutions, such as Citadel, Umbrel, and Start9, already incorporate Bitcoin Core, solidifying its position as the backbone of the network.
Bottom Line
In conclusion, Bitcoin Core stands as a versatile tool, offering users the chance to engage directly with the Bitcoin network, learn about its workings, and maintain control over their transactions and security.
While its resource demands and learning curve may deter some, its reliability, transparency, and integration within the broader Bitcoin ecosystem make it a compelling choice for those committed to self-sovereignty and deeper involvement in the cryptocurrency space.
Bitcoin Core Evaluation
With a good 86/100 blockdyor score, Bitcoin Core is one of the best Bitcoin software wallets out there.
Security: Bitcoin Core prioritizes security with its open-source nature, allowing users to scrutinize the code for transparency. While being an internet-connected software wallet poses vulnerabilities, its PSBT function enables offline use, enhancing security.
User-friendliness: Bitcoin Core aims for a user-friendly experience, serving both novices and experts. Its interface is intuitive, though beginners may find it challenging initially.
Compatibility: Bitcoin Core boasts wide compatibility, supporting Windows, MacOS, and Linux. Its node functions are already integrated into many Bitcoin nodes, ensuring seamless integration.
Reputation: Bitcoin Core is hailed as the cornerstone of the Bitcoin Network, serving as the undisputed Bitcoin wallet and node. Its reputation underscores its vital role in the ecosystem.
Cost: Bitcoin Core is free, with funding for maintainers and other developers sourced from non-profit associations like Brink. This underscores the ethical value of supporting such a critical open-source project.