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
This commit is contained in:
Oskar Thorén 2018-04-27 21:12:08 +08:00 committed by GitHub
parent 4c645be6f7
commit 0cab0f35c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 124 additions and 15 deletions

View File

@ -28,6 +28,7 @@
- nastya
- nikitalukianov
- oskarth
- pilu
- PombeirP
- rasom
- rachelhamlin

View File

@ -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
<!-- Mandatory, completes the Idea in the fastest route possible, can be hacky, needed to feel progress. See https://imgur.com/a/HVlw3 -->
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: <!-- Date for evaluation in ISO 8601 (yyyy-mm-dd) format -->
Goal Date:
Description: <!-- Description of Deliverables-->
Description:
Testing Days required: <!-- Days required at the end of development for testing -->
Testing Days required:
## Success Metrics

View File

@ -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