Hot answers tagged

21

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.


15

In my view, the main implementation detail to be worked out with Dandelion is ensuring that there are no new DoS vectors introduced. In the existing transaction relay model of Bitcoin Core, transactions that do not make it into a node's mempool -- a proxy for what we expect to be (eventually) mined -- do not get relayed to other nodes. In the Dandelion ...


10

Jon Atack answered this on Twitter. Configuration and setup First install and start I2P (version 2.35 or above). $ apt install i2pd $ systemctl enable i2pd.service $ systemctl start i2pd.service In your bitcoin.conf file add (I will assume you run Bitcoin Core v22+ and want to use both Tor and I2P but remove debug=tor and onlynet=onion if not interested in ...


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


5

Best place is https://getaddr.bitnodes.io/nodes/leaderboard/ Nodes are rank according to various parameters


5

Bitcoin is a peer-to-peer gossip flood network. Whenever a Bitcoin participant creates a transaction, their wallet software submits it to its peer nodes. These peers then relay it to their peers in turn. The transaction floods through the network and reaches most nodes. Eventually, the transaction is included in a block which makes the transaction part of ...


4

It returns some plausible peers, not all of its peers. You have no way of knowing any specific details about them, if they’re sybil, not operational, or not useful. The software tries to work out what is most optimal for outgoing connections based on its own criteria, and doesnt trust this information for anything besides a hint towards where other peers ...


4

FIBRE is valuable as it allows for miners to extremely quickly propagate their blocks to other miners and to the rest of the network. The goal of FIBRE is to reduce latency in block transmission. Miners will thus waste less time on trying to mine a block that has already been found so they will reduce their stale block rates and be working on the latest ...


4

The network used today isn't actually the same as the original design, which did not have an inventory system at all, every transaction and every block was sent to every peer indiscriminately. Compact Blocks was also added to remove redundancy in block transmission and reduce latency, as blocks predominantly contain transactions which have already been ...


4

It isn't as simple as "sending sequentially" or "sending in parallel". Each connection is its own socket and the kernel performs packet scheduling. The Bitcoin protocol doesn't have any acknowledgement. When a node sends a message it hands it to the TCP stack which often will just immediately accept the whole message. It's then up to the kernel to send it ...


4

To run a Bitcoin full node you don't need to have a static IP address as when your IP address changes you should still be able to find peers and connect to them. However, if you want to maintain the same peers getting a static IP address is a good idea. Your connection to existing peers will drop if your IP address changes and you will either reconnect to ...


3

First, let me clarify that the Erebus attack does not require rebooting the victim. It is only for speeding up the attack process. The attacker can patiently wait for the existing legitimate connections to expire and occupy them. Coming back to your question, I guess you suggested to prioritize reconnecting the current outbound peers among all tried IPs. ...


3

Do full-nodes process all txs before broadcasting the new blockheader? It depends. For nodes having protocol version 70015 and higher, the peer will announce the compact block even before full validation of the transactions contained in the block. However, the header has to be conform with the difficulty requirement. For nodes using protocol version 70015 ...


3

The getheaders message allows you to list multiple block hashes. So instead of just putting the current chain tip, you can insert multiple block hashes. Responding nodes will see if any of those hashes are in its main chain and start sending headers from there. Since reorgs tend to be small, you could put the most recent 10 block hashes and it should be ...


3

Adding more advanced prediction of what transactions are useful to prefill was probably intended as a TODO when Compact Blocks were implemented, but to the best of my knowledge, nobody has worked on it since. It is worth pointing out that Compact Blocks in practice (and in non-adverserial situations) works extremely well. On my own long-running node, as of ...


2

Those hosts are DNSseeds. When your node starts if it find itself unable to successfully connect to the network within 11 seconds it will query those DNS names which are run by technical people in the Bitcoin community, and get back a lists of recently working nodes. The use of DNS improves your privacy somewhat since DNS caching can prevent the operator's ...


2

In order for a bitcoin node to start connections with other nodes, it first needs a seed node. A seed node can be any node (listening) connected to the bitcoin network. Once the node has connected to the initial seed node, it can then retrieve information about other nodes in the network and start connections with those ones as well. The names you are ...


2

A list of reliable nodes is inherently a trusted list. Therefore a reasonably trustable place to get some node IPs would be by hitting the DNS seeds hardcoded in the reference client. The list is community-curated, contains multiple sources, and the seeds are themselves dynamically managed. This makes it more resistant to censorship than a single website ...


2

The regtest mode is basically for running a node in a test network where all peers have to be added manually and it is extremely easy to solve blocks. As such, there won't be any network traffic unless you start multiple nodes and connect them using the addnode RPC command. Alternatively, maybe you meant to run this in -testnet mode instead of -regtest ...


2

The mempool is just a temporary store of unconfirmed transactions. Each node's mempool is not synchronized, and in fact a node could choose to not keep a mempool at all. So no node needs to verify whether anyone else has a transaction, before deleting it from their memory. Miners will choose transactions from their mempool, to build new block templates that ...


2

The problem is because the netgroup of the feeler connection was not properly handled. Check further pull requests and fixes here: https://github.com/bitcoin/bitcoin/issues/15484


2

Blocks cannot be modified because the next block contains a hash of the previous block's header. Any change to a block would result in a change to the header, and thus, change its hash, requiring all blocks which succeed it to also be modified because their hashes would no longer be valid. It isn't possible to rebuild all of the blocks because it requires ...


2

Blockchain.info (and other block explorers) do additional processing of the transaction data in order to make it more user friendly to follow the path of coin movement through multiple transactions. Additionally, it seems that whatever you are using to print out the transaction details is not showing you all of the information. In a transaction, each input ...


2

however payment reversals are a problem with bank wire transfers. "Different wire transfer systems and operators provide a variety of options relative to the immediacy and finality of settlement and the cost, value, and volume of transactions. Central bank wire transfer systems, such as the Federal Reserve's FedWire system in the United States, are more ...


2

Addresses for outbound connections are largely chosen at random. The filtering of addresses comes at the time the addresses are first received by the node before they are added to the address database. This filter checks what services the nodes offer, what network they are on (e.g. IPv4, IPv6, TOR), and the time that they were reported to last be seen. Your ...


2

how do we ascertain that the bitcoin network [...] is one connected graph Problems paying people. The senders and recipients in transactions are people who make contact using non-bitcoin protocols - for example HTTP websites, SMTP email, chat, in-person, by phone. Therefore if the Bitcoin network were fragmented we should expect that pretty soon a person ...


2

When you run P2P functional tests you are spinning up regtest nodes (running simplified Python code) that connect to your full node (running the full C++ code) to test P2P functionality. As John Newbery outlines here: A node is the bitcoind instance. This is the thing whose behavior is being tested. Each bitcoind node is managed by a Python TestNode object ...


2

libminisketch is a library implementing the PinSketch set reconciliation algorithm and was covered in this Bitcoin Core PR review club. In theory it could be used for any problem where you have two sets of data and want to work out how those data sets differ (which specific elements are present in one but missing in another) as efficiently as possible. The ...


2

It's not a scam. It doesn't allow lending Bitcoin, you are correct. When it says it supports Bitcoin, it means it allows you to use Bitcoin as collateral for a loan. For example, if you want to borrow USDT, you'd be allowed to post an appropriate amount of BTC as your collateral, receive USDT, then when you pay back your USDT loan, you receive the BTC you ...


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