Hot answers tagged

30

This is not a thorough schooling on Tor and only shows how to configure it to work together with Bitcoin Core. Bitcoin Core includes Tor integration When Tor is correctly setup on your system, Bitcoin Core automatically identifies Tor and creates an anonymous service. Little configuration is required to be 'off the grid' and, just a tiny bit more to be ...


28

The Bitcoin P2P network The Bitcoin P2P network is a randomly-wired gossip network. This means that all nodes make arbitrary connections to other peers (using various ways to discover new addresses) using a custom TCP protocol, usually using port 8333. Typical nodes create 8 outgoing connections, and if publicly reachable, accept up to a few 100 incoming ...


22

First the "why it matters": Fibre (Fast Internet Bitcoin Relay Engine) is a protocol which attempts to deliver Bitcoin blocks around the world with delays as close to the physical limits as possible. This is very important because Bitcoin mining is intended to be a fair lottery: If you have x% of the hashrate you should find x% of the blocks, on average. ...


15

Someone wrote a Bitcoin protocol decoder for Wireshark, several years ago. I assume it was included in the Wireshark distribution. Wireshark simply knows about the Bitcoin protocol. There is no magic involved.


12

Pruning is being considered, in fact, it was taken into account when designing the 0.8 database format. The unspent transaction outputs (which is the only essential piece of data necessary for validation) are already kept in a separate database, so technically removing old blocks is perfectly possible. It'll likely require some small changes to make sure the ...


12

Bitcoin is a so-called gossip network. They announce any new object to all of their peers (just the hash of the data). If the peer doesn't know the object yet, it asks for the full object. So it's certainly not a DHT or any smart organisation of data: every (full) node (eventually) learns about every block and transaction. They have to, there is no other way ...


12

C++ may be viewed by some as more suitable for Bitcoin use than Java which I2P currently heavily relies upon https://github.com/monero-project/kovri Kovri: To cover, veil, wrap (Esperanto). A secure, private, untraceable C++ implementation of the I2P anonymous network. Once complete this project should ease of integrating Bitcoin in both a private and ...


11

Update: Coin Dance has an excellent table of node implementations with descriptions and links at the bottom of their Bitcoin Nodes Summary page. Below are the implementations I've found. I'm not sure if all of them qualify as full nodes. btcd (in Go, by Conformal Systems LLC) Bits of Proof (in Java, by bits of proof zrt.) bitcoinj has a fully verifying ...


11

Invertible Bloom lookup tables can be used in many different ways, but the first paper you linked to explicitly proposes to use them to find differences between two data sets stored on different hosts without transferring the entire data set from one of the hosts to the other. In context of Bitcoin, suppose that two nodes have just established a connection. ...


9

Bitcoin has its own custom wire protocol using TCP. Peer discovery is by address rumoring, where connected nodes gossip about other potential available peers. When a node is new and has nobody to gossip with, they make a DNS lookup of specific hostnames which provide a number of known-good peers to make an outgoing connection to. If DNS seeds fail and none ...


9

The answer partially depends on on what you mean by "how bitcoin propagates" and "improvements"-- Fibre transmits blocks vanishingly close to the lowest latency possible, but at the expense of using extra bandwidth. It doesn't seems likely that significantly greater protocol wise improvement to latency is possible, beyond more widespread usage of it. BIP ...


9

I read briefly in a paper that there is some sort of transaction queue that the node keeps for each neighbor and that they will only select a random (?) amount of those transactions and send in an INV message to those nodes. Note that this is specific to Bitcoin Core. Other full node software may not exhibit this behavior. When Bitcoin Core receives a ...


8

then you have 25 letters in base58, and that's like 17 bytes. 20, actually. So, you have to pay like 0.0001 BTC for the transaction fee, and after that you can add data to that transaction at a price of 17bytes per 1 satoshi, by sending satoshis to many addresses that contains the whole data. Imagine if we could store data there forever,.. and ...


8

One! Your full node will check every transaction and every block for validity while synchronizing. You therefore can be sure that whatever blockchain data your node accepts follows all rules of Bitcoin. If you are provided the correct blockchain, a single node will be able to provide all data for you to catch up with the network's blockchain tip. That said, ...


7

Nobody keeps track of all the computers in the network, or at least not as part of core network functionality. There are sites that attempt to track nodes (such as https://bitnodes.21.co/), but they are not needed in order for Bitcoin to function, and are not utilized by nodes. Each node only knows about the nodes it is connected to. Therefore, to ...


6

What do you mean contribute to Bitcoin? What is your goal? If the goal is to help with the propagation of nodes, then setting up a bitcoin-qt on a server is nice for the infrastructure and probably the best for a long-term, good guy greg operation. Become a trusted node, add to the infrastructure. Coins are mined at a steady pace. There's no threat of ...


6

I would estimate that there are 30 public servers and 11 validators as I'm typing this answer. I estimated the number of public servers by connecting to a number of servers and collecting the node keys of every server connected to them. While node keys are free to change, each server has a unique node key while it is connected. This is used to drop ...


6

If you mine with a pool, your actual internet activity will be fairly small. I just took a look at my network statistics and BFGMiner used 9MBytes down and 11 MBytes up over the previous 24-hour period. The Bitcoin-Qt application on the other hand maxes out my upload bandwidth since I always seem to get 2-3 peers who want to download the entire 12 GB ...


6

Your understanding is correct. What you describe is known as a Sybil attack, here essentially the p2p version of a man-in-the-middle attack. In general, Bitcoin requires very little trust, as each peer can check whether new information adds up with the information that was previously gathered. The attacker could use this constellation to relay a transaction ...


6

You're essentially talking about a "fork" - or a separate chain. It wouldn't and couldn't interface with bitcoin - merely work (at best) alongside it. Exchanges, merchants, and official bitcoin wallets could not be fooled into using this alternative. Someone would have to download a compromised client. As each block refers to the previous one, there would be ...


6

If you just want to play around or test your apps then bitcoin-core's regtest mode might be what you're looking for. Developer examples on regtest mode: https://bitcoin.org/en/developer-examples#regtest-mode A tutorial to get you started: https://geraldkaszuba.com/creating-your-own-experimental-bitcoin-network/ If you want to fork bitcoin and create your ...


6

If you don't want to, you don't have to open ports at all. You'll still have a full node, it will just have fewer connections. Full nodes usually make 8 outgoing connections and can have many more incoming if you have the port open (for a total of 125 by default). Incoming connections can also be SPV (phone) wallets, or other full nodes. So the benefit is ...


6

When a node requests one of it's neighbours for a list of it's peers, that node responds with a list of all of it's neighbours. No it doesn't. It responds with list of nodes that its aware of being claimed exist. It likely isn't connected to any of the nodes it returns and probably has never connected to many of them. Many of them may not even be real. (...


6

The oldest version that can sync is 0.8.6. This is the version that first used LevelDB instead of BDB. Both the IRC node discovery and the protocol message changes occurred several versions prior.


6

I have no idea what a "network" really is. I googled and read about LAN/WAN. Are these the types of network we're talking about? No. A network is really just "a group of connected things". One example is indeed a LAN network through which multiple computers that are physically close to each other (a home, an office, ...) are connected to ...


5

If all bitcoin nodes run the Satoshi client then they are all affected by the same bugs. So other implementations of the protocol will certainly help in this regard. Imagine that the Satoshi client was affected by a bug that when a certain date is reached or a certain event occurs, it somehow causes the blockchain data to be corrupted or even deleted. The ...


5

On Windows, the whole %appdata%\Bitcoin directory can be replaced with a symbolic directory link: Make sure the bitcoin client is not running. Move the %appdata%\Bitcoin directory to its target location (e.g. d:\bitcoinData) Run the command prompt as root and issue the command mklink /d "c:\users\<your_user_name_here>\appdata\roaming\bitcoin" "d:\...


5

The various approaches the core client takes are described in some detail on the Bitcoin wiki. Once you're connected to the network, your peers can tell you about more peers, so the big question is, how do you get the first peer? There are some hardcoded IP addresses and DNS names in the client that point to mostly-stable Bitcoin nodes. If all of these were ...


5

It's been done. It's lame. It's spam. You're incurring cost on the whole network for perpetuity (and no, the fee doesn't pay for that). If you really can't stop yourself look at OP_RETURN as that's at least a much more network friendly way of doing it.


5

Core (more specific levelDB, the database library used) does not support network drives. Also, the UTXO access (chainstate) must be as fast as possible and should run on an internal drive, ideally an SSD. If you need to reduce/transfer disk usage, there are two main possibilities: Pruning Add prune=550 to you bitcoin.conf (or startup with -prune=550) to ...


Only top voted, non community-wiki answers of a minimum length are eligible