浏览代码

Update PIP-0031C

Brandon Berhent 6 年之前
父节点
当前提交
8b68d3f101
共有 2 个文件被更改,包括 8 次插入6 次删除
  1. 8 6
      PIP/PIP-0031C.md
  2. 二进制
      PIP/resources/PIP-0031C/diagram1.png

+ 8 - 6
PIP/PIP-0031C.md

@@ -47,14 +47,16 @@ This wallet is to be free and open source software.
 
 The wallet is comprised of the following components:
 * **Frontend**: The Flutter application that the user interracts with. Relies on the **Backend**  to interact with the PascalCoin network.
-* **Backend**: This is an asyncio+aiohttp Python secure websocket server. It provides a set of APIs that apps can use to interract with the **Node**. It is also responsible for other things, such as delivering push notifications, price updates, and storing minimal data about subscribed users - such as what fiat currency they prefer for price updates.
-* **Node**: This is a full node, probably the PascalCoin daemon, the preferred configuration is to run the Node on the same server as the Backend application.
+* **Backend**: This is an asyncio+aiohttp Python secure websocket server. The primary purpose is to manage price updates, store minimal data about subscribed users (such as preferred currency), and potentially deliver other things such as push notifications when the user's account has a new operation detected. The secondary purpose is to act as a passthru for the default **Node**. This is a convenience server that provides some user-conveniences that require a central server (streaming price updates, transaction updates, and ideally push notifications). It is not required for core wallet operation.
+* **Node**: This is a full node, probably the PascalCoin daemon. The user can choose any node they want in the application settings and the app will operate normally. There will be a default **Node** operating remotely for wallet users to use, changing it will be an optional and secondary action.
   
 ![Wallet Architecture](resources/PIP-0031C/diagram1.png)
 
 **Key Points**
-* The Processing-Layer can be easily hosted on any machine running Linux, Mac, or Windows as long as it has Python 3.6 or newer installed if the user wishes to use a different server than the one provided.
+* All sensitive data is handled by the **Frontend**, this is the only thing the user interacts with. Users need to be able to install the app (Frontend) and be able to use it immediately without additional steps or interruption.
+* The Backend can be easily hosted on any machine running Linux, Mac, or Windows as long as it has Python 3.6 or newer. The recommended deployment would be to a Unix server, due to the better support there with various WSGI servers such as gunicorn, uwsgi, etc.
 * Push notifications rely on a central service and third-party, such as Firebase, in order to reliably deliver push notifications to a mobile device.
+* The **Node** URL/Port can be changed in the settings so that the app will operate even in the event the central server goes offline.
 
 ### Frontend
 
@@ -83,17 +85,17 @@ This PIP wants to create a frontend that is uniquely, but is similarly intuitive
 This is a Python [aiohttp][aiohttp] server. Python is easy to deploy on all architectures, can be easily scaled when paired with a WSGI server such as [gunicorn][gunicorn]. The goal is to buld a simple lightweight backend that can support a large number of connections. Python's asyncio module allows for high concurrency while a gunicorn deployment would allow for numerous worker processes to be added as needed.
 
 The responsibilities of the backend are to
-* Provide a variety of web socket APIs for clients to interact with - primarily a whitelist of json-RPC commands matching the PascalCoin RPC specifications.
+* Provide a variety of web socket APIs for clients to interact with
 * Push updates to clients such as price updates, new transactions, push notifications.
 
-While users can and should be able to choose and run their own server to prevent the single point of failure problem, this PIP is opting not to interface with the PascalCoin Daemon directly. This is primarily because we want to provide a websocket API instead of an HTTP API, but it also provides other benefits:
+While users can choose and run their own node/daemon to prevent the single point of failure problem, the backend is a central server that is optional - but desirable because it provides numerous conveniences:
 * Potential for optional push notifications for various events
 * Price data provided by server for the currency the user has selected
 * The ability to add special handling for old and obsolete clients
 
 There should be a default, highly-available server for use in this wallet where users can just pick it up and start using it as fast as possible. The basic structure above is easily scalable by simply adding more workers behind a reverse proxy and load balancer.
 
-![Natrium Themes](resources/PIP-0031C/diagram2.png)
+![Balance Diagram](resources/PIP-0031C/diagram2.png)
 
 ## Rationale
 

二进制
PIP/resources/PIP-0031C/diagram1.png