Star Tower Chain
Developer Support
Developer Support
  • StarTowerChain Open-Source Explorer
  • 💡About SAVWSCAN
    • Features
  • 🫂Using SAVWSCAN
    • Getting Started
      • Glossary of Terms
      • Main Menu
      • Blocks
      • Transaction Types
      • Beacon Chain Withdrawal Views
  • CSV Exports
  • Token Support
    • RIP-1155 Support
  • 🧑‍💻Developer Support
    • SAVWSCAN APIS
      • Requests & Limits
    • REST API Endpoints
      • Stats API
      • Interpreter API
    • JSON RPC & SAVW Compatible RPC Endpoints
      • Account
      • Block
      • Contract
      • Logs
      • Stats
      • Token
      • Transaction
      • StarTower RPC API
      • GraphQL in StarTower
  • Smart Contract Verification
    • StarTower UI
    • StarTower smart-contract verification API
    • Hardhat Verification Plugin
      • Sourcify Plugin for Hardhat
    • Foundry Verification
    • Sourcify Verification
    • OpenZeppelin Contract Verification
    • Automate verifications with Catapulta
  • 🏃‍♂️Setup and Run StarTowerChain
    • General Overview
      • Separate Indexer, Web App, and API
      • Umbrella Project Organization
      • Indexer Architecture Overview
  • Requirements
    • General Backend Requirements / StarTower Backend Prerequisites
    • Hardware & Hosting Requirements
    • Database Storage Requirements
    • Client Setting Requirements
    • Node Tracing / JSON RPC Requirements
  • ⚙️ENV Variables
    • Backend ENVs: Common
Powered by GitBook
On this page
  1. Setup and Run StarTowerChain
  2. General Overview

Umbrella Project Organization

How the StarTower project is organized

PreviousSeparate Indexer, Web App, and APINextIndexer Architecture Overview

Last updated 1 month ago

StarTower is an Elixir . Each directory under apps/ is a separate project and , but the projects can use each other as a dependency in their mix.exs.

Each OTP application has a restricted domain.

Table is horizontally scrollable.

Directory
OTP Application
Namespace
Purpose

apps/ethereum_jsonrpc

:ethereum_jsonrpc

StarTowerJSONRPC

StarTower JSONRPC client. It is allowed to know Explorer's param format, but it cannot directly depend on :explorer

apps/explorer

:explorer

Explorer

Storage for the indexed chain. Can read and write to the backing storage. MUST be able to boot in a read-only mode when run independently from :indexer, so cannot depend on :indexer as that would start :indexer indexing.

apps/block_scout_web

:block_scout_web

BlockScoutWeb

Phoenix interface to :explorer. The minimum interface to allow web access should go in :savw_scan_web. Any business rules or interface not tied directly to Phoenix or Plug should go in :explorer. MUST be able to boot in a read-only mode when run independently from :indexer, so cannot depend on :indexer as that would start :indexer indexing.

apps/indexer

:indexer

Indexer

Uses :startower_jsonrpc to index chain and batch import data into :explorer. Any process, Task, or GenServer that automatically reads from the chain and writes to :explorer should be in :indexer. This restricts automatic writes to :indexer and read-only mode can be achieved by not running :inde

🏃‍♂️
umbrella project
Mix
OTP application