From 6d31c18a13923a4afd7fd7f600b5552201a75069 Mon Sep 17 00:00:00 2001 From: PJColombo Date: Sun, 19 Mar 2023 18:45:17 +0100 Subject: [PATCH] docs: add `README.md` --- .github/assets/blobi.jpeg | Bin 0 -> 34343 bytes LICENSE | 20 ++++++++++++++ README.md | 54 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 .github/assets/blobi.jpeg create mode 100644 LICENSE create mode 100644 README.md diff --git a/.github/assets/blobi.jpeg b/.github/assets/blobi.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..02bc3b33de30f2e5b29f4cf44263486c1e1bd741 GIT binary patch literal 34343 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 + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above +copyright notice and this permission notice (including the next paragraph) shall +be included in all copies or substantial portions of the Software. + +THE SOFTWARE +IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..71e6f2d --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# Blobscan indexer + +The indexer for the [Blobscan](https://github.com/Blobscan/blobscan) explorer implemented in Rust. + +## How it works? + +The indexer crawls the blockchain fetching information from both the Execution and Beacon clients. The data is processed and stored in a MongoDB database. + +## How to run locally? + +1. Git clone this repo. + +```bash +git clone https://github.com/Blobscan/blobscan-indexer.rs.git +``` + +2. Go to directory. + +```bash +cd blobscan-indexer.rs +``` + +3. Set the environment variables. + +4. Run the indexer. + +```bash +cargo run +``` + +## Environment variables + +Create a `.env` file with environment variables. You can use the `.env.example` file as a reference. + +Below you can find a list of all the required variables: + +| Env variable | Description | +| ------------------- | -------------------------------------------------------------- | +| `DB_CONNECTION_URI` | The connection URI to connect to a deployed database instance. | +| `DB_NAME` | The database's name. | + +And here a list of optional variables: + +| Env variable | Description | Default value | +| -------------------- | ----------------------------------------------------------------------------------------------- | ----------------------- | +| `BEACON_NODE_RPC` | A beacon chain RPC node's endpoint. | `http://localhost:3500` | +| `EXECUTION_NODE_URL` | An execution RPC node's endpoint. | `http://localhost:8545` | +| `LOGGER` | The logger's name to be used. See log4rs [config file](log4rs.yml) to check the available ones. | `default` | + +# About Blossom Labs + +![blossom labs](https://blossom.software/img/logo.svg) + +Blobscan is being developed by [Blossom Labs](https://blossom.software/), a developer team specialized in building blockchain-based infrastructure for online communities.