소스 정보
- 저장소
- genlayerlabs/genlayer-studio
- 최근 소스 활동
- 2026년 1월 13일 12:48
- 감지된 SKILL.md 언어
- 영어
- 스타
- 172
- 포크
- 66
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/genlayerlabs/genlayer-studio --skill studio-db명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | studio-db |
| description | Query Studio deployment PostgreSQL databases for transaction debugging and analytics |
Query and debug the genlayer_state database for transaction issues.
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
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 |
| appeal_leader_timeout | BOOLEAN | Leader timeout during appeal |
| appeal_validators_timeout | BOOLEAN | Validators timeout during appeal |
| leader_timeout_validators | JSONB | Validators that timed out |
| worker_id | VARCHAR | Which worker processed tx |
| triggered_by_hash | VARCHAR(66) | Parent tx hash (for tx chains) |
| blocked_at | TIMESTAMP | When/if tx got blocked |
PENDING → ACTIVATED → PROPOSING → COMMITTING → REVEALING → ACCEPTED → FINALIZED
↘ UNDETERMINED
↘ LEADER_TIMEOUT
↘ VALIDATORS_TIMEOUT
↘ CANCELED
id, data JSONB, balance)id, address, stake, provider, model, plugin)snapshot_id, state_data, transaction_data)SELECT hash, status, from_address, to_address, created_at,
consensus_data, worker_id
FROM transactions WHERE hash = '0x...';
SELECT hash, status, created_at, worker_id
FROM transactions
WHERE status IN ('UNDETERMINED', 'LEADER_TIMEOUT', 'VALIDATORS_TIMEOUT')
ORDER BY created_at DESC LIMIT 20;
SELECT status, COUNT(*) as count
FROM transactions
GROUP BY status ORDER BY count DESC;
SELECT hash, status, from_address, created_at
FROM transactions ORDER BY created_at DESC LIMIT 10;
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;
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...';
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;
SELECT hash, status,
jsonb_pretty(consensus_history) as history
FROM transactions WHERE hash = '0x...';
CAUTION: Before any UPDATE/DELETE:
-- 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...';
Models: backend/database_handler/models.py
Migrations: backend/database_handler/migration/versions/
Tx processor: backend/database_handler/transactions_processor.py