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


18

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


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.


16

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

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

Four factors affect this: 1) The size of the transaction. Smaller transactions get a lower priority. Abnormally small transactions look like spam. 2) The transaction fee. Abnormally low transaction fees may mean the transaction isn't even relayed. Miners have an incentive to include transactions with higher fees. 3) Luck. Some miners don't include any ...


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

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

Network hashrate calculated using formula: H ~= h / t , where t is time that took to find X number of blocks and h is approximate number of hashes it should have taken to solve X number of blocks, h = X * (D * 2**256 / (0xffff * 2**208)) Wiki:Difficulty Bitcoin network hashrate stats available at bitcoinwatch.com and bitcoincharts.com .


11

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


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

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

A non-mining client will: Propagate transactions to other peers, including the mining pools. Propagate peer list, so everyone will have a wide list of peers to connect to. Propagate the blockchain. Help decentralise the network by doing all that. So it essentially takes the burden off the bigger nodes by sharing data. It is especially true for the block ...


8

You should get the best results if you port forward port 8333 to your laptop. It is also advised to leave your computer on for a long time the first time you connect to the network, as it has about 1GB of data to download and check. After that the operation should be easier.


8

The alternative currency Geist Geld is experimental and is trying to approach a maximum block rate (that's currently achievable), and has apparently settled upon a target block rate of 1 block per 15 seconds. However, the block rate doesn't necessarily make a substantial difference to how you would use a currency as you could still consider a small ...


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

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


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

Get your ip from http://whatismyipaddress.com/ and put it in here http://www.subnetonline.com/pages/network-tools/online-port-scanner.php with port 8333. If you can accept incoming connections you should see a result similar to below:


6

This is a legacy issue. When the network was first implemented, there was a severe shortage of servers that could reliably accept inbound connections. Many people started running the client behind NAT and they could not accept any inbound connections. Meanwhile, they were consuming the available inbound connection capacity of the more limited number of ...


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


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