Hot answers tagged

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 ...


21

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 ...


17

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. ...


16

You can create a directory junction (as i did to move the BitCoin data folder), or you can specify a different data folder location: BitCoin-qt.exe -datadir=d:\BitCoinData Which will be the long-term solution.


15

Bitcoin becomes very insecure if miners stop mining. Think of how easy a 51% attack would be to pull off. However, I disagree with your assumption that miners will stop. And certainly that if Bitcoin dies it would be because miners stop. I would instead think that miners would only stop if something else already killed Bitcoin. Bitcoin is designed to always ...


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.


14

As long as the block reward is much higher than the transaction fees, this is totally not an issue: mining isn't an incremental process, it's a bruteforce probabilistic one. I.e. in a single moment your chance of solving a block isn't higher if you have been mining that same block for some time: the chance is always the same. Hence, once a block is relayed ...


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

The current block size limit is 1MB, but this is likely to be changed in the future. Transactions are about 500B, so the current limit is 2000 transactions per block, or about 3 per second.


9

There are probably several reasons, but it's mostly historic. There is no inherent problem with just sending transaction id's. There is a disadvantage too, though, namely increased latency, which is not necessarily a problem when doing an initial sync, but it is not wanted when a fresh new block is propagating. In fact, this idea is part of BIP 37, which ...


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

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

No. The average time per confirmation will always be about 10 minutes (but it's possible that the variance will be lower in the future). And the number of confirmations required to prevent double-spending by an agent with a given hashrate will also not change (6 is an arbitrary number reflecting a "low enough" probability for someone with a "high enough" ...


8

One solution is to export (in your privacy) the private key connected to the address on which you received your Bitcoins (or simply all private keys). This can be done using a command line tool known as pywallet. Then, you can import this key (or all your keys) into another wallet. Browser-based wallets such as https://blockchain.info/wallet do not require ...


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

If the average time to find a block is T, and the typical time for a found block to propagate in the network is t, then the proportion of orphans among all blocks will be roughly 1/(1+T/t). As long as T>t there's not much risk for the network; however it could be a challenge for orphan-paying pools, for example If T=9t then 10% of the block rewards will need ...


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

My current Bitcoin folder, May 28th 2012, is 2.16 GB. Of which maybe 60MB is data personally to me like my wallet, addresses, logs and transaction history. So basicly you will have to download a little over 2 GB for being in sync with the network. To answer your second question: I think yes. Bitcoin exists out of a long chain with blocks containing all the ...


6

Whereas Block Explorer might be a useful tool, Bitcoin could survive without it. Most important parts of the Bitcoin ecosystem, asides the main client that is, are the exchanges. They give the currency its value and without them, Bitcoin would become a fringe technology (no merchants would deal in it, as they couldn't pay their taxes with it. Then we have ...


6

According to Bitcoin Charts, it is equivalent to 127.25 PetaFLOPS currently. This would make it faster than 500 fastest supercomputers in the world (58.9 PetaFLOPS), or Folding@home (4.1 petaFLOPS) [reference]. However, this is only equivalent computation speed, if you would measure actual amount of FLOPS of Bitcoin mining it would be... 0, as Bitcoin does ...


6

Actually the amount of confirmations is seperate from verification. The more confirmations a transaction has the more certain a transaction is. The point where you say it is "verified" is simply the point where you trust it sufficiently. When do you trust it? For a person this it's a feeling in your underbelly. How fishy is a certain deal? How trustworthy ...


6

Nothing happens. The longest chain of blocks in existence, so long as it builds off the latest checkpoint) is always the valid chain, no matter what. So long as at least one node brings it back eventually, there's no problem. (And you can keep it yourself if you're particularly worried about it. If you're running the standard client, you already are.) ...


6

Your transactions would be given the lowest priority as they are not paying fees, also if anyone is actually marginally successful in spamming the system it is entirely possible that the larger pools will simply not take their transactions, in fact some pools do filter out some transactions. This thread shows some of the restrictions that some mining pools ...


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 ...


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