All pages
Powered by GitBook
1 of 14

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

NEX-FS12 ETH-SONs Deposit/Withdraw Functionality

The functional requirement for Peerplays NEX application to explain the ETH deposit/withdraw functionality.

1. Purpose

The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the inclusion of ETH as one of the asset in the existing NEX deposit/withdraw functionality in the Dashboard page. The document explains the functionality from a business and user perspective.

2. Document Tracking

2.1 Parent Document

This document is a child document of NEX Dashboard page (NEX-FS01).

2.2 Categorization

This document relates to the following tags, App component

process

page

3. Scope

This FS will describe the requirements and basic design for the app’s ETH withdraw/deposit design and functions.

3.1 Components

Specific components and features covered in this FS include:

  1. Dashboard ETH Deposit function

  2. Dashboard ETH Withdraw function

4. Document Conventions

For the purpose of traceability, the following code(s) will be used in this functional specification:

Code
Meaning

The keyword shall indicates a requirement statement.

The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

5. Process Overview

The following process will be described here as follows,

  • ETH Deposit

  • ETH Withdraw

In this process overview, the example is considered as the authenticated user using the application and has an appropriate balance in wallet to perform the transactions.

5.1 ETH Deposit

  1. The user navigates to the Dashboard page's Deposit tab to begin the deposit function.

  2. The select asset option has a drop-down list to select the desired asset.

  3. The user selects ETH from the list of asset available for deposit.

5.2 ETH Withdraw

  1. The user navigates to the dashboard page’s Withdraw tab to begin the withdraw function.

  2. The select asset option has a drop-down list to select the desired asset.

  3. The user shall selects ETH asset from a list of assets available for withdraw.

6. Context

The existing dashboard page holds many of the most used functions of the app to facilitate ease of use and it can be used as the home page. This document include the functionality for ETH deposit and withdraw along with the existing assets in dashboard page.

7. Design Wire-frames

The wire-frame design explain the representation of deposit and withdraw of existing assets.

Deposit Asset:

Withdraw Asset:

The same design can be used to represent ETH deposit/withdraw into the dashboard.

The overall dashboard designs are available in the below location,

8. Requirements

The requirement specific to ETH deposit and withdraw are explained below,

The , , , are the modules in the Dashboard. Click on each topic to learn in details about its requirement.

8.1 ETH Deposit

If ETH asset is selected in the asset deposit function,

NEX-FS12-01: shall display the ETH icon in the deposit instructions.

NEX-FS12-02: shall display steps to deposit asset into wallet.

NEX-FS12-03: Shall display the button "Connect Metamask", which on-click directs to MetaMask wallet. From the wallet, ETH asset can be transferred to the User app's wallet. (Only After successful MetaMask connection)

8.2 MetaMask Connection

To perform the ETH deposit, Metamask connection is required.

NEX-FS12-04: shall provide a button named "Connect MetaMask" with arrow which directs to MetaMask wallet to establish connection.

NEX-FS12-05: shall provide an option to input credentials to login into MetaMask wallet.

NEX-FS12-06: shall display check mark in the button when MetaMask is connected and

NEX-FS12-07: shall gray out the button after connection establishment.

The Peerplays user account's son information will be updated with the new Ethereum account information

NEX-FS12-08: shall provide a link at the bottom of the card which helps to download MetaMask.

8.3 ETH Withdraw

If ETH asset is selected in the asset withdraw function,

NEX-FS12-09: shall display the ETH icon in the withdraw function with available asset for withdraw.

NEX-FS12-10: shall provide an option to input "withdraw address" to login into Peerplays account

NEX-FS12-11: shall provide an option to input son-account address in case of ETH asset selection.

NEX-FS12-12: shall provide the details about estimated Fees, Total transaction, confirmation time, etc., based on the amount of ETH asset chosen for withdraw.

NEX-FS12-13: shall provide a button to withdraw ETH after successful validation of account address.

9. Appendix A: Glossary

Functional Specifications

The page loads instruction for initiating a ETH deposit to the user's app account.
  • In this case, Metamask can be used as an external application to perform the ETH deposit.

  • User should login the Metamask wallet, from where the ETH asset should be transferred to the user app's wallet.

  • When the user returns to the app, message will be notified after the successful ETH deposit into the account

  • Other methods to deposit ETH into the wallet are described below,

  • The page loads the instruction for initiating a ETH withdraw from use app's account.
  • The user reviews the ETH balance in their wallet and enter the required amount of ETH to withdraw.

  • The user should enter a valid son-account address to which they wish to receive the ETH asset.

  • The app should check the account name and ensure its validity.

  • The user should review the withdraw information and click to confirm the withdraw.

  • The app processes and submit the withdraw request to son-account.

  • A notification message shall be displayed to indicate the successful ETH withdraw.

  • The app page will load to reflect the new available balance and any other changes after the withdraw.

  • The command line to withdraw ETH is explained below,

  • NEX-FS012-#

    NEX App Requirement - ETH Deposit/Withdraw Functions

    FS

    Functional Specification

    ETH

    Ethereum Asset

    MetaMask

    Third-party application used in the deposit of ETH asset to user application.

    https://xd.adobe.com/view/84e727ac-fe5c-4c6b-9dd2-d668cec13fc9-d1b4/
    https://xd.adobe.com/view/84e727ac-fe5c-4c6b-9dd2-d668cec13fc9-d1b4/screen/e0b637fc-73ee-4b45-80b4-03bace4df74f/
    https://xd.adobe.com/view/84e727ac-fe5c-4c6b-9dd2-d668cec13fc9-d1b4/
    Dashboard page layout
    Asset Deposit function
    Asset withdraw function
    Asset swap function
    curl http://10.11.12.202:8545 -X POST -H "Content-Type: application/json" --data '{"method":"eth_sendTransaction","params":[ { "from": "0x5c79a9f5767e3c1b926f963fa24e21d8a04289ae", "to": "0x572eA65762bFFf521C11Ce5334FfaaF4bDD4974e", "value": "0x1BC16D674EC80000" } ],"id":1,"jsonrpc":"2.0"}'
    ## The following command can be used to withdraw ETH to son-account
    transfer account01 son-account 2 ETH "" true
    > personal.unlockAccount("0x5c79a9f5767e3c1b926f963fa24e21d8a04289ae", "", 1200)
    > eth.sendTransaction({from: "0x5c79a9f5767e3c1b926f963fa24e21d8a04289ae",to: "0x572eA65762bFFf521C11Ce5334FfaaF4bDD4974e", value: "5000000000000000000"})

    NEX-FS01 Dashboard Page

    The Peerplays NEX application functional requirements specification for the dashboard page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the dashboard page from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    Page

    process

    3. Scope

    This FS will describe the requirements and basic design for the app’s dashboard page. The non-native assets currently available within Peerplays (BTC, HIVE, and HBD) will be covered in detail. Note that HIVE and HBD operate identically in the app and are interchangeable for the purposes of this FS.

    3.1. Components

    Specific components and features covered in this FS include:

    • dashboard page layout

    • dashboard asset deposit functions

    • dashboard asset withdraw functions

    • dashboard asset swap functions

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    Peerplays assets in the context of this FS are any on-chain asset. This includes native Peerplays assets like the PPY coin, Peerplays NFTs, and CATs. This also includes assets that have originated off-chain that have been transferred onto the Peerplays chain through the services of Peerplays SONs. These external (sidechain) assets include Peerplays versions of BTC, HIVE, or ETH and even Peerplays versions of NFTs living on other chains. The external assets are backed by their counterparts, locked in a Peerplays controlled account on their native chains.

    5. Process Overviews

    The processes which will be described here are as follows.

    • Asset Deposits

      • BTC

      • HIVE (or HBD)

    • Asset Withdrawals

    The following process overviews assume the example user is authenticated in the app and has an appropriate balance in their wallet for all assets involved.

    5.1. Asset Deposits

    5.1.1. Depositing BTC

    1. A visitor (non-logged in user) navigates to the dashboard page’s deposit tab.

    2. The app displays a screen which has multiple available coins from sidechains supported by Peerplays (BTC, HIVE and HBD) shown in a drop down. Selecting an asset populates rest of UI depending on the asset selected.

    3. The visitor invokes the "Login & Generate Bitcoin address" button. Since they are not logged in, this will prompt the visitor to input their Peerplays username and MASTER PASSWORD. (See Adobe XD pages: & )

    5.1.2. Depositing HIVE (or HBD)

    1. The user navigates to the dashboard page’s deposit tab.

    2. The app displays the asset deposit functions.

    3. The user selects the Hive (HIVE) asset from a list of assets available for deposit.

    4. The page loads instructions for initiating a HIVE deposit to the user’s app account.

    5.2. Asset Withdrawals

    5.2.1. Withdrawing BTC

    1. The user navigates to the dashboard page’s withdraw tab.

    2. The app displays the asset withdraw functions.

    3. The user selects the Bitcoin (BTC) asset from a list of assets available for withdraw.

    5.2.2. Withdrawing HIVE (or HBD)

    1. The user navigates to the dashboard page’s withdraw tab.

    2. The app displays the asset withdraw functions.

    3. the user selects the Hive (HIVE) asset from a list of assets available for withdraw.

    4. The page loads instructions for initiating a HIVE withdraw from the user’s app account. The page also contains a Hive blockchain account name field.

    5.3. Asset Swaps

    1. The user navigates to the dashboard page’s swap tab.

    2. The app displays the asset swap functions.

    3. The user selects an asset they wish to spend (BTC for example) to swap for another asset.

    4. The user selects an appropriate amount of BTC to swap.

    5.4. Viewing and Selecting Trading Pairs

    1. The user navigates to the dashboard page’s market tab.

    2. The app displays all available trading pairs supported by the app market.

    3. The user reviews the trading pair information and clicks a trading pair they wish to visit in the app market.

    4. The app loads the market page with the selected trading pair loaded.

    6. Context

    The dashboard page holds many of the most used functions of the app to facilitate ease of use. These functions are simplified to cover most user’s needs while removing as much distraction and complexity as possible. The dashboard page can be used as a homepage or a location within the top level navigation so users can quickly get their tasks done.

    7. Design Wire-frames

    Designs for the NEX app dashboard page are available here:

    8. Requirements

    Requirements specific to the items listed in this FS are as follows.

    8.1. Dashboard page layout

    The dashboard:

    NEX-FS01-1: shall provide access to the following functions for authenticated users:

    • asset deposits

    • asset withdrawals

    • asset swaps

    • market trading pair listings

    NEX-FS01-2: shall provide access to the following functions for unauthenticated users:

    • log in and deposit asset

    • log in and withdraw asset

    • log in and swap assets

    • market trading pair listings

    NEX-FS01-3: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    NEX-FS01-4: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    8.2. Dashboard asset deposit functions

    The dashboard, in the context of asset deposits:

    NEX-FS01-5: shall allow the selection of any available Peerplays asset for deposit.

    NEX-FS01-6: shall display asset icons, asset names (like “Bitcoin”), and asset symbols (like “BTC”) for each asset in the asset selection user control.

    NEX-FS01-7: shall display deposit instructions relevant to the selected asset.

    NEX-FS01-8: shall, when necessary, indicate to the user that the SONs network is not available for sidechain transactions.

    NEX-FS01-9: shall, where appropriate, display information required for depositing the selected asset. This may include, but is not limited to, the following:

    • account names

    • addresses

    • keys

    • memos

    NEX-FS01-10: shall, where appropriate, facilitate copying or otherwise obtaining the information required for depositing the selected asset.

    8.2.1. BTC Deposits

    While the BTC asset is selected in the asset deposit function:

    NEX-FS01-11: shall display the Bitcoin icon in the deposit instructions.

    NEX-FS01-12: shall display the users Bitcoin deposit address.

    NEX-FS01-13: shall allow the user to copy their Bitcoin deposit address.

    8.2.2. HIVE (HBD) Deposits

    While the HIVE (or HBD) asset is selected in the asset deposit function:

    NEX-FS01-14: shall display the Hive icon in the deposit instructions.

    NEX-FS01-15: shall display deposit instructions with the following text, or similar:

    “To deposit (HIVE or HBD here) to (user account name here) please send your funds to son-account on the Hive blockchain with the memo (user account name here).”

    8.3. Dashboard asset withdrawal functions

    The dashboard, in the context of asset withdrawals:

    NEX-FS01-16: shall allow the selection of any available Peerplays asset for withdraw.

    NEX-FS01-17: shall display asset icons, asset names (like “Bitcoin”), and asset symbols (like “BTC”) for each asset in the asset selection user control.

    NEX-FS01-18: shall display the user’s current balance of the selected asset available for withdraw.

    NEX-FS01-19: shall display the fees (amount and asset) required to complete a withdraw.

    NEX-FS01-20: shall allow the selection of an amount of asset to withdraw.

    NEX-FS01-21: shall display withdraw instructions relevant to the selected asset.

    NEX-FS01-22: shall only allow positive numbers with decimal places based on the selected asset within the withdrawal amount field. For example, Bitcoin supports 8 decimal places while Hive only supports 3 decimal places.

    NEX-FS01-23: shall perform field input validation which validates the following rules:

    • Input is not blank

    • Input is a number

    • Input amount is greater than 0

    • Input amount is greater than the minimum withdrawal

    NEX-FS01-24: shall clearly indicate to the user when field validation fails and why.

    NEX-FS01-25: shall, where appropriate, provide user controls required to complete a withdraw of the selected asset. These user controls should perform field input validation as necessary. For example, required fields should not be blank, account names should be entered in their proper format, inputs should match the field types, etc.

    NEX-FS01-26: shall, when necessary, indicate to the user that the SONs network is not available for sidechain transactions.

    NEX-FS01-27: shall provide a user control (button) to initiate the withdraw.

    NEX-FS01-28: shall, once initiated by the user, summarize the withdraw and ask the user for their confirmation to proceed.

    NEX-FS01-29: shall, once initiated or confirmed by the user, indicate the withdraw is in process. (loading spinner)

    NEX-FS01-30: shall, once confirmed by the user, submit the withdraw to the Peerplays SONs network.

    NEX-FS01-31: shall indicate to the user if the withdraw was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS01-32: shall, if the withdraw process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    8.3.1. BTC Withdrawals

    While the BTC asset is selected in the asset withdraw function:

    NEX-FS01-33: shall display the user’s withdraw Bitcoin address, if available.

    NEX-FS01-34: shall allow the user to generate a new withdraw Bitcoin address.

    NEX-FS01-35: shall not display the user’s withdraw Bitcoin public key. The app may still make use of the public key to facilitate the process but does not need to be shown to the user.

    NEX-FS01-36: shall lookup or otherwise generate the Bitcoin public key for any newly generated withdraw Bitcoin address entered by the user. Once again, this is not displayed to the user but used to facilitate the withdraw process.

    NEX-FS01-37: shall allow the user to download their public and private keys for a newly generated Bitcoin address as a text file named Bitcoin_addresses_<PeerplaysUserName>.txt.

    NEX-FS01-38: shall display appropriate warning messages indicating to the user that their newly generated Bitcoin address private key will not be saved by the system and instructs them to safely save the secret.

    8.3.2. HIVE (HBD) Withdrawals

    While the HIVE (or HBD) asset is selected in the asset withdraw function:

    NEX-FS01-39: shall provide a user control to allow a user to input their Hive blockchain account name.

    NEX-FS01-40: shall perform field validation to ensure proper input format in the Hive blockchain account name field.

    8.4. Dashboard asset swap functions

    The dashboard, in the context of asset swaps:

    NEX-FS01-41: shall display two asset selection fields: one to swap from and one to swap to.

    NEX-FS01-42: shall allow the selection of any available asset and any other available asset.

    NEX-FS01-43: shall display asset icons, asset names (like “Bitcoin”), and asset symbols (like “BTC”) for each asset in the asset selection user controls.

    NEX-FS01-44: shall display the user’s current balance of the selected asset available for swap.

    NEX-FS01-45: shall display the fees (amount and asset) required to complete a swap.

    NEX-FS01-46: shall allow the selection of an amount of asset to swap.

    NEX-FS01-47: shall, after the user updates the amount of asset to swap, query open orders in the market order book to:

    • validate that there is liquidity for the trading pair

    • get the current exchange rate for the trading pair

    NEX-FS01-48: shall indicate to the user if not enough liquidity exists to fulfill the swap and to try again later.

    NEX-FS01-49: shall, while the user updates the amount of asset to swap, change the other amount field to match the current exchange rate. In other words a user can chose either how much to spend of an asset they have, or how much they would like to receive of the asset they are swapping for. Either way, swaps are meant to occur at the current market exchange rate like a fill-or-kill market order.

    NEX-FS01-50: shall display the value of the amounts in the asset selection fields in the user’s preferred currency (an app setting).

    NEX-FS01-51: shall only allow positive numbers with decimal places based on the selected asset within the swap amount field. For example, Bitcoin supports 8 decimal places while Hive only supports 3 decimal places.

    NEX-FS01-52: shall perform field input validation which validates the following rules:

    • Input is not blank

    • Input is a number

    • Input amount is greater than 0

    • Input amount is greater than the minimum swap

    NEX-FS01-53: shall clearly indicate to the user when field validation fails and why.

    NEX-FS01-54: shall, when necessary, indicate to the user that the Peerplays network is not available for swap transactions.

    NEX-FS01-55: shall provide a user control (button) to initiate the swap.

    NEX-FS01-56: shall, once initiated by the user, summarize the swap and ask the user for their confirmation to proceed.

    NEX-FS01-57: shall, once initiated or confirmed by the user, indicate the swap is in process. (loading spinner)

    NEX-FS01-58: shall, once confirmed by the user, submit the swap as a fill-or-kill market order to the Peerplays network.

    NEX-FS01-59: shall indicate to the user if the swap was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS01-60: shall, if the swap process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    8.5. Dashboard market listings function

    The dashboard, in the context of market listings:

    NEX-FS01-61: shall display a list of every trading pair available within the app.

    NEX-FS01-62: shall display the following information for each trading pair, if available:

    • both asset symbols (for example, BTC/PPY)

    • the current exchange rate

    • the 24 hour change in exchange rate (+x.xx% or -x.xx%)

    NEX-FS01-63: shall display all information in real time (or as close to real time as feasible).

    NEX-FS01-64: shall clearly indicate to the user if the 24 hour change in exchange rate is positive or negative, per trading pair, through the use of color, iconography, or symbols.

    NEX-FS01-65: shall clearly indicate which trading pair is currently being hovered over by the user.

    NEX-FS01-66: shall allow a user to click on a trading pair to load that trading pair in the market page.

    9. Appendix A: Glossary

    Term
    Meaning

    NEX-FS04 Notifications

    The Peerplays NEX application functional requirements specification for the notification functions.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the notification functions from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    Page Fragment

    3. Scope

    This FS will describe the requirements and basic design for the app’s notification functions.

    3.1. Components

    Specific components and features covered in this FS include:

    • Notifications in pages

    • Notifications in menus

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Context

    Notifications provide users with timely and important details about the status of their account. These brief messages are easy for users to digest so they can absorb the information and get back to their tasks quickly.

    6. Design Wire-frames

    Designs for the NEX app notification functions are available here:

    Specific to menus and navigation, see screens:

    • for the Notifications in pages

    • for the Notifications in menus

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. Notifications

    NEX-FS04-1: shall be displayed as “unread” when new activities occur, as close to real-time as feasible.

    7.2. Notifications in Pages

    The viewing all activity page:

    NEX-FS04-2: shall display a table of all activity related to the user’s account.

    The all activity table:

    NEX-FS04-3: shall display a reasonable number of records for the given display (desktop, mobile, etc.). Additional records shall be accessible via table pagination controls.

    NEX-FS04-4: shall display the following columns of data per record:

    • Data and time (local)

    • Activity type

    • Detailed description of the activity

    • Transaction ID

    NEX-FS04-5: shall display date and time information in the user’s local time and format.

    NEX-FS04-6: shall display activity type as the operation relevant to the activity record. For example: Transfer, Account Creation, etc.

    NEX-FS04-7: shall display a detailed description that explains what happened in the given activity. For example: “hiltos1 sent 1.000 BTC to m0rris0n” where “hiltos1” and “m0rris0n” are user accounts.

    NEX-FS04-8: shall, in the detailed descriptions, provide links to any included user accounts.

    NEX-FS04-9: shall sort the table in descending order based on date and time (newest first) by default.

    NEX-FS04-10: shall allow users to sort the date and time, activity type, transaction ID, and Fee columns in ascending or descending order.

    NEX-FS04-11: shall allow users to filter the date and time, activity type, transaction ID, and Fee columns as follows:

    • Date and Time (Date and Time range)

    • Activity Type (multi-select combo box of all activity types)

    • Transaction ID (ID number range)

    • Fee (Fee range)

    NEX-FS04-12: shall allow users to perform text search of keywords like account names, assets, amounts, and transaction IDs.

    7.3. Notifications in Menus

    The notification bell menu:

    NEX-FS04-13: shall display a list of all activity related to the user’s account, limited to the last 30 days of activity.

    NEX-FS04-14: shall display a reasonable number of records for the given display (desktop, mobile, etc.). Additional records shall be accessible via table pagination controls or scrolling.

    NEX-FS04-15: shall divide the list items by date.

    NEX-FS04-16: shall display the current day’s activities in a “Today” group.

    NEX-FS04-17: shall display the previous day’s activities in a “Yesterday” group.

    NEX-FS04-18: shall display older activities in groups labeled by their date. For example: “August 12, 2021”

    NEX-FS04-19: shall indicate “read” vs. “unread” notifications with icons, colors, or other style elements.

    NEX-FS04-20: shall display a detailed description that explains what happened in the given activity. For example: “You sent 1.000 BTC to m0rris0n” where “m0rris0n” is a user account.

    NEX-FS04-21: shall, in the detailed descriptions, provide links to any included user accounts.

    NEX-FS04-22: shall sort the list in descending order by date and time (newest first).

    8. Appendix A: Glossary

    Term
    Meaning

    NEX-FS11 WhaleVault Integration

    The Peerplays NEX application functional requirements specification for the WhaleVault integration.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the WhaleVault integration from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    Integration

    3. Scope

    This FS will describe the requirements and basic design for the app’s WhaleVault integration.

    3.1. Components

    Specific components and features covered in this FS include:

    • login page layout

    • WhaleVault integration

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Context

    WhaleVault is a browser extension which allows for websites to transact with Graphene-based blockchains (such as Peerplays) without exposing a users password or private keys. Integrating WhaleVault into the app will allow users to have a streamlined login experience as well as the confidence in knowing their credentials are safe.

    6. Design Wire-frames

    The wire-frames listed below are meant to represent the app’s WhaleVault integration in various states. These are provided to assist in understanding of what features may look like or their potential use. Final designs may be vastly different from these images.

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. Login Page Layout

    NOTE: The following requirements are in addition to the requirements listed in NEX-FS02 (Login and Account Creation).

    The login page layout:

    NEX-FS11-1: shall, if the WhaleVault extension is installed in the user’s browser, provide user input controls which allow the user to choose to login with WhaleVault.

    NEX-FS11-2: shall, if the WhaleVault extension is not installed in the user’s browser or not selected by the user, recommend that the user install or use WhaleVault for logging in.

    NEX-FS11-3: shall, if WhaleVault is selected by the user, prompt the user for their username.

    NEX-FS11-4: shall, while logging in, perform the following input control validation:

    • Check if WhaleVault is installed and available

    • Check if the username exists on the blockchain

    • Check if the username exists in WhaleVault

    7.2. WhaleVault Integration

    NEX-FS11-5: shall check if the WhaleVault extension is installed and available in the user’s browser.

    NEX-FS11-6: shall, while logging in, use the WhaleVault workflows to provide authentication service for the app.

    NEX-FS11-7: shall, if logged in through WhaleVault, use the WhaleVault workflows to provide reauthentication for secured transactional operations throughout the app. This includes any operations which require the active or owner key like placing buy / sell orders, asset transfers, and account updates.

    8. Appendix A: Glossary

    Term
    Meaning

    dashboard market listings function

  • BTC

  • HIVE (or HBD)

  • Asset Swaps

  • Viewing and Selecting Trading Pairs

  • If the visitor already had a Bitcoin deposit address generated, it is shown with an option to copy the address. The page also displays help text or a link to the help text describing the steps to deposit BTC.

  • If the visitor does not have a Peerplays account, they can navigate to the create account page via a link. (Adobe XD page 16)

  • At this point the visitor is logged in and the client side Bitcoin library generates a Bitcoin deposit address & private key. The page displays a link to download the private key as a text file named Bitcoin_addresses_<PeerplaysUserName>.txt which contains the private key of the newly generated Bitcoin addresses (deposit and withdrawal). (Adobe XD screen 3) . The private key will be available only once and is not stored by the NEX software or the blockchain and thus appropriate warning messages are shown to the user instructing them to safely save the secret.

  • The user is additionally given an option to copy the Bitcoin deposit address. (Adobe XD screen 3)

  • Once a user has generated a Bitcoin deposit address, the same address will be shown in the subsequent logins and the options to re-generate will not be presented.

  • External to the app, the user sends an amount of BTC to the deposit Bitcoin address.

  • The user returns to the app and is eventually notified in the app when their account receives the BTC.

  • External to the app, the user sends an amount of HIVE to the Hive son-account along with a memo including their account name, as per the instructions in the app.

  • The user returns to the app and is eventually notified in the app when their account receives the HIVE.

  • If the user has not already created a Bitcoin deposit address, the app displays a message to the user explaining they must first create a deposit address. A link to the deposit tab is displayed to the user. (See section 5.1.1. above)
  • If the user has already created a Bitcoin deposit address, the app displays the BTC asset withdraw form.

  • The page loads instructions for initiating a BTC withdraw from the user’s app account. The page also contains a Bitcoin withdraw address field. This field contains a generated withdraw address based on the deposit address generated previously.

    1. If the user wishes, they can generate another Bitcoin withdraw address.

  • The user reviews their wallet BTC balance and enters an appropriate amount of BTC they wish to withdraw.

  • The app looks up the public key for the Bitcoin withdraw account.

  • The user clicks a button to submit the withdrawal.

  • The app displays a modal to the user asking them to confirm their withdrawal.

  • The user reviews the withdrawal information and clicks to confirm the withdrawal.

  • The app processes and submits the withdrawal to the SON network.

  • The app indicates to the user that the withdrawal has been successfully initiated.

  • The content displayed in the app is updated to show new available balances, etc.

  • The user reviews their wallet HIVE balance and enters an appropriate amount of HIVE they wish to withdraw.

  • The user enters a valid Hive blockchain account name with which they wish to receive their withdrawal.

  • The app looks up the Hive blockchain account name to ensure its validity.

  • The user clicks a button to submit the withdrawal.

  • The app displays a modal to the user asking them to confirm their withdrawal.

  • The user reviews the withdrawal information and clicks to confirm the withdrawal.

  • The app processes and submits the withdrawal to the SON network.

  • The app indicates to the user that the withdrawal has been successfully initiated.

  • The content displayed in the app is updated to show new available balances, etc.

  • The user selects an asset they wish to receive (PPY for example) for their BTC.

  • The app calculates and displays the amount of PPY they’re likely to receive for this swap.

  • The app displays the exchange rate, fee, and transaction type for this swap.

  • The user reviews the information and clicks a button to submit the swap.

  • The app displays a modal to the user asking them to confirm their swap.

  • The user reviews the swap information and clicks to confirm the swap.

  • The app processes and submits the market order to the Peerplays network.

  • The app indicates to the user that the swap has been successfully initiated.

  • The content displayed in the app is updated to show new available balances, etc.

  • When the market order resolves, the user is notified in the app of the outcome of their swap.

  • The user continues in the market page.

    link to create an account

    similar techniques for revealing content

    files

  • URIs

  • QR codes

  • Balance in wallet covers withdrawal amount plus fees

    Balance in wallet covers swap amount plus fees

    NEX-FS01-#

    NEX App Requirement - Dashboard Page

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    1
    2
    DEX Hifi - All tabs with Market

    Fee (in PPY)

  • Transaction memo

  • NEX-FS04-#

    NEX App Requirement - Notifications

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    DEX Hifi - All tabs with Market
    Adobe XD screen 34
    Adobe XD screens 35 - 37

    NEX-FS11-#

    NEX App Requirement - WhaleVault Integration

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    Figure 1. Login Page with WhaleVault
    Figure 2. WhaleVault selected on login page.

    NEX-FS02 Login and Account Creation

    The Peerplays NEX application functional requirements specification for the login and account creation functions.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the login and account creation functions from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    process

    Page Fragment

    3. Scope

    This FS will describe the requirements and basic design for the app’s login and account creation functions.

    3.1. Components

    Specific components and features covered in this FS include:

    • account creation

    • login

    • logout

    • reauthentication

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Process Overviews

    The processes which will be described here are as follows.

    • account creation

    • login

    • logout

    • reauthentication

    5.1. Account Creation

    1. The (unauthenticated) user navigates to the account creation page. This may have been from a variety of other pages which require the user to be logged in.

    2. The app displays the account creation form. ()

    3. The user enters their desired username. Assuming the username is available for this example, an auto-generated master password will be created and displayed to the user. ()

    5.2. Login

    1. The (unauthenticated) user navigates to the login page. This may have been from a variety of other pages which require the user to be logged in. ()

    2. The app displays a form to the user which requires the user’s username and master password. ( or )

    3. The user enters their username and master password and clicks the “Log in” button.

    5.3. Logout

    1. The user clicks or otherwise activates the logout function. This may have been from a menu in the app header or an option on another page.

    2. The app deletes the user session data from the local browser storage.

    3. The app loads generic data for unauthenticated views of app pages.

    5.4. Reauthentication

    1. Logged in (authenticated) users will be presented with reauthentication modals when attempting to perform transactional operations on the chain. This includes actions like asset transfers, voting, and placing orders. The user must enter their master password to continue with the transaction.

    2. The app validates the username from the user session data along with the entered master password. If successful, the transaction will continue.

    6. Context

    The foundation of app security is in providing user accounts. This allows for a personalized experience and gives users a space to manage their data. User accounts also allow the app and the blockchain to operate with transactional operations so the system can fulfill its purposes. The functions of account creation and login/logout are fundamental to the system.

    7. Design Wire-frames

    Designs for the NEX app login and account creation functions are available here:

    8. Requirements

    Requirements specific to the items listed in this FS are as follows.

    8.1. Account Creation

    The account creation page:

    NEX-FS02-1: shall provide user input controls for the following:

    • username

    • master password (auto-generated, read-only)

    • reenter master password (for confirmation)

    • Link to download master password file

    NEX-FS02-2: shall perform field input validation which validates the following rules:

    • (username) Input is not blank

    • (username) Username is not taken

    • (username) Input is lowercase and begins with a letter

    • (username) Input either has no vowels, or has at least one hyphen (-), period (.), or number

    Note: all of the above rules (except if the username is taken) are contained in this regex string:

    • (master password confirmation) Input must match the auto-generated master password.

    • (first disclaimer) Check box must be checked

    • (second disclaimer) Check box must be checked

    NEX-FS02-3: when the download master password file link is clicked, shall initiate a download to the user’s local browser of a password file named Peerplays_account_recovery_<PeerplaysUsername>.txt which contains the auto-generated master password.

    NEX-FS02-4: shall not allow submitting the form until form validation is successful.

    NEX-FS02-5: shall, once the validated form is submitted, use the info supplied by the user to create a new account via a Peerplays faucet, store the user session data in the local browser storage, and load either the page the user initially navigated from or the dashboard page.

    8.2. Login

    NEX-FS02-6: shall provide user input controls for the following:

    • username

    • master password

    • button to submit form for login

    • link to account creation page

    NEX-FS02-7: shall perform field input validation which validates the following rules:

    • (username) Input is not blank

    • (master password) Input is not blank

    NEX-FS02-8: shall not allow submitting the form until form validation is successful.

    NEX-FS02-9: shall, once the validated form is submitted, use the info supplied by the user to validate the user credentials, store the user session data in the local browser storage, and load either the page the user initially navigated from or the dashboard page.

    8.3. Logout

    NEX-FS02-10: shall, upon user activation of the logout function, delete the user session data from the local browser storage and load the login page.

    8.4. Reauthentication

    NEX-FS02-11: shall, whenever the user attempts to perform an action that requires a transactional operation on the blockchain, challenge the user by presenting them a form requesting their master password.

    NEX-FS02-12: shall provide user input controls for the following:

    • master password

    • button to submit form for reauthentication challenge

    NEX-FS02-13: shall perform field input validation which validates the following rules:

    • (master password) Input is not blank

    NEX-FS02-14: shall not allow submitting the form until form validation is successful.

    NEX-FS02-15: shall, once the validated form is submitted, use the info supplied by the user to validate the user credentials.

    NEX-FS02-16: shall, upon successful validation of the reauthentication challenge, allow the transactional operations to proceed using the private keys derived from the user’s master password provided in the form.

    9. Appendix A: Glossary

    Term
    Meaning

    NEX-FS03 Menus and Nav

    The Peerplays NEX application functional requirements specification for the menus and navigation functions.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the menus and navigation functions from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    Page Fragment

    3. Scope

    This FS will describe the requirements and basic design for the app’s menus and navigation functions.

    3.1. Components

    Specific components and features covered in this FS include:

    • App Header

      • Notification Bell Menu

      • Profile Icon Menu

      • Kebab Nav Menu

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Context

    The app’s navigation menus should provide a logical flow. They allow users to discover all the possible functions within the app and provide an easy means to access them. Navigation should also be made available within the app pages as a convenience to users. For example, links to the login page should be presented when a user tries to access a function that requires authentication. After the authentication, the user should be returned to what they were doing.

    6. Design Wire-frames

    Designs for the NEX app menus and navigation functions are available here:

    Specific to menus and navigation, see screens:

    • for the Kebab Nav Menu

    • for the Notification Bell Menu

    • for the Profile Icon Menu

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. App Header

    The app header:

    NEX-FS03-1: shall display the Peerplays logo as per design guidelines.

    NEX-FS03-2: shall, for unauthenticated users, provide the kebab nav menu with the following navigation links:

    • Login

    • Create Account

    • Dashboard

    • Market

    NEX-FS03-3: shall, for authenticated users, provide the notification bell menu with the following navigation links and items:

    • Show only unread (toggle)

    • Recent notification items (See NEX-FS04 Notifications for details)

    • See all account activity (link)

    NEX-FS03-4: shall, for authenticated users, provide the profile icon menu with the following navigation links and items:

    • Username initial as an avatar icon

    • Welcome message

    • Username

    • Graphical status display (See NEX-FS11 API Functions for details)

    NEX-FS03-5: shall, for authenticated users, provide the kebab nav menu with the following navigation links and items:

    • Dashboard

    • Market

    • Blocks

    • Wallet

    NEX-FS03-6: shall display menu contents while hovering on the menu icon.

    NEX-FS03-7: shall indicate to the user which menu item is hovered and/or focused using typical design techniques such as subtle animations, highlighting content, applying drop shadows or other styling.

    NEX-FS03-8: shall use tab index and other universal design features to enable the use of keyboard navigation of the app menus and page fields. (See NEX-RS Requirements Specification about the use of Universal Design Principles in the app)

    NEX-FS03-9: navigational menu items when activated by the user, shall load the related page within the app.

    NEX-FS03-10: shall, when the Peerplays logo is clicked or otherwise activated by the user, load the app’s root homepage.

    7.2. Notification Bell Menu

    NEX-FS03-11: shall display a bell icon as the menu icon.

    NEX-FS03-12: shall, if new notifications exist, display a notification bubble or badge on the bell icon.

    NEX-FS03-13: shall display notifications as menu items as per NEX-FS04 Notifications specifies.

    NEX-FS03-14: shall display only new notifications to the user if the “Show only unread” toggle is enabled. New notifications are notifications which have not yet been displayed in the menu to the user before.

    NEX-FS03-15: shall display relevant icons for notification menu items.

    7.3. Profile Icon Menu

    NEX-FS03-16: shall, for unauthenticated users, display a generic avatar icon as the menu icon.

    NEX-FS03-17: shall, for authenticated users, display the user’s username initial as an avatar icon as the menu icon.

    NEX-FS03-18: shall display relevant icons for the settings (gear) and logout (power symbol) menu items.

    7.4. Kebab Nav Menu

    NEX-FS03-19: shall display a kebab (three vertical dots) icon as the menu icon.

    NEX-FS03-20: shall display relevant icons for the following menu items:

    • Dashboard (grid or mosaic)

    • Market (chart)

    • Wallet (wallet, currency, coins, etc.)

    • Settings (gear)

    7.5. Page Navigation

    NEX-FS03-21: shall, when an app feature or function requires a user to log in, temporarily redirect the user to the login page.

    NEX-FS03-22: When finished with logging in, the app shall return the user to the page that initiated the login redirect.

    NEX-FS03-23: Furthermore, if the user must create an account from this redirect, the app shall return the user to the page which initiated the redirect after the user creates an account.

    NEX-FS03-24: shall load the login page when the user logs out.

    8. Appendix A: Glossary

    Term
    Meaning

    NEX-FS06 Profile Page

    The Peerplays NEX application functional requirements specification for the profile page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the profile page from a business and user perspective.

    Page Navigation

    Blocks

    See all account activity (link)

  • Settings

  • Logout

  • Settings

  • Advanced Settings (toggle)

  • Voting (visible with Advanced Settings)

  • Logout

  • Advanced settings (toggle switch)

  • Blocks (stacked shapes, chain links, boxes, etc.)

  • Voting (ballot box)

  • Logout (power symbol)

  • NEX-FS03-#

    NEX App Requirement - Menus and Nav

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    DEX Hifi - All tabs with Market
    Adobe XD screens 22 and 23
    Adobe XD screens 35 - 37
    Adobe XD screens 38 - 41
    The user copies the master password into the confirmation field.
  • The user Downloads a generated file which contains the user’s master password and username.

  • The user clicks the “I understand Peerplays cannot recover my lost password” and “I have securely saved my password” check boxes.

  • The user clicks the “Create Account” button.

  • The app uses the info supplied by the user to create a new account via a Peerplays faucet.

  • The app stores the user session data in the local browser storage.

  • The app loads user specific data based on the local browser storage of user session data.

  • The app validates the username and master password on the blockchain and, if successful, stores the user session data in the local browser storage.
  • The app loads user specific data based on the local browser storage of user session data.

  • check box for “I understand Peerplays cannot recover my lost password” disclaimer

  • check box for “I have securely saved my password” disclaimer

  • button to submit form for account creation

  • link to login page

  • (username) Input ends with a letter or number

  • (username) Input only contains lowercase letters, hyphens, periods, and numbers

  • (username) Input does not have adjacent hyphens (--) or periods (..)

  • (username) Input is between 3 and 63 characters long

  • NEX-FS02-#

    NEX App Requirement - Login and Account Creation

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    See Adobe XD screen 16
    See Adobe XD screen 17
    Adobe XD screen 1
    Adobe XD screen 2
    Adobe XD screen 18
    DEX Hifi - All tabs with Market
    /^[a-z](?!.*([-.])\\1)((?=.*(-))|(?=.*([0-9])))[a-z0-9-.]{2,62}(?<![-.])$/g
    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    page

    3. Scope

    This FS will describe the requirements and basic design for the app’s profile page.

    3.1. Components

    Specific components and features covered in this FS include:

    • profile page layout

    • orders list

    • activity list

    • notifications list

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    NEX-FS06-#

    NEX App Requirement - Profile Page

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    In a trading pair like BTC/PPY the first asset (BTC) is known as the base asset. The second asset (PPY) is known as the quote asset. The terms base and quote will be used throughout this FS.

    5. Context

    The profile page of the app acts like a user’s personal dashboard. It should be used to display the user’s open orders, their order history, all account activity, and as the place to view and manage their notifications. The profile page also provides a quick navigational menu used to reach all of the user’s more personal pages such as their wallet, app settings, and voting page.

    6. Design Wire-frames

    The wire-frames listed below are meant to represent the app’s profile page in various states. These are provided to assist in understanding of what features may look like or their potential use. Final designs may be vastly different from these images.

    Figure 1. Open and historical orders on the profile page.

    Figure 2. All user activity listed on the profile page.

    Figure 3. Notifications listed on the profile page.

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. Profile Page Layout

    The profile page layout:

    NEX-FS06-1: shall be available for authenticated users within the application menu.

    NEX-FS06-2: shall provide the user with navigation to the following pages:

    • the app dashboard

    • the market page

    • the user profile page

    • the user wallet

    • the app settings

    • the blockchain blocks page (if advanced mode is active)

    • the voting (GPOS) page (if advanced mode is active)

    NEX-FS06-3: shall provide menus for displaying the following components:

    • user’s open orders

    • user’s order history

    • user’s activity list

    • user’s notifications list

    NEX-FS06-4: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS06-5: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS06-6: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS06-7: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS06-8: shall provide the user with help and/or hint text to explain available options and input fields.

    NEX-FS06-9: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    • similar techniques for revealing content

    NEX-FS06-10: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    NEX-FS06-11: displayed lists shall provide pagination controls for large record sets requiring multiple pages.

    NEX-FS06-12: displayed lists shall display information about their records in a tabular format.

    NEX-FS06-13: displayed lists shall display a header row with column names.

    NEX-FS06-14: displayed lists shall provide controls in the header to sort columns based on their values, if appropriate.

    NEX-FS06-15: displayed lists shall display columns of a width appropriate for their values.

    NEX-FS06-16: displayed lists shall highlight row which the user is hovering on.

    NEX-FS06-17: displayed lists shall highlight row which the user has clicked on (focused).

    7.2. Orders List

    7.2.1. Open Orders

    The profile page, in the context of the open orders list:

    NEX-FS06-18: shall include all of the user's currently open orders with real-time data updates.

    NEX-FS06-19: shall include the following data fields:

    • the date and time each order was opened.

    • the market pair

    • the order type (limit, stop-limit, etc.)

    • if the order is a buy or sell ("side")

    • the order price (quote asset)

    • the total order quantity (base asset)

    • the filled order quantity value (base asset) and percentage of the order

    • the total price (quote asset)

    • the incurred fees

    • the order status (open, partially filled, pending if stop-limit stop price hasn't been met)

    • the expiry time (if applicable)

    • may display a separate list of filled quantities of a partially filled order.

    NEX-FS06-20: shall allow the user to sort the list by its data fields.

    NEX-FS06-21: shall allow the user to filter the list by its data fields.

    NEX-FS06-22: shall allow the user to cancel any open order, even if partially filled.

    • user control for this may be a button or context menu item.

    NEX-FS06-23: shall allow the user to open and close the list (expandable menu).

    7.2.2. Order History

    The profile page, in the context of the order history list:

    NEX-FS06-24: shall include all of the user's completed trade activities with real-time data updates.

    NEX-FS06-25: shall include the following data fields:

    • the date and time each order was opened.

    • the date and time each trade was completed (filled, partially filled, canceled).

    • the market pair

    • the order type (market, limit, stop-limit, etc.)

    • if the order was a buy or sell ("side")

    • the order price (quote asset)

    • the filled order quantity (base asset)

    • the total price (quote asset)

    • the incurred fees

    • the order status (partially filled, filled, canceled by user, canceled by system, expired)

    • may display a separate list of filled quantities of a partially filled order.

    NEX-FS06-26: shall allow the user to sort the list by its data fields.

    NEX-FS06-27: shall allow the user to filter the list by its data fields.

    NEX-FS06-28: shall allow the user to open and close the list (expandable menu).

    NEX-FS06-29: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.3. Activity List

    The profile page, in the context of the activity list:

    NEX-FS06-30: shall include, but is not limited to, the following fields related to each record:

    • date and time of activity

    • activity type (tag)

    • detailed activity description with relevant links (usernames)

    • transaction ID

    • fee

    • transaction memo

    NEX-FS06-31: shall allow the user to sort the list by its data fields.

    NEX-FS06-32: shall allow the user to filter the list by its data fields.

    NEX-FS06-33: shall allow users to perform text search of keywords like account names, assets, amounts, and transaction IDs.

    NEX-FS06-34: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.4. Notifications List

    These requirements are in addition to those found in NEX-FS04 Notifications.

    The profile page, in the context of the notifications list:

    NEX-FS06-35: shall display a status field which represents if the notification is “Read” or “Unread”.

    NEX-FS06-36: shall allow the user to mark a notification as read or unread.

    NEX-FS06-37: shall display a notification bubble in the navigation tab indicating how many unread notifications exist, except when disabled in the app settings.

    8. Appendix A: Glossary

    Term
    Meaning

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    NEX-FS08 App Settings

    The Peerplays NEX application functional requirements specification for the app settings page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the app settings page from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    page

    3. Scope

    This FS will describe the requirements and basic design for the app’s app settings page.

    3.1. Components

    Specific components and features covered in this FS include:

    • app settings page layout

    • general settings

    • key management settings

    • membership settings

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Context

    The app settings provide a user the ability to adjust the design and function of the app. Here they’ll be able to turn notifications off and on, change the preferred currency display, choose their language, and even pick between light and dark modes. The app settings also allow users to manage their keys and buy a lifetime membership.

    6. Design Wire-frames

    The wire-frames listed below are meant to represent the app’s app settings page in various states. These are provided to assist in understanding of what features may look like or their potential use. Final designs may be vastly different from these images.

    Figure 1. general settings

    Figure 2. key management settings

    Figure 3. membership settings

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. App Settings Page Layout

    The app settings page layout:

    NEX-FS08-1: shall be available for authenticated users within the application menu.

    NEX-FS08-2: shall provide the user with navigation to the following pages:

    • the app dashboard

    • the market page

    • the user profile page

    • the user wallet

    NEX-FS08-3: shall provide menus for displaying the following components:

    • general settings

    • key management settings

    • membership settings

    NEX-FS08-4: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS08-5: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS08-6: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS08-7: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS08-8: shall provide the user with help and/or hint text to explain available options and input fields.

    NEX-FS08-9: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    NEX-FS08-10: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    7.2. General Settings

    NEX-FS08-11: shall allow the user to set the following options:

    • language

    • currency

    • UI Design

    • allow transfers to account (yes / no)

    NEX-FS08-12: shall allow the user to select among the following languages, including but not limited to: (single select)

    • Chinese

    • English (UK)

    • English (US)

    • French

    NEX-FS08-13: shall allow the user to select their preferred fiat currency for displaying certain values in the UI among the following options, including but not limited to: (single select)

    • CAD ($) - Canadian Dollar

    • CNY (¥) - Chinese Yuan

    • EUR (€) - Eurozone Euro

    • INR (₹) - Indian Rupee

    NEX-FS08-14: shall allow the user to select among the following UI designs, including but not limited to: (single select)

    • light mode

    • dark mode

    NEX-FS08-15: shall allow the user to enable or disable notifications for the following specific events, including but not limited to: (multi-select)

    • funds sent from account

    • funds received to account

    • account updated

    • asset swap started

    NEX-FS08-16: shall allow the user to lock their wallet after one of the following time intervals, including but not limited to: (single select)

    • 10 minutes

    • 30 minutes

    • 1 hour

    • 8 hours

    NEX-FS08-17: shall display a notice to the user when they have changed but not yet saved their general settings.

    NEX-FS08-18: shall remove the unsaved changes notice when the user successfully saves their general settings.

    NEX-FS08-19: shall allow the user to save their general settings with a user input control button.

    NEX-FS08-20: shall display feedback to the user when they have successfully saved their general settings.

    NEX-FS08-21: shall, upon saving the user’s general settings, make all the necessary changes to the UI and app functions to accommodate the user’s new settings (settings go into effect).

    NEX-FS08-22: shall display the standard Peerplays faucet URL as a reference for the user’s convenience.

    7.3. Key Management Settings

    NEX-FS08-23: shall provide a password input field and the following options for generating a new public/private key pair: (multi-select)

    • Owner keys

    • Active keys

    • Memo keys

    NEX-FS08-24: shall allow the user to initiate the key generation with a user input control button.

    NEX-FS08-25: shall, when generating a new key pair, display (obfuscated with the option to deobfuscate, or “unhide”) the newly generated private key with a function to copy the key to the user’s clipboard.

    NEX-FS08-26: shall, when generating a new key pair, display a link to download the public/private key pair and a warning for the user to do so.

    NEX-FS08-27: shall display the user’s public keys which are associated with their account with a function to copy the key to the user’s clipboard.

    7.4. Membership Settings

    NEX-FS08-28: shall display a description of the lifetime membership (upgraded account) feature.

    NEX-FS08-29: shall display the current cost (in PPY) of upgrading an account to lifetime membership status.

    NEX-FS08-30: shall allow the user to initiate the account upgrade function with a user input control button.

    NEX-FS08-31: shall display a description of the current network fee distribution.

    NEX-FS08-32: shall display the reviewer, registrar, and referrer accounts associated with the user’s account.

    NEX-FS08-33: shall display the membership expiration date and time of the user’s account (or if the expiration is not applicable).

    NEX-FS08-34: shall display the total amount of fees paid by the user’s account.

    NEX-FS08-35: shall display a description of the fee distribution and maintenance interval.

    NEX-FS08-36: shall display a description of the vesting requirements for fee allocations.

    8. Appendix A: Glossary

    Term
    Meaning

    the app settings

  • the blockchain blocks page (if advanced mode is active)

  • the voting (GPOS) page (if advanced mode is active)

  • similar techniques for revealing content

    enable notifications (yes / no)

  • select notifications

  • wallet lock timeout

  • Hindi

  • Russian

  • Spanish

  • RUB (₽) - Russian Ruble

  • USD ($) - United States Dollar

  • asset swap filled

  • asset swap canceled

  • order created

  • order filled

  • order canceled

  • order expired

  • 24 hours

  • 1 week

  • 1 month

  • never

  • NEX-FS08-#

    NEX App Requirement - App Settings Page

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    NEX-FS09 Blockchain Page

    The Peerplays NEX application functional requirements specification for the blockchain page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the blockchain page from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    page

    3. Scope

    This FS will describe the requirements and basic design for the app’s blockchain page.

    3.1. Components

    Specific components and features covered in this FS include:

    • blockchain page layout

    • blockchain blocks

    • blockchain block details

    • blockchain block transaction details

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Context

    The app must provide a way for users to view most of the blockchain transactional data. This keeps the information open and therefore decentralized. The blockchain page will act as a singular point of reference where users can browse, search, and even download reports of the blockchain data.

    6. Design Wire-frames

    The wire-frames listed below are meant to represent the app’s blockchain page in various states. These are provided to assist in understanding of what features may look like or their potential use. Final designs may be vastly different from these images.

    Figure 1. Blockchain page Blocks

    Figure 2. Block Details

    Figure 3. Transaction Details

    Figure 4. Assets

    Figure 5. Witnesses

    Figure 6. Committee Members

    Figure 7. SONs

    Figure 8. Fees

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. Blockchain Page Layout

    The blockchain page layout:

    NEX-FS09-1: shall be available for authenticated and unauthenticated users within the application menu.

    NEX-FS09-2: shall provide the user with navigation to the following pages:

    • the app dashboard

    • the market page

    • the user profile page

    • the user wallet

    NEX-FS09-3: shall provide menus for displaying the following components:

    • blockchain blocks

    • blockchain assets

    • blockchain Witnesses

    • blockchain Committee members

    NEX-FS09-4: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS09-5: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS09-6: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS09-7: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS09-8: shall provide the user with help and/or hint text to explain available options and input fields.

    NEX-FS09-9: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    NEX-FS09-10: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    NEX-FS09-11: displayed lists shall provide pagination controls for large record sets requiring multiple pages.

    NEX-FS09-12: displayed lists shall display information about their records in a tabular format.

    NEX-FS09-13: displayed lists shall display a header row with column names.

    NEX-FS09-14: displayed lists shall provide controls in the header to sort columns based on their values, if appropriate.

    NEX-FS09-15: displayed lists shall display columns of a width appropriate for their values.

    NEX-FS09-16: displayed lists shall highlight row which the user is hovering on.

    NEX-FS09-17: displayed lists shall highlight row which the user has clicked on (focused).

    7.2. Blockchain Blocks

    NEX-FS09-18: shall display the following dynamic information about the blockchain, to be updated in real time:

    • current block number

    • last irreversible block number with difference from the current block number

    • moving average confirmation time

    • current total supply of PPY

    NEX-FS09-19: shall, for each of the dynamic items listed above, display a chart or graph representing the change of these values for a reasonable time range (ex: last 24 hours, rolling).

    NEX-FS09-20: shall, for each of the dynamic items listed above, display the label as well as information.

    NEX-FS09-21: shall display a table (list) of recent blocks that have been produced on the blockchain.

    NEX-FS09-22: shall include the following fields for each available recent block:

    • block number

    • block creation date and time

    • name of the witness who produced the block

    • number of transactions in the block

    NEX-FS09-23: shall display date and time in the user’s local format.

    NEX-FS09-24: shall allow the user to click a block number to navigate to a block details view.

    NEX-FS09-25: shall allow the user to click a witness name to navigate to the witness’s account page.

    NEX-FS09-26: shall allow the user to sort the list by its data fields.

    NEX-FS09-27: shall allow the user to filter the list by its data fields.

    NEX-FS09-28: shall allow users to perform text search of keywords like block numbers and witness names.

    NEX-FS09-29: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.3. Blockchain Block Details

    NEX-FS09-30: shall provide pagination controls to navigate to the previous or next (if appropriate) block details view in block number order.

    NEX-FS09-31: shall display the block number for the current block details view.

    NEX-FS09-32: shall display the block creation time, in the user’s local date and time format, for the current block details view.

    NEX-FS09-33: shall display the name and ID of the witness who created the block, which links to the witness’s account page.

    NEX-FS09-34: shall display the number of transactions in the block.

    NEX-FS09-35: shall display an expandable panel or menu which hides the advanced block details by default. This menu can be opened by the user to reveal the full details of the block which includes, but is not limited to, the following:

    • block ID

    • merkle root

    • previous secret hash

    • next secret hash

    NEX-FS09-36: shall display a table (list) of all the transactions contained in the block.

    NEX-FS09-37: shall include the following fields for each available transaction within the block:

    • transaction index

    • transaction ID

    • expiration date and time

    • number of operations in the transaction

    NEX-FS09-38: shall allow the user to click a transaction ID to navigate to a block transaction details view.

    NEX-FS09-39: shall allow the user to sort the list by its data fields.

    NEX-FS09-40: shall allow the user to filter the list by its data fields.

    NEX-FS09-41: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.4. Blockchain Block Transaction Details

    NEX-FS09-42: shall provide pagination controls to navigate to the previous or next (if appropriate) block transaction details view in transaction index order.

    NEX-FS09-43: shall display the block number for the current block transaction details view.

    NEX-FS09-44: shall display the transaction expiration date and time, in the user’s local date and time format, for the current block transaction details view.

    NEX-FS09-45: shall display the number of operations in the transaction.

    NEX-FS09-46: shall display an expandable panel or menu which hides the advanced transaction details by default. This menu can be opened by the user to reveal the full details of the transaction which includes, but is not limited to, the following:

    • transaction ID

    • reference block prefix

    • reference block number

    • transaction extensions

    NEX-FS09-47: shall display a table (list) of all the operations contained in the transaction.

    NEX-FS09-48: shall include the following fields for each available operation within the transaction:

    • operation index

    • operation ID

    • operation type (name of the operation. ex: SON Heartbeat, transfer, or issue asset)

    • fees

    NEX-FS09-49: shall allow the user to sort the list by its data fields.

    NEX-FS09-50: shall allow the user to filter the list by its data fields.

    NEX-FS09-51: shall allow users to perform text search of keywords like operation type, or text within operation details.

    NEX-FS09-52: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.5. Blockchain Assets

    Note: “Assets” in this context is referring to the blockchain objects beginning with object ID 1.3.x. This is not intended to include NFT assets.

    NEX-FS09-53: shall display the following dynamic information about the blockchain assets, to be updated in real time:

    • number of assets on the chain

    NEX-FS09-54: shall, for each of the dynamic items listed above, display a chart or graph representing the change of these values for a reasonable time range (ex: last 24 hours, rolling).

    NEX-FS09-55: shall, for each of the dynamic items listed above, display the label as well as information.

    NEX-FS09-56: shall display a table (list) of blockchain assets that have been created on the blockchain.

    NEX-FS09-57: shall include the following fields for each available asset:

    • asset ID (1.3.x)

    • asset symbol (PPY, BTC, HIVE, etc.)

    • asset name (Peerplays, Bitcoin, Hive, etc.)

    • maximum supply

    NEX-FS09-58: shall display the maximum supply amount in nominal value with significant digits appropriate to the asset.

    NEX-FS09-59: shall allow the user to click an asset issuer name to navigate to the asset issuer’s account page.

    NEX-FS09-60: shall allow the user to sort the list by its data fields.

    NEX-FS09-61: shall allow the user to filter the list by its data fields.

    NEX-FS09-62: shall allow users to perform text search of keywords like symbol, name, or issuer name.

    NEX-FS09-63: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.6. Blockchain Witnesses

    NEX-FS09-64: shall display the following dynamic information about the blockchain witnesses, to be updated in real time:

    • current number of active witnesses

    • current block creation rewards per block

    • estimated monthly rewards per witness

    • remaining witness hourly budget

    NEX-FS09-65: shall, for each of the dynamic items listed above, display a chart or graph representing the change of these values for a reasonable time range (ex: last 24 hours, rolling) where appropriate.

    NEX-FS09-66: shall, for each of the dynamic items listed above, display the label as well as information.

    NEX-FS09-67: shall display a table (list) of witness accounts that have been created on the blockchain.

    NEX-FS09-68: shall include the following fields for each witness account:

    • witness rank (highest votes, length of time being active, and then least missed blocks.)

    • witness name

    • currently active (true / false)

    • witness proposal URL

    NEX-FS09-69: shall allow the user to click a witness name to navigate to the witness’s account page.

    NEX-FS09-70: shall allow the user to click a witness URL to navigate to the witness’s proposal website (external link).

    NEX-FS09-71: shall display the total votes amount in nominal value with five significant digits.

    NEX-FS09-72: shall allow the user to sort the list by its data fields.

    NEX-FS09-73: shall allow the user to filter the list by its data fields.

    NEX-FS09-74: shall allow users to perform text search of keywords like witness names.

    NEX-FS09-75: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.7. Blockchain Committee Members

    NEX-FS09-76: shall display the following dynamic information about the blockchain committee members, to be updated in real time:

    • current number of active committee members

    NEX-FS09-77: shall, for each of the dynamic items listed above, display a chart or graph representing the change of these values for a reasonable time range (ex: last 24 hours, rolling) where appropriate.

    NEX-FS09-78: shall, for each of the dynamic items listed above, display the label as well as information.

    NEX-FS09-79: shall display a table (list) of committee member accounts that have been created on the blockchain.

    NEX-FS09-80: shall include the following fields for each committee member account:

    • committee member rank (highest votes, then length of time being active)

    • committee member name

    • currently active (true / false)

    • committee member proposal URL

    NEX-FS09-81: shall allow the user to click a committee member name to navigate to the committee member’s account page.

    NEX-FS09-82: shall allow the user to click a committee member URL to navigate to the committee member’s proposal website (external link).

    NEX-FS09-83: shall display the total votes amount in nominal value with five significant digits.

    NEX-FS09-84: shall allow the user to sort the list by its data fields.

    NEX-FS09-85: shall allow the user to filter the list by its data fields.

    NEX-FS09-86: shall allow users to perform text search of keywords like committee member names.

    NEX-FS09-87: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.8. Blockchain SONs

    NEX-FS09-88: shall display the following dynamic information about the blockchain SONs, to be updated in real time:

    • current number of active SONs

    • SON daily budget

    • date and time of the next vote update (maintenance period)

    NEX-FS09-89: shall, for each of the dynamic items listed above, display a chart or graph representing the change of these values for a reasonable time range (ex: last 24 hours, rolling) where appropriate.

    NEX-FS09-90: shall, for each of the dynamic items listed above, display the label as well as information.

    NEX-FS09-91: shall display a table (list) of SON accounts that have been created on the blockchain.

    NEX-FS09-92: shall include the following fields for each SON account:

    • SON rank (highest votes, then length of time being active)

    • SON name

    • currently active (true / false)

    • SON proposal URL

    NEX-FS09-93: shall allow the user to click a SON name to navigate to the SON’s account page.

    NEX-FS09-94: shall allow the user to click a SON URL to navigate to the SON’s proposal website (external link).

    NEX-FS09-95: shall display the total votes amount in nominal value with five significant digits.

    NEX-FS09-96: shall allow the user to sort the list by its data fields.

    NEX-FS09-97: shall allow the user to filter the list by its data fields.

    NEX-FS09-98: shall allow users to perform text search of keywords like SON names.

    NEX-FS09-99: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    7.9. Blockchain Fees

    NEX-FS09-100: shall display a table (list) of fees that have been created on the blockchain.

    NEX-FS09-101: shall include the following fields for each fee:

    • fee category (general, asset specific, account specific, etc.)

    • blockchain operation

    • fee type (regular, price per KByte, etc.)

    • fee amount (0.01 PPY, Free, etc.)

    NEX-FS09-102: shall allow the user to sort the list by its data fields.

    NEX-FS09-103: shall allow the user to filter the list by its data fields.

    NEX-FS09-104: shall allow users to perform text search of keywords like blockchain operation, category, or fee amount.

    NEX-FS09-105: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    8. Appendix A: Glossary

    Term
    Meaning

    blockchain assets

  • blockchain witnesses

  • blockchain committee members

  • blockchain SONs

  • blockchain fees

  • the app settings

  • the blockchain blocks page

  • the voting (GPOS) page (if advanced mode is active)

  • blockchain SONs

  • blockchain fees

  • similar techniques for revealing content

    approximate value of 1 PPY (in user’s preferred currency)

  • PPY market cap value (in user’s preferred currency)

  • signing key used to sign the block

  • witness signature

  • block extensions

  • reference block prefix

  • reference block number

  • number of transaction extensions

  • signatures applied to the transaction

    operation details (including memo)

  • operation results

  • asset precision

  • asset issuer name

  • date and time of the next vote update (maintenance period)

  • current scheduled witness

  • last block number produced by the witness

  • number of missed blocks

  • total votes for the witness

  • the witness’s public key

  • total votes for the committee member

    total votes for the SON

    NEX-FS09-#

    NEX App Requirement - Blockchain Page

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    NEX-FS09 Blockchain Page-Blocks.drawio.png
    NEX-FS09 Blockchain Page-Block Detail.drawio.png
    NEX-FS09 Blockchain Page-Transaction Detail.drawio.png
    NEX-FS09 Blockchain Page-Assets.drawio.png
    NEX-FS09 Blockchain Page-Witnesses.drawio.png
    NEX-FS09 Blockchain Page-Committee.drawio.png
    NEX-FS09 Blockchain Page-SONs.drawio.png
    NEX-FS09 Blockchain Page-Fees.drawio.png

    NEX-FS07 Wallet Functions

    The Peerplays NEX application functional requirements specification for the wallet functions.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the wallet functions from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    process

    page fragment

    3. Scope

    This FS will describe the requirements and basic design for the app’s wallet design and functions.

    3.1. Components

    Specific components and features covered in this FS include:

    • wallet page layout

    • user asset list

    • send functions

    • receive functions

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Process Overviews

    The processes which will be described here are as follows.

    • sending assets

    • receiving assets

    5.1. Sending Assets

    1. The user navigates to the wallet send function.

    2. The user reviews their assets available to send.

    3. The user selects an asset in the asset selection field.

    4. The send form updates as necessary per the selected asset.

    5.2. Receiving Assets

    1. The user navigates to the wallet receive function.

    2. The user selects an asset in the asset selection field.

    3. The receive form updates as necessary per the selected asset.

    4. The user reviews the instructions for receiving the asset they selected.

    6. Context

    The wallet is at the heart of the app. It’s the way assets can come and go from the market. Using the wallet, users can work seamlessly with sidechain assets like BTC and HIVE. These assets can then be traded in the open exchange, sent around the network, and even sent back to the sidechains.

    7. Design Wire-frames

    The original designs for the NEX app wallet functions are available here:

    Here are updated wire-frames for the design covered in this FS:

    Figure 1. The user’s assets list in the wallet.

    Figure 2. The send function (blank form) in the wallet.

    Figure 3. The send function (PPY example) in the wallet.

    Figure 4. The send function (BTC example) in the wallet.

    Figure 5. The send function (HIVE example) in the wallet.

    Figure 6. The receive function (blank form) in the wallet.

    Figure 7. The receive function (PPY example) in the wallet.

    Figure 8. The receive function (BTC example) in the wallet.

    Figure 9. The receive function (HIVE example) in the wallet.

    8. Requirements

    Requirements specific to the items listed in this FS are as follows.

    8.1. Wallet Page Layout

    The wallet, in the context of the page layout:

    NEX-FS07-1: shall be available for authenticated users within the application menu.

    NEX-FS07-2: shall provide the user with navigation to the following pages:

    • the app dashboard

    • the market page

    • the user profile page

    • the user wallet

    NEX-FS07-3: shall provide menus for displaying the following components:

    • user’s assets list

    • wallet send function

    • wallet receive function

    NEX-FS07-4: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS07-5: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS07-6: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS07-7: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS07-8: shall provide the user with help and/or hint text to explain available options and input fields.

    NEX-FS07-9: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    NEX-FS07-10: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    NEX-FS07-11: displayed lists shall provide pagination controls for large record sets requiring multiple pages.

    NEX-FS07-12: displayed lists shall display information about their records in a tabular format.

    NEX-FS07-13: displayed lists shall display a header row with column names.

    NEX-FS07-14: displayed lists shall provide controls in the header to sort columns based on their values, if appropriate.

    NEX-FS07-15: displayed lists shall display columns of a width appropriate for their values.

    NEX-FS07-16: displayed lists shall highlight row which the user is hovering on.

    NEX-FS07-17: displayed lists shall highlight row which the user has clicked on (focused).

    8.2. Assets List

    The wallet, in the context of the assets list:

    NEX-FS07-18: shall display two lists of the user’s available assets:

    • coins and tokens

    • NFTs

    8.2.1. coins and tokens list

    NEX-FS07-19: shall include the following fields for each available asset:

    • asset symbol

    • asset name

    • amount available

    • amount in orders

    NEX-FS07-20: shall display the total value in the user’s preferred currency (app settings).

    NEX-FS07-21: shall, upon activating the “send” action, navigate to the wallet send function and populate the asset selection with the corresponding asset.

    NEX-FS07-22: shall, upon activating the “receive” action, navigate to the wallet receive function and populate the asset selection with the corresponding asset.

    NEX-FS07-23: shall display the total value of all assets (excluding NFTs) in the user’s wallet in the user’s preferred currency (app settings).

    NEX-FS07-24: shall allow the user to sort the list by its data fields.

    NEX-FS07-25: shall allow the user to filter the list by its data fields.

    NEX-FS07-26: shall allow the user to open and close the list (expandable menu).

    NEX-FS07-27: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    8.2.2. NFTs list

    NEX-FS07-28: shall include the following fields for each available asset:

    • NFT image

    • NFT name

    • creator name

    • collection name

    NEX-FS07-29: shall display the total value in the user’s preferred currency (app settings).

    NEX-FS07-30: shall display the total value of all assets (excluding coins and tokens) in the user’s wallet in the user’s preferred currency (app settings).

    NEX-FS07-31: shall allow the user to sort the list by its data fields.

    NEX-FS07-32: shall allow the user to filter the list by its data fields.

    NEX-FS07-33: shall allow the user to open and close the list (expandable menu).

    NEX-FS07-34: shall allow the user to download a copy of the list, as it has been filtered and sorted, as either a PDF file or CSV file.

    NEX-FS07-35: shall display a link to the Peerplays NFT Store.

    NEX-FS07-36: shall make the NFT name field link to the corresponding NFT detail page within the Peerplays NFT Store.

    8.3. Send Function

    The wallet, in the context of the send function:

    NEX-FS07-37: shall provide the following user input controls:

    • asset to send (drop down)

    • amount to send (numeric field)

    • convenience slider control for sending percentages of available balance (See NEX-FS07-29)

    • recipient account (or recipient address for BTC)

    NEX-FS07-38: shall provide convenience controls to the user which allows them to easily adjust the send amount automatically to any percentage of their asset available to send. For example, supply a slider user input control which allows input from 0% to 100% of their available asset balance. This slider could even have nodes that allow easy selection of 0%, 25%, 50%, 75%, and 100%, but still allows any whole number percentage in between.

    NEX-FS07-39: shall display the following information relevant to the send transaction:

    • amount of selected asset available to send

    • estimated fees

    • transaction total

    • estimated confirmation time (length of time)

    NEX-FS07-40: shall allow the selection of any asset for which the user has an available balance.

    NEX-FS07-41: shall, upon selecting an asset, update the form controls in the following ways:

    • (PPY selected) blockchain selection set to Peerplays and disabled.

    • (BTC selected and Bitcoin blockchain selected) memo is disabled.

    • (HIVE selected and Hive blockchain selected) memo is disabled.

    NEX-FS07-42: shall, upon selecting the “clear form” function, clear the form back to its initial state.

    NEX-FS07-43: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS07-44: shall, once initiated by the user, summarize the send and ask the user for their confirmation to proceed.

    NEX-FS07-45: shall, once initiated or confirmed by the user, indicate send is in process. (loading spinner)

    NEX-FS07-46: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS07-47: shall indicate to the user if the send was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS07-48: shall, if the send initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS07-49: shall, upon successful send initiation, update the user’s asset balances.

    NEX-FS07-50: shall display a list of the user’s available assets (excluding NFTs).

    NEX-FS07-51: shall include the following fields for each available asset:

    • asset symbol

    • asset name

    • amount available (to send)

    • amount in orders

    NEX-FS07-52: shall display the total value in the user’s preferred currency (app settings).

    NEX-FS07-53: shall, upon activating the “select this asset” action, populate the asset selection with the corresponding asset.

    NEX-FS07-54: shall allow the user to sort the list by its data fields.

    NEX-FS07-55: shall allow the user to filter the list by its data fields.

    NEX-FS07-56: shall allow the user to open and close the list (expandable menu).

    8.4. Receive Function

    The wallet, in the context of the receive function:

    NEX-FS07-57: shall provide the following user input controls:

    • asset to receive (drop down)

    NEX-FS07-58: shall allow the selection of any asset which can be received on the Peerplays network.

    NEX-FS07-59: shall, upon selecting an asset, update the form controls in the following ways:

    • (PPY selected) display help text for receiving PPY to a Peerplays account.

    • (BTC selected) display help text for receiving BTC to a Peerplays account.

    • (HIVE selected) display help text for receiving HIVE to a Peerplays account.

    NEX-FS07-60: shall, if BTC is the selected asset, check if the user has a BTC sidechain address which is associated with their account. If not, display a “Generate Bitcoin Address” function. If so, display the BTC deposit address with a function to copy the address to the user’s clipboard.

    NEX-FS07-61: shall, when generating a new BTC address, generate a new BTC deposit and withdraw address and associate them with the user’s Peerplays account.

    NEX-FS07-62: shall, when generating a new BTC address, display the newly generated BTC deposit address with a function to copy the address to the user’s clipboard.

    NEX-FS07-63: shall, when generating a new BTC address, display a link to download the BTC deposit and withdraw address private keys and a warning for the user to do so.

    NEX-FS07-64: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS07-65: shall display a list of the user’s available assets (excluding NFTs).

    NEX-FS07-66: shall include the following fields for each available asset:

    • asset symbol

    • asset name

    • amount available (to send)

    • amount in orders

    NEX-FS07-67: shall display the total value in the user’s preferred currency (app settings).

    NEX-FS07-68: shall, upon activating the “select this asset” action, populate the asset selection with the corresponding asset.

    NEX-FS07-69: shall allow the user to sort the list by its data fields.

    NEX-FS07-70: shall allow the user to filter the list by its data fields.

    NEX-FS07-71: shall allow the user to open and close the list (expandable menu).

    9. Appendix A: Glossary

    Term
    Meaning

    The user enters an amount of available asset to send in the amount field.

  • The send form updates as necessary per the user inputs.

  • The user enters the recipient account name into the to field.

  • The user selects which blockchain to send the funds to, if withdrawing to a sidechain.

  • The user may enter a memo if sending assets within the Peerplays network.

  • The user reviews the send transaction information, such as fees, total costs, and estimated confirmation time.

  • The user initiates the transaction by clicking the “send” button.

  • The app displays a confirmation dialog to the user.

  • The user reviews and accepts the confirmation.

  • The app signs and sends the transaction to the blockchain.

  • Upon success, the app displays a success message to the user and updates the user’s available balances.

  • If the selected asset is BTC, the app displays their BTC deposit address and allows the user to cope the address to their clipboard.

  • If the selected asset is BTC and a BTC deposit address is not yet associated with the user’s Peerplays account, the app displays a “Generate Bitcoin Address” function.

  • The user clicks the “Generate Bitcoin Address” button.

  • The app generates a new BTC deposit and BTC withdraw address, displays the BTC deposit address to the user, and displays a download link for the deposit and withdraw address private keys.

  • The user downloads their private keys.

  • the app settings

  • the blockchain blocks page (if advanced mode is active)

  • the voting (GPOS) page (if advanced mode is active)

  • similar techniques for revealing content

    total amount owned (available + in orders)

  • total value

  • actions

    • send

    • receive

  • last price

  • best offer

  • quantity

  • total value

  • on sale (true/false)

  • blockchain (drop down)

  • memo (text field, optional)

  • “Send” button to initiate the send function

  • “clear form” function

  • total amount owned (available + in orders)

  • total value

  • actions

    • select this asset

  • total amount owned (available + in orders)

  • total value

  • actions

    • select this asset

  • NEX-FS07-#

    NEX App Requirement - Wallet Functions

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    DEX Hifi - All tabs with Market

    NEX-FS10 GPOS Page

    The Peerplays NEX application functional requirements specification for the GPOS page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the GPOS page from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    page

    3. Scope

    This FS will describe the requirements and basic design for the app’s GPOS page.

    3.1. Components

    Specific components and features covered in this FS include:

    • gpos page layout

    • gpos dashboard

    • gpos power up

    • gpos power down

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    5. Context

    The Gamified Proof of Stake (GPOS) page is for blockchain governance by voting for the various nodes in the network. Users need a simple and intuitive way to compare the candidates they can vote on. The GPOS consensus mechanism is unique and needs to be explained to the user so that they know what GPOS is, how it works, and how it can effect their voting power and available balance over time.

    6. Design Wire-frames

    The wire-frames listed below are meant to represent the app’s GPOS page in various states. These are provided to assist in understanding of what features may look like or their potential use. Final designs may be vastly different from these images.

    Figure 1. GPOS Page

    Figure 2. GPOS Power Up

    Figure 3. GPOS Power Down

    Figure 4. Witness Voting

    Figure 5. SON Voting

    Figure 6. Committee Member Voting

    Figure 7. Proxy Voting

    7. Requirements

    Requirements specific to the items listed in this FS are as follows.

    7.1. GPOS Page Layout

    The GPOS page layout:

    NEX-FS10-1: shall be available for authenticated users within the application menu.

    NEX-FS10-2: shall provide the user with navigation to the following pages:

    • the app dashboard

    • the market page

    • the user profile page

    • the user wallet

    NEX-FS10-3: shall provide menus for displaying the following components:

    • GPOS dashboard

    • Witness voting

    • SONs voting

    • Committee member voting

    NEX-FS10-4: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS10-5: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS10-6: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS10-7: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS10-8: shall provide the user with help and/or hint text to explain available options and input fields.

    NEX-FS10-9: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    NEX-FS10-10: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    NEX-FS10-11: displayed lists shall provide pagination controls for large record sets requiring multiple pages.

    NEX-FS10-12: displayed lists shall display information about their records in a tabular format.

    NEX-FS10-13: displayed lists shall display a header row with column names.

    NEX-FS10-14: displayed lists shall provide controls in the header to sort columns based on their values, if appropriate.

    NEX-FS10-15: displayed lists shall display columns of a width appropriate for their values.

    NEX-FS10-16: displayed lists shall highlight row which the user is hovering on.

    NEX-FS10-17: displayed lists shall highlight row which the user has clicked on (focused).

    7.2. GPOS Dashboard

    NEX-FS10-18: shall display a description of GPOS to the user to satisfy the following goals:

    • to educate the user about what GPOS is, how it works, and why it’s important to the network.

    • to persuade the user to participate in GPOS consensus.

    NEX-FS10-19: shall display the user’s current GPOS metrics including:

    • GPOS balance

    • Voting performance

    • Qualified reward %

    • Estimated rake reward %

    NEX-FS10-20: shall display the user’s current available PPY balance with which they can Power Up to their GPOS balance.

    NEX-FS10-21: shall allow users to navigate to the GPOS Power Up screen, GPOS Power Down screen, or to the witness voting screen via user input controls (buttons).

    7.3. GPOS Power Up

    NEX-FS10-22: shall display a description of GPOS Power Up to the user to satisfy the following goals:

    • to educate the user about what GPOS Power Up is, how it works, and why it’s important to the network.

    • to persuade the user to participate in GPOS consensus.

    NEX-FS10-23: shall display a notice to the user which explains the pros, cons, and implications of participating in GPOS via Power Up. For example:

    “When you Power Up your PPY you are staking your PPY. This means you won't be able to transfer, spend, or otherwise use your PPY until you Power Down your PPY. Powered Up (staked) PPY will grant your account voting power equal to your balance of staked PPY. When Powering Down, or unstaking, your PPY will be returned to your account gradually over a 30 day period.”

    NEX-FS10-24: shall display the user’s opening GPOS balance.

    NEX-FS10-25: shall display the user’s current available PPY balance with which they can Power Up to their GPOS balance.

    NEX-FS10-26: shall allow users to enter an amount of PPY they wish to deposit to their GPOS balance using a numerical user input control.

    NEX-FS10-27: shall validate the number entered into the deposit field as follows:

    • deposit cannot be 0.

    • deposit cannot be negative.

    • deposit must be a number.

    • deposit must not be greater than available balance.

    NEX-FS10-28: shall display the user’s new GPOS balance should they decide to vest the amount they entered into the deposit field.

    NEX-FS10-29: shall provide a user control to submit the transaction to the network. (vest button)

    NEX-FS10-30: shall provide a cancel button to cancel the Power Up and return the user to the GPOS dashboard screen.

    NEX-FS10-31: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS10-32: shall, once initiated by the user, summarize the Power Up and ask the user for their confirmation to proceed.

    NEX-FS10-33: shall, once initiated or confirmed by the user, indicate Power Up is in process. (loading spinner)

    NEX-FS10-34: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS10-35: shall indicate to the user if the Power Up was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS10-36: shall, if the Power Up initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS10-37: shall, upon successful Power Up initiation, update the user’s GPOS and PPY balances.

    7.4. GPOS Power Down

    NEX-FS10-38: shall display a description of GPOS Power Down to the user to satisfy the following goals:

    • to educate the user about what GPOS Power Down is, how it works, and why it’s important to the network.

    • to persuade the user to participate in GPOS consensus.

    NEX-FS10-39: shall display a notice to the user which explains the pros, cons, and implications of participating in GPOS via Power Down. For example:

    “When you Power Up your PPY you are staking your PPY. This means you won't be able to transfer, spend, or otherwise use your PPY until you Power Down your PPY. Powered Up (staked) PPY will grant your account voting power equal to your balance of staked PPY. When Powering Down, or unstaking, your PPY will be returned to your account gradually over a 30 day period.”

    NEX-FS10-40: shall display the user’s opening GPOS balance.

    NEX-FS10-41: shall display the user’s current available GPOS balance with which they can Power Down to their normal PPY balance.

    NEX-FS10-42: shall allow users to enter an amount of PPY they wish to withdraw to their normal PPY balance using a numerical user input control.

    NEX-FS10-43: shall validate the number entered into the withdraw field as follows:

    • withdraw cannot be 0.

    • withdraw cannot be negative.

    • withdraw must be a number.

    • withdraw must not be greater than available balance.

    NEX-FS10-44: shall display the user’s new GPOS balance should they decide to withdraw the amount they entered into the withdraw field.

    NEX-FS10-45: shall provide a user control to submit the transaction to the network. (withdraw button)

    NEX-FS10-46: shall provide a cancel button to cancel the Power Down and return the user to the GPOS dashboard screen.

    NEX-FS10-47: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS10-48: shall, once initiated by the user, summarize the Power Down and ask the user for their confirmation to proceed.

    NEX-FS10-49: shall, once initiated or confirmed by the user, indicate Power Down is in process. (loading spinner)

    NEX-FS10-50: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS10-51: shall indicate to the user if the Power Down was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS10-52: shall, if the Power Down initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS10-53: shall, upon successful Power Down initiation, update the user’s GPOS and PPY balances.

    7.5. Witness Voting

    NEX-FS10-54: shall display two tables (lists):

    • list of pending changes to user voting

    • list of witness accounts

    NEX-FS10-55: shall include the following information in the pending changes table:

    • pending change number

    • witness account name

    • currently active witness (true / false)

    • witness proposal URL

    NEX-FS10-56: shall, as a user action for the pending changes list, allow the user to cancel a pending change.

    NEX-FS10-57: shall, when the user cancels a pending change, remove the witness account from the pending changes list.

    NEX-FS10-58: shall include the following information in the witness accounts table:

    • witness rank (highest votes, length of time being active, and then least missed blocks.)

    • witness name

    • currently active witness (true / false)

    • witness proposal URL

    NEX-FS10-59: shall, as a user action for the witness accounts list, if the witness is currently not approved by the user, allow the user to add their approval (vote) for the witness.

    NEX-FS10-60: shall, when the adding approval action is applied by the user, add the witness account to the pending changes list with the “voting to approve” or similar pending change.

    NEX-FS10-61: shall, as a user action for the witness accounts list, if the witness is currently approved by the user, allow the user to remove their approval (remove vote) for the witness.

    NEX-FS10-62: shall, when the removing approval action is applied by the user, add the witness account to the pending changes list with the “voting to remove approval” or similar pending change.

    NEX-FS10-63: shall allow the user to click a witness name to navigate to the witness’s account page.

    NEX-FS10-64: shall allow the user to click a witness URL to navigate to the witness’s proposal website (external link).

    NEX-FS10-65: shall display the total votes amount in nominal value with five significant digits.

    NEX-FS10-66: shall allow the user to sort the witness accounts list by its data fields.

    NEX-FS10-67: shall allow the user to filter the witness accounts list by its data fields.

    NEX-FS10-68: shall allow users to perform text search of keywords like witness names for the witness accounts list.

    NEX-FS10-69: shall allow the user to download a copy of the witness accounts list, as it has been filtered and sorted, as either a PDF file or CSV file.

    NEX-FS10-70: shall allow the user to cancel all pending changes.

    NEX-FS10-71: shall allow the user to submit all pending changes to the network.

    NEX-FS10-72: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS10-73: shall, once initiated by the user, summarize the pending changes to the user’s voting and ask the user for their confirmation to proceed.

    NEX-FS10-74: shall, once initiated or confirmed by the user, indicate voting is in process. (loading spinner)

    NEX-FS10-75: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS10-76: shall indicate to the user if the voting was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS10-77: shall, if the voting initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS10-78: shall, upon successful voting initiation, update the pending changes list and witness accounts list to reflect the user’s new votes.

    7.6. SONs Voting

    NEX-FS10-79: shall display two tables (lists):

    • list of pending changes to user voting

    • list of SON accounts

    NEX-FS10-80: shall include the following information in the pending changes table:

    • pending change number

    • SON account name

    • currently active SON (true / false)

    • SON proposal URL

    NEX-FS10-81: shall, as a user action for the pending changes list, allow the user to cancel a pending change.

    NEX-FS10-82: shall, when the user cancels a pending change, remove the SON account from the pending changes list.

    NEX-FS10-83: shall include the following information in the SON accounts table:

    • SON rank (highest votes, then length of time being active)

    • SON name

    • currently active SON (true / false)

    • SON proposal URL

    NEX-FS10-84: shall, as a user action for the SON accounts list, if the SON is currently not approved by the user, allow the user to add their approval (vote) for the SON.

    NEX-FS10-85: shall, when the adding approval action is applied by the user, add the SON account to the pending changes list with the “voting to approve” or similar pending change.

    NEX-FS10-86: shall, as a user action for the SON accounts list, if the SON is currently approved by the user, allow the user to remove their approval (remove vote) for the SON.

    NEX-FS10-87: shall, when the removing approval action is applied by the user, add the SON account to the pending changes list with the “voting to remove approval” or similar pending change.

    NEX-FS10-88: shall allow the user to click a SON name to navigate to the SON’s account page.

    NEX-FS10-89: shall allow the user to click a SON URL to navigate to the SON’s proposal website (external link).

    NEX-FS10-90: shall display the total votes amount in nominal value with five significant digits.

    NEX-FS10-91: shall allow the user to sort the SON accounts list by its data fields.

    NEX-FS10-92: shall allow the user to filter the SON accounts list by its data fields.

    NEX-FS10-93: shall allow users to perform text search of keywords like SON names for the SON accounts list.

    NEX-FS10-94: shall allow the user to download a copy of the SON accounts list, as it has been filtered and sorted, as either a PDF file or CSV file.

    NEX-FS10-95: shall allow the user to cancel all pending changes.

    NEX-FS10-96: shall allow the user to submit all pending changes to the network.

    NEX-FS10-97: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS10-98: shall, once initiated by the user, summarize the pending changes to the user’s voting and ask the user for their confirmation to proceed.

    NEX-FS10-99: shall, once initiated or confirmed by the user, indicate voting is in process. (loading spinner)

    NEX-FS10-100: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS10-101: shall indicate to the user if the voting was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS10-102: shall, if the voting initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS10-103: shall, upon successful voting initiation, update the pending changes list and SON accounts list to reflect the user’s new votes.

    7.7. Committee Member Voting

    NEX-FS10-104: shall display two tables (lists):

    • list of pending changes to user voting

    • list of committee member accounts

    NEX-FS10-105: shall include the following information in the pending changes table:

    • pending change number

    • committee member account name

    • currently active committee member (true / false)

    • committee member proposal URL

    NEX-FS10-106: shall, as a user action for the pending changes list, allow the user to cancel a pending change.

    NEX-FS10-107: shall, when the user cancels a pending change, remove the committee member account from the pending changes list.

    NEX-FS10-108: shall include the following information in the committee member accounts table:

    • committee member rank (highest votes, then length of time being active)

    • committee member name

    • currently active committee member (true / false)

    • committee member proposal URL

    NEX-FS10-109: shall, as a user action for the committee member accounts list, if the committee member is currently not approved by the user, allow the user to add their approval (vote) for the committee member.

    NEX-FS10-110: shall, when the adding approval action is applied by the user, add the committee member account to the pending changes list with the “voting to approve” or similar pending change.

    NEX-FS10-111: shall, as a user action for the committee member accounts list, if the committee member is currently approved by the user, allow the user to remove their approval (remove vote) for the committee member.

    NEX-FS10-112: shall, when the removing approval action is applied by the user, add the committee member account to the pending changes list with the “voting to remove approval” or similar pending change.

    NEX-FS10-113: shall allow the user to click a committee member name to navigate to the committee member’s account page.

    NEX-FS10-114: shall allow the user to click a committee member URL to navigate to the committee member’s proposal website (external link).

    NEX-FS10-115: shall display the total votes amount in nominal value with five significant digits.

    NEX-FS10-116: shall allow the user to sort the committee member accounts list by its data fields.

    NEX-FS10-117: shall allow the user to filter the committee member accounts list by its data fields.

    NEX-FS10-118: shall allow users to perform text search of keywords like committee member names for the committee member accounts list.

    NEX-FS10-119: shall allow the user to download a copy of the committee member accounts list, as it has been filtered and sorted, as either a PDF file or CSV file.

    NEX-FS10-120: shall allow the user to cancel all pending changes.

    NEX-FS10-121: shall allow the user to submit all pending changes to the network.

    NEX-FS10-122: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS10-123: shall, once initiated by the user, summarize the pending changes to the user’s voting and ask the user for their confirmation to proceed.

    NEX-FS10-124: shall, once initiated or confirmed by the user, indicate voting is in process. (loading spinner)

    NEX-FS10-125: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS10-126: shall indicate to the user if the voting was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS10-127: shall, if the voting initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS10-128: shall, upon successful voting initiation, update the pending changes list and committee member accounts list to reflect the user’s new votes.

    7.8. Proxy Voting

    NEX-FS10-129: shall display two tables (lists):

    • list of pending changes to user voting

    • list of Peerplays accounts

    NEX-FS10-130: shall display a notice to the user that it’s only possible to proxy one account at a time.

    NEX-FS10-131: shall include the following information in the pending changes table:

    • Peerplays account name

    • number of witnesses voted for by this Peerplays account

    • number of SONs voted for by this Peerplays account

    • number of committee members voted for by this Peerplays account

    NEX-FS10-132: shall, as a user action for the pending changes list, allow the user to cancel a pending change.

    NEX-FS10-133: shall, when the user cancels a pending change, remove the Peerplays account from the pending changes list.

    NEX-FS10-134: shall include the following information in the Peerplays accounts table:

    • Peerplays account name

    • number of witnesses voted for by this Peerplays account

    • number of SONs voted for by this Peerplays account

    • number of committee members voted for by this Peerplays account

    NEX-FS10-135: shall, as a user action for the Peerplays accounts list, if the Peerplays account is currently not proxied by the user, allow the user to add their account to votes by proxy.

    NEX-FS10-136: shall, when the adding approval action is applied by the user, add the Peerplays account to the pending changes list with the “proxy vote with this account” or similar pending change.

    NEX-FS10-137: shall, when the adding approval action is applied by the user, if the user is already proxying an account, add the current proxied account to the pending changes list as to remove its proxy. This is to keep only one account proxied and make it obvious to the user that one proxy is being swapped for the one they chose.

    NEX-FS10-138: shall, as a user action for the Peerplays accounts list, if the Peerplays account is currently proxied by the user, allow the user to remove their proxy for the Peerplays account.

    NEX-FS10-139: shall, when the removing proxy action is applied by the user, add the Peerplays account to the pending changes list with the “remove proxy” or similar pending change.

    NEX-FS10-140: shall allow the user to click a Peerplays account name to navigate to the Peerplays account’s account page.

    NEX-FS10-141: shall allow the user to sort the Peerplays accounts list by its data fields.

    NEX-FS10-142: shall allow the user to filter the Peerplays accounts list by its data fields.

    NEX-FS10-143: shall allow users to perform text search of keywords like Peerplays account names for the Peerplays accounts list.

    NEX-FS10-144: shall allow the user to download a copy of the Peerplays accounts list, as it has been filtered and sorted, as either a PDF file or CSV file.

    NEX-FS10-145: shall allow the user to cancel all pending changes.

    NEX-FS10-146: shall allow the user to submit all pending changes to the network.

    NEX-FS10-147: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS10-148: shall, once initiated by the user, summarize the pending changes to the user’s proxy voting and ask the user for their confirmation to proceed.

    NEX-FS10-149: shall, once initiated or confirmed by the user, indicate proxy voting is in process. (loading spinner)

    NEX-FS10-150: shall, once confirmed by the user, submit the transaction to the Peerplays network.

    NEX-FS10-151: shall indicate to the user if the proxy voting was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS10-152: shall, if the proxy voting initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS10-153: shall, upon successful proxy voting initiation, update the pending changes list and Peerplays accounts list to reflect the user’s new proxy voting.

    8. Appendix A: Glossary

    Term
    Meaning

    NEX-FS05a Market Page (alpha)

    The Peerplays NEX application (alpha) functional requirements specification for the market page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the market page from a business and user perspective.

    witness voting

  • SONs voting

  • committee member voting

  • proxy voting

  • the app settings

  • the blockchain blocks page

  • the voting (GPOS) page (if advanced mode is active)

  • Proxy voting

    similar techniques for revealing content

    pending change description (voting to approve, voting to remove approval)

  • user actions (cancel)

  • total votes for the witness

  • the user’s voting status (approved / not approved by user)

  • user actions (add, remove, pending add, pending remove)

  • pending change description (voting to approve, voting to remove approval)

  • user actions (cancel)

  • total votes for the SON

  • the user’s voting status (approved / not approved by user)

  • user actions (add, remove, pending add, pending remove)

  • pending change description (voting to approve, voting to remove approval)

  • user actions (cancel)

  • total votes for the committee member

  • the user’s voting status (approved / not approved by user)

  • user actions (add, remove, pending add, pending remove)

  • date when this Peerplays account last voted

  • pending change description (proxy vote with this account, remove proxy)

  • user actions (cancel)

  • date when this Peerplays account last voted

  • the user’s voting status (proxied / not proxied by user)

  • user actions (add, remove, pending add, pending remove)

  • NEX-FS10-#

    NEX App Requirement - GPOS Page

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    NEX-FS10 GPOS Page-GPOS.drawio.png
    NEX-FS10 GPOS Page-GPOS Power Up.drawio.png
    NEX-FS10 GPOS Page-GPOS Power Down.drawio.png
    NEX-FS10 GPOS Page-Witness Vote.drawio.png
    NEX-FS10 GPOS Page-SONs Vote.drawio.png
    NEX-FS10 GPOS Page-Committee Vote.drawio.png
    NEX-FS10 GPOS Page-Proxy Vote.drawio.png
    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    page

    process

    3. Scope

    This FS will describe the requirements and basic design for the app’s market page. The market page should include all functions that are dedicated to the exchange of fungible assets as an open market.

    3.1. Components

    Specific components and features covered in this FS include:

    • Market Page layout

    • Order Book widget (market open orders)

    • Trade History widget (market trade history)

    • My Open Orders list (user open orders)

    • My Trade History list (user trade/order fills history)

    • Buy and Sell Controls

    • Price and Volume Statistics

    • Market Selector

    • Balances Display

    • Order Types

      • Market Orders

      • Limit Orders

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    NEX-FS05a-#

    NEX App Requirement (alpha) - Market Page

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    In a trading pair like BTC/PPY the first asset (BTC) is known as the base asset. The second asset (PPY) is known as the quote asset. The terms base and quote will be used throughout this FS.

    5. Process Overviews

    The processes which will be described here are as follows.

    • Placing a Market Order

    • Placing a Limit Order

    5.1. Market Orders

    To create a market order:

    1. User uses the buy or sell form.

    2. User enters the current market price (the Ask price if buying, the Bid price if selling) for the selected trading pair.

    3. User enters the quantity of the asset they wish to buy or sell (ex. Quantity = 0.05 BTC).

    4. The system displays to the user how much buying the asset will cost in terms of the selling asset and any applicable fees. (ex. buying 0.05 BTC, Fee = 0.00125 BTC, Total = 8.185 ETH)

    5. User clicks the corresponding Buy or Sell button to initiate the market order.

    6. The system displays a confirmation dialog to the user to ensure accuracy of the field inputs. This dialog also includes a password check as a reauthentication challenge to ensure the authenticity of the user.

    7. User enters their master password and accepts the confirmation dialog.

    8. The system clears the widget form fields.

    9. The system initiates the market order on behalf of the user using the supplied field inputs.

    10. The system notifies the user of the successful transaction.

    11. The market order may be filled immediately, partially filled, or canceled (due to excessive slippage) depending on the current market conditions.

    12. The order will appear in the order book and the open orders list. Any fulfilled trading (partial and/or full) will appear in the market and user trade history.

    5.2. Limit Orders

    To create a limit order:

    1. User uses the buy or sell form.

    2. User enters the quantity and limit price of the asset they wish to buy or sell (ex. BUY Quantity = 5 ETH, Limit Price = 0.05 BTC).

    3. The system displays to the user how much buying the asset will cost in terms of the selling asset and any applicable fees. (ex. buying 5 ETH @ 0.05 BTC each, Fee = 0.00125 BTC, Total = 0.25125 BTC)

    4. User clicks the corresponding Buy or Sell button to initiate the limit order.

    5. The system displays a confirmation dialog to the user to ensure accuracy of the field inputs. This dialog also includes a password check as a reauthentication challenge to ensure the authenticity of the user.

    6. User enters their master password and accepts the confirmation dialog.

    7. The system clears the widget form fields.

    8. The system initiates the limit order on behalf of the user using the supplied field inputs.

    9. The system notifies the user of the successful transaction.

    10. The limit order may be filled immediately, partially filled, or remain on the order book until fully filled or canceled depending on the price and quantity options specified.

    11. The order will appear in the order book and the open orders list. Any fulfilled trading (partial and/or full) will appear in the market and user trade history.

    12. The user may cancel any remaining portion of the order from the open orders list.

    6. Context

    The market page contains functions to trade assets in Peerplays. This page should contain everything a user needs to understand the current state of the market to make informed decisions about their trades.

    7. Design Wire-frames

    Designs for the NEX app market page are available here:

    DEX Hifi - All tabs with Market

    Here’s a wire-frame of the current market page design:

    8. Requirements

    Requirements specific to the items listed in this FS are as follows.

    8.1. Market Page Layout

    The market page layout:

    NEX-FS05a-1: shall be available for authenticated and unauthenticated users within the application menu.

    NEX-FS05a-2: shall display the following components:

    • market selector

    • price and volume statistics

    • order book

    • market trade history

    • buy order controls

    • sell order controls

    • user’s asset balances

    • user’s open orders

    • user’s order history (full and partial)

    NEX-FS05a-3: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS05a-4: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS05a-5: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS05a-6: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS05a-7: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    • similar techniques for revealing content

    NEX-FS05a-8: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    8.2. Order Book widget (market open orders)

    The order book widget:

    NEX-FS05a-9: shall display a real-time aggregation of open buy and sell orders of the selected market pair.

    NEX-FS05a-10: shall display the following information about each open order:

    • price (in quote asset)

    • amount (of base asset) available per price

    • total cost (in quote asset) per amount (of base asset)

    NEX-FS05a-11: shall allow the user to select various threshold (precision) levels to group orders by price. (This could be done by number of decimal places)

    NEX-FS05a-12: shall display the market spread (gap in price between ask price and bid price.)

    NEX-FS05a-13: shall allow the user to select to view buy orders only, sell orders only, or both buy and sell orders.

    NEX-FS05a-14: shall allow the user to click a price level to apply that data to the buy and sell controls automatically.

    NEX-FS05a-15: the design shall indicate to the user buy orders (green) vs sell orders (red) vs spread (neutral).

    8.3. Trade History widget (market trade history)

    The trade history widget:

    NEX-FS05a-16: shall display all recently executed market taker trades of the selected market pair arranged in a list chronologically from most recent.

    • number of trades displayed may be based on time (past 12 hours)

    • number of trades displayed may be based on number of trades (past 100 trades)

    NEX-FS05a-17: shall be updated in real-time.

    NEX-FS05a-18: shall include the trade quantity (base asset), price (quote asset), and timestamp.

    NEX-FS05a-19: the UI shall indicate if each market taker trade was a buy (green) or a sell (red) trade. The design should indicate a buy or sell trade with icons, arrows, or other design elements as well as color to help facilitate universal design implementation.

    8.4. My Open Orders list (user open orders)

    The my open order list:

    NEX-FS05a-20: shall include all of the user's currently open orders (regardless of selected market pair) with real-time data updates.

    • should allow the user to toggle viewing open orders for the selected market pair vs all their open orders.

    NEX-FS05a-21: shall include the following data fields:

    • the date and time each order was opened.

    • the market pair

    • if the order is a buy or sell ("side")

    • the order type (limit)

    • the order price (quote asset)

    • the total order quantity (base asset)

    • the filled order quantity (base asset)

    • the total price (quote asset)

    • the incurred fees

    • the order status (open or partially filled)

    • may display a separate list of filled quantities of a partially filled order.

    NEX-FS05a-22: shall allow the user to sort the list by its data fields.

    NEX-FS05a-23: shall allow the user to filter the list by its data fields.

    NEX-FS05a-24: shall allow the user to cancel any open order, even if partially filled.

    • user control for this may be a button or context menu item.

    8.5. My Trade History list (user trade history)

    The my trade history list:

    NEX-FS05a-25: shall include all of the user's completed trade activities (regardless of selected market pair) with real-time data updates.

    • may allow the user to toggle viewing their trade history for the selected market pair vs all their trade history.

    NEX-FS05a-26: shall include the following data fields:

    • the date and time each order was opened.

    • the date and time each trade was completed (filled, partially filled, canceled).

    • the market pair

    • if the order was a buy or sell ("side")

    • the order type (market or limit)

    • the trade price (quote asset)

    • the filled order quantity (base asset)

    • the total price (quote asset)

    • the incurred fees

    • the order status (partially filled, filled, canceled by user, canceled by system)

    • may display a separate list of filled quantities of a partially filled order.

    NEX-FS05a-27: shall allow the user to sort the list by its data fields.

    NEX-FS05a-28: shall allow the user to filter the list by its data fields.

    8.6. Buy / Sell controls

    The buy / sell controls:

    NEX-FS05a-29: shall allow the user to select between buy and sell orders by supplying the appropriate forms.

    NEX-FS05a-30: shall allow the user to select between market and limit order types.

    NEX-FS05a-31: shall allow the user to input the order amount (quantity of base asset).

    NEX-FS05a-32: shall, if the order type is a limit order, allow the user to input the limit price (quote asset).

    NEX-FS05a-33: shall display to the user the fees of the order, given the user’s inputs.

    NEX-FS05a-34: shall display to the user the total (quote asset) of the order, given the user’s inputs.

    NEX-FS05a-35: shall allow the user to create an order if the following criteria is met:

    • the user is logged in.

    • the order form is filled in with (successfully) validated inputs.

    • the user has an appropriate amount of assets to satisfy the needs of the order.

    NEX-FS05a-36: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS05a-37: shall provide user controls (buttons) to initiate buy and sell orders.

    NEX-FS05a-38: shall, once initiated by the user, summarize the order and ask the user for their confirmation to proceed.

    NEX-FS05a-39: shall, once initiated or confirmed by the user, indicate order is in process. (loading spinner)

    NEX-FS05a-40: shall, once confirmed by the user, submit the order to the Peerplays network.

    NEX-FS05a-41: shall indicate to the user if the order was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS05a-42: shall, if the order initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS05a-43: shall, upon successful order initiation, add the order to the order book, update the user’s asset balances, add the order to the user’s open orders (for limit orders), etc.

    8.7. Price / Volume statistics

    The price / volume statistics:

    NEX-FS05a-44: shall display the last price (quote asset) for the selected market pair.

    NEX-FS05a-45: shall display the Bid and Ask prices (quote asset).

    NEX-FS05a-46: shall display the 24-hour price change in terms of raw value and in percentage (quote asset).

    NEX-FS05a-47: shall display the 24-hour price range (high and low, in quote asset).

    NEX-FS05a-48: shall update the price and volume statistics in real-time based on current market conditions.

    8.8. Market Selector

    The market selector:

    NEX-FS05a-49: shall display the currently selected market (trading pair).

    NEX-FS05a-50: shall allow the user to select any available market.

    NEX-FS05a-51: shall allow the user to flip the base and quote assets of the trading pair. For example, users need to be able to change the selected market from BTC-ETH to ETH-BTC.

    NEX-FS05a-52: shall, when a new market is selected by the user, update the page to reflect the selected market. (order book, history, asset balances, prices, etc.)

    8.9. Balances Display

    The balances display:

    NEX-FS05a-53: shall display the user's asset balances available for trading relating to the currently selected market.

    NEX-FS05a-54: shall update the available balances in the display when orders are created, filled, partially filled, or canceled.

    9. Appendix A: Glossary

    Term
    Meaning

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    Market Order

    Orders that are meant to execute as quickly as possible at the current market price. If you’re buying an asset, a market order will execute at whatever price the seller is asking. If you’re selling, a market order will execute at whatever the buyer is bidding. The biggest drawback of the market order is that you can’t specify the price of the trade. Market orders cannot be canceled because they are filled immediately. Market orders may be partially filled at several prices.

    Limit Order

    An order that sets the maximum or minimum price at which you are willing to buy or sell. The biggest advantage of the limit order is that you get to name your price, and if the asset reaches that price, the order will be filled.

    NEX-FS05 Market Page

    The Peerplays NEX application functional requirements specification for the market page.

    1. Purpose

    The purpose of this functional specification (FS) document is to detail functional requirements for the Peerplays NEX application (the “app”) relating to the market page from a business and user perspective.

    2. Document Tracking

    2.1. Parent Document

    This document is a child document of the NEX Requirements Specification (NEX-RS).

    2.2. Categorization

    This document relates to the following tags.

    App Component

    page

    process

    3. Scope

    This FS will describe the requirements and basic design for the app’s market page. The market page should include all functions that are dedicated to the exchange of fungible assets as an open market.

    3.1. Components

    Specific components and features covered in this FS include:

    • Market Page layout

    • Order Book widget (market open orders)

    • Trade History widget (market trade history)

    • My Open Orders list (user open orders)

    4. Document Conventions

    For the purpose of traceability, the following code(s) will be used in this functional specification:

    Code
    Meaning

    The keyword shall indicates a requirement statement.

    The keywords may, could, and should are not requirements but rather indicate items related to requirements that are worthy of consideration.

    In a trading pair like BTC/PPY the first asset (BTC) is known as the base asset. The second asset (PPY) is known as the quote asset. The terms base and quote will be used throughout this FS.

    5. Process Overviews

    The processes which will be described here are as follows.

    • Placing a Market Order

    • Placing a Limit Order

    • Placing a Stop-Limit Order

    5.1. Market Orders

    To create a market order:

    1. User selects buy or sell.

    2. User selects the market tab in the buy / sell controls.

    3. User enters the quantity of the asset they wish to buy or sell (ex. Quantity = 0.05 BTC).

    4. The system displays to the user how much buying the asset will cost in terms of the selling asset and any applicable fees. (ex. buying 0.05 BTC, Fee = 0.00125 BTC, Total = 8.185 ETH)

    5.2. Limit Orders

    To create a limit order:

    1. User selects buy or sell.

    2. User selects the limit tab in the buy / sell controls.

    3. User enters the quantity and limit price of the asset they wish to buy or sell (ex. BUY Quantity = 5 ETH, Limit Price = 0.05 BTC).

    4. User specifies any advanced options for the limit order (limit order type) as follows:

    5.3. Stop-Limit Orders

    To create a stop-limit order:

    1. User selects buy or sell.

    2. User selects the stop-limit tab in the buy / sell controls.

    3. User enters the stop price of the asset they wish to buy or sell.

    4. User enters the quantity and limit price of the asset they wish to buy or sell (ex. BUY Stop Price = 0.04 BTC, Quantity = 5 ETH, Limit Price = 0.05 BTC).

    6. Context

    The market page contains in-depth functions to trade assets in Peerplays. This page should contain everything a user needs to understand the current state of the market to make informed decisions about their trades. The market page should provide all the tools a user would use to trade as with any industry standard exchange platform.

    A review of modern exchange platforms has helped guide the requirements for the Peerplays NEX market page. See below.

    7. Design Wire-frames

    The original designs for the NEX app market page are available here:

    Here is an updated wire-frame for the design covered in this FS:

    Figure 1. The Market Page design wire-frame.

    Here is the same wire-frame including sample graphics to demonstrate a potential design implementation:

    Figure 2. The Market Page design wire-frame with sample graphics.

    8. Requirements

    Requirements specific to the items listed in this FS are as follows.

    8.1. Market Page Layout

    The market page layout:

    NEX-FS05-1: shall be available for authenticated and unauthenticated users within the application menu.

    NEX-FS05-2: shall display the following components:

    • market selector

    • price and volume statistics

    • order book

    • market trade history

    NEX-FS05-3: shall display widgets and components that have been configured to be active in the market page.

    NEX-FS05-4: shall use graphic design elements which adhere to Peerplays branding guidelines.

    NEX-FS05-5: shall use graphic design elements which remain consistent throughout the app.

    NEX-FS05-6: shall allow user input in relevant form fields to perform the functions of the related component.

    NEX-FS05-7: shall perform input field validation and inform the user of acceptable form inputs.

    NEX-FS05-8: shall provide the user with help and/or hint text to explain available options and input fields.

    NEX-FS05-9: shall provide unobtrusive help text to the user about each function. This may take any of the following forms:

    • tooltip when hovering an element (button, title, etc.)

    • pop-up when clicking an element (icon, link, etc.)

    • expanding panels or menus with help text

    • one time tutorial flow for new users

    NEX-FS05-10: shall indicate to the user when content is loading and avoid showing incorrect, outdated, or blank content.

    8.2. Order Book widget (market open orders)

    The order book widget:

    NEX-FS05-11: shall display a real-time aggregation of open buy and sell orders of the selected market pair.

    NEX-FS05-12: shall display the following information about each open order:

    • price (in quote asset)

    • amount (of base asset) available per price

    • total cost (in quote asset) per amount (of base asset)

    • bar graph or other suitable indicator representing the volume of assets available per group of orders.

    NEX-FS05-13: shall allow the user to select various threshold (precision) levels to group orders by price. (This could be done by number of decimal places)

    NEX-FS05-14: shall display the market spread (gap in price between ask price and bid price) by displaying the following information:

    • Icon representing if the last market taker trade was a buy (example: a green up arrow) or a sell (example: a red down arrow).

    • price (quote asset) of the last market taker trade.

    • value of the last market taker trade in the user’s preferred fiat (user settings).

    • the value of the gap (quote asset) between the current ask price and current bid price.

    NEX-FS05-15: the design of the market spread info shall indicate if the last market taker trade was a buy or sell with icons, arrows, or other design elements as well as color to help facilitate universal design implementation.

    NEX-FS05-16: shall allow the user to select to view buy orders only, sell orders only, or both buy and sell orders.

    NEX-FS05-17: shall allow the user to click a price level to apply that data to the buy / sell controls automatically.

    NEX-FS05-18: the design shall indicate to the user buy orders (green) vs sell orders (red).

    8.3. Trade History widget (market trade history)

    The trade history widget:

    NEX-FS05-19: shall display all recently executed market taker trades of the selected market pair arranged in a list chronologically from most recent.

    • number of trades displayed may be based on time (past 12 hours)

    • number of trades displayed may be based on number of trades (past 100 trades)

    NEX-FS05-20: shall be updated in real-time.

    NEX-FS05-21: shall include the trade quantity (base asset), price (quote asset), and timestamp.

    NEX-FS05-22: the UI shall indicate if each market taker trade was a buy (green) or a sell (red) trade.

    NEX-FS05-23: the design shall indicate a buy or sell with icons, arrows, or other design elements as well as color to help facilitate universal design implementation.

    8.4. My Open Orders list (user open orders)

    The my open order list:

    NEX-FS05-24: shall include all of the user's currently open orders (regardless of selected market pair) with real-time data updates.

    NEX-FS05-25: shall allow the user to toggle viewing open orders for the selected market pair vs all their open orders.

    NEX-FS05-26: shall include the following data fields:

    • the date and time each order was opened.

    • the market pair

    • if the order is a buy or sell ("side")

    • the order type (limit, stop-limit, etc.)

    NEX-FS05-27: shall allow the user to sort the list by its data fields.

    NEX-FS05-28: shall allow the user to filter the list by its data fields.

    NEX-FS05-29: shall allow the user to cancel any open order, even if partially filled.

    • user control for this may be a button or context menu item.

    8.5. My Trade History list (user trade history)

    The my trade history list:

    NEX-FS05-30: shall include all of the user's completed trade activities (regardless of selected market pair) with real-time data updates.

    NEX-FS05-31: shall allow the user to toggle viewing their trade history for the selected market pair vs all their trade history.

    NEX-FS05-32: shall include the following data fields:

    • the date and time each order was opened.

    • the date and time each trade was completed (filled, partially filled, canceled).

    • the market pair

    • if the order was a buy or sell ("side")

    NEX-FS05-33: shall allow the user to sort the list by its data fields.

    NEX-FS05-34: shall allow the user to filter the list by its data fields.

    8.6. Buy / Sell controls

    The buy / sell controls:

    NEX-FS05-35: shall allow the user to select between buy and sell order forms, via tabs or other means, to only display one order form to the user at any given time. In other words, users should not see the buy order form and sell order form on the page at the same time. (See the latest design wire-frame in section 6 above for an example)

    NEX-FS05-36: shall allow the user to select among market, limit, and stop-limit order types.

    NEX-FS05-37: shall display the user’s amount of assets available for trading (quote asset if buying, base asset if selling).

    NEX-FS05-38: shall allow the user to input the order amount (quantity of base asset).

    NEX-FS05-39: shall provide convenience controls to the user which allows them to easily adjust the order amount automatically to any percentage of their assets available to trade. For example, supply a slider user input control which allows input from 0% to 100% of their available assets. This slider could even have nodes that allow easy selection of 0%, 25%, 50%, 75%, and 100%, but still allows any whole number percentage in between.

    NEX-FS05-40: shall, if the order type is a limit order, allow the user to input the limit price (quote asset).

    NEX-FS05-41: shall, in an “advanced” menu and if the order type is a limit or stop-limit order, allow the user to select a time in force policy option (only one):

    • good-til-canceled (default)

    • good-til-time

    • fill-or-kill

    • maker-or-cancel

    NEX-FS05-42: shall, in an “advanced” menu and if the order type is a limit or stop-limit order, allow the user to select an order execution option (only one):

    • post only

    • allow taker (default)

    NEX-FS05-43: shall, if the order type is a stop-limit order, allow the user to input the limit price (quote asset) and stop price (quote asset).

    NEX-FS05-44: shall, if the order type is a limit or stop-limit order, provide convenience controls to the user which allows them to automatically fill the price field with common strategic price points. For example, supply buttons which fill the price of a buy order at:

    • MID (at the current price)

    • BID (at the bid price)

    • 1% down (1% lower than the current price)

    • 5% down (5% lower than the current price)

    Another example, supply buttons which fill the price of a sell order at:

    • MID (at the current price)

    • ASK (at the ask price)

    • 1% up (1% higher than the current price)

    • 5% up (5% higher than the current price)

    NEX-FS05-45: shall display to the user the fees of the order, given the user’s inputs.

    NEX-FS05-46: shall, if the order is a market order, display to the user the estimated slippage of the order, given the user’s inputs and current market conditions.

    NEX-FS05-47: shall, if the order is a market order, display to the user the estimated average price (quote asset) of the order, given the user’s inputs and current market conditions.

    NEX-FS05-48: shall display to the user the total (quote asset) of the order, given the user’s inputs.

    NEX-FS05-49: shall allow the user to create an order if the following criteria are met:

    • the user is logged in.

    • the order form is filled in with (successfully) validated inputs.

    • the user has an appropriate amount of assets to satisfy the needs of the order.

    NEX-FS05-50: shall, when necessary, indicate to the user that the Peerplays network is not available for transactions.

    NEX-FS05-51: shall provide user controls (buttons) to initiate buy and sell orders.

    NEX-FS05-52: shall, once initiated by the user, summarize the order and ask the user for their confirmation to proceed.

    NEX-FS05-53: shall, once initiated or confirmed by the user, indicate order is in process. (loading spinner)

    NEX-FS05-54: shall, once confirmed by the user, submit the order to the Peerplays network.

    NEX-FS05-55: shall indicate to the user if the order was successfully (or unsuccessfully) initiated. This could be indicated with a message modal, UI elements like color and icons, etc.

    NEX-FS05-56: shall, if the order initiation process fails, explain to the user why the process failed and steps the user can take to fix the issue or learn more about the issue.

    NEX-FS05-57: shall, upon successful order initiation, add the order to the order book, update the user’s asset balances, add the order to the user’s open orders (for limit orders), etc.

    8.7. Price Chart

    The price chart:

    NEX-FS05-58: shall display a real-time chart of price data (quote asset) for the selected market.

    NEX-FS05-59: shall include standard price information for the currently selected chart timeframe:

    • open price

    • high price

    • low price

    • close price

    NEX-FS05-60: shall allow the selection of chart timeframe with standard timeframes:

    • 1 minute (M1)

    • 5 minutes (M5)

    • 15 minutes (M15)

    • 30 minutes (M30)

    NEX-FS05-61: shall allow the selection of chart historical range with standard ranges:

    • 4 hours (H4)

    • 1 day (D1)

    • 1 week (W1)

    • 1 month (M1)

    NEX-FS05-62: shall display time along the x-axis and price along the y-axis.

    NEX-FS05-63: shall allow for zooming the chart in and out.

    NEX-FS05-64: shall allow for adjusting the time scale and price scale.

    NEX-FS05-65: shall allow for dragging the chart to view historical prices.

    NEX-FS05-66: shall allow for viewing individual bar price data. For example, hovering the mouse on a historical price bar for its open, high, low, close, and volume info.

    NEX-FS05-67: shall allow the selection of chart type:

    • candlesticks

    • line chart

    • bar chart

    • may allow the selection of other chart types.

    NEX-FS05-68: shall allow for adding and removing technical indicators:

    • moving averages

    • may allow the selection of other technical indicators.

    8.8. Price / Volume statistics

    The price / volume statistics:

    NEX-FS05-69: shall display the last price (quote asset) for the selected market pair.

    NEX-FS05-70: last price display shall indicate if the last market taker trade was a buy (green) or sell (red).

    NEX-FS05-71: last price display shall indicate if the last market taker trade was a buy or sell with icons, arrows, or other design elements as well as color to help facilitate universal design implementation.

    NEX-FS05-72: shall display the last price in the user’s preferred currency (user settings).

    NEX-FS05-73: shall display the Bid and Ask prices (quote asset).

    NEX-FS05-74: shall display the 24-hour price change in terms of raw value and in percentage (quote asset).

    NEX-FS05-75: the 24-hour price change display, for both the raw value and percentage displays, shall indicate net positive (green), negative (red), or no change (neutral) using colors as well as signs (+ or -).

    NEX-FS05-76: shall display the 24-hour price range (high and low, in quote asset).

    NEX-FS05-77: shall display the 24-hour trade volume (quote asset).

    NEX-FS05-78: shall update the price and volume statistics in real-time based on current market conditions.

    NEX-FS05-79: each of the above displays (last price, ask, bid, 24h change, 24h high, 24h low, and 24h volume) shall be labeled.

    8.9. Market Selector

    The market selector:

    NEX-FS05-80: shall display the currently selected market (trading pair).

    NEX-FS05-81: shall allow the user to select any available market.

    NEX-FS05-82: shall allow the user to flip the base and quote assets of the trading pair. For example, users need to be able to change the selected market from BTC-ETH to ETH-BTC.

    NEX-FS05-83: shall, when a new market is selected by the user, update the page to reflect the selected market. (order book, history, asset balances, prices, etc.)

    8.10. Balances Display

    The balances display:

    NEX-FS05-84: shall display the user's asset balances available for trading relating to the currently selected market.

    NEX-FS05-85: shall update the available balances in the display in real-time when orders are created, filled, partially filled, canceled, or otherwise changed.

    8.11. Market Depth Chart

    The depth chart:

    NEX-FS05-86: shall update its values in real-time.

    NEX-FS05-87: shall display two area charts: one for all buy orders, and one for all sell orders.

    NEX-FS05-88: shall, for buy orders, represent the amount of base asset (Y-axis) on order at each amount of quote asset (X-axis) or lower.

    NEX-FS05-89: shall, for sell orders, represent the amount of base asset (Y-axis) on order at each amount of quote asset (X-axis) or higher.

    NEX-FS05-90: shall display the current market (mid market) price.

    NEX-FS05-91: shall allow the user to zoom the chart in and out.

    NEX-FS05-92: shall allow the user to hover on the chart to view more specific data:

    • amount on order

    • specific price and change from the mid market (percentage)

    • total price

    NEX-FS05-93: shall indicate buy orders (green) and sell orders (red).

    8.12. User Wallet Functions

    NEX-FS05-94: shall allow the user to initiate an asset deposit (for the quote or base asset).

    NEX-FS05-95: shall allow the user to initiate an asset withdraw (for the quote or base asset).

    8.13. Balances Display

    NEX-FS05-96: shall display the user’s amount of quote asset available to trade (not on orders, etc.)

    NEX-FS05-97: shall display the user’s amount of base asset available to trade (not on orders, etc.)

    NEX-FS05-98: shall display accurate information in real-time (updated with order activity.)

    9. Appendix A: Glossary

    Term
    Meaning

    10. Appendix B: Exchange Platforms Reference

    The following platforms have been reviewed to help guide the requirements of the Peerplays NEX market page offerings.

    My Trade History list (user trade/order fills history)

  • Buy and Sell Controls

  • Price Chart

  • Market Depth Chart

  • Price and Volume Statistics

  • Market Selector

  • User Wallet Functions

  • Balances Display

  • Order Types (and Time in Force Policies)

    • Market Orders

    • Limit Orders

      • Good Til Canceled

      • Good Til Time

      • Immediate-or-Cancel

      • Fill-or-Kill

      • Marker-or-Cancel

    • Stop-Limit Orders

  • User clicks “Place Order” button to initiate the market order.

  • The system displays a confirmation dialog to the user to ensure accuracy of the field inputs. This dialog also includes a password check as a reauthentication challenge to ensure the authenticity of the user.

  • User enters their master password and accepts the confirmation dialog.

  • The system clears the widget form fields.

  • The system initiates the market order on behalf of the user using the supplied field inputs.

  • The system notifies the user of the successful transaction.

  • The market order may be filled immediately, partially filled, or remain on the order book until filled or canceled. (See section 9. Appendix A: Glossary for more details on the order types.)

  • The order will appear in the order book and the open orders list. Any fulfilled trading (partial and/or full) will appear in the market and user trade history.

  • The user may cancel any remaining portion of the order from the open orders list.

  • Good Til Canceled - No additional options.

  • Good Til Time - User selects a "Cancel after" time-frame (1m, 5m, 15m, 1h, 6h, 1d, 1wk).

  • Immediate-or-Cancel - No additional options.

  • Fill-or-Kill - No additional options.

  • Maker-or-Cancel - No additional options.

  • The system displays to the user how much buying the asset will cost in terms of the selling asset and any applicable fees. (ex. buying 5 ETH @ 0.05 BTC each, Fee = 0.00125 BTC, Total = 0.25125 BTC)

  • User clicks “Place Order” button to initiate the limit order.

  • The system displays a confirmation dialog to the user to ensure accuracy of the field inputs. This dialog also includes a password check as a reauthentication challenge to ensure the authenticity of the user.

  • User enters their master password and accepts the confirmation dialog.

  • The system clears the widget form fields.

  • The system initiates the limit order on behalf of the user using the supplied field inputs.

  • The system notifies the user of the successful transaction.

  • The limit order may be filled immediately, partially filled, canceled, or remain on the order book until filled, canceled, or timed out depending on the advanced options specified. (See section 9. Appendix A: Glossary for more details on the order types.)

  • The order will appear in the order book and the open orders list. Any fulfilled trading (partial and/or full) will appear in the market and user trade history.

  • The user may cancel any remaining portion of the order from the open orders list.

  • The system displays to the user how much buying the asset will cost in terms of the selling asset and any applicable fees. (ex. buying 5 ETH @ 0.05 BTC each, Fee = 0.00125 BTC, Total = 0.25125 BTC)

  • User clicks “Place Order” button to initiate the stop-limit order.

  • The system displays a confirmation dialog to the user to ensure accuracy of the field inputs. This dialog also includes a password check as a reauthentication challenge to ensure the authenticity of the user.

  • User enters their master password and accepts the confirmation dialog.

  • The system clears the widget form fields.

  • The system initiates the stop-limit order on behalf of the user using the supplied field inputs.

  • The system notifies the user of the successful transaction.

  • The stop-limit order is triggered only when the stop price is crossed. At that point, a limit order will be created. (See section 9. Appendix A: Glossary for more details on the order types.)

  • The order will appear in the order book and the open orders list. Any fulfilled trading (partial and/or full) will appear in the market and user trade history.

  • The user may cancel any remaining portion of the order from the open orders list.

  • buy / sell order controls

  • time in force options

  • price chart

  • market depth chart

  • user wallet functions (deposit and withdraw)

  • user’s asset balances

  • user’s open orders

  • user’s order history (full and partial)

  • similar techniques for revealing content

    the order price (quote asset)

  • the total order quantity (base asset)

  • the filled order quantity value (base asset) and percentage of the order

  • the total price (quote asset)

  • the incurred fees

  • the order status (open, partially filled, pending if stop-limit stop price hasn't been met)

  • the expiry time (if applicable)

  • may display a separate list of filled quantities of a partially filled order.

  • the order type (market, limit, stop-limit, etc.)

  • the order price (quote asset)

  • the filled order quantity (base asset)

  • the total price (quote asset)

  • the incurred fees

  • the order status (partially filled, filled, canceled by user, canceled by system, expired)

  • may display a separate list of filled quantities of a partially filled order.

  • immediate-or-cancel

    10% down (10% lower than the current price)

    10% up (10% higher than the current price)

    current price (the executed price of the last market taker trade)

  • change from last bar on chart (value and percentage)

  • ask price

  • bid price

  • volume

  • 1 hour (H1)

  • 2 hours (H2)

  • 4 hours (H4)

  • 6 hours (H6)

  • 1 day (D1)

  • 1 week (W1)

  • 1 month (M1)

  • may allow the selection of other timeframes, preset or custom.

  • 3 months (M3)

  • 6 months (M6)

  • year to date (YTD)

  • 1 year (Y1)

  • 5 years (Y5)

  • all (ALL)

  • go to date (opens a modal to pick the date)

  • custom range (opens a modal to pick the range)

  • may allow the selection of other ranges, preset or custom.

  • A type of Limit order (the default limit order.) A Good Til Canceled Limit order will stay on the Order Book until it's 100% filled or canceled. Even if the order has partial fills, it will stay on the books.

    Good Til Time

    A type of Limit order. A Good Til Time Limit order will stay on the Order Book until it's 100% filled, canceled, or its specified duration has expired. Even if the order has partial fills, it will stay on the books until the expiration.

    Immediate-or-Cancel

    A type of Limit order. This order will be placed and if it is not immediately filled, it will automatically be canceled and removed from the order book. Note that it may be partially filled and then the unfilled portion is canceled.

    Fill-or-Kill

    A type of Limit order. This order will only complete if the entire amount can be matched. Partial matches are not filled with this order type and will not execute.

    Maker-or-Cancel

    A type of Limit order. It's the opposite of a Fill-or-Kill. This order will only be placed in the order book if the entire amount is not immediately filled. If any portion of this order can be immediately filled, it will be canceled.

    Stop-Limit Order

    Stop-Limit orders allow you to buy or sell when the price reaches a specified value, known as the stop price. This order type helps traders protect profits, limit losses, and initiate new positions. A Stop-Limit order will automatically post a limit order at the limit price when the stop price is triggered. Note that the stop order will be triggered instantly if the stop price specified was already met.

    Binance.us

  • FTX Exchange (US)

  • NEX-FS05-#

    NEX App Requirement - Market Page

    RS

    Requirements Specification

    FS

    Functional Specification

    UI

    User Interface

    Market Order

    Orders that are meant to execute as quickly as possible at the current market price. If you’re buying an asset, a market order will execute at whatever price the seller is asking. If you’re selling, a market order will execute at whatever the buyer is bidding. The biggest drawback of the market order is that you can’t specify the price of the trade. Market orders cannot be canceled because they are filled immediately. Market orders may be partially filled at several prices.

    Limit Order

    An order that sets the maximum or minimum price at which you are willing to buy or sell. The biggest advantage of the limit order is that you get to name your price, and if the asset reaches that price, the order will be filled.

    section 10. Appendix B: Exchange Platforms Reference
    DEX Hifi - All tabs with Market
    p2pb2b.io
    Gemini
    Coinbase Pro
    Coinbase Advanced

    Good Til Canceled