We just launched a new product: Collectives on Stack Overflow. How do they work? Listen to learn more.
15

Bitcoin has to maintain some balance to be able to retain the ability to be decentralized. As you've correctly established, this is partly down to making sure that the resource requirements of fully validating the block chain are not unreasonable. There's a push form the consumer side of things to constantly increase the resource usage of Bitcoin for ...


14

A 'full node' is a participant on the network that has independently validated the complete copy of the blockchain, and thus has verified all transactions since the beginning. This requires about 350GB of drive space (currently). A pruning node is one that has verified all prior transactions; however, it has deleted all blocks below a certain space ...


12

There are several questions here. Please correct me if I'm wrong: The miner validates the newly received block before using it themself and sending it to their other connected peers. Yes and no. Note that by miner we're talking about people who build blocks themselves - that includes solo miners, pool operators, and p2pool users. Hashers that only ...


10

No, full node operators are not compensated in any way. If you run a full node, you will receive no monetary benefit. However running a full node does benefit you. It means that you are contributing to the network's security. Your full node is verifying and relaying valid blocks and transactions so you are contributing to the transmission of blocks and ...


9

In the bitcoin data directory there is a file called debug.log. This file as noted in the bitcoin documentation: May contain IP addresses and transaction ID's. This does not indicate that a transaction originated from a specific IP address but it does indicate that your node received a transaction from that IP address. If someone were to have a wide ...


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

No, the number of full nodes is decoupled from capacity and fees. Transaction capacity is a function of transaction size and blocksize. Blocks occur roughly every 10 minutes and have a fixed size. Transactions also have a more or less fixed size, so capacity is currently not going to change unless either transactions get smaller (e.g. Schnorr signatures, ...


7

There benefit is that you operate a full node in the Bitcoin network. Yes, this is your premise but it's also the consequence of it. You merely seem to not understand what operating a full node means. If you don't operate a full node, you put trust in others. How much trust you put in others depends on the specifics. For example, a person who uses a web ...


7

Yes, but just running a lightning node is not enough. In order for your node to be able to earn fees, it has to have payments passing through it. For this you need to have a routing node, which has at least 2 open channels (where is payment coming from, where is payment going). The more open channels your node has, the more it will be chosen by the routing ...


7

In theory it can as the explicit consensus rules have not changed. However in practice, it will not be able to sync without some special modifications. First of all, the network version is so old that no modern node software will accept connections from it. Furthermore, the format of the network messages has changed since the first release so that it now ...


7

Non-mining full nodes cannot prevent a 51% attack, but they are essential in preventing other attacks. In particular, full nodes verify that the chain produced by miners is valid. This means that no coins are transferred without proper authorization from their owner, that no new coins are being created out of thin air (except for those permitted by the ...


6

Calling getblockchaininfo is your best bet. It includes a field called verificationprogress, which is an estimate of how much of the chain you have validated. Alternatively, compare headers to blocks. If headers is higher, it means that your node has validated the headers for blocks that it has yet to validate. When these numbers match up, it either ...


6

Transaction fees are earned only by miners. Running Bitcoin-QT, you will relay transactions and blocks for other people, but this does not earn you any fee.


6

When your node is not accepting inbound connections (either because there's NAT in the way or because you passed -listen=0 to Bitcoin) it still makes "outbound connections." These are connections to other Bitcoin nodes that are listening on a public port. Your node makes a maximum of 8 outbound connections. (Source.) When you make an outbound connection, ...


6

Full nodes keep all blocks by default, but this is not necessary to achieve full node security. Full nodes validate the complete blockchain and enforce all consensus rules regardless of whether a full history is kept. Keeping all blocks is a service to the network, as you'll be able to provide all blocks for synchronizing nodes or requests of thin clients. ...


6

Using walletnotify has proven to work and is used by a lot of scalable apps today. I would not rely on it completely though. walletnotify's job is to execute a shell command every time it receives a wallet transaction. This means data is flowing between processes, which does not make me entirely comfortable as a developer. After all, it only takes one error ...


6

Can I send almost 1MB transaction? To be able to send a transaction that a miner will accept, that transaction has to be a standard transaction. As defined in policy.h /** The maximum weight for transactions we're willing to relay/mine */ static const unsigned int MAX_STANDARD_TX_WEIGHT = 400000; For non-Segwit transactions, the limit is 400,000 KB / 4 = ...


6

Bitcoin Core does validate all signatures after a certain point, and can be configured to validate all signatures in history if so desired. The assumevalid feature only disables signature validation for blocks prior to a specific configured block which is updated for each version. This block is typically several (tens of) thousand blocks deep by the time the ...


6

A SSD is not required for running Bitcoin, but it certainly helps. You would definitely want one if you were running a production service using Bitcoin, but for something you're using personally it will just make synchronization substantially slower to use a hard drive. For a Raspberry Pi you absolutely do not want to be storing any data on the Micro SD card ...


6

While nodes are set to be listening by default, the vast majority does not permit inbound connections either because listening has been disabled or their network setup doesn't make the necessary port accessible. There seem to be in the range of 8-10k listening nodes, while estimates for non-listening nodes range in 60-400k depending on the source. Next to ...


5

One thing you might be missing is "there are no balances". The network doesn't know about wallets or balances, it only knows about outputs. These outputs are either spent or unspent. Once you have this concept it's easier to understand. If your wallet says you have a balance of 1.2345 BTC that means it "thinks" there are X number of unspent outputs that ...


5

Fully validating nodes ("full nodes") are clients that have validated the whole blockchain self-sufficiently and enforce all of the rules of Bitcoin on any data they receive. Therefore, they cannot be cheated by means of invalid blocks or transactions. Running your own full node is the most secure, most private, and least trusting way to participate in the ...


5

Decred has a hybrid Proof-of-Work/Proof-of-Stake model, which means that block rewards are shared between the miners and the stakers (and the developers), with PoW mining earning the larger portion of the reward. (60% PoW miners, 30% PoS voters, 10% Decred development subsidy) The way staking works in Decred is through a ticket system. You purchase a ticket,...


5

The whitepaper said that SPV clients would avoid accepting a rules violating block by being altered to the violation, downloading the block, and checking for themselves. This is not realistically possible in the protocol as it exists today because the commitment structure means that for many rules the smallest amount of data you must download to tell if a ...


5

It is possible to run Lightning (both LND and c-lightning) with bitcoind pruned mode. There are already packages turning the pruned mode on when disk space is limited: Lightning Power Node Launcher (works with LND) and BTCPayServer docker (works with c-lightnig). There is a lot of conflicting information online, because it became possible only after ...


5

Imagine an interaction/protocol/technique exists you could perform with a node in the network, and at its conclusion, the interaction teaches you whether the other party is a full node. Now anyone who wants to pretend to be a full node can simply relay all messages related to this interaction to another full node, and relay its responses back to a potential ...


5

It generally takes a long time before the network "discovers" you're a good peer to connect to. It may be a few days before you get inbound connections. I'm able to connect to you.


5

By default the RPC interface is only exposed to localhost (127.0.0.1 and ::1), not to the world. In that setting, you need an RPC password only to protect against untrusted local users on your system (unless you're somehow tunneling the RPC port 8332 out). That said, why do you have an rpcpassword at all? If you're only going to use bitcoin-cli for example ...


5

To join the network, a Bitcoin full node will work its way through the network history, independently verifying the state of the network through time. So yes, each node will have downloaded and validated the entire transaction history, but a node can choose to use 'pruning mode', where it will discard unneeded transaction history after validation is complete....


5

You are right, and it seems this answer is outdated. The concept of a UTXO set is more recent than Bitcoin itself. The original software kept a database with information on every transaction output ever created, including whether it was already spent. In that setting, the UTXO set was only defined implicitly by the spentness information in that database. ...


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