Specifications

1.1. Ethereal: Main page

1.1.1. Summary

As a Guest I want to view the main page so that I could navigate through the features of Etherealapp.

1.1.2. Acceptance criteria

1.1.2.1. A user should be able to navigate to Etherealapplication from the Ethereal(Ethereal) website.

1.1.2.2. The main page of Etherealapplication should include the following elements in the header:

○ EtherealNetwork logo

○ Bridges links dropdown menu

○ Network selector dropdown menu

○ Buy crypto button

○ Connect Wallet button

○ Language selector button

1.1.2.3. The swap widget should include:

○ Refresh button

○ Settings button

○ Source token selector

○ Amount input field

○ Target token selector

○ Swap protocol selector

○ Action buttons

○ Swap rate and route indicator

1.1.3. UI Design

1.2. EtherealEthereal: Connect a wallet

1.2.1. Summary

As a User I want to connect a wallet so that I could swap tokens on my existing crypto wallet.

1.2.2. Acceptance criteria

1.2.2.1. Once a user clicks “Connect wallet” button the Connect wallet widget is displayed.

1.2.2.2. A user should be able to:

○ Open Terms of service and Privacy policy pages

○ Check the “I read and accept” confirmation checkbox

○ Choose a network

○ Select a wallet: Metamask or WalletConnect

1.2.2.3. Once a user selects a wallet the corresponding web3 app widget is displayed.

1.2.2.4. A user selects an account and confirms the connection

1.2.2.5. Once the connection is successful the account alias and wallet balance is displayed in the header.

1.2.3. UI Design

1.3. Ethereal: Buy cryptocurrency with a credit card

1.3.1. Summary

As a User I want to buy cryptocurrency with a credit card so that I could convert fiat to crypto.

1.3.2. Acceptance criteria

1.3.2.1. Upon clicking on the Buy Crypto button a user should be redirected to MoonPay payment gateway (https://buy.moonpay.io/).

1.3.2.2. The payment gateway allows a user to select a cryptocurrency from a list, fill in the target wallet address and buy the selected cryptocurrency with a credit card.

1.3.3. UI Design

1.4. Ethereal: Transfer coins via bridges

1.4.1. Summary

As a User I want to transfer coins via bridges so that I could move tokens from one blockchain to another.

1.4.2. Acceptance criteria

1.4.2.1. A user should be able to move supported tokens between blockchains using bridges.

1.4.2.2. Upon clicking on an item in the Bridges dropdown menu a webpage of the corresponding bridge is open in a new browser tab.

1.4.2.3. The list of bridges:

https://www.binance.org/en/bridge

https://wallet.matic.network/bridge/

https://gateway.optimism.io/

https://bridge.arbitrum.io/

1.4.3. UI Design

1.5. Ethereal: Select the chain for swap

1.5.1. Summary

As a User I want to select the chain for swap so that I could choose the blockchain where I will perform the swap.

1.5.2. Acceptance criteria

1.5.2.1. A user should be able to select a network where they want to swap tokens.

1.5.2.2. The selection of a network affects the list of available tokens and protocols in the Swap parameters widget.

1.5.2.3. The system should identify if the connected wallet is configured for the selected network and prompt a user to change wallet settings if the wallet network is different.

1.5.3. UI Design

1.6. Ethereal: Set the swap parameters

1.6.1. Summary

As a User I want to set the swap parameters so that I could define the direction and the amount of the swap

1.6.2. Acceptance criteria

1.6.2.1. A user should be able to select the source token from the dropdown list and the amount to swap.

1.6.2.2. The system should validate if the amount of selected token on the connected wallet of a user is sufficient.

1.6.2.3. The system should display the approximate value of defined amount of selected tokens calculated in USD.

1.6.2.4. A user should be able to select the target token from the dropdown list.

1.6.2.5. A user should be able to view and select available swap protocols to be used for the swap.

1.6.2.6. Each swap protocol item should include the name of the protocol, amount to be received, the cost of transaction and total amount of the swap operation.

1.6.3. UI Design

1.7. Ethereal: View the details of the deal (rate, fees, route)

1.7.1. Summary

As a User I want to view the details of the deal (rate, fees, route) so that I could understand the full cost of the swap

1.7.2. Acceptance criteria

1.7.2.1. Once swap parameters are set a user should be able to view the conversion rate and the conversion route.

1.7.3. UI Design

1.8. Ethereal: Set additional parameters (gas limit, slippage)

1.8.1. Summary

As a User I want to set additional parameters (gas limit, slippage) so that I could optimize transaction cost and rate

1.8.2. Acceptance criteria

1.8.2.1. Upon clicking the Swap settings button the advanced swap parameters widget is open

1.8.2.2. A user should be able to set the Gas limit price for the transaction:

○ One of predefined values (Low, Medium or High)

○ Custom value

1.8.2.3. A user should be able to set the Slippage tolerance value for the transaction:

○ One of predefined values

○ Custom value

1.8.2.4. Transaction is not executed if it is not possible to complete the transaction within gas price and slippage tolerance limits defined by a user.

1.8.3. UI Design

1.9. Ethereal: Confirm the deal

1.9.1. Summary

As a User I want to confirm the deal so that I could initiate the swap transaction

1.9.2. Acceptance criteria

1.9.2.1. After setting all the parameters of the swap a user should be able to initiate the swap execution by clicking on the Swap Currency button.

1.9.2.2. Upon clicking on the Swap Currency button the linked wallet application should be triggered and open for the transaction confirmation.

1.9.2.3. If the wallet is not connected to the application, clicking on the Swap Currency button (or if a user clicks Connect Wallet button) should open the Connect Wallet widget.

1.9.3. UI Design

1.10. EtherealWallet: Home page

1.10.1. Summary

As a Guest I want to view the home page so that I could navigate through the features of the EtherealWallet app

1.10.2. Acceptance criteria

1.10.2.1. A user should be able to open the EtherealWallet application from the website of EtherealNetwork.

1.10.2.2. EtherealWallet app should include the sidebar menu and main content area.

1.10.2.3. Sidebar menu should include the following clickable elements:

○ Ethereallogo - redirecting to the main page of Ethereal

○ Home - redirecting to the home page of EtherealWallet app

○ Wallet - redirecting to the Wallet page

○ Staking - redirecting to the Staking page

○ Governance - redirecting to the Governance page

○ Swap - redirecting to Etherealapplication

1.10.2.4. The main content area should include:

○ Action buttons (Connect wallet, Create wallet, Restore wallet)

○ General statistics of all wallets within the account (Total balance, Available balance)

○ The list of wallets associated with the account

○ Details of each wallet (Name, Address, Type, Total balance, Available balance)

1.10.3. UI Design

1.11. EtherealWallet: Connect Metamask

1.11.1. Summary

As a User I want to connect metamask so that I could use funds from my Metamask wallet inside the EtherealWallet app

1.11.2. Acceptance criteria

1.11.2.1. A user should be able to connect their Metamask wallet to the EtherealWallet application.

1.11.2.2. Once connected, the user's Metamask wallet is displayed in the list of wallets inside the EtherealWallet application.

1.12. EtherealWallet: Create a new wallet

1.12.1. Summary

As a User I want to create a new wallet so that I could generate a new key pair for transactions

1.12.2. Acceptance criteria

1.12.2.1. A user should be able to create a wallet by clicking on the Create wallet button at the home page of EtherealWallet application.

1.12.2.2. The flow of creating a wallet consists of four steps:

○ Step 1 - a user creates a password for the wallet and downloads keystore file to their local machine

○ Step 2 - a seed phrase is displayed. At this step a user should also be available to view the wallet’s private key

○ Step 3 - a seed phrase confirmation check. At this step a user should confirm the seed phrase displayed at Step 2 by clicking the words in the correct order.

○ Step 4 - the confirmation message is displayed. Upon clicking the Access wallet button a user should be redirected to the Wallet page of the newly created wallet.

1.12.3. UI Design

1.13. EtherealWallet: Restore wallet

1.13.1. Summary

As a User I want to restore wallet so that I could recover my funds

1.13.2. Acceptance criteria

1.13.2.1. Upon clicking on the Restore wallet button from the home page of EtherealWallet application the Restore wallet widget is displayed.

1.13.2.2. The Restore wallet widget should provide three options for wallet recovery:

○ Uploading keystore file and providing a password to it

○ Entering the mnemonic phrase

○ Entering the private key of the wallet

1.13.2.3. Once wallet recovery is successful, a user should be redirected to the Wallet page of the recovered wallet

1.13.3. UI Design

1.14. EtherealWallet: Edit wallet settings

1.14.1. Summary

As a User I want to edit wallet settings so that I could personalize my wallets in EtherealWallet app

1.14.2. Acceptance criteria

1.14.2.1. A user should be able to access wallet settings from the wallet item in the list of wallets at the home page of EtherealWallet application or from a wallet page by clicking the Edit button (pencil icon).

1.14.2.2. Once the Edit button is clicked, the Wallet Settings widget is displayed.

1.14.2.3. In the Wallet Settings widget a user should be able to:

○ View wallet address

○ Copy wallet address

○ Show QR code with wallet address

○ View wallet type

○ View and edit wallet display name

○ View and edit the order of wallet display in the list of wallets

○ Remove wallet

○ Save changes

1.14.3. UI Design

1.15. EtherealWallet: Copy wallet address

1.15.1. Summary

As a User I want to copy wallet address so that I could add my wallet address to a clipboard with a single click

1.15.2. Acceptance criteria

1.15.2.1. A user should be able to copy wallet address to the clipboard by clicking the Copy button from the wallet item in the list of wallets at the home page of EtherealWallet application, or from Wallet Settings widget, or from a wallet page.

1.15.3. UI Design

1.16. EtherealWallet: Show QR code with wallet address

1.16.1. Summary

As a User I want to show qr code with wallet address so that I could share my wallet address for scanning with a camera

1.16.2. Acceptance criteria

1.16.2.1. A user should be able to display a wallet address with QR-code for scanning by clicking the QR-code button from the Wallet Settings widget, or from a wallet page.

1.16.3. UI Design

1.17. EtherealWallet: Remove wallet

1.17.1. Summary

As a User I want to delete wallet so that I could remove a wallet from my EtherealWallet app

1.17.2. Acceptance criteria

1.17.2.1. A user should be able to remove a wallet from the list of wallets by clicking the Remove wallet button from the Wallet Settings widget.

1.17.2.2. Once the Remove wallet button is clicked, the confirmation widget is displayed.

1.17.2.3. Upon clicking the Remove button at the confirmation widget, the wallet is removed from the list of wallets.

1.17.2.4. A user should be able to access the removed wallet by completing the Restore wallet operation.

1.17.3. UI Design

1.18. EtherealWallet: View the history of transactions

1.18.1. Summary

As a User I want to view the history of transactions so that I could see all the incoming and outgoing transactions of my wallet

1.18.2. Acceptance criteria

1.18.2.1. A user should be able to view the list of transactions for the wallet at the wallet page including:

○ Transaction address

○ Timestamp

○ Address of the counterparty

○ Received/sent amount

1.18.3. UI Design

1.19. EtherealWallet: View the list of assets

1.19.1. Summary

As a User I want to view the list of assets so that I could see all tokens in my wallet

1.19.2. Acceptance criteria

1.19.2.1. A user should be able to view the list of assets on their wallet including:

○ The name of an asset

○ Available amount

○ Deposited amount

○ Borrowed amount

1.19.3. UI Design

1.20. EtherealWallet: Send assets

1.20.1. Summary

As a User I want to send assets so that I could transfer tokens to another wallet address

1.20.2. Acceptance criteria

1.20.2.1. A user should be able to send funds from their wallet to another wallet address.

1.20.2.2. Once a user clicks on the Send button from the wallet page, the Send assets widget is displayed.

1.20.2.3. The flow of sending assets from EtherealWallet application consists of three steps:

○ Step 1 - select the destination network (Ethereal, Ethereum or Binance)

○ Step 2 - Enter the amount to be sent, enter recipient’s wallet address and memo. A user should not be able to enter the amount exceeding the total wallet holdings.

○ Review and confirm the details of the transaction

1.20.2.4. Once the transaction is confirmed it should be sent to a validator node for processing.

1.20.2.5. Once the transaction is accepted by a validator it appears on the list of transactions at the wallet page.

1.20.3. UI Design

1.21. EtherealWallet: Receive assets

1.21.1. Summary

As a User I want to receive assets so that I could get tokens to my wallet address

1.21.2. Acceptance criteria

1.21.3. UI Design

1.22. EtherealWallet: Stake Etherealand get a reward

1.22.1. Summary

As a User I want to stake Etherealso that I could get rewards for securing the network

1.22.2. Acceptance criteria

1.22.2.1. A user should be able to stake Etherealfor the reward.

1.22.2.2. There should be two options for staking:

○ Running a validator node

○ Delegation

1.22.2.3. Delegation staking page is open upon clicking Staking in the sidebar menu.

1.22.2.4. A user should be able to view active delegations per selected wallet and for all wallets on separate tabs.

1.22.2.5. Each delegation includes the details: Delegation time, Validator name, Delegated amount.

1.22.2.6. Upon click on Add delegation button the delegation widget is displayed.

1.22.2.7. The delegation flow includes two steps:

○ Step 1 - enter delegation amount and select a validator from the list

○ Step 2 - review details and confirm delegation

1.22.2.8. Once confirmed, the delegation is displayed on the list of delegations.

1.22.2.9. The reward is paid to the user's account proportionally to the amount delegated to the given validator for each block mined by this validator.

1.22.3. UI Design

1.23. EtherealWallet: Vote on governance proposals

1.23.1. Summary

As a User I want to vote on governance proposals so that I could express my opinion on network changes

1.23.2. Acceptance criteria

1.23.2.1. A user should be able to vote for the proposals suggested by validators from the Governance page that should be accessible under by clicking the Governance button in the sidebar menu.

1.23.2.2. The Governance page should include the list of proposals with the following fields:

○ ID/Name of a proposals

○ Start/End dates of voting

○ User’s votes

○ Votes rate

○ Winner proposal

○ Proposal status

○ Details button

1.23.2.3. By clicking Details button a user should be able to access the page with details of the selected proposal that include:

○ Proposal’s name, description and address

○ Current voting stats

○ Voting controls

1.23.2.4. To vote on proposals a user should delegate their stake to a validator.

1.23.3. UI Design

1.24. EtherealNetwork: Run a validator node

1.24.1. Summary

As a Validator I want to run a validator node so that I could get rewards for validating transactions

1.24.2. Acceptance criteria

1.24.2.1. To earn additional fees for validating transactions on chain a user should run a full validator node.

1.24.2.2. Validator’s account should meet requirements of Etherealamount on the wallet.

1.24.2.3. The flow to setup a full validator node:

○ Launch Cloud instance that meets recommended requirements

○ Install EtherealEtherealNetwork build

○ Create validator wallet

○ Fund validator wallet

○ Register Validator on-chain

○ Create a validator key

○ Run a node

1.24.2.4. Detailed description of the installation process can be found by the following reference.

1.25. EtherealNetwork: Run a read-only node

1.25.1. Summary

As a User I want to run a read-only node so that I could read on-chain data in real time

1.25.2. Acceptance criteria

1.25.2.1. To read data from the network without the ability to validate transactions and earn validator fees a user should be able to run a read-only node.

1.25.2.2. The flow to setup a read-only node:

○ Launch Cloud instance that meets recommended requirements

○ Install EtherealNetwork build

1.25.2.3. Detailed description of the installation process can be found by the following reference.

1.26. EtherealNetwork: Deploy a Solidity smart contract

1.26.1. Summary

As a User I want to deploy a solidity smart contract so that I could run ERC-20 or ERC-721 smart contracts on EtherealNetwork

1.26.2. Acceptance criteria

1.26.2.1. To deploy a smart contract, a user sends a transaction to the EtherealNetwork containing smart contract’s bytecode without specifying any recipients.

1.26.2.2. After the contract is deployed, it will be available to all users of the EtherealNetwork.

1.26.2.3. Smart contracts should have an EtherealNetwork address like other accounts.

1.26.2.4. Detailed description of the installation process can be found by the following reference.

1.27. EtherealNetwork: Create a fixed-cap asset

1.27.1. Summary

As a User I want to create a fixed-cap asset so that I could issue a token with fixed supply

Last updated