Nano-node: [Feature request] Adding option to download latest data sync on wallet installation

Created on 28 Dec 2017  路  8Comments  路  Source: nanocurrency/nano-node

This feature could be vital to giving new users (and old) an easier user experience with the desktop wallet.
Currently, userrs have to search the faq page or get support from other users to figure out how to sync faster. This can be tedious and frustrating, especially if no information is given and it takes a long time to sync.
During installation of the desktop raiwallet, could it be possible to give an option (yes or no option) to download the latest data sync?

Most helpful comment

Came to GitHub to see if this was a requested feature yet, as I am currently waiting for my wallet to sync. +1.

The manual methods to bootstrap a node quickly are detailed in #292 and involve extracting a database from a 7-Zip file from a filesharing site. As an InfoSec professional, this approach makes me uncomfortable because:

  1. I do not know if the zip file's "data.ldb" file is trustworthy according to Rai's consensus security model. Is it possible to create a fake blockchain (ahem, lattice) with spoofed consensus decisions inside? Can funds or transactions be stolen that way? Does my wallet perform any sort of background integrity check on the imported database?
  2. Phishing, malware, etc. are all possible if we are directing users to filesharing websites, particularly if they aren't behind an official RaiBlocks domain and TLS or the files are unsigned.

As a new Rai user I do not know the answer to these questions, so I am inclined to sync the "traditional" way from network peers. This is problematic because:

  1. Blocks appear to be created faster than I can sync them. My wallet is currently downloading ~25 blocks per minute, or 1500 per hour on average on my home internet connection. The network recently has been creating between 1600 and 2500 blocks per hour. At this rate, I will never fully sync.
  2. As a user, if I grow impatient I may rush towards the "quick" methods discussed above and possibly compromise my setup. This is even more likely if I were waiting to pocket some Rai (the forum is full of these sorts of discussions).

My opinion on how this issue should be fixed:

In the short term, a dev should sign a recent database file and upload a zip of it to Amazon S3 or similar, and point an official "*.raiblocks.net" domain to it. Maybe sync.raiblocks.net? Then add a signed hash of that ZIP to this repository. This is centralized, but much more reassuring than the current guides.

In the long term... perhaps representatives should "checkpoint" the database and compress it to a shared file that is shared to new nodes every once and a while? Then, a new node could basically torrent the "historical DB" as the first step of its bootstrap.

(New to this community so hopefully I got the terminology right. Hopefully my rambling is valuable, too.)

All 8 comments

short term, if this is possible in a secure manner it would increase the number of users willing to run a full node imo

Came to GitHub to see if this was a requested feature yet, as I am currently waiting for my wallet to sync. +1.

The manual methods to bootstrap a node quickly are detailed in #292 and involve extracting a database from a 7-Zip file from a filesharing site. As an InfoSec professional, this approach makes me uncomfortable because:

  1. I do not know if the zip file's "data.ldb" file is trustworthy according to Rai's consensus security model. Is it possible to create a fake blockchain (ahem, lattice) with spoofed consensus decisions inside? Can funds or transactions be stolen that way? Does my wallet perform any sort of background integrity check on the imported database?
  2. Phishing, malware, etc. are all possible if we are directing users to filesharing websites, particularly if they aren't behind an official RaiBlocks domain and TLS or the files are unsigned.

As a new Rai user I do not know the answer to these questions, so I am inclined to sync the "traditional" way from network peers. This is problematic because:

  1. Blocks appear to be created faster than I can sync them. My wallet is currently downloading ~25 blocks per minute, or 1500 per hour on average on my home internet connection. The network recently has been creating between 1600 and 2500 blocks per hour. At this rate, I will never fully sync.
  2. As a user, if I grow impatient I may rush towards the "quick" methods discussed above and possibly compromise my setup. This is even more likely if I were waiting to pocket some Rai (the forum is full of these sorts of discussions).

My opinion on how this issue should be fixed:

In the short term, a dev should sign a recent database file and upload a zip of it to Amazon S3 or similar, and point an official "*.raiblocks.net" domain to it. Maybe sync.raiblocks.net? Then add a signed hash of that ZIP to this repository. This is centralized, but much more reassuring than the current guides.

In the long term... perhaps representatives should "checkpoint" the database and compress it to a shared file that is shared to new nodes every once and a while? Then, a new node could basically torrent the "historical DB" as the first step of its bootstrap.

(New to this community so hopefully I got the terminology right. Hopefully my rambling is valuable, too.)

Let's just do what we can to make synchronization faster. I think it's a mistake to bypass the normal synchronization any way other than manually.

Definitely agree with the comments on here. Good workaround right now might be to ensure new users to be fully informed on ways to manual sync faster, but definitely focus on the synchronisation speeds

An official download location for a recent data.ldb with accompanying signatures would be the best workaround, imo. This would speed adoption while minimizing risks from untrusted file downloads.

Answering my own question, these appear to be official links: https://www.reddit.com/r/RaiBlocks/wiki/index

i tried syncing once... synced 300.000 blocks and had a 12gb db file....

downloaded the "workaround" file and it was only 2 gb... something is very off the the syncing...

I definitely agree with @joeyrideout here. The current approach to manual syncing and asking less technical people to download objects from sources that I would deem as "dubious" is not a great route. We shouldn't be teaching new users to trust someone's personal Yandisk, Dropbox, or Google Drive.

Let's put something up on the trusted "raiblocks.net" domain. sync.raiblocks.net works for me. How about a simple static site with links to the most recent ledger database with available download for magnet link, direct torrent file, or HTTP?

10 minute POC: http://raiblocks-ledger.s3-website-us-west-2.amazonaws.com/

Amazon S3 can be used to host both the static site, a compressed database file, and the torrent file. S3 can also natively share/track torrents for objects: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

From there an automated process can upload a sanitized/clean database file for distribution, nightly, weekly, monthly, etc.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AugustoResende picture AugustoResende  路  3Comments

i3bitcoin picture i3bitcoin  路  4Comments

androm3da picture androm3da  路  3Comments

bartclaeys picture bartclaeys  路  3Comments

BitDesert picture BitDesert  路  6Comments