diff --git a/.gitignore b/.gitignore index 0017eea..58521d2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ _site .sass-cache .jekyll-metadata + +# allow any files in ideas directories +!ideas/*/* diff --git a/ideas/280-discoverable-trusted-server-nodes/README.md b/ideas/280-discoverable-trusted-server-nodes/README.md index 0b46ee5..3565827 100644 --- a/ideas/280-discoverable-trusted-server-nodes/README.md +++ b/ideas/280-discoverable-trusted-server-nodes/README.md @@ -1,19 +1,19 @@ --- id: 280-discoverable-trusted-server-nodes title: Discoverable And Trusted Server Nodes -status: Draft +status: Active created: 2018-06-07 category: core lead-contributor: adambabik contributors: - "Richard Ramos (@richard-ramos), Smart Contract Developer" - "Andrea Maria Piana (@cammellos), Clojure Developer" + - "AdriĆ  Cidre (@adriacidre), Go Developer" exit-criteria: yes success-metrics: yes clear-roles: no future-iterations: yes roles-needed: - - Go Developer okrs: - "[PO]: Objective: Messaging is reliable" - "[P2]: KR: Cluster can handle 500 concurrent users" @@ -48,13 +48,13 @@ Due to the fact that all Mail Servers are supposed to be equal and independent ( ## Minimum Viable Product -Goal Date: TBD +Goal Date: 2018-07-22 1. [ ] A smart contract that keeps track of providers and Mail Servers, 1. [ ] Discoverable Mail Servers, 1. [ ] Requests for messages are securely encrypted to provide confidentiality, * As devp2p packets are encrypted and this is P2P communication, the question is should we additionally encrypt Whisper messages with a Mail Server's public key? -1. [ ] A client that collects discovered Mail Servers and verifies if they are trusted using the smart contract. Verified Mail Servers are added to the pool and a random one is selected to use. +1. [ ] Client requests for Mail Servers and server finds them and verifies if they are trusted using the smart contract. Verified Mail Servers are sent to the client and a random one is selected to use. * We keep the option to add user's own Mail Server addresses. 1. [ ] Make sure this solution is flexible and can work with other server nodes. diff --git a/ideas/280-discoverable-trusted-server-nodes/client-server-sequence.svg b/ideas/280-discoverable-trusted-server-nodes/client-server-sequence.svg new file mode 100644 index 0000000..3b076c2 --- /dev/null +++ b/ideas/280-discoverable-trusted-server-nodes/client-server-sequence.svg @@ -0,0 +1,2 @@ + +
status-go
status-go
The Chain
The Chain
Cluster
Cluster
status-react
status-react
request MailServer
request MailServer
Currently only Infura
Currently only Infura
request Disc V5
request Disc V5
return
return
return peers
return peers
test connectivity
test connectivity<br>
verify
verify
return
return
discV5 SearchTopic
discV5 SearchTopic
add to pool
add to pool
Smart Contract
Smart Contract<br>
Via JSON-RPC method.

Bool prop to enable check connectivity.

Int prop with the number of peers to search for.
[Not supported by viewer]
set a watcher
set a watcher<br>
remove peer
event
remove peer<br>event
remove peer
remove peer
signal if peer
valid
signal if peer<br>valid<br>
signal with
peers summary
signal with<br>peers summary<br>
disconnect peer
disconnect peer<br>
no Mail Server?
request one
no Mail Server?<br>request one
Ref to Flow 1.
Ref to Flow 1.<br>
Flow 1

Request Mail Server flow due to no Mail Servers
in the pool.
Flow 1<br><br>Request Mail Server flow due to no Mail Servers<br>in the pool.<br>
Flow 2

A peer is not trusted anymore.
Flow 2<br><br>A peer is not trusted anymore.
\ No newline at end of file