the conversation about full nodes and light clients (LCD) has come up again. i'm mostly concerned with our plan for launch. if there are thoughts or ideas about the medium or long term, let's open another ticket for that.
as i see it, there are a few options we can consider. each has their own set of pros and cons...
1. UI runs a full node by default
- a lot of overhead = bad ux
- LCD is fundamental part of cosmos
2. UI uses the LCD by default
- concern about not being enough nodes when we launch
- no incentive to run full nodes (except for validators)
3. UI uses a full node by default, but can opt in for the LCD in settings
- a lot of overhead = bad ux
4. UI uses the LCD by default, but can choose to run a full node in settings
- there is no real incentive for people to opt in
5. UI uses the LCD by default, but full node syncs in the background
- complex implementation / technical overhead
if those who are interested could share which option (1-5) they think we should implement for launch, that would be very helpful. also, other options are absolutely welcome and encouraged.
@ebuchman @jaekwon @adrianbrink
related: #335
I think we need number 4.
Default for the UI should be to use LCD with a remote full node provided by AiB.
Users absolutely must be able to override which full node they are connecting to - ie. so they can run their own full node locally and connect to that.
While many users will just be interested in the pretty UI, many others will also want the experience of running a full node and running the UI against their own full node!
Basically, so long as theres an easy way to specify which full node the LCD is talking to, we're set. Nothing complicated.
Default for the UI should be to use LCD with a remote full node provided by AiB.
isn't this the kind of centralization we want to stay away from?
isn't this the kind of centralization we want to stay away from?
Yes, but only limited trust is placed in the AiB nodes since the LCD is verifying the data was committed by the validator set. Users could connect to any other full node, assuming it has indexed the relevant data.
Pro 4 for the reasons stated by Bucky
Does this need further discussion?
seems like we're going with 4. which means we're done if we're comfortable with making people run voyager locally if they want to connect to a specific full node (or their own).
if we want to make it easier to connect to a custom full node, we'll have some work to do.
We can say we go with 4 and create a ticket "Enable users to connect to a certain node in the UI". https://github.com/cosmos/voyager/issues/504
Most helpful comment
Basically, so long as theres an easy way to specify which full node the LCD is talking to, we're set. Nothing complicated.