Author

Topic: Proof of unique blockchain copy stored (Read 2376 times)

legendary
Activity: 1232
Merit: 1094
November 05, 2014, 11:29:44 AM
#7
This would be a good system to have for archive nodes.  If there was a NODE_ARCHIVE bit, then it would be broadcast via the services bits in the addr message.

NETWORK_NODES are supposed to have all the blocks, but there was talk of having a bit to say you only have the last 2016 blocks.  Nodes that are less than 2 weeks behind could use those nodes for catchup, but they wouldn't keep the entire history. 

There is a graph somewhere which shows that almost all block requests are within the last 2016 blocks (except new nodes).
hero member
Activity: 555
Merit: 654
November 05, 2014, 11:02:43 AM
#6

To get anywhere near a decent picture of the network you're going to be asking a lot of peers for proofs at significant processing cost, and I'm not even sure if it's in their interests to supply them to you.

If you're honest and you're really storing the blockchain, it takes less resources (CPU/bandwidth) to compute a response to the proof-of-unique-copy challenge-response protocol than to send 10 random blocks asked via "getblocks". So providing this protocol does not increase the DoS risk.

Anyway, it's just an new idea. It's not something to rush to add to Bitcoin.
newbie
Activity: 1
Merit: 0
November 05, 2014, 10:47:23 AM
#5
In the thread https://bitcointalksearch.org/topic/proof-of-storage-to-make-distributed-resource-consumption-costly-310323 people are discussing how to prove to a peer that one has invested some expensive resource. I was researching on a topic that has some common applications that I think can be useful in cryptocurrencies.

Proving to the network that you actually have a certain subset of blocks is an interesting problem, but I'm not sure that this scheme is that much of an improvement over being blind. If providing proofs for multiple IP addresses at once is seen as too taxing to be possible then it would make for a trivial denial of service vector, if it's not particularly difficult then it would be possible to expose a node with as many interfaces as you felt like same as before. To get anywhere near a decent picture of the network you're going to be asking a lot of peers for proofs at significant processing cost, and I'm not even sure if it's in their interests to supply them to you.

The non-listening portions of the network also make this a little unattractive. The bulk of all nodes don't expose listening ports at all, either by choice, lack of uPNP or by being behind a restrictive NAT. If you don't include them you lose a lot of the possible resources, if you do include them it's a mess of dynamic IP addresses and proofs that can only be obtained by the people they connect to.

I'm not convinced there is a solution to sybil nodes, isn't that what Bitcoin is an admission of in the first place?
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
November 05, 2014, 06:44:15 AM
#4
Interesting - could not a simpler "hashcash" approach have been used (where x hashes are returned for x blocks each with a difficulty of y using the actual block hash and a nonce)?
sr. member
Activity: 252
Merit: 250
Skoupi the Great
November 05, 2014, 06:31:08 AM
#3
2. It allows to give higher priority to peers which store the full blockchain (and penalize SPV).

SPV clients are not full nodes anyway. For all i know they don't relay any transactions... They only broadcast transactions initiated by the spv client.
legendary
Activity: 1232
Merit: 1094
November 05, 2014, 06:09:36 AM
#2
2. It allows to give higher priority to peers which store the full blockchain (and penalize SPV).

SPV clients should not be considered leechers.  They add to the value of the currency.

Having said that it depends on what you mean by higher priority.  If they were forwarded (merkle)blocks after NETWORK_NODE connections, then it is not that big a deal.
hero member
Activity: 555
Merit: 654
November 04, 2014, 09:54:01 PM
#1
In the thread https://bitcointalksearch.org/topic/proof-of-storage-to-make-distributed-resource-consumption-costly-310323 people are discussing how to prove to a peer that one has invested some expensive resource. I was researching on a topic that has some common applications that I think can be useful in cryptocurrencies.

How to prove that one have an unique copy of the blockchain?

This is important for several reasons:

1. It allows anyone to scan the network and check its health, measured by the number of distinct copies of the blockchain in existence.
2. It allows to give higher priority to peers which store the full blockchain (and penalize SPV).
3. It allows to establish a minimum resource consumption to prevent distributed DoS attacks.

The article is on my blog: http://bitslog.wordpress.com/2014/11/03/proof-of-local-blockchain-storage/

The core idea is to use asymmetric-time functions to store the blockchain in a transformed state (by applying f, which is slow), where the transformation depends on the peer IP address. The data is recovered by applying the inverse of f (which is fast).


Jump to: