Software installation (As a Node Operator, I want to install software from binary artifacts or a Docker image)
Software operation (As a Node Operator, I want to run software on Linux, MacOS, and in Docker)
Standalone mode (REPL and EVAL support) (As a dApp Developer, I want to interface with the Rholang interpreter and evaluate smart contracts independently from the blockchain)
Configuration (As a Node Operator, I want to have a default configuration and the ability to customize the configuration on the command line)
Monitoring (As a Node Operator, I want to monitor the performance, resource consumption, and status of my node)
Private key privacy (As a Node Operator, I do not want to expose my private wallet key on the command line)
Create purse (As a user, I want to be able to create a purse so that I can send tokens to another user)
Put tokens in a purse (As a user, I want to be able to put tokens in a purse so that I can send it to another user)
Send purse (As a user, I want to be able to send a purse to another user so that I can pay for goods/services rendered)
Receive purse (As a user, I want to be able to receive a purse from another user so that I can receive tokens for goods/services rendered)
Remove tokens from a purse (As a user, I want to be able to remove tokens from a purse to put in my wallet so that I can get paid for goods/services rendered)
Document Object Capabilities approach
Destroy purse (As a user, I want to be able to destroy a purse once it has finished the end to end transaction from one user to another, so that I don’t lose track of my empty purses)
Store transaction data (As a user, I want to be able to store transaction data on the blockchain so that it is available and accessible to users)
Pay rent on transaction data (As a user, I want to pay rent for my transaction data so that it stays available and accessible to users) [Nice to Have]
Store non-transaction data (As a user, I want to be able to store non-transaction data on the blockchain so that it is available and accessible to users)
Pay rent on non-transaction data (As a user, I want to pay rent for my non-transaction data so that it stays available and accessible to users)
Delete transaction/non-transaction data (As a user, I want to be able to delete my data from the blockchain so that no user has access to it any more)
Copy data (As a user, I want to be able to copy my data from the blockchain so that I don’t have to pay rent for it any more)
Rent Due (As a user, I want to be able to determine when rent is due on my stored data)
Offchain Storage (As a user, I want to securely store my heterogenous data off chain)
Rholang is the smart contract language of the RChain platform
Rholang evaluation happens in the node via the Rholang interpreter
Syntax errors (As a dApp developer, I want an error message when there are syntax errors)
Deploying contracts (As a dApp Developer, I want to be able to propose a contract to the network so that dApp Users can use my smart contract)
Updating/replacing contracts (As a dApp Developer, I want to be able to update or replace a contract on the network so that dApp Users are using the most recent contract)
Deleting/removing contracts (As a dApp Developer, I want to be able to delete or otherwise remove a contract so that dApp users can no longer use to the contract)
Nested contracts (As a dApp Developer, I want a smart contract to be able to call another smart contract so that I can take advantage of another contract’s functionality)
Contract Definition inside another contract - WIDE (Persisting contracts) - Nice to have (done?)
K-framework - formal verification
As a dApp developer who creates a smart contract that I would like to call multiple times, I register it in the registry and I want get back a URI in the deploy response as the end of the registration process.
Today getting the URI requires scraping from the log or listening for it on name. Possible because gRPC was listening for the call. Originally intended for debugging.
I want to pay Bob. I know his public key, but I don’t have the URI of his wallet.
IDEA wallet URI is based on public key
As a wallet application I need a way to recover my lost wallet
As a dApp developer, I need to be able to predict the unforgeable name.
As a dApp developer, I need documentation for how unforgeable names are generated
Current documentation not enough
NEED Venus redesign the wallet
CONCERN man in the middle attack - create an unforgeable name/URI offline and then deploy contract and start interacting with it, how do I know someone isn’t changing the facts in the middle or that someone else isn't interacting with the contract
As a dApp developer, I want to get Ethereum-style events and get stdout back in grpc response so that
I want to record a log of my CryptoKitties given a range of blockheights.
I want to listen on name given a certain depth
I want to monitor a contract without operating a node or making a call to a node. I want to subscribe to events via a gRPC response.
Current architecture requires you to have nodes that look at the state (not validating nodes).
IDEA some sort of channel where everything I send on the channel would return the results and deploy response. A function call.
As a dApp developer, I want to support binary files as part of deployments
As a dApp developer, I need to enhance EVAL and rchain.cloud
Comm Events: Maximum cost N REV/phlo (As a user, I want each comm event to cost a maximum of N REV, so that it is cost effective for me to transact business on the RChain blockchain)
As a dApp user, I want to know how many comm events per second to expect.
Function to determine how many comm events per second based on average size of comm events per domain. For transactions, it’s based on a single number. Wallets would be used for financial transactions. Note that for joins, the number will be less than max since they generate multple comm events.
As a dApp developer, I want to know the maximum size of data I can send per comm event since if I send too much and the comm event fails I will loss the phlo I sent.
Wallet2Wallet (or purse - how does this work?): Maximum cost N REV/phlo (As a user, I want each wallet transaction event to cost a maximum of N REV, so that it is cost effective for me to transact business on the RChain blockchain)
Storage costs: Maximum cost N REV per KB/MB? (As a user, I want to pay a maximum of N REV per KB/MB/? per month/year? for data stored on the blockchain)
Smart Contract execution (As a user, I want execution of a smart contract to cost a maximum of X, so that it is cost effective to deploy a contract on the network)
Nested Smart Contract execution (As a user, I want the calling contract to pay for the cost of the nested contract)
Ensuring that there is sufficient funds for calling contract (As a user, I want to make sure I have enough funds to cover the full cost of executing a smart contract and the nested contracts before beginning the transaction so that I can back out before committing the transaction)
As a Node operator, I want to know learn how to install, run, operate, and monitor my node.
As a Node validator, I want to know the minimum hardware and infrastructure requirements requirements, and how to participate as a validator.
As a dApp developer, I want to learn how to use and write smart contracts in Rholang.
As a dApp developer, I need to understand comm events and how to optimize them in my smart contracts
As a dApp developer, I need to know how to determine unforgeable names
As a dApp developer, I need to be able to get the UUID of the unforgeable names
A single source of indexed documentation.
Performance best practices.
As a dApp developer, I need to know how unforgeable names are generated
As a dApp developer, I need a reference for gRPC calls and a description of what they do
Arbitrary block sizes - Pawel, Sebatian, Kent and Greg
Limit on the number of comm events per FOR expression
Upper Bounds on match complexity and data size
How to count comm events when there is a join
Costs on matching, CPU usage, Storage and rent - Bind cpu costs and memory usage to contracts? Make it impossible to bring down server, stack overflow, consume all resources and memory
K of N contract - Completed?
Does end user need to enlist validator services?
How do you ask questions of the blockchain?
Listen for data at name
Spelunking through the blockchain
If you want to ask the current value of data in a wallet, how can you it if it requires Rholang?