smithery/genlayerlabs

studio-db

Query Studio deployment PostgreSQL databases for transaction debugging and analytics

Installation

$ npx skills add smithery/genlayerlabs --skill studio-db

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/genlayerlabs.

npx skills add smithery/genlayerlabs

Browse all from smithery/genlayerlabs

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,043 B
  • docs SUMMARY.md 101 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Studio Database Debugging

Query and debug the genlayer_state database for transaction issues.

Connection

For cluster access setup and connection workflow, see: devexp-apps-workload/.claude/skills/studio-db/SKILL.md

Quick connect (after setup):

export PATH="/opt/homebrew/share/google-cloud-sdk/bin:/opt/homebrew/bin:$PATH"
DBHOST=$(kubectl get secret database-config -n <namespace> -o jsonpath='{.data.DBHOST}' | base64 -d)
DBPASSWORD=$(kubectl get secret database-password -n <namespace> -o jsonpath='{.data.DBPASSWORD}' | base64 -d)

echo "<SQL>" | kubectl run pg-query --rm -i --image=postgres:16 --restart=Never \
  --namespace=<namespace> --env="PGPASSWORD=$DBPASSWORD" -- \
  psql -h "$DBHOST" -p 5432 -U postgres -d genlayer_state -t

Transaction Table Schema

Primary table for debugging (transactions):

Column Type Description
hash VARCHAR(66) Primary key, tx identifier
status ENUM Transaction lifecycle status
from_address VARCHAR Sender address
to_address VARCHAR Recipient/contract address
nonce INTEGER Tx sequence number
value INTEGER Transaction value
type INTEGER Tx type (0-3)
created_at TIMESTAMP When tx was created
input_data JSONB Contract call input
data JSONB Transaction data payload
consensus_data JSONB Final consensus results
consensus_history JSONB Full voting history
contract_snapshot JSONB Contract state at execution
appealed BOOLEAN Was tx appealed
appeal_failed INTEGER Appeal failure count
appeal_undetermined BOOLEAN Appeal resulted in undetermined
appealleadertimeout BOOLEAN Leader timeout during appeal
appealvalidatorstimeout BOOLEAN Validators timeout during appeal
leadertimeoutvalidators JSONB Validators that timed out
worker_id VARCHAR Which worker processed tx
triggeredbyhash VARCHAR(66) Parent tx hash (for tx chains)
blocked_at TIMESTAMP When/if tx got blocked

Transaction Statuses

PENDING → ACTIVATED → PROPOSING → COMMITTING → REVEALING → ACCEPTED → FINALIZED
                                                        ↘ UNDETERMINED
                                                        ↘ LEADER_TIMEOUT
                                                        ↘ VALIDATORS_TIMEOUT
                                                        ↘ CANCELED

Other Tables

  • current_state: Global chain state (id, data JSONB, balance)
  • validators: Validator configs (id, address, stake, provider, model, plugin)
  • llm_providers: LLM provider configurations
  • snapshot: Compressed state snapshots (snapshotid, statedata, transaction_data)

Common Debugging Queries

Find transaction by hash

SELECT hash, status, from_address, to_address, created_at,
       consensus_data, worker_id
FROM transactions WHERE hash = '0x...';

List stuck/problematic transactions

SELECT hash, status, created_at, worker_id
FROM transactions
WHERE status IN ('UNDETERMINED', 'LEADER_TIMEOUT', 'VALIDATORS_TIMEOUT')
ORDER BY created_at DESC LIMIT 20;

Transaction status distribution

SELECT status, COUNT(*) as count
FROM transactions
GROUP BY status ORDER BY count DESC;

Recent transactions

SELECT hash, status, from_address, created_at
FROM transactions ORDER BY created_at DESC LIMIT 10;

Transactions with appeals

SELECT hash, status, appealed, appeal_undetermined, appeal_failed,
       appeal_leader_timeout, appeal_validators_timeout
FROM transactions WHERE appealed = true
ORDER BY created_at DESC LIMIT 20;

Find triggered transactions (tx chains)

SELECT t1.hash as parent, t2.hash as child, t2.status
FROM transactions t1
JOIN transactions t2 ON t2.triggered_by_hash = t1.hash
WHERE t1.hash = '0x...';

Transactions by worker

SELECT worker_id, status, COUNT(*)
FROM transactions
WHERE created_at > NOW() - INTERVAL '24 hours'
GROUP BY worker_id, status
ORDER BY worker_id, count DESC;

Check consensus history for a tx

SELECT hash, status,
       jsonb_pretty(consensus_history) as history
FROM transactions WHERE hash = '0x...';

Write Operations

CAUTION: Before any UPDATE/DELETE:

  1. First SELECT to verify affected rows
  2. Ask user for explicit confirmation
  3. Prefer dev/stg for testing

Reset stuck transaction

-- Verify first
SELECT hash, status FROM transactions
WHERE hash = '0x...' AND status = 'UNDETERMINED';

-- Then update (after confirmation)
UPDATE transactions SET status = 'PENDING' WHERE hash = '0x...';

Full Schema

Models: backend/databasehandler/models.py Migrations: backend/databasehandler/migration/versions/ Tx processor: backend/databasehandler/transactionsprocessor.py