User Stories w_ Iterations

ANATHA Purchase

0.* As an Anatha wallet holder, I want to be able to purchase ANATHA from within my wallet using other cryptos (BTC, ETH, USDT, DASH, LTC).

0.1* As an Anatha wallet holder that does not have any crypto to purchase ANATHA with, I want to be able to easily copy my wallet address for the desired crypto and transfer the desired funds into my Anatha wallet.

0.2* As an Anatha wallet holder that has a crypto balance in my wallet that I wish to buy ANATHA with, I want to be able to easily choose an amount of ANATHA I wish to buy, (I should see the price per ANATHA and total transaction fee), and then be able to purchase the ANATHA by clicking a button.

0.3 As an Anatha wallet user, I want to be able to create and share an invite code with a non-wallet user.

0.3.1* As an individual who is not yet an Anatha wallet user, I want to be able to click on an invite code that’s been shared with me. I should be able to easily set up a new wallet in a few simple steps.

0.4* When an individual buys Anatha from the wallet interface, the system should find the best price across all connected exchange partners and Anatha’s initial supply price, and execute the purchase for the lowest price possible. The purchaser should always see the Anatha initial supply price. If the system is able to execute the purchase for a lower price than the initial supply price, the system should send the margin to an admin-controlled buyback fund (see 6.1).

HRA Registration

1. As an Anatha wallet holder, I want to purchase an HRA by clicking on a “Buy HRA” button (I should always see this button, even if I already have an HRA). This button is only available to be clicked if I have at least 1 ANATHA in my wallet. If the button is not available (dimmed), I should see a tool tip telling me about the minimal balance requirement. After clicking the button, I want to be asked to provide my desired NAME.

1.1 When I as the end user enters a NAME (desired HRA), the system should immediately tell me whether or not that NAME is available.

1.1.1 If the NAME is available, I should see the NAME highlighted in green. The system should look up and refresh the NAME’s availability every five seconds. If the availability changes before I have purchased the NAME, I should see the name change to be highlighted in red and be asked to pick another NAME before the “Buy” button becomes accessible.

1.1.2 If the NAME is available for sale from another user and I have sufficient funds in my wallet, I should see the NAME highlighted in yellow with the price (after the NAME).

1.1.3 If the NAME is available for sale from another user and I do not have sufficient funds in my wallet, I should see the NAME highlighted in red with the price (after the NAME).

1.1.4 If the NAME is unavailable, I should see the NAME highlighted in red and be asked to pick another NAME before the “Buy” button becomes accessible.

1.1.5 As a user, if the NAME is available but I don’t click the "Buy" button before the timer expires, the NAME field on my screen should be cleared, and I will have to enter a NAME again.

1.2 As an end user with a newly registered HRA, I should be notified when the subscription for my HRA is nearing expiry. While I purchased a 1-year subscription, I should be made aware that my subscription may be a few days more or less than one year, depending on the network’s performance and average block time during my subscription period (+/- 3.5 days).

1.2.1 As an end user, I want to see a subscription countdown (days, hours) next to each of my HRAs (if I have multiple), on the HRA page of my wallet application.

1.2.2 As an end user, I also want to see a “Renew Subscription” button next to each countdown on my HRA page. This button is only available if I have at least 1 ANATHA in my wallet. If the button is not available (dimmed), I should see a tool tip telling me that about the minimal balance requirement.

1.2.3 As an end user, I should be notified in app when my subscription has 30 days remaining and 10 days remaining. At 5 days of subscription remaining, the in-app reminder I see should be persistent. If I renew my subscription before the last day of the cycle, the next year cycle I purchased should begin only after the current cycle ends. I can only purchase one year of subscriptions at a time.

1.3 After my HRA has been created, it should be automatically linked to my Anatha address. My Anatha address should be linked to the baseline addresses that get mapped automatically upon HRA registration (BTC, ETH, USDT, DASH, LTC).

1.4 As an end user with at least one HRA, when I link any external addresses and/or wallets to my Anatha wallet, these addresses should also be automatically linked to my HRA(s) via my Anatha address.

1.5 At any point during my ownership of an HRA, when I unlink or remove external addresses from my wallet interface, these addresses should also be unlinked from my HRA(s) via my Anatha address.

HRA Send and Receive

2. As an end user that wants to send cryptocurrency to an HRA using the Anatha wallet, I want to be able to send any cryptocurrency that is listed in the Wallet to any HRA.

2.1 As an end user that wants to send cryptocurrency to an HRA using the Anatha wallet, if the receiving party does not already have an address for the currency type I’m sending, the wallet should create an address for and register it under the receiver’s HRA.

2.1.1 If the receiving party does not have an address for the currency I wish to send, they should be notified in their application that I am sending them X currency and be asked to confirm that they’d like to register the address needed to receive the funds and pay the required transaction fee. This notification should remain valid for 10 minutes until it expires and the transaction bounces.

2.1.2 If the receiving party does not have an address for the currency I wish to send and fails to accept the transaction request in their application, as the sending party I should have an option to send the receiver an invite link that generates the address needed upon clicking the link. I should also be notified when the address is created and asked if I’d like to send the same amount to the same HRA.

2.2 As an end user who wishes to send some cryptocurrency to any HRA, I want to be given the option to use a standard crypto address in case the receiver does not have an HRA wallet functionality

2.2.1 When I press the “Send” button, I should see two fields: an HRA box and a crypto address box. When I type an HRA into the HRA box, the system should highlight the address in red or green, depending on whether or not the HRA is an active NAME in the HRA Registry. If the name isn’t active, it should highlight the NAME in red and not allow funds to be sent.

2.3 In addition to being able to easily share individual cryptocurrency addresses from my Anatha wallet, as an HRA end user, I also want to be able to easily share my HRA across chat platforms.

HRA Transfer and Delete

3. As an end user with an active HRA, I want to be able to transfer ownership to another Anatha wallet user, or delete it altogether. I-0

3.1 As an end user with an active HRA subscription(s), I want to be able to see and select a “Selling price” field next to each HRA I own. The default price should always be zero, which the platform interprets as “not for sale”. By entering an amount of ANATHA into this field, the HRA explorer will list my NAME as available for the price I define. I-0

3.1.1 If an end user selects to buy my HRA, I will receive a notification that ownership has been transferred for the asking price (wallet app may offer email/text notifications?). I-0, Notification Service

3.2 As an end user with an active HRA subscription, I want to be able to delete my HRA subscription. I should see a “delete” button next to each HRA on the HRA page of my wallet application. I-0

3.2.1 As a user attempting to delete my HRA, I should be asked to confirm before the NAME is deleted.

3.2.2 As a user attempting to delete my only HRA, I should be asked to confirm a third time, (and notified that this is my only HRA) before the NAME is deleted.

Validator HRA/Anatha Stories

4. As an end user with an Anatha wallet who wishes to become a validator, I must first purchase an HRA. Next, I want to be able to access a written guide that provides me the necessary steps I must take in order to become a validator for the network. I-1 at minimum

4.1 As an Anatha wallet who wishes to become a validator, I want to be able to access some information about my own and other validator’s performance from the block explorer, including: I-1

  • A list of all active validators

  • Each validator’s: I-1, SDK

    • Moniker

    • % self-delegated (always 100%)

    • Uptime

4.2 As an Anatha validator, all of my validator-related activities (bonding/un-bonding) will take place at the command-line level. I-1

4.3 As an Anatha validator who wishes to shut down my validator node, I should have a clear set of instructions and command functions allowing me to do so without penalty. I-1

4.4 As an individual who is not yet an active validator, if the maximum number of validators are already on the system, I would like to add myself to a queue that gets notified when a validator opening arises. I-4

Smart Contract User Stories

5. As the system of smart contracts for the Anatha ecosystem, we should work together to provide interoperability between HRA, master contract and treasury user and administrator functions. I-3

HRA Contract

5.1 When I receive a request to add a NAME to the database, I write a record to the database containing the NAME and Anatha address, attributing them to each other, and attributing all baseline Anatha wallet addresses to the NAME. I-0

5.1.1 As the HRA contract, when I receive a request to transfer a NAME, I should write two transactions, one unlinking the NAME from its current Anatha address (owner), and a second transaction linking the NAME to its new Anatha address. I-0

5.1.1.1 After transferring the NAME ownership to the new Anatha address, I should check whether or not the Anatha address has other NAMES associated with it. If it does, I don’t do anything. If the new NAME is the only NAME associated with the Anatha address, I must write another transaction, linking the Anatha address to all additional addresses present in the Anatha wallet. I-0

5.1.2 When I receive a request to delete a NAME, I should first write a transaction that unlinks the NAME from its Anatha address. I should then check whether or not the Anatha address has additional NAMES. I-0

5.1.2.1 If the Anatha address has additional NAMES, I should leave the Anatha address alone. If the Anatha address does not have additional NAMES, I should write a transaction unlinking the Anatha address from its other crypto addresses, effectively removing the Anatha address from the registry. I-0

5.1.3 As the HRA Contract, when I receive a request from an end user with an active HRA subscription to attribute an address, or a collection of addresses, to an Anatha address with an existing NAME, I should write a transaction linking the new address(es) to the Anatha address. I-0

5.1.4 As the HRA Contract, when I receive a request from an Anatha admin to create addresses for a new currency, I should write transactions linking addresses for the new currency to every Anatha address that has an active HRA subscription. I-0

5.1.5 As the HRA Contract, when I receive a notification that an HRA has expired, I should first write a transaction unlinking the NAME from the Anatha address to which it was tied. Next, I should check whether or not that Anatha address has any other NAMES currently associated with it. If it does, I should leave it alone. If it doesn’t, I should write a second transaction unlinking the Anatha address to its other attributed crypto addresses (removing the Anatha address from the Registry). I-0

Anatha Master Contract

5.2 As the Anatha Master Contract (AMC), I should be launched on the same day as the token generation event. This day will be referred to as “Launch Date”.

5.2.1 As the AMC, I execute daily distributions of ALL ANATHA received during any given 24h period following this procedure: I-3

  • 50% distributed equally to all Anatha addresses with an HRA on day 366 and then daily thereafter I-3

  • 25% to an Anatha controlled development fund (Anatha wallet) I-3, Needs clarification how to manage fund

  • 25% to security token holders as a dividend on a pro rata basis I-3, Needs clarification how to manage fund and if to implement the security token shares on-chain

5.2.2 As the AMC, I will hold all disbursements in escrow during the first 365 days following the Launch Date. The pool of ANATHA generated during this initial first year will be disbursed using the AMC’s standard disbursement procedure on day 366. I-3

5.2.3 As the AMC, I should calculate the rewards owed to each HRA’s Anatha address, and add the reward amount to the balance in the user’s interface each day. However, I should not actually send the ANATHA reward to the receiving party’s address until the receiving party claims their ANATHA rewards by selecting the “Claim Rewards” button within their wallet. The minimum reward balance that can be claimed is 1 ANATHA. I-3

5.2.4 The AMC monitors and classifies all network transactions into the following categories, and collects transaction fees for the transaction categories assigned to collect fees from the Anatha administrator control panel I-3

  • Service or product purchase

  • Wallet addition or removal

  • ANATHA wallet-wallet transactions

  • Social Transaction

5.2.5 As the AMC, when new HRA NAMES are written to the HRA Contract, I should wait 24 hours before making the new NAMES available to receive disbursements from the AMC pool distributed to HRA Registry. I-3

Treasury Contract

5.3.1 As the Treasury Contract, I should collect transaction fees (according to the fee specified in the Anatha Administrator dashboard control panel) for all transactions that fall subject to the fee. I can exclude certain transaction types if they are set as “Excluded” in the Admin’s control panel. I should send these fees, in full, to the AMC. I-3

5.3.1.1 As the Treasury Contract, I should be able to distribute transaction fees to multiple parties, as defined by Anatha administrators. I-3

5.3.2 As the Treasury Contract, I should create new tokens each day. Specifically, I should create 0.0028% of the current supply. I-1 includes inflatory minting but per block, advanced distributions are I-3

5.3.2.1 As the Treasury Contract, I should distribute 50% of the daily minted tokens to the Network Validator Reward Pool. I-3

5.3.2.2 As the Treasury Contract, I should distribute 50% of the daily minted tokens to the Anatha Master Contract. I-3

5.3.3 As the Treasury Contract, I should manage the NVRP. I should withhold all tokens collected in the NVRP for the first 365 days (from daily minted tokens). On day 366, I should identify the total number of validators that became active during days 1-365 and had at least one up-day during that period. I-3

Of this list, I should distribute the NVRP from days 1-365 to the list based on the number of up-days on a pro rata basis. I-3

E.g., Assume there are 1,000 validators who became active on the network and these 1,000 validators averaged 200 up-days during the initial year. If I, as an individual validator, had 287 up-days, I would receive 287/200,000 of the NVRP.

5.3.4 As the Treasury Contract, starting on day 366, I should distribute the contents of the NVRP to the list of active validators for that day. I-3

Anatha Management Stories

6.1 As an Anatha Management user, I should be able to control the ANATHA buyback system from a control panel within my Anatha administrator dashboard. I-2, Treasury Backend

6.1.1 From this control panel, I should be able to adjust the buyback threshold as a factor of the current token pool price (the buyback threshold should be set to 60% of the token pool price initially). I-2

6.1.2 As an Anatha Management user, I should be able to adjust the Maximum Daily Buyback Volume (MDBV); either as a factor of the historic daily average tokens sold, or as a pure integer. I-2

6.2 As an Anatha Management user, I should be able to control the ANATHA network transaction fee from a control panel within my Anatha administrator dashboard. I-2

6.2.1 From the control panel, I should be able to set the network-wide transaction fee (percentage-based) and the minimum. The fee will be initially set to 0.2% and the minimum will be initially set to 0.000002 ANATHA. I-2

6.3 If at any point, a new cryptocurrency becomes available in the Anatha wallet, as a Management user, I want to send a request to the HRA Contract that automatically creates wallet addresses for the new currency for all Anatha wallets with active HRA NAMES. I-4, needs spam protection mechanism to avoid free tx problems

Explorer Visitor Stories

7. As a generic visitor to the Anatha website, I should be able to access a block explorer interface that provides access to network data and certain visualizations. This interface should show me, a visitor, the same information that an Anatha end user with an HRA would see. There is no special access to the explorer interface. I-0 bare minimum information

7.1 As a visitor to the block explorer interface, I should be able to view some basic performance information, including:

  • ANATHA market price Out of scope unless listed on exchange

  • ANATHA sale price I-0

  • ANATHA market cap Out of scope unless listed on exchange

  • 24h volume Out of scope unless listed on exchange

  • Latest block and number of Tx in latest block

  • Wallet Addresses created I-0, Indexer with the limit that the user make its first tx

  • Total transactions I-0, Indexer

  • Network transactions over time (histogram) I-0, Indexer

  • A list of the latest blocks I-0, Indexer

  • A list of the latest transactions I-0, Indexer

I would also like to be able to see some information specific to the HRA Registry and the Anatha economy, including:

  • Number of active HRAs I-0, Indexer

  • HRA Registry size over time (histogram) I-0, Indexer

  • Total Funds received by the AMC/Treasury?, I-3

  • Daily funds received by the AMC over time (histogram) I-3

7.1.1 As a visitor to the explorer interface, I want to be able to select a button next to the list of latest blocks that shows me “All Blocks”. For each block, I want to be able to view the height, time, size, number of transactions, and date/time the block was created. I-0, Indexer, Blockchan Explorer

7.1.2 As a visitor to the explorer interface, I want to be able to select a button next to the list of latest transactions that shows me “All Transactions”. I-0, Indexer, Blockchain Explorer

7.1.2.1 For each transaction I wish to view, I want to see the Anatha transaction fee that the transaction generated, the sending address, the receiving address, and the amount transferred. I also want to be able to toggle between the base 56 vs. HRA address in list view (when the Anatha address has a linked HRA).I-0

7.1.3 As a visitor to the explorer interface, I want to be able to select a button next to the list of wallet address created that shows me “All Wallet Addresses”. I want to be able to search for a wallet address by entering text into a search bar. From the results, I want to be able to view the transactional data for each address. I-0, Indexer

7.1.4 As a visitor to the explorer interface, I want to be able to search for an HRA. I should be able to toggle the search results between displaying as HRA vs. base 56 address. I-0, Indexer

Savings System (formerly Delegation) I-4

8.1 As an HRA holder on the ANATHA network with extra ANATHA in my wallet, I want to place some of my ANATHA in the “System Savings Account” so that I can earn extra ANATHA each day that I leave the tokens on deposit.

8.1.1 Within my wallet application, I will have a way to move tokens between my active and saving “accounts” (akin to, but different from delegation)

8.1.2 I only receive “interest” on tokens that have been in the saving account for at least 24 hours at the time of the daily distribution.

8.1.3 I can move tokens from savings to active at any time.

8.1.4 I can never place more than (X%) of the total tokens in my account into savings. X is set by the network administrators, initial default is 25%.

8.2 As the Validator Pool Management System, I want to distribute the appropriate amount of interest to each account during each daily inflation minting process so that both validators and “savers” are compensated.

8.2.1 Each Day, the minted tokens destined for the validator pool are divided by the total number of tokens staked by validators or sitting in Savings Mode for at least 24 hours prior to the minting event. This will provide an amount of ANATHA to pay per “staked or saved” token - the Payrate.

8.2.2 Savers will receive (X)% of the Payrate per qualified token held in Savings. X is set by the network administrators, initial default is 90%.

8.2.3 Validators as a group receive the full Payrate for their staked tokens as well as (1-X)% of the Payrate for all “saved” tokens. This is the ValidatorPayPool

8.2.4 Active Producing Validators receive an equal portion of 90% of the ValidatorPayPool.

8.2.5 Active Non-Producing Validators receive an equal portion of the remainder of the ValidatorPayPool.

< Appendix A >

Optional Additional Features

Transaction Fee Calculator (ratified for MVP)

As an end user who wishes to send a certain cryptocurrency to an HRA from within the Anatha wallet application, I want to see an option in the user interface that allows me to calculate the transaction amount based on the amount the receiving party will get, factoring in the transaction fee.

E.g., If I need to pay @carolinajoe 4 ANATHA, when I type in 4 ANATHA, I should be notified that @carolinejoe will receive 3.992 ANATHA. I should have the option to type into the “@carolinajoe will receive ____ ANATHA” field to set the transaction amount.

Network Validator Staking Dashboard OOS

A web application that allows qualified HRA holders to participate as validators on the Anatha network. The Validator dashboard provides the following functionalities:

  • Authentication using CLI, Ledger, Mnemonic or private key

  • Individual validator statistics for authenticated users

    • Individuals may have more than one validator

  • Public, cumulative validator statistics for generic visitors

HRA VerificationOOS

2. As an end user with an active HRA, I want to be able to verify my HRA by completing two levels of identity verification. I should be able to complete these verifications for free, and by simply clicking a button from the HRA account page in my wallet application.

2.1 As an end user with an active HRA, I want to be able to choose a KYC verification for my HRA. Completing the KYC verification successfully should give me a badge (single blue check mark) that displays for all HRA holders transacting with my HRA from within the Anatha wallet application.

2.1.1 Having selected the “Begin KYC verification” button from my HRA account page, I should be prompted to submit my email address and phone number and then select a button “Begin Verification”. After selecting this button, I should be prompted with instructions telling me to check my email and SMS for verification links.

2.1.2 As I click on both my verification links (phone and email), I should see my phone number and email address turn green. Once both have been verified, I should see a “Finish” button.

2.1.3 After selecting the “Finish” button, I should be returned to my HRA account page, where I can now see my verification badge next to my HRA.

2.2 As an end user with an active HRA, I also want to be able to choose an IDV verification. Completing the IDV verification should give me a badge (double blue check mark) that displays for all HRA holders transacting with my HRA from within the Anatha wallet application.

2.2.1 Having selected the “Begin IDV Verification”, if I have not completed the KYC verification, the system should send me through the 2.1.1 and 2.1.2 steps before continuing.

2.2.2 Having completed KYC, the interface should prompt me with instructions for uploading properly formatted images of my identity document. After I’ve uploaded my image files, the system should allow me to continue by selecting a “Next” button.

2.2.2.1 After the user submits their identity documents, the system should verify them via API connection with a third party verifier.

2.2.2.1.1 If the third party provides a successful verification, the user should be prompted to continue to the next step.

2.2.2.1.2 If the third party fails to verify the identity document, the system should return the user to the file upload page, along with any information about why the previous verification failed, if provided by the third party.

2.2.3 After my identity documents are successfully verified, I should be prompted to complete a liveness test. The screen should provide me with instructions for recording a video selfie. The system should then submit the liveness video to a third party via API for verification.

2.2.2.1.1 If the third party provides a successful verification, the user should be prompted to continue to the next step.

2.2.2.1.2 If the third party fails to verify the liveness video, the system should return the user to the video capture page, along with any information about why the previous verification failed, if provided by the third party.

2.2.4 After my identity documents and liveness video have both been verified, I should see both of all of my verified attributes on a screen in green (phone, email, identity document, liveness) and then be prompted to click a “Finish” button, which returns me to my HRA account page and displays my new badge next to my HRA.

2.2 As an end user, I want to send some crypto to another user during a chat. I should be able to click on a “Send” button from within the chat. When I click on this button, I should be prompted to specify the desired amount and currency, but the HRA name should be pre-filled (based on the open chat).

2.4 As an end user who wishes to send a certain cryptocurrency to an HRA from within the Anatha wallet application, I want to see an option in the user interface that allows me to calculate the transaction amount based on the amount the receiving party will get, factoring in the transaction fee.

E.g., If I need to pay @carolinajoe 4 ANATHA, when I type in 4 ANATHA, I should be notified that @carolinejoe will receive 3.992 ANATHA. I should have the option to type into the “@carolinajoe will receive ____ ANATHA” field to set the transaction amount.

6.4 As an Anatha Management user, I should be able to set the conversion margin that gets added to crypto-crypto conversions initiated by users.

6.5 As an Anatha Management user, I should be able to add and remove third party crypto-exchange partners.

6.6 As an Anatha Management user, I should be able to add and remove third party buyback partners.

< Appendix B >

“Cool Stuff” Wish List

5.3.2 As the Treasury Contract, I should manage the revenue from initial supply ANATHA purchases as a treasury pool (Buyback Pool) that are used to purchase ANATHA via a Buyback system. I-2, Orders can be executed by Treasury Backend but need to have external integrations for other cryptocurrency transfer. For example if Alice sells back 10 Anatha and specifies she wants ETH. She effectively puts it in the order queue in the Treasury module from where the Treasury backend can detect and execute the order by first fulfilling the order and then sending her calculated ETH to her specified address.

5.3.2.1 As the Treasury Contract, in addition to revenue from initial supply ANATHA purchases, I should also collect the margins generated from crypto-crypto conversions that take place in-app and store them in the same Buyback Pool. OOS

5.3.3 The treasury contract should purchase ANATHA tokens according to the buyback threshold and MDBV defined by Anatha Management in the admin control panel, and using the funds from the Margin Pool. Similar to 5.3.2

5.3.3.1 The treasury contract should purchase ANATHA from the API-connected third party with the lowest available. An API should be present to aggregate all connected token suppliers and find the best price at any given time of day. OOS,

5.3.3.2 Each time the treasury executes an ANATHA purchase, it should send the ANATHA purchased (in full) to the initial Anatha sale pool, and the pool supply should be adjusted according to new ANATHA whenever added by the treasury contract. I-2

Last updated