Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moonstream: Basic functionality #5

Closed
7 of 11 tasks
zomglings opened this issue Jul 20, 2021 · 8 comments
Closed
7 of 11 tasks

Moonstream: Basic functionality #5

zomglings opened this issue Jul 20, 2021 · 8 comments
Assignees

Comments

@zomglings
Copy link
Contributor

zomglings commented Jul 20, 2021

Features:

Post-alpha features:

  • Subscriptions - Users should be able to create ethereum_blockchain and ethereum_txpool subscriptions.
  • Subscriptions - Users should be able to subscribe to streams using stripe. (we will give a 30% discount for alpha users)
  • Shortcuts to add subscriptions to transaction pool data for particular Ethereum contracts/ecosystems.
  • Raw data from Ethereum transaction pool (ethereum_txpool).
  • Ability to give users free subscriptions (to ethereum_txpool streams) from a CLI. This will be useful for onboarding alpha customers.
  • Group subscriptions - users should be able to create teams and the whole team will see the same event stream.
@zomglings
Copy link
Contributor Author

zomglings commented Jul 20, 2021

Launch ready by: August 2, 2021

@zomglings
Copy link
Contributor Author

zomglings commented Jul 20, 2021

Ethereum blockchain crawl can use the rubric set by our ethereum-exploration repo.

Spire API must allow callers to specify created_at when they create an entry.

Spire issue: bugout-dev/spire#6

@zomglings
Copy link
Contributor Author

When a user creates a subscription for a new contract, the state of the subscription should be "populating". When we crawl all the data for that contract up to the current transaction block, we can set the state of the subscription to "active".

The frontend should distinguish between these states to manage user expectations.

@zomglings
Copy link
Contributor Author

Something we should think about for post-alpha: How should we handle contracts that are only part of inactive subscriptions?

Should we stop collecting information about them from mined transaction blocks?

Most likely we wouldn't collect information about them from transaction pool.

@zomglings
Copy link
Contributor Author

When we are crawling blockchain data, we will start at the current transaction block and work our way back to genesis block so that we can show live events to users.

@zomglings
Copy link
Contributor Author

Riskiest feature is smart contract context. We will need information about the smart contract on which operations are being executed in order to display the context correctly. There are a few different ways we can get the smart contract code:

  1. Crawl public smart contracts from GitHub
  2. Ask the user to paste the smart contract code in the frontend.

When Moonstream is more mature, we should allow all of these. For now, we will probably set up a crawl or at least crawl Open Zeppelin contracts. The context will have to be generated by the API, and the frontend will only handle display logic (React component).

It may take us some time to decide the right architecture for crawling the data and caching it/storing it. This may not make it into Alpha.

@zomglings
Copy link
Contributor Author

Crawling blockchain data:

We should probably store all transaction information inside a database so that we don't have to repeat crawls over and over again.

This will require some infrastructure work - we should set up a Postgres instance with a LOT of storage (~10TB?) but with cheap storage class - HDD should be okay.

@zomglings zomglings self-assigned this Jul 20, 2021
@zomglings zomglings added this to the Moonstream Alpha milestone Jul 20, 2021
@zomglings
Copy link
Contributor Author

Moonstream discord server is up. Invitation link

@zomglings zomglings changed the title Moonstream: Alpha - Launch plan Moonstream: Basic functionality Aug 3, 2021
@zomglings zomglings removed this from the Moonstream Alpha milestone Aug 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant