From 0cab0f35c127985415865f4e983aae84a9e812ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Thor=C3=A9n?= Date: Fri, 27 Apr 2018 21:12:08 +0800 Subject: [PATCH] Update 168 paid master (#216) * 168: Mark as active - Pre MVP scope and dates - swarm participant risks - add notes on running local mailserver - links to basic feasibility check and ghi * 168: Add pilu / gravityblast * Review comments Andy --- _data/contributors.yaml | 1 + .../README.md} | 89 +++++++++++++++---- .../168-paid-master-nodes/local-mailserver.md | 49 ++++++++++ 3 files changed, 124 insertions(+), 15 deletions(-) rename ideas/{168-paid-master-nodes.md => 168-paid-master-nodes/README.md} (71%) create mode 100644 ideas/168-paid-master-nodes/local-mailserver.md diff --git a/_data/contributors.yaml b/_data/contributors.yaml index 7184ffd..e68bff4 100644 --- a/_data/contributors.yaml +++ b/_data/contributors.yaml @@ -28,6 +28,7 @@ - nastya - nikitalukianov - oskarth +- pilu - PombeirP - rasom - rachelhamlin diff --git a/ideas/168-paid-master-nodes.md b/ideas/168-paid-master-nodes/README.md similarity index 71% rename from ideas/168-paid-master-nodes.md rename to ideas/168-paid-master-nodes/README.md index ee8c85c..e4a1ee2 100644 --- a/ideas/168-paid-master-nodes.md +++ b/ideas/168-paid-master-nodes/README.md @@ -1,8 +1,30 @@ +--- +id: 168-paid-master-nodes +title: Paid master nodes +status: Active +created: 2018-04-13 +lead-contributor: oskarth +contributors: + - oskarth + - rachelhamlin + - jpbowen + - andytudhope + - pilu +exit-criteria: yes +success-metrics:yes +clear-roles: yes +future-iterations: yes +roles-needed: + - Clojure dev + - QA + - Designer +--- + ## Preamble - Idea: 167-paid-master-node + Idea: 168-paid-master-node Title: Paid master nodes - Status: Draft + Status: In Progress Created: 2018-04-13 ## Summary @@ -16,17 +38,27 @@ users. - Lead Contributor: @oskarth - QA: TBD -- Evaluation: TBD +- Evaluation: @oskarth - Clojure Contributor: TBD -- Go Contributor: TBD +- Go Contributor: @pilu - PM: @rachelhamlin - UX(R): @jpbowen - Designer: TBD - Community: @andytudhope +Risk: +- Not enough Go and Clojure resources available + +Counteract: +- Create clear issues as bounties +- Oskar start initial spiking out, be OK with slow progress +- Proactively reach out to individual devs to try to free up resources + ## Product Overview -This idea takes of where https://github.com/status-im/ideas/blob/master/ideas/1-offline-inboxing.md ended. It provides an SNT payment layer for usage of master nodes. +This idea takes off where +https://github.com/status-im/ideas/blob/master/ideas/1-offline-inboxing.md +ended. It provides an SNT payment layer for usage of master nodes. Users want basic services such as offline inboxing to just work, while at the same time paying for the resources they are using, as opposed to being a product @@ -83,13 +115,19 @@ the Apple store. Mail server needs to be able to process this transaction and have logic for whitelisting this user's enode for some period of time. -How re-newal will happen is not specified yet. +How renewal will happen is not specified yet. -> Comment from review: May be out of scope for this idea but perhaps we'll want to experiment with different payment models for time - e.g. Alice pays until she runs out of SNT OR N offline messages OR set period of time. +> Comment from review: May be out of scope for this idea but perhaps we'll want +> to experiment with different payment models for time - e.g. Alice pays until +> she runs out of SNT OR N offline messages OR set period of time. -Solving the initial user stories don't require any proof of message delivery or -quality of service. Reputation of specific mail servers thus happens completely -outside of the app, e.g. through Riot, Reddit, etc. +Solving the initial user stories doesn't require any proof of message delivery +or quality of service. + +How reputable a given mail server is will thus be communicated outside of the +app, at least initially. That is, instead of having the equivalent of an App +Store rating system, or seed ratio on a Torrent site, this can be communicated +through other means. For example: Riot, Reddit, public status channels, etc. #### Note on Status Desktop @@ -113,9 +151,30 @@ technical terms on status-go side. (Lack of consensus on this point: Possibly onboarding SNT give-away logistics.) +### Pre MVP - initial investigation and spec + +Goal Date: 2018-05-07 + +Description: +- [ ] Recruit additional roles: Go dev, Designer, Clojure dev, QA +- [ ] Spec out rough UX(R) track +- [ ] Spike out technical requirements: + (a) deny requests to mail server as a function of peer and envelope + (b) send STT payments and get basic proof +- [ ] Create issues (and bounties) necessary for MVP +- [ ] Communicate proof of payment / accept/deny thinking at kick off call + +Probably not enough time: (- [ ] Understand changes to requestMessage envelope required) + +Initial investigation to understand how to scope MVP (WIP): +- https://github.com/status-im/status-react/commit/2a1678ef8724702cee547fdc3ba1f5f03681714a +- https://github.com/status-im/status-go/commit/a4820285bdb16789477efc06d832bfbd51753ca4 +- [Local mailserver HOWTO](local-mailserver.md) + +Also see https://github.com/status-im/status-react/issues/4003 (more to come) + ### Minimum Viable Product - -Goal Date: TBD - May 1 + 2w +Goal Date: 2018-05-21 Description: Spike out most basic proof of concept possible for payment / service on or off in Clojure and Go, using SNT test token. @@ -124,11 +183,11 @@ Separate tracks: - UX(R) / design - Go dealing with app protocol / payment -Goal Date: +Goal Date: -Description: +Description: -Testing Days required: +Testing Days required: ## Success Metrics diff --git a/ideas/168-paid-master-nodes/local-mailserver.md b/ideas/168-paid-master-nodes/local-mailserver.md new file mode 100644 index 0000000..f340429 --- /dev/null +++ b/ideas/168-paid-master-nodes/local-mailserver.md @@ -0,0 +1,49 @@ +# How to run and use mail server locally + +## status-go + +Just some notes: + +``` +make statusgo +./build/bin/statusd -shh -datadir=paid-data-mailserver -shh.mailserver -shh.passwordfile=wnode-data-mailserver/password.txt -listenaddr=127.0.0.1:30303 -log=DEBUG -ipc +``` + +Verify peers are connected separately: + +``` +geth attach ~/git/status-go/paid-data-mailserver/geth.ipc +admin.peers +``` + +## Clojure side + +Add local mail server to `constants.cljs` where address is RLPx in print out above, e.g: + +``` +"paid" {:id "paid" + :name "Status testnet mailserver paid, experimental" + :address + "enode://9f0a55f116aedb40d4036d9a385d505d9c183fd708ef1aa2f883895df97864f758eee911c26c86732ae13a57664a076de2527189f983ee24dda2a4cb5f5db777@127.0.0.1:30303"} +``` + +Connect to it, might need to switch networks and login/logout etc to trigger +requestMessages`. Make sure networks match. Check logs for `offline inbox` to +see flow. Can switch offline server in advanced settings. + +If there are issues with peers, and mail server has peers, then going into CLJS repl and: + +``` +(require 'status-im.transport.inbox) +(status-im.transport.inbox/add-peer "enode://987c40d5761678f030d80de13a2f8a0150da651e5d2c430b96e4f8c2c544389918c7bd820d2d6a5610afb96dcedf8ebb0b941859a0cdbd7dddbbd13994dcbe52@[::]:30303" println println) +(status-im.transport.inbox/fetch-peers println println) +``` + +can help with debugging. + +## Notes + +Note that this above flow only modifies the 'server' side of mail server and UI +side of client. If you want to modify status-go node on client side you need to +make sure status-go is built and linked properly in the app. See +https://github.com/status-im/status-react/blob/develop/scripts/bundle-status-go.sh