Sergio Lerner submitted by
on Mar 16 2015:
The problem of pseudo-nodes will come over and over. The cat and mouse
chase is just beginning.
It has been discussed some times that the easiest solution world be to
request some kind of resource consumption on each peer to be allowed to
connect to other peers.
Gmaxwell proposed Proof of Storage here: https://bitcointalk.org/index.php?topic=310323.msg3332919#msg3332919
I proposed a (what I think) is better protocol for Proof of Storage that
I call "Proof of Local storage" here https://bitslog.wordpress.com/2014/11/03/proof-of-local-blockchain-storage/
. It's better because it does not need the storage of additional data,
but more importantly, it allows you to prove full copy of the blockchain
is being maintained by the peer.
This is specially important now that Bitnodes is trying a full-node
incentive program that may be easily cheated
Proof of local storage allows a node to prove another peer that he is
storing a LOCAL copy of a PUBLIC file, such as the blockchain. So the
peer need not waste more resources (well, just some resources to
encode/decode the block-chain).
The main idea is to use what I called asymmetric-time-encoding.
Basically you encode the block-chain in a way that it takes 100 more
times to write it than to read it. Since the block-chain is an
append-only (write-only) file, this fit good for our needs. For instance
(and as a simplification), choosing a global 1024-bit prime, then
splitting the block-chain in 1024-bit blocks, and encrypting each block
using Polihg-Hellman (modexp) with decryption exponent 3. Then
encryption is at least 100 times slower than decryption. Before PH
encryption each node must xor each block with a pseudo-random mask
derived from the public IP and the block index. So block encryption
BlockEncryptIndex(i) = E(IP+i,block(i))inv(3)
where inv(3) is 3-1
mod (p-1). E() could be a fast tweaked encryption
routine (tweak = index), but we only need the PRNG properties of E() and
that E() does share algebraic properties with P.H..
Two protocols can be performed to prove local possession:
- (prover and verifier pay a small cost) The verifier sends a seed to
derive some n random indexes, and the prover must respond with the hash
of the decrypted blocks within a certain time bound. Suppose that
decryption of n blocks take 100 msec (+-100 msec of network jitter).
Then an attacker must have a computer 50 faster to be able to
consistently cheat. The last 50 blocks should not be part of the list to
allow nodes to catch-up and encrypt the blocks in background.
- (prover pay a high cost, verified pays negligible cost). The verifier
chooses a seed n, and then pre-computes the encrypted blocks derived
from the seed using the prover's IP. Then the verifier sends the seed,
and the prover must respond with the hash of the encrypted blocks within
a certain time bound. The proved does not require to do any PH
decryption, just take the encrypted blocks for indexes derived from the
seed, hash them and send the hash back to the verifier. The verifier
validates the time bound and the hash.
Both protocols can me made available by the client, under different
states. For instance, new nodes are only allowed to request protocol 2
(and so they get an initial assurance their are connecting to
full-nodes). After a first-time mutual authentication, they are allowed
to periodically perform protocol 1. Also new nodes may be allowed to
perform protocol 1 with a small index set, and increase the index set
over time, to get higher confidence.
The important difference between this protocol and classical remote
software attestation protocols, is that the time gap between a good peer
and a malicious peer can be made arbitrarily high, picking a larger p.
Maybe there is even another crypto primitive which is more asymmetric
than exponent 3 decryption (the LUC or NTRU cryptosystem?).
In GMaxwell proposal each peer builds a table for each other peer. In my
proposal, each peer builds a single table (the encrypted blockchain), so
it could be still possible to establish a thousands of connections to
the network from a single peer. Nevertheless, the attacker's IP will be
easily detected (he cannot hide under a thousands different IPs). It's
also possible to restrict the challenge-response to a portion of the
block-chain, the portion offset being derived from the hash of both IP
addresses and one random numbers provided by each peer. Suppose each
connection has a C-R space equivalent to 1% of the block-chain. Then
having 100 connections and responding to C-R on each connection means
storing approximate 1 copy of the block-chain (there may be overlaps,
which would need to be stored twice) , while having 1K connections would
require storing 10 copies of the blockchain.
Sergio original: http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-March/007711.html
I am a strong believer in the original vision of Satoshi. I want to run a full node, but to be honest, it's a hassle to set up and its expensive to maintain. Most people don't have super fast internet connections or tons of RAM and hard disk space just lying around unused. As a matter of fact, most people will not run a full node unless there is an incentive to do so. submitted by
Incentives is the reason miners can make a lot of noise but will always follow consensus (because incentives become punishments at the same time). I do not see this same mechanism being applied to running full nodes. We are relying essentially on the good will of some people, and of the paranoia of many others who want to make sure they can verify transactions.
If we want to increase the number of nodes, we either have to 1. create incentives 2. completely eliminate barriers of entry to create one 3. combine the two
I really want to hear people's opinions on this topic. I have yet to hear a clear path towards a solution, or how this is blown out of proportion (like the whole 51% attack vector)
It looks like it would be pretty easy to make a Bitcoin node that pays for itself by collecting fees from those requesting services. If this is the case, then full nodes could be subsidised by the ecosystem. This would pay for the bandwidth, storage, and other infrastructure needs required to run nodes, encouraging a return to a decentralised network. This could also absorb the increasing overhead of larger blocks. submitted by
Let's talk about this.
Bitcoin nodes contain the complete information of all the blocks on the network along with total transactions on those blocks. It acts as a go-to point for validating the history of transactions and that is why it is often known as the carbon-copy of the entire blockchain. There is no incentive for running a node, […] Running a full node is the only way you can use Bitcoin in a trustless way. You will know for sure that all the rules of Bitcoin are being followed, for example that no bitcoins are spent not belonging to the owner, that no coins were spent twice, that no inflation happens outside of the schedule and that all the rules needed to make the system work (e.g. difficulty ) are followed. Overall, more Bitcoin nodes translate into a faster, more stable, and more decentralized network. To that end, we’ve compiled a list of 6 reasons to run a Bitcoin Full Node. 1) Helps the Network. Running your own full node is the only way to have full control and to ensure that all the rules of Bitcoin are being followed. Nodes do this by ... Block Size Debate Rehashed: Incentives to Run a Full Node Versus a Low Fee Market Reading Time: 4 minutes by Ashwath Balakrishnan on July 10, 2019 Bitcoin Recently, Bitcoin users discovered that many 2 MB blocks were showing up as a result of SegWit adoption and a resulting increase in block capacity. Running a full node is the only way you can use Bitcoin in a trustless way. You will know for sure that all the rules of Bitcoin are being followed, for example that no bitcoins are spent not belonging to the owner, that no coins were spent twice, that no inflation happens outside of the schedule and that all the rules needed to make the system work (e.g. difficulty ) are followed.
Talking about Sovereignty https://bitcoin.org/en/download https://bitcoin.org/en/full-node#what-is-a-full-node https://blockchain.info/charts/blocks-size htt... Produced by https://CryptoCousins.com: On this episode we install a Bitcoin Core Full Node. Watch as we figure out the process. Join Tony Cecala and Gary Lel... https://blocksEDU.com presents: In this video, blocksEDU's Division Head for Blockchain, George Levy, demonstrates what a "Bitcoin Full Node" is. In the proc... Muita gente pergunta se é realmente necessário rodar um full node de Bitcoin. Neste vídeo o Dov explica quais são alguns dos maiores benefícios e motivações para você rodar seu próprio node. https://ajtrading.wordpress.com/2020/10/03/bitcoin-full-node-update/