During the dev call today, we talked about future connectivity options, in relation to the goal of reintroducing LES, introducing ULC and decreasing reliance on any single point of failure.
During the call, several observations were made:
- infura provides good service, but we don’t want to rely on it exclusively
- LES takes a long time to boot up, hard to find free spot
- ULC needs trusted setup or M/N
- vipnode is one way of getting connectivity
- additional ways of connecting to ethereum may appear (websockets? libp2p, etc)
- we’re not sure what works best for our users - or under which conditions (connectivity, power, etc)
- we’re happy to host some servers ourselves as a way of providing service to the ethereum network as a whole, but we don’t want to be the only ones running these nodes, as this makes us the single point of failure (we become infura, but worse)
- need to be careful so that our app has les slots to connect to / some form of connectivity - these might get filled up by other network participants -> need to encourage more free les slots on the network generally
- mist recently added a clever feature called Layered Nodes whereby it uses both infura and an ordinary ethereum node to provide connectivity - this is good UX in the sense that the user can start using the application immediately, but in case infura is compromised / stops working, the application continues to work
Now seems like a good time to brainstorm around options for this issue, to build a shared sense direction or plan as to where we want to go with this - here are some good questions to begin with:
- what are the properties of the various connectivity options, in terms of bandwidth, security, power consumption, threat model etc?
- how do we present the various connectivity choices to users? should they be able to pick and choose?
- should we establish a hierarchy of connectivities where some are “better” than others? by what criteria? are these conditional (“connected to wifi / connected to power source”)?
- should we allow transactions / economic activity / chat when we’re in “degraded” mode?
- how do we present the current connectivity status to users?
- what happens when connectivities disagree as to the current state of the network?