We’re rewarding the question askers & reputations are being recalculated! Read more.
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 ...


12

Bitcoin has to maintain some balance to be able to maintain 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 ...


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


9

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


8

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


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

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


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

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

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

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


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

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

A full node is a complete copy of the blockchain and is able to verify all transactions since the beginning. This requires about 140GB 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 requirement, but still has a copy of the UXTO set. It's almost useless to ...


5

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


5

It is possible to run Lightning (both LND and c-lightning) with bitcoind pruned mode. There is a lot of conflicting information online, because it became possible only recently in Bitcoin Core 0.16.0. The change that enabled txid lookups in pruned mode is BIP159. There are already packages turning the pruned mode on when disk space is limited: Lightning ...


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

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


4

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


4

No incentives to run nodes are required. As people in these countries are presented with more use cases to use bitcoin, organic growth in the number of nodes will follow. International money transfers and a superior alternative to M-Pesa for retail transactions are both attractive areas for growth in some of the areas with limited node counts today.


4

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


4

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


4

This is called pruning. From here: Since Bitcoin-Core 0.11.0 you can prune (trim) the blockchain in Bitcoin-Qt. But not from the UI. You need to add -prune=550 to your bitcoin.conf file and restart Bitcoin-Qt. Explanation: -prune=<target in MiB> will tell bitcoin-core to remove blocks which are older than oldest block that can be kept with ...


4

Both are implementations of the Bitcoin protocol, however they are customized to make it easier to develop with. They are able to do this by storing all transaction and blockchain data in a database for quick queries, and along with this comes large disk space requirements (200-300GB). Bitcore (I have used) - NodeJS - 200+GB required for storage as it ...


4

The UTXO set cannot be validated, except by going through all blocks in history. The P2P protocol does not even have a way to stream the UTXO set from one node to another, so yes, full nodes will always download and verify full blocks, and rebuild the UTXO set from it. There are various ideas (some of which are very old) to make blocks commit (= contain a ...


4

Do full nodes have any incentive to validate transactions they're not directly benefiting from? Yes. If they did not validate all blocks and transactions, they could end up on a blockchain fork which could be facilitated by an attacker. Validating all blocks and transactions allows them to be sure that the node is on the right blockchain. How often do ...


4

SPV Node SPV node watches your addresses on network broadcasts. So on SPV Nodes you won't be able to grab other transactions then your address. It communicates with other peers, fetches your transactions using bloom filters and then watches pool broadcasted transactions. So you only get transactions that are addressed to your wallet. Full Node With ...


4

But how exactly the consensus rules are forced? Every single full node enforces them. Internet says that the consensus rules are the rules thet every full node follows. And rejects blocks that do not meet consensus rules "no matter what". Correct. Ok. But. Should ALL of the full nodes accept? Or should MOST of the full nodes accept? Or is ...


4

Http is a protocol that works on TCP. So if you have an http-server, it uses TCP to communicate anyway. The better question would be "Why should they use an http-server if they don't need it?". They don't need/want to show a website. They just want to send binary information easily and want to be sure that the other peer received it completly/correctly. And ...


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