# Nym Data Observatory Collects data about the Nym network including: - **Chain scraper** - that parses blocks, transactions and messages on the Nyx chain - **Price scraper** - to get the NYM/USD token price from CoinGecko - **Webhooks** - trigger on messages or all messages to call with details ## Running locally ### 1. Install Prerequisites ```bash # Install sqlx-cli if not already installed make sqlx-cli ``` ### 2. Prepare PostgreSQL for Development ```bash # This will: # - Start PostgreSQL in Docker # - Run migrations # - Generate SQLx offline query cache # - Stop the database make prepare-pg ``` ### 3. Build ```bash make build-pg ``` ### 4. Run with PostgreSQL ```bash # Start PostgreSQL for development (keeps running) make test-db-up # In another terminal, run the application NYM_DATA_OBSERVATORY_DB_URL=postgres://testuser:testpass@localhost:5433/nym_data_observatory_test \ NYM_DATA_OBSERVATORY_WEBHOOK_URL="https://webhook.site" \ NYM_DATA_OBSERVATORY_WEBHOOK_AUTH=1234 \ cargo run -- run ``` To start from a block add the env var: `NYXD_SCRAPER_START_HEIGHT=19266184`. ## Deploying Connect with `psql` to your local database: ```sql CREATE USER nym_data_observatory WITH PASSWORD 'data-data-data'; CREATE DATABASE nym_data_observatory_data; GRANT ALL ON DATABASE nym_data_observatory_data TO nym_data_observatory; ``` Then run: ``` cargo run -- init --db_url postgres://testuser:testpass@localhost:5433/nym_data_observatory_test ``` and then: ``` NYM_DATA_OBSERVATORY_DB_URL=postgres://testuser:testpass@localhost:5433/nym_data_observatory_test \ NYM_DATA_OBSERVATORY_WEBHOOK_URL="https://webhook.site" \ NYM_DATA_OBSERVATORY_WEBHOOK_AUTH=1234 \ cargo run -- run --websocket-url wss://rpc.nymtech.net/websocket --rpc-url https://rpc.nymtech.net ``` or just: ``` NYM_DATA_OBSERVATORY_DB_URL=postgres://testuser:testpass@localhost:5433/nym_data_observatory_test cargo run -- run --websocket-url wss://rpc.nymtech.net/websocket --rpc-url https://rpc.nymtech.net ``` If you want to watch for cosmwasm messages and send to a webhook: ``` NYM_DATA_OBSERVATORY_WEBHOOK_URL=https://webhook.site \ NYM_DATA_OBSERVATORY_DB_URL=postgres://testuser:testpass@localhost:5433/nym_data_observatory_test\ cargo run -- run --websocket-url wss://rpc.nymtech.net/websocket --rpc-url https://rpc.nymtech.net --start-block-height 20966360 --watch-for-chain-message-types "/cosmwasm.wasm.v1.MsgExecuteContract" ``` ## Troubleshooting ### SQLx Offline Mode If you see "no cached data for this query" errors: 1. Ensure PostgreSQL is running: `make dev-db` 2. Run: `make test-db-prepare` Also see [README_SQLX.md](../nyx-chain-watcher/README_SQLX.md). ### Connection Refused If you see "Connection refused" errors: 1. Check Docker is running: `docker ps` 2. Check PostgreSQL container: `docker ps | grep nym_data_observatory 3. Restart database: `make test-db-down && make dev-db`