Story Points: 93
Average Velocity: 75
Story Points for Code Freeze: 108
Story Points for Technical Go-live: 383
Add atom subscription support over WebSockets to the Swift client library.
Component: swift library
As a library consumer I want to be able to subscribe to Atoms over WS So that I retrieve all Atoms for a given Address so that I can calculate Balance
Scenario 1: Subscribe to Atoms for Address
Given a Node When I call JSON-RPC method `Atoms.subscribe` Then I can read a stream of Atom updates and handle subscription
Scenario 2: Cancel Atom Subscription
Given a Node When I call JSON-RPC method `Atoms.cancel` with a `subscriptionId` Then I handle the the cancellation accordingly by calling `onComplete` on my Observables
Scenario 3: Subscribe using already used Subscriber Id
Given a Node and an existing subsription When I call JSON-RPC method `Atoms.subscribe` with the same subscriber id as before Then I can observe an Error message saying that said subscriber Id already is in use
A quick and dirty version of static sharding for the testing maximum throughput.
SETUP As a node runner, I want to define my shard range So that can maximize the earning potential of my node.
Scenario 1: There is a valid shard range Given that I have defined a shard range, That is smaller than 2^44, and that is bigger than 0, When I start the node, Then the Node will start successfully.
Scenario 2: There is a invalid shard range Given that I have defined a shard range, That is not a integer, or that is bigger than 2^44, or that is smaller than 0, When I start the node, Then the Node will give me an error.
BROADCAST OF SHARD RANGE As a node runner, I want my peers to know the shard range that I'm serving So that they can send me relevant atoms
Scenario 1: Given that I'm running a live node, When join the network / periodically, Then I want to include my shard range on peer discovery messages.
RECEIVAL OF SHARD RANGE As a node runner, I want my peers to be sending correct shard ranges to me, So that I can deliver relevant atoms to them.
Scenario 1: Peers are sending valid shard ranges Given that I am running a node, When a peer sends me a shard range, That is smaller than 2^44, and that is bigger than 0, Then I will continue talking to that node.
Scenario 3: Peers are sending valid shard ranges that are correct. Given that I am running a node, When a peer sends me a shard range, That is consistent with what I know about that node in my own ledger. Then I will continue talking to that node.
Get Tokens Balances For Address feature to the application layer of the Swift client library.
Component: swift library
As a library consumer I want to be able to use Application Layer Feature `Get Tokens Balances For Address` So that I can build a wallet which can update tokens balances
Scenario 0: Get Tokens Balance
Given API methods for Atom subscription for an address from Node When I call `Get Tokens Balances` for said address Then I see a map of balances per token for said address
Scenario 1: Same token balance from two Atom arrays with different ordering
Given Two arrays of the same Atoms but with different ordering When I calculated the token Balance for based on both arrays Then I see that they result in the same balance.
Scenario 2: Increase Balance of existing Token
Given an observable of Token Balances for an address When I receive more tokens of a type I already own Then I see that my balances updates
Scenario 3: Decrease Balance of existing Token
Given an observable of Token Balances for an address When I spend tokens of a type I already own Then I see that my balances updates
Scenario 4: Update Tokens Balance when receiving a new Token Type
Given an observable of Token Balances for an address When I receive tokens of a new token type Then I see that my balances updates
Settings screen to the POS (Point of Sale) Android application.
Component: payment card demo
As a POS operator I want a settings screen So that important information can only be edited if necessary by authorised personel
Scenario:Settings is opened, master pin is asked
Given POS app is launched and has been setup When when user navigates to the settings screen Then user is asked to input a master pin
Scenario: Master pin is asked and correctly input
Given user is asked to input his master pin When when user inputs correct pin Then the next action for the app, whether this is to navigate to the next screen or to confirm changes successfully happens
Scenario: Master pin is asked and incorrectly input
Given user is asked to input his master pin When when user inputs incorrect pin Then user is informed that it was an incorrect pin
Scenario: Changing Master pin
Given master pin has to change When when user navigates to do this Then the master pin is successfully changed
Scenario: Changing business name
Given business name has to change When when user navigates to do this Then the business name is successfully changed
Scenario: Changing payment address
Given address has to change When when user navigates to do this Then the payment address is successfully changed
Make the Swift client library available to the public in Radix's GitHub repository.
Component: swift library
Scenario 1: README contains brief Getting Started "teaser"
Given that I have access to the Swift lib repo When I read its README Then I see a "Getting started Teaser" section listing the coming Application Layer APIs, such as `createToken`, `transferToken` and `getTokenBalances`