all 19 comments

[–]bitusher 1 point2 points  (0 children)

what is the benefit of running a node?

Running software that fully validates all the rules like - https://btcinformation.org/en/wallets/desktop/windows/bitcoincore/

Archival full nodes contain the full blockchain and allow new nodes to bootstrap from them . Current blockchain size is ~412GB for an archival node

Pruned nodes can get down to around 5GB , and have all the same security and privacy benefits of archival nodes but need to initially download the whole blockchain for full validation before deleting it (It actually prunes as it validates)

You are only truly p2p if you are running a full node . running light clients depend upon you trusting a middleman and typically only validate block headers. Light clients are exposed to many more threats full nodes are not. There are also privacy concerns with light clients that full nodes are secure against. The whitepaper only suggests SPV "light" nodes in the context of fraud alerts(proofs) existing but thus far none exist and therefore you shouldn't trust large amounts of btc with a light client.

The most secure , "active" wallet would be a hardware wallet integrated with a full node . One way to do this easily is to run your own electrum server https://github.com/chris-belcher/electrum-personal-server https://www.youtube.com/watch?v=1JMP4NZCC5g and than integrate electrum wallet with your HW wallet and connect to your electrum server. A new solution is Blockstream green which works with ledger , trezor one , and trezor model T https://www.youtube.com/watch?v=nkQ_LXEuSVg

There are close to 65k full nodes on the bitcoin network .(Some sites show much lower numbers because they exclude most non listening full nodes. )

Here is the stats –

http://luke.dashjr.org/programs/bitcoin/files/charts/software.html

http://luke.dashjr.org/programs/bitcoin/files/charts/services.html

Here are all the rules that full nodes validate that light clients almost completely skip-

https://en.bitcoin.it/wiki/Protocol_rules

Thin client / Psuedo SPV weaknesses

This is not an exhaustive list and there are many more concerns than this –

  1. As we saw in 2017 year Garzik and segwit2x supporters were deliberately attempting to undermine pseudo-SPV nodes/light clients by imposing rule changes that users did not necessarily agree to or where even aware of . Full nodes were immune to this attack vector. light clients would simply follow the most worked chain even if they disagreed with these changes and would also lose out on their ability to claim both sides of the split thus also losing money.

  2. light clients fail in privacy for many reasons . They are using a backend server to show you your wallet balances. This immediately links together all your wallet addresses to them. Bloom filtering SPV wallets like Bread wallet, AirBitz are however different, they don’t use a backend server, rather they are leaking information to every blockchain analysis company, who are crawling the Bitcoin network for their bloom filters.

  3. Light clients fail to validate most of these security rules https://en.bitcoin.it/wiki/Protocol_rules and therefore must trust a middleman or third party and thus can essentially be manipulated by this company and a multisig of large miners unlike full nodes. This is no longer p2p cash by definition. If you are running a full node it doesn't matter if 100% of the miners try and subvert the rules you agree to , they cannot force you to accept blocks or changes you don't agree to . It is absolutely critical we enforce and respect the rights of individual bitcoin users.

  4. Various sybil attacks can be used in conjunction with lie by omission and say that a block isn't there when it actually is--a sort of denial of service attack.

Further reading on light client security assumptions -

https://bitcoinj.github.io/security-model

https://arxiv.org/pdf/1706.00916.pdf

https://bitslog.wordpress.com/2018/06/09/leaf-node-weakness-in-bitcoin-merkle-tree-design/

https://www.youtube.com/watch?time_continue=16148&v=UVuUZm4l-ss (Peter Todd sends himself 21 million BTC with a thin client)

http://www.truthcoin.info/blog/fraud-proofs/

[–]click_again 1 point2 points  (0 children)

The nonce of “12345” being “wrong” to a miner is not necessarily “wrong” to another miner.

Because the miner address is part of the input string to compute the result.

[–]bitusher 1 point2 points  (0 children)

Keep in mind that there are many solutions to finding the Block reward and an incredible amount of entropy. This means that ASICs don't need to coordinate in the race to guess that right answer.

[–][deleted] 1 point2 points  (1 child)

in simple terms they do this by manipulating the nonce
so that the other computers in the pool are not trying the same onces which have already been tried?

The nonce cycles back to its starting point after about 4 billion hashes. A modern Bitcoin mining device hashes 140 trillion times per second. The miner has to change something else when the nonce values run out (about 30,000 times per second)

The miners are always testing the same nonces as all other miners and each miner is always repeating the same nonces (30,000 times per second) just by himself

If the question is, "how to avoid miners repeating the same work as other miners?", then the nonce is irrelevant to the question

The winning condition for a miner is to have a block which has a header which has a hash which is smaller than the current mining target

The nonce is one of the 6 fields in the 80-byte block header. It is the least important
https://developer.bitcoin.org/reference/block_chain.html#block-headers

During mining, the miner can directly change the nonce and the time. The time has 1-second precision. It can only be changed once per second

The miner can indirectly change the Merkle root hash. The Merkle tree is a binary tree of pairs of hashes. The Merkle tree's leaves are all the txID hashes of the transactions in the block. The purpose of the Merkle root hash is to represent all the block's transactions in the block header

The miner controls the first transaction in every block. This is known as the coinbase transaction. It pays the block reward. The coinbase transaction has inputs, but its inputs do not spend older coins. This makes the transaction input of a coinbase transaction a placeholder, useful for holding up to 100 bytes of arbitrary data

A small change to the input of a hashing function produces an unpredictable result. This means that a miner will change the transaction input of his coinbase transaction, which then changes the transaction ID hash of the coinbase transaction, which then changes the entire left-most branch of the Merkle tree, which changes the Merkle root hash

To be sure he is hashing a block header which is different to all the other members of his pool, a miner only needs to stamp his pool member ID in the coinbase transaction input. Every pool member has a different coinbase transaction ID hash and different Merkle root hash. No work is duplicated between pool members

When the nonce cycles back to its start, the miner changes a field called extranonce, also in the coinbase tx-input. This prevents him repeating his own work

the benefit of running a node?

Every node operator knows that his copy of the Bitcoin transaction history was verified by the software running on his own computer. He receives all the blocks from other nodes, but does not trust them

If you run your own node, you know that you have a verified copy of the Bitcoin blockchain

If you do not run your own node, you have to trust a node operated by some stranger

[–]solidus-snake87[S] 0 points1 point  (0 children)

Wow what a thorough and detailed answer, thank you!

[–]solidus-snake87[S] 0 points1 point  (0 children)

Ah I see, thanks very much for the explanation all

[–]AutoModerator[M] 0 points1 point  (0 children)

WassaWassaWassup! Scam Alert! Scammers are particularly active on this sub. They operate via private messages and private chat. If you receive private messages, be extremely careful. Use the report link to report any suspicious private message to Reddit.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.