12

Introduction The key to finding out where a piece of code is without already knowing where it is is to start at the thing that will eventually lead to what you want to find. These can be logically thought through. For example, for relay and validation, these all occur after a node has received a block or transaction, so begin at the point where a block or ...


10

The separation between internal and external addresses comes from BIP32. Using a different chain for each permits you to give out an xpub for just the external ones to an auditor. They would then be able to observe your incoming payments, but not your spending.


9

With Bitcoin Core you'll run a full node. So, for every transaction someone does to your business, your Bitcoin Core wallet need to be synchronized with the complete blockchain.


9

Blockstream launched a satellite service. It did not launch a satellite. Bitcoin blocks are being broadcast by Blockstream, by contracting with several existing several satellite systems. These satellites are primarily designed for broadcasting TV signals, and thus don't run their own full nodes; the broadcast is dependent on ground stations that uplink ...


8

It is important to note that with this process, you will want to use a wallet that does not have private keys. Otherwise, you could accidentally be sending Bitcoin to an address that is in the online wallet. This especially important with change addresses because change addresses are automatically pulled from the current wallet. By disabling private keys, ...


8

You should not use a torrent to download the blockchain. There is no general purpose to using a torrent, as using it makes synchronization slower because validation (which is the slow part) cannot proceed concurrently with download. Because there is no purpose to using a torrent, I wouldn't trust that any particular torrent wasn't made maliciously and didn'...


8

This warning is currently benign and has been fixed for Bitcoin Core 0.18. You see it because miners are using the block version number for a mining optimization called ASICBOOST. However soft forks in the past have used the version number for readiness signalling. Bitcoin Core is seeing version numbers it is not expecting (due to ASICBOOST) and thus ...


8

Dorier is correct that Neutrino/SPV nodes are not full nodes, because they do not verify the entirety of the blockchain, leaving potential room for attack. However, the portrayal that Neutrino is no better than other SPV modes is not correct. Neutrino is a form of SPV which improves greatly over other implementations in regards to privacy. All SPV modes ...


8

There are multiple definitions of the term "double spending" at play here. First, there is the actual definition of double spending: to spend the same money multiple times. A simple example of this is the coin on a string in a vending machine. You put tie a string to a coin, when you put the coin in the machine, it thinks you paid, you get whatever you want ...


8

What makes you think that this isn't implemented? Block download is already multithreaded and blocks are downloaded out of order. Everything that can be verified in a block without requiring other blocks (such as the PoW matching the PoW stated in the block header, merkle root, etc.) are verified when the block is received. This all happens in separate ...


7

That block is not just orphaned, it is actually invalid. It exploits CVE-2018-17144. The only way to fix this error is to upgrade to Bitcoin Core 0.16.3 and begin a reindex following the upgrade.


7

If you give Bitcoin Core a fully populated data directory, it will use it without any validation. However, if you only give it the blocks/ subdirectory, it will fully validate it to recreate the chainstate directory, exactly as if it were received over the network.


7

BIP 39 is not in Bitcoin Core largely for implementation reasons and because BIP 39 is not as secure as it could be. The structure of Bitcoin Core's wallet doesn't really allow for BIP 39 to be implemented. The current structure doesn't allow for 512 bit seeds as BIP 39 specifies, and adding it would require some significant changes to the wallet code. ...


7

Before you delete you Bitcoin data from your hard drive, ensure that you have backed up the wallet.dat file, or you risk losing your bitcoins in case you received them on the addresses generated by Bitcoin-Core. Ubuntu The most easy way to remove Bitcoin-Core from Ubuntu is by running: sudo apt-get remove bitcoind. When you run bitcoind, it typically (...


6

https://github.com/bitcoin/bitcoin/search?q=bad-txns-in-belowout&unscoped_q=bad-txns-in-belowout const CAmount value_out = tx.GetValueOut(); if (nValueIn < value_out) { return state.DoS(100, false, REJECT_INVALID, "bad-txns-in-belowout", false, strprintf("value in (%s) < value out (%s)", FormatMoney(nValueIn), FormatMoney(value_out))); ...


6

No, it won't. That's also not possible without rebuilding the UTXO set from scratch, as the unspent outputs being spent need to be known to validate spends against. If you want to force a revalidation from scratch, start with -reindex-chainstate. This will blow away the UTXO set, and recreate it from the blocks on disk, and revalidate everything in the ...


6

Really getblocks should have been called getblockhashes , as the response contains just block hashes, not full blocks. Every block can be observed in three different ways: The full block, containing all transactions and header information. The block without the transactions, but just the 80-byte header which includes a Merkle root committing to the ...


5

getinfo is now deprecated. Use getblockchaininfo instead: bitcoin-cli -testnet getblockchaininfo I don't have 50 reputation to comment. Otherwise, I would've added this as a comment.


5

You can run both at the same time: $ bitcoind -daemon $ bitcoind -testnet -daemon Then you can issue commands on either using: $ bitcoin-cli <commmand> or $ bitcoin-cli -testnet <command> The blockchains are stored in ./bitcoin/blocks for mainnet and /bitcoin/testnet3/blocks for testnet. Update: With the bitcoin.conf updated in the ...


5

There is a maximum limit on the block reward which is 12.5 BTC but nothing prevents a miner from claiming less than 12.5 BTC. In fact, there have been times when miners forgot to claim any bitcoin at all (claimed 0 BTC), a very expensive mistake. This is probably a mistake from the miner, he could have certainly claimed more bitcoin. As long as the block ...


5

but I am going to take a slight guess that this has something to do with miner voting to show what the consensus is for a future change? No. There are currently no active consensus change proposals. These version numbers are likely due to a mining optimization known as ASICBOOST. This optimization is due to a quirk of SHA256 and Bitcoin's block header ...


5

Technically, yes, yes, and yes. However, I'm not sure if we'd still call it "Bitcoin" at that point. Any of these changes would require a hard fork, which means that the underlying rules of the system are changing in a non-backwards-compatible way. It means that blocks/transactions from after the fork are not guaranteed to be considered valid to nodes ...


5

Addresses are not magically tied to the hardware you use. If you delete the file that contains the private keys for your addresses, you will lose them and thus lose access to your Bitcoin. Since it seems that you formatted your hard drive without making a backup of your wallet file, your private keys and thus your Bitcoin are lost. You may be able to ...


5

It does not have one. Bitcoin Core uses hardened derivation, so there is no way to compute the addresses it will use externally. Support for that will likely be added in upcoming versions, but likely won't be the default (there are security risks when using non-hardened derivation).


4

Press "request payment" to get an address. The button on the address book was redundant and was removed by PR12721.


4

The maximum is 100 bytes and is checked and defined here: https://github.com/bitcoin/bitcoin/blob/master/src/consensus/tx_verify.cpp#L195


4

The database format is supposed to be compatible across architectures.


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

You can import an old uncompressed key. It'll work fine. Getnewaddress always uses scripts with 'compressed' keys now. BIP-143 (segwit) style inputs also require compression. The smaller key format results in smaller transactions, and where it's required and not just optional also simpler code.


4

A node is only called a peer if you're connected to it. So by definition you are always connected to all your peers. I assume you're asking whether you're connected to every node in the network. The answer is no; most Bitcoin node software implementations only connected to around 8 others. What happens if one is malicious? Bitcoin is trust-minimized by ...


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