moonstream/README.md

87 wiersze
4.4 KiB
Markdown

2022-11-22 17:32:11 +00:00
![github read me header](https://user-images.githubusercontent.com/8016073/203381867-f7b56861-04ca-4ae4-a5e6-53e97804817a.png)
2021-08-04 23:11:13 +00:00
# moonstream
2021-08-13 13:41:26 +00:00
2022-11-22 17:32:11 +00:00
[Website](https://moonstream.to)
[Join our Discord](https://discord.gg/pYE65FuNSz)
2021-08-13 13:41:26 +00:00
## What is Moonstream?
2022-12-07 14:49:00 +00:00
Moonstream creates economic infrastructure for web3 projects with a focus on blockchain games.
2021-08-13 13:41:26 +00:00
2022-12-07 14:49:00 +00:00
This repository contains Moonstream's complete data analysis stack. The emphasis of it is on collecting actionable data related to the blockchain. The repository contains:
1. Database management tools
2. Blockchain node management tools
3. Blockchain data crawlers
4. Access-controlled API which exposes collected data
2022-12-07 12:48:24 +00:00
## Important resources
1. [Documentation](https://docs.moonstream.to/)
2. [Status page](https://moonstream.to/status/)
2022-12-07 14:49:00 +00:00
3. [On-chain mechanics](https://github.com/bugout-dev/engine)
2022-12-07 12:48:24 +00:00
4. [How to create a dashboard to analyze a smart contract?](https://voracious-gerbil-120.notion.site/Creating-dashboard-for-a-smart-contract-288b1bfa64984b109b79895f69129fce)
2021-08-13 13:41:26 +00:00
## Who uses Moonstream?
2022-12-07 12:48:24 +00:00
People from different backgrounds who are interested in data, crypto and code.
2022-12-07 14:49:00 +00:00
Moonstream tools are often used by game designers and economists, data scientists, smart contract developers, backend engineers, and teams managing loyalty programs for blockchain projects.
2022-02-09 15:30:16 +00:00
2022-12-07 17:03:12 +00:00
Some projects currently using Moonstream:
2022-02-09 15:30:16 +00:00
1. [Laguna Games](https://laguna.games), makers of [Crypto Unicorns](https://cryptounicorns.fun)
2022-12-07 17:03:12 +00:00
2. [Game7](https://game7.io)
2022-12-07 12:48:24 +00:00
3. [Champions Ascension](https://www.champions.io/)
2022-12-07 14:49:00 +00:00
Please read [the Game Master's Guide to Moonstream Solutions](https://docs.google.com/document/d/1mjfF8SgRrAZvtCVVxB2qNSUcbbmrH6dTEYSMfHKdEgc/view) if you want to know how Moonstream tools are applied in web3 games.
2022-12-07 12:48:24 +00:00
2022-12-07 14:49:00 +00:00
[Moonworm tool](https://github.com/bugout-dev/moonworm) is used to build datasets of on-chain data related to market activity. The dataset with on-chain activity from the Ethereum NFT market (April 1 to September 25, 2021) is available [on Kaggle](https://www.kaggle.com/datasets/simiotic/ethereum-nfts). The full report on it is published on [GitHub](https://github.com/bugout-dev/moonstream/blob/main/datasets/nfts/papers/ethereum-nfts.pdf).
2021-08-13 13:41:26 +00:00
## Free software
Proprietary technologies are not inclusive technologies, and we believe in inclusion.
All of our technology is open source. This repository contains all the code that powers
https://moonstream.to. The code is licensed with the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
You are and _will always be_ free to host your own instance of Moonstream.
## Architecture
This monorepo contains the following components:
2022-02-09 15:30:16 +00:00
1. [`frontend`](./frontend): A web frontend for Moonstream. Allows users to create dashboards and monitor the activity of accounts and smart contracts on multiple blockchains. Built in [React](https://reactjs.org/).
2. [`backend`'](./backend): The Moonstream API allows users to programmatically consume data about transactions and events taking place on blockchains crawled by Moonstream. Built in [Python](https://www.python.org/) using [Fast API](https://fastapi.tiangolo.com/).
3. [`crawlers`](./crawlers): This part of the code base contains workers which extract data from blockchains, transaction pools, and other sources. We have many crawlers and each crawler can utilize a different tech stack.
2021-08-13 13:41:26 +00:00
4. [`db`](./db): Moonstream stores blockchain data in [Postgres](https://www.postgresql.org/). This
directory contains the code we use to manage the schema in our Postgres database. For sources that
send higher volumes of data, we use a separate Postgres database and interface with it using
2022-02-09 15:30:16 +00:00
[Bugout](https://bugout.dev).
2021-08-13 13:41:26 +00:00
### Installation and setup
#### Run server with Docker Compose
If you want to deploy Moonstream in isolation against live services, then docker compose is your choice!
2021-12-01 12:54:34 +00:00
- Run script `backend/configs/docker_generate_env.bash` which prepare for you:
- `backend/configs/docker.moonstreamapi.env` with environment variables
2021-12-01 12:54:34 +00:00
- Run script `db/configs/docker_generate_env.bash` which prepare for you:
- `db/configs/alembic.moonstreamdb.ini` with postgresql uri
```bash
2021-12-01 12:54:34 +00:00
./backend/configs/docker_generate_env.bash
./db/configs/docker_generate_env.bash
```
- Run local setup
```bash
docker-compose up --build
```
2021-08-13 13:41:26 +00:00
## Contributing
2022-12-07 12:48:24 +00:00
We are working on contributing guidelines. In the meantime, please reach out to @zomglings on the [Moonstream Discord](https://discord.gg/pYE65FuNSz).