Bitcoin Forum
November 16, 2024, 05:50:24 AM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Torrent like client for the Bitcoin block chain  (Read 2785 times)
samspaces (OP)
Legendary
*
Offline Offline

Activity: 1453
Merit: 1030


View Profile
November 23, 2015, 08:01:09 PM
 #1

Hi all,

Downloading a full Bitcoin node is now at almost 50 Gigabytes. This is going to increase a lot of course with the broader adoption of Bitcoin and increasing number of transactions.

My question is, why isn't there a Bitcoin wallet interface yet, that accesses the block chain via a torrent like distribution. That would still be in the spirit of decentralisation and that way, you won't have to dedicate so much storage capacity. Also I'd think that via a torrent assembly the block chain would still be safeguarded against malpractice.

I'd like to read your thoughts on this,

Thanks, Sam

Edit: with 'torrent like' I mean decentralised local access to the entire block chain.
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3542
Merit: 6886


Just writing some code


View Profile WWW
November 23, 2015, 08:04:11 PM
 #2

I'm not sure what you mean by torrent like distribution (although I'm not particularly up to date on how torrents work), can you explain that?

There are wallets that use Simplified Payment Verification which download the block headers (significantly smaller than the entire blockchain) and the transactions that pertain to the addresses in the wallet. They only need a small amount of data and can retrieve the information they want from any full node using Bloom filters.

shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1540


No I dont escrow anymore.


View Profile
November 23, 2015, 08:04:42 PM
 #3

Hi all,

Downloading a full Bitcoin node is now at almost 50 Gigabytes. This is going to increase a lot of course with the broader adoption of Bitcoin and increasing number of transactions.

My question is, why isn't there a Bitcoin wallet interface yet, that accesses the block chain via a torrent like distribution.

Bitcoin core does sync with all connected nodes since 0.10. Its essentially "torrent like".

That would still be in the spirit of decentralisation and that way, you won't have to dedicate so much storage capacity. Also I'd think that via a torrent assembly the block chain would still be safeguarded against malpractice.

I'd like to read your thoughts on this,

Thanks, Sam

The data still needs to be verified and in order to avoid doing that every time (downloading 50GB, verify it) and still be a full node, the data needs to be stored locally.

Im not really here, its just your imagination.
Carlton Banks
Legendary
*
Offline Offline

Activity: 3430
Merit: 3080



View Profile
November 23, 2015, 08:33:43 PM
 #4

Edit: with 'torrent like' I mean decentralised local access to the entire block chain.

You're confusing decentralised access to the blockchain with.... decentralised access to the blockchain.

Exactly what you want already exists: the Bitcoin client downloads different parts of the blockchain from multiple users simultaneously, the same principle as when downloading a file using the Bittorrent protocol.

Vires in numeris
RodeoX
Legendary
*
Offline Offline

Activity: 3066
Merit: 1147


The revolution will be monetized!


View Profile
November 23, 2015, 08:46:49 PM
 #5

Edit: with 'torrent like' I mean decentralised local access to the entire block chain.

You're confusing decentralised access to the blockchain with.... decentralised access to the blockchain.

Exactly what you want already exists: the Bitcoin client downloads different parts of the blockchain from multiple users simultaneously, the same principle as when downloading a file using the Bittorrent protocol.
That's your answer. As far as the huge size of the blockchain... Well, you can use a wallet that references a "trusted" copy of the blockchain. However you are introducing the risk of having to trust someone.

The gospel according to Satoshi - https://bitcoin.org/bitcoin.pdf
Free bitcoin in ? - Stay tuned for this years Bitcoin hunt!
Decoded
Legendary
*
Offline Offline

Activity: 1232
Merit: 1030


give me your cryptos


View Profile
November 27, 2015, 09:07:13 AM
 #6

I think bitcoin core has already utilized that function. It basically syncs with every other node using bitcoin core

I don't really think we should use a torrent-like system for everything, though. Maybe there should be two versions of bitcoin core, or two settings. The full version, just like hope bitcoin core is now, and the lite one, which downloads relevant snippets of the blockchain from a random 100 connected nodes using the full version. The downside to this version is lag when downloading the snippet. This will give an incentive for fully syncing, but if you really need to access a wallet fast, you can use the lite version.

looking for a signature campaign, dm me for that
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1540


No I dont escrow anymore.


View Profile
November 27, 2015, 09:09:22 AM
Merited by ABCbits (1)
 #7

I think bitcoin core has already utilized that function. It basically syncs with every other node using bitcoin core

I don't really think we should use a torrent-like system for everything, though. Maybe there should be two versions of bitcoin core, or two settings. The full version, just like hope bitcoin core is now, and the lite one, which downloads relevant snippets of the blockchain from a random 100 connected nodes using the full version. The downside to this version is lag when downloading the snippet. This will give an incentive for fully syncing, but if you really need to access a wallet fast, you can use the lite version.

Your "lite client" sounds like SPV to me -> https://multibit.org/en/help/hd0.1/how-spv-works.html

Im not really here, its just your imagination.
TierNolan
Legendary
*
Offline Offline

Activity: 1232
Merit: 1104


View Profile
November 27, 2015, 10:39:07 PM
 #8

The reference client uses "headers-first". 

Each header is 80 bytes and there are 385k of them.  This gives around 30MB of data for the headers.

The header chain has to be downloaded in series.  But once you have downloaded the 30MB header chain from one peer, your node has the headers for all the blocks that you need to download.

You can ask each peer for a different block.  This is parallel just like bittorrent.  Each peer sends you blocks and you can verify that they match the header.  If a node takes to long to send you a block, then you disconnect from that node and ask a different node for the block.

Once they chain has been downloaded, your node then just downloads each new block from whichever node(s) notifies it about the block.

1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
enthus
Full Member
***
Offline Offline

Activity: 140
Merit: 100


View Profile
November 28, 2015, 02:36:45 AM
 #9

The blockchain is very big....There must be a quicker alternative to downloading chain, I hope something is done soon, Torrent will be a great idea.
USB-S
Sr. Member
****
Offline Offline

Activity: 574
Merit: 250

In XEM we trust


View Profile
November 29, 2015, 06:45:43 AM
 #10

The blockchain is very big....There must be a quicker alternative to downloading chain, I hope something is done soon, Torrent will be a great idea.
It was said before, bitcoin core wallet already uses torrent like system, where the blockchain is downloaded from other core clients via p2p. We know that the blockchain size is a issue. It won't be long until blockchains get to a point where it gets so big, that regular everyday users won't handle the capacity of it, especially when the block size increases.
There are wallets that only download block headers, which would be a way to go in the future.


````````````````████████
_`````````██████████████████████
_`````█████████████████████████████
_```█████████████████████████████████
_``████████████████████████████████████
_█████████```````████████```````████████
_███████````████````██`````███````███████
_██████````████████`````████████``███████
_██████````██████````██``██████```███████
_███████```````````████``````````████████
_██████████████████████████████████████
_``████████████████████████████████████
_```_████████████████████████████████
_``````████████████████████████████
_`````````3█████████████████████
play.infinity
        Eжeднeвный ДЖEКПOT
TELEGRAM CHAT   SITE   TELEGRAM
                   Get free eth
samspaces (OP)
Legendary
*
Offline Offline

Activity: 1453
Merit: 1030


View Profile
November 29, 2015, 03:54:01 PM
 #11

The blockchain is very big....There must be a quicker alternative to downloading chain, I hope something is done soon, Torrent will be a great idea.

I think you know what I mean. An interface that perhaps stores headers locally, but makes a sync via torrent to the complete block chain, so it runs as a full node.
cr1776
Legendary
*
Offline Offline

Activity: 4228
Merit: 1313


View Profile
November 29, 2015, 06:28:51 PM
Merited by ABCbits (1)
 #12

The blockchain is very big....There must be a quicker alternative to downloading chain, I hope something is done soon, Torrent will be a great idea.

I think you know what I mean. An interface that perhaps stores headers locally, but makes a sync via torrent to the complete block chain, so it runs as a full node.

Since 0.10.0 there is no need to sync via torrent due to the headers first sync.  If you read the thread above (among many other threads and discussions about this) and understand it, it wouldn't improve performance, just add something that isn't needed.

However, if you think it is a good idea for whatever reason, it is something that you can implement and then see if it improves anything or just adds complication. 
Carlton Banks
Legendary
*
Offline Offline

Activity: 3430
Merit: 3080



View Profile
November 29, 2015, 10:34:40 PM
Last edit: December 06, 2015, 06:52:49 PM by Carlton Banks
Merited by ABCbits (1)
 #13

I guess another thing to point out is that 0.12 will ditch OpenSSL verification for libsecp256k, which removes a significant bottleneck from the tx verification part of sync'ing the chain (performance increase is something like 100%-400%). Nothing to do with the download rate, but it should still confer an overall speedup in sync'ing up.  

Vires in numeris
calkob
Hero Member
*****
Offline Offline

Activity: 1106
Merit: 521


View Profile
November 30, 2015, 04:52:40 PM
 #14

lets be honest the average user dosnt need to download the entire 50gb,  as long as they can trust a certain number of nodes each independant of each other.  now i don't mean just a few, i mean a few hundred at least. 
samspaces (OP)
Legendary
*
Offline Offline

Activity: 1453
Merit: 1030


View Profile
December 06, 2015, 06:04:26 PM
 #15

They said latest version of Core has been optimised and it will download faster blocks, in my experience when I installed Core the bottleneck was CPU, Dual Core 2.3GHz first blocks 2009/2010/2011/2012 was OK, when was confirming and validating other blocks it used 100% of CPU.

Running some older pc's as well, it takes forever to sync up a few 100 blocks.
koad
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
December 14, 2015, 06:12:53 PM
 #16

Hi all,

Downloading a full Bitcoin node is now at almost 50 Gigabytes. This is going to increase a lot of course with the broader adoption of Bitcoin and increasing number of transactions.

My question is, why isn't there a Bitcoin wallet interface yet, that accesses the block chain via a torrent like distribution. That would still be in the spirit of decentralisation and that way, you won't have to dedicate so much storage capacity. Also I'd think that via a torrent assembly the block chain would still be safeguarded against malpractice.

I'd like to read your thoughts on this,

Thanks, Sam

Edit: with 'torrent like' I mean decentralised local access to the entire block chain.

I really like your idea,  implement your approach into an electrum thin client and it would become a hybrid/.   

the blocks would be downloaded as per the users requirement to double check the results of the electrum server data & would also download blocks based on how many copies of each block exist in the p2p network of hybrid clients and where the network requires more coverage.  You could effectively choose to limit the amount of blocks you carry and could (in a fashion) bootstrap your thin client with electrum (full node) and maintain full data access to the ENTIRE chain via DHT(p2p).   Considering the confirmation times of snailcoin I dont think it is too much to ask for a few hundred extra milliseconds to query your data.  Validating the chain will always be the big time spender;  the only way around it is to trust (someone else) however I think this idea could add leverage to the p2p network and add some trust-ability into it at a thin-client level.   I'm excited to see what the future has in store, things will change as their needs evolve.

/koad
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1134


View Profile WWW
February 09, 2016, 09:46:45 PM
 #17

The reference client uses "headers-first". 

Each header is 80 bytes and there are 385k of them.  This gives around 30MB of data for the headers.

The header chain has to be downloaded in series.  But once you have downloaded the 30MB header chain from one peer, your node has the headers for all the blocks that you need to download.

You can ask each peer for a different block.  This is parallel just like bittorrent.  Each peer sends you blocks and you can verify that they match the header.  If a node takes to long to send you a block, then you disconnect from that node and ask a different node for the block.

Once they chain has been downloaded, your node then just downloads each new block from whichever node(s) notifies it about the block.
iguana does parallel sync similar to the above, the hard part is processing all the data at network speeds. Currently I am completing the full blockchain download in about 12 minutes, but it takes about half hour to finish the processing. I create a set of read-only files out of bundles of blocks, which means they can all be put into a compressed filesystem, ie with squashfs. I estimate the total HDD needed to be around 20GB, though probably 30GB is needed during the peak usage of sync as there is a queue of unprocessed data.

I used to think blockchain size was an immediate issue, but with the parallel sync and a 1gbps connection, it isnt and wont be for quite a while. The processing of it is almost all totally in parallel, so even as the blockchain increases in size the time for a full sync is very close to linear.

The cost is that the time to get account balances will grow linearly over time also, but it is always possible to create another layer of data on top of the raw data. Currently I directly create the data structures that can be used for all the account queries needed.

James


http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!