Obtaining Data
Goals
- Provide mechanisms for users to obtain data from the Blockchain
Background and strategic fit
Both users and dApp Developers will want block data pertaining to their transactions and dApps
Assumptions
- This class of users do not want to run a validating node. They do not want to put up stake in the network.
- This class of users wants to run a distributed application, and obtain data from the application, so they can run analytics and mine the data from the blockchain.
Requirements
# | Title | User Story | Importance | Notes | Ticket |
---|---|---|---|---|---|
1 | Code Deployment | As a dApp developer, I get an answer back when the code is deployed if the code runs to completion, or an out of Phlo error | Must Have |
| |
2 | Transaction Receipts | As a dApp developer, when a deploy takes place with a name or set of names from my code api, I get to listen on the name for blocks. As a child shard, I need to listen for events taking place in the parent shard. As a shard validator, I need to listen for events taking place in my shard so that the sharding client can create the correct events in the parent shard. | Must Have |
|
|
3 | Exploratory Deployment | As a dApp developer, I want to learn about the state of specific processes.
| Must Have |
Option:
| |
4 | Streaming API |
| |||
5 | Full validation | As a dApp developer, I want all the block data for a shard. | Nice to have |
| |
6 | Read Only Node | As a dApp developer, I want all the block data for a shard | Must Have |
| Done. |
7 | Gossip all blocks | As a dApp developer, I want all the block data for a shard. | Nice to have |
| |
8 | Harden against DOS | As a Node Operator, I want to know that my node cannot be subject to DOS attack via these API's | Must Have |
| Out of scope of the platform |
User interaction and design
Will need to include the API design for retrieving data.
Here's an example of some JS code that uses Rchain-API to query for results: https://gist.github.com/JoshOrndorff/b0fe7aed93d16beabc2885484c6e8c54
Related Requirements
Requirement | Description | Priority | Notes | Status | |
---|---|---|---|---|---|
1 | Retrieve data asynchronously | As a mobile app developer, I need to send all my request asynchronously, so that my apps are fast. | Must Have |
| |
2 | Monitor Requests for Data | As a validator, I need to know how much of my node's resources are spent on data access requests so that I can set the prices for transactions properly. | Must Have |
| |
3 | Performance | In principle, A dApp developer will want to provide a user a transaction receipt with at least the same speed at which the transaction itself is processed. | Must Have |
| |
4 | Deployment ID | Each deployment has a userid and timestamp, userid (public key associated with private key used to sign transaction ) for that particular deployment by the client software. These keys should be looked up in the block store. | Must Have |
|
Traceability Matrix
Key | Summary | T | Created | Updated | Due | Assignee | Reporter | P | Status | Resolution |
---|---|---|---|---|---|---|---|---|---|---|
RCHAIN-2035 | API to adjust the difficulty of the puzzle for Client API's |
|
30/Jul/18 1:53 PM | 27/Dec/18 1:59 PM | Sebastian Bach | Medha Parlikar |
|
Done | Won't Do | |
RCHAIN-1679 | Update gRPC API for 'Listen on Name' to include a start and end parameter |
|
13/Sep/18 8:51 AM | 27/Dec/18 1:58 PM | Former user | Medha Parlikar |
|
Done | Done | |
RCHAIN-554 | Remove channel and quote from Proto |
|
11/Oct/18 9:49 AM | 27/Dec/18 1:29 PM | Kyle Butt | Medha Parlikar |
|
Done | Done | |
RCHAIN-539 | Update 'Listen on a Name' to include a range of block heights |
|
13/Sep/18 8:47 AM | 27/Dec/18 1:29 PM | Former user | Medha Parlikar |
|
Done | Done | |
RCHAIN-468 | Create GRPC API for subscribing to updates on a channel name |
|
18/Jun/18 11:45 AM | 27/Dec/18 1:17 PM | Former user | Medha Parlikar |
|
Done | Done | |
RCHAIN-445 | add ISpace#retrieve |
|
12/Jul/18 10:44 AM | 27/Dec/18 1:17 PM | Yaraslau Levashkevich | Henry Till |
|
Done | Done | |
RCHAIN-440 | RSpace: Include channel(s) hashes in {Produce,Consume}s in trace.Log |
|
04/Jul/18 12:29 AM | 27/Dec/18 1:17 PM | Yaraslau Levashkevich | Former user |
|
Done | Done | |
RCHAIN-435 | Add node command line client for listenForDataAtName and listenForContinuationAtName |
|
13/Aug/18 4:20 AM | 27/Dec/18 1:17 PM | Alexander Pyatin | Former user |
|
Done | Done | |
RCHAIN-369 | Create developer documentation for accessing blockchain data from the node |
|
26/Jun/18 2:49 PM | 27/Dec/18 1:02 PM | Medha Parlikar | Kelly Foster |
|
Done | Done |