@smartforge/observability
v1.0.1
Published
Contract observability service for monitoring events, transactions, and gas usage.
Downloads
211
Readme
@smartforge/observability
Contract observability service for monitoring events, transactions, and gas usage.
Installation
npm install @smartforge/observability
# or
pnpm add @smartforge/observabilityUsage
Setup
import { ObservabilityService } from "@smartforge/observability";
import { createDbClient } from "@smartforge/db";
const db = createDbClient(process.env.DATABASE_URL!);
const observability = new ObservabilityService(db);Index Contract Events
await observability.indexEvent({
contractId: "contract-id",
eventName: "Transfer",
txHash: "0x...",
blockNumber: 12345,
blockHash: "0x...",
logIndex: 0,
args: {
from: "0x...",
to: "0x...",
tokenId: "123",
},
});Get Contract Events
const events = await observability.getEvents(
{
contractId: "contract-id",
eventName: "Transfer",
fromBlock: 10000,
toBlock: 20000,
},
100 // limit
);Record Transaction
await observability.recordTransaction({
projectId: "project-id",
contractId: "contract-id",
txHash: "0x...",
from: "0x...",
to: "0x...",
chainId: 8453,
functionName: "mint",
args: { to: "0x...", amount: "100" },
gasUsed: "21000",
gasPrice: "20000000000",
status: "success",
isGasless: true,
});Get Transactions
const transactions = await observability.getTransactions(
{
projectId: "project-id",
contractId: "contract-id",
status: "success",
isGasless: true,
},
100 // limit
);Track Gas Usage
await observability.trackGasUsage({
projectId: "project-id",
contractId: "contract-id",
functionName: "mint",
gasAmount: "21000",
month: "2024-12",
});Get Gas Usage Stats
const stats = await observability.getGasUsageStats("project-id", "2024-12");
console.log("Total gas:", stats.total.toString());
console.log("By function:", stats.byFunction);
console.log("Transaction count:", stats.transactions);API
ObservabilityService
Main observability service class.
Methods:
indexEvent()- Index contract eventgetEvents()- Get contract events with filtersrecordTransaction()- Record transactiongetTransactions()- Get transactions with filterstrackGasUsage()- Track gas usagegetGasUsageStats()- Get gas usage statistics
Filters
EventFilter:
contractId- Filter by contracteventName- Filter by event namefromBlock- Start block numbertoBlock- End block number
TransactionFilter:
projectId- Filter by projectcontractId- Filter by contractstatus- Filter by statusisGasless- Filter gasless transactions
License
ISC
