Skip to content

Analytics Package (AAStar Gas Analytics & Experimentation) ​

Status: Active | Version: 3.0 (PhD Research Edition)

This module is the core data intelligence engine for the AAStar ecosystem. It supports Scientific Data Collection for the "Asset-Oriented Abstraction" thesis with rigorous, on-chain ground truth verification.

bash
# 快速入口(从 aastar-sdk 根目录运行)

# 收集 OP Mainnet paymaster 基线
pnpm tsx packages/analytics/scripts/collect_paymaster_baselines.ts --network op-mainnet --n 50

# 收集 Paper7 专属数据
bash packages/analytics/scripts/run_paper7_exclusive_data.sh --network anvil --cycles 5

# 全流程协调器
pnpm tsx packages/analytics/scripts/run_analytics_coordinator.ts --network sepolia

# Gas 分析报告文档
packages/analytics/docs/OP_Mainnet_Gas_Analysis_Report.md

System Architecture ​

The Analytics module operates on a Pipeline Architecture composed of three distinct stages: Generation, Collection, and Analysis.

mermaid
graph TD
    subgraph "Phase 1: Traffic Generation"
        TG[Traffic Coordinator] -->|Trigger| G1[EOA Generator]
        TG -->|Trigger| G2[Standard AA Generator]
        TG -->|Trigger| G3[SuperPaymaster Generator]
        TG -->|Trigger| G4[Paymaster V4 Generator]
        G1 & G2 & G3 & G4 -->|Execute Tx| BLOCKCHAIN((Blockchain))
    end

    subgraph "Phase 2: Data Collection"
        BLOCKCHAIN -->|Receipts| HF[Historical Fetcher]
        HF -->|Raw Data| CACHE[(Data Store / JSON)]
        style HF fill:#f9f,stroke:#333
    end

    subgraph "Phase 3: Analysis Engine"
        CACHE -->|Load| DC[DataCollector]
        DC -->|Enrich| CC[CostCalculator]
        CC --> AA[Attribution Analyzer]
        CC --> CA[Comparison Analyzer]
        CC --> TA[Trend Analyzer]
        AA & CA & TA --> REPORT[Final Academic Report]
    end

Directory Structure ​

text
packages/analytics/
├── src/
│   ├── generators/           # Traffic Generation Logic
│   ├── collectors/           # Etherscan/RPC Fetchers
│   │   └── EventFetcher.ts   # On-chain UserOperationEvent collector
│   ├── core/                 # Core Analysis Engines
│   ├── analyzers/            # Specific Analysis Strategies
│   └── gas-analyzer.ts       # Main Entry Point
├── scripts/                  # ← All data collection scripts (consolidated)
│   ├── collect_paymaster_baselines.ts   # OP mainnet V4/SuperPM baselines
│   ├── collect_eoa_erc20_baseline.ts    # EOA ERC20 transfer baseline
│   ├── collect_industry_baseline.ts     # Alchemy/Pimlico baselines
│   ├── compute_cost_summary.ts          # Aggregated cost breakdown table
│   ├── gasless-collect.ts               # Gasless data collector (OP mainnet)
│   ├── paper7-exclusive-data.ts         # Paper7 closed-loop data (anvil)
│   ├── paper7_credit_loop.ts            # Credit→Debt→Repay cycle runner
│   ├── paper7_reputation_credit.ts      # Reputation→Credit mapping runner
│   ├── run_analytics_coordinator.ts     # Full pipeline coordinator
│   ├── run_paper7_exclusive_data.sh     # Paper7 shell wrapper (CI-friendly)
│   ├── fetch-tx-hashes.ts               # TX hash fetcher utility
│   └── scrape-tx.ts                     # Puppeteer Etherscan scraper
├── docs/                     # ← Research reports and analysis documents
│   └── OP_Mainnet_Gas_Analysis_Report.md  # Paper3/Paper7 gas cost evidence
├── data/                     # Raw data store
│   ├── gasless_data_collection.csv      # T1/T2/T2.1/T5 baseline (v1)
│   ├── gasless_data_collection_v2.csv   # Controlled single-UserOp (v2)
│   ├── gasless_metrics_detailed.csv     # Full L1/L2 fee decomposition
│   ├── industry_paymaster_baselines.csv # Alchemy, Pimlico on-chain baselines
│   ├── eoa_erc20_baseline.csv           # Raw EOA transfer baseline
│   ├── paper7_exclusive/               # Paper7 credit/reputation/liquidity
│   └── paper_gas_op_mainnet/           # Paper3 per-date controlled datasets
│       ├── 2026-02-17/                 # V4 n=36, SuperPM n=43
│       └── 2026-02-18/                 # V4/SuperPM with sender (n=50)
└── reports/                  # HTML/Markdown summaries

Workflows ​

A. Collect OP Mainnet Paymaster Baselines (Paper3) ​

bash
# V4 baseline: strict single UserOp + ERC20 transfer filter
pnpm tsx packages/analytics/scripts/collect_paymaster_baselines.ts \
  --network op-mainnet --type v4 --n 50 --strict-transfer --single-userop

# SuperPaymaster baseline
pnpm tsx packages/analytics/scripts/collect_paymaster_baselines.ts \
  --network op-mainnet --type super --n 50

B. Run Full Experiment (Coordinator) ​

bash
# 1. Fetch History -> 2. Generate Missing Traffic -> 3. Analyze
pnpm tsx packages/analytics/scripts/run_analytics_coordinator.ts --network sepolia

C. Fetch Historical Data Only ​

bash
pnpm tsx packages/analytics/scripts/run_analytics_coordinator.ts --fetch-only --network op-sepolia

D. Transaction Scraper (Etherscan) ​

Reads from data/gasless_data_collection.csv, outputs to data/gasless_metrics_detailed.csv.

bash
pnpm tsx packages/analytics/scripts/scrape-tx.ts

Data Directory ​

FileDescription
data/gasless_data_collection.csvT1/T2/T2.1/T5 records with TxHash + Label
data/gasless_data_collection_v2.csvHigh-fidelity controlled dataset (single-UserOp, ERC20)
data/gasless_metrics_detailed.csvL1 Fee, L2 Fee, Gas Used (Puppeteer scraped)
data/industry_paymaster_baselines.csvAlchemy (mean=257k) + Pimlico (mean=387k) on-chain baselines
data/eoa_erc20_baseline.csvRaw EOA ERC20 transfer baseline
data/paper7_exclusive/Credit cycle + reputation + liquidity simulation (Anvil)
data/paper_gas_op_mainnet/2026-02-17/V4 n=36, SuperPM n=43 (strict filter)
data/paper_gas_op_mainnet/2026-02-18/V4/SuperPM with sender field (n=50)

Paper7 Exclusive Data (Credit / Reputation / Liquidity) ​

Paper7 requires a distinct set of evidence to prove CommunityFi closed-loop semantics:

  • Reputation → Credit: contribution/reputation synced into Registry, credit limit observed to change
  • Credit → Debt → Repay: debt recorded in Paymaster/Registry, cleared via xPNTs
  • Liquidity (Baseline): simulation curve showing gas-redeemable vs non-redeemable points over time

Running ​

bash
# Unified entry (Anvil auto-start, deploy, sync, run all subtasks)
pnpm exec tsx packages/analytics/scripts/paper7-exclusive-data.ts --network anvil --cycles 5

# Shell wrapper (CI-friendly)
bash packages/analytics/scripts/run_paper7_exclusive_data.sh --network anvil --cycles 5

Output Structure ​

text
data/paper7_exclusive/<timestamp>/
  credit_cycle_1.json    # credit→debt→repay per account
  ...
  reputation_credit.json # reputation sync → credit limit mapping
  liquidity_velocity_simulation.csv
  synced_config.anvil.json

credit_cycle_*.json fields ​

  • creditLimitWei / creditLimitEth: credit limit in Registry
  • debtBeforeWei / debtAfterRecordWei / debtAfterRepayWei: debt lifecycle
  • gasUsed.*: per-step gas units (approve, setCreditTier, recordDebt, mint)

reputation_credit.json fields ​

  • score / globalReputation / creditLimitWei: reputation → credit mapping
  • gasUsed.*: setRule, syncToRegistry, etc.

liquidity_velocity_simulation.csv columns ​

  • day: simulation step
  • points_gas_redeemable: points stock when gas-redeemable
  • points_baseline: points stock without gas redemption

Key Modules ​

1. Traffic Generators (src/generators/) ​

  • EOAGenerator: Baseline ETH transfers for network cost measurement.
  • SuperPaymasterGenerator: Treatment group — credit/asset-oriented gasless model.
  • PaymasterV4Generator: Treatment group B — deposit model for comparison.

2. Data Collectors (src/collectors/) ​

  • HistoricalFetcher: Etherscan/OptimismScan API for full transaction histories.
  • EventFetcher: On-chain UserOperationEvent log collector with strict filtering.

3. Analysis Engine (src/core/ & src/analyzers/) ​

  • Attribution: L1 Security | L2 Execution | Protocol Overhead breakdown.
  • Comparison: T1 vs T2 vs T2.1 vs T5 vs industry baselines.

Status: Active | Version: 3.0 (PhD Research Edition)

This module is the core data intelligence engine for the AAStar ecosystem. It has been upgraded to support Scientific Data Collection for the "Asset-Oriented Abstraction" thesis, moving beyond simple log analysis to rigorous, on-chain ground truth verification. 工作流:

收集数据(日常运行): pnpm tsx scripts/run_analytics_coordinator.ts --network sepolia 产生新实验数据(需要时运行): pnpm tsx scripts/run_analytics_coordinator.ts --network sepolia --gen-traffic

收集events pnpm tsx scripts/run_analytics_coordinator.ts --network sepolia --fetch-events

分析报告(查看结果): pnpm tsx packages/analytics/src/gas-analyzer-v4.ts --network sepolia

步骤是解耦的,按需执行即可 ​

🏗 System Architecture ​

The Analytics module operates on a Pipeline Architecture composed of three distinct stages: Generation, Collection, and Analysis.

mermaid
graph TD
    subgraph "Phase 1: Traffic Generation"
        TG[Traffic Coordinator] -->|Trigger| G1[EOA Generator]
        TG -->|Trigger| G2[Standard AA Generator]
        TG -->|Trigger| G3[SuperPaymaster Generator]
        TG -->|Trigger| G4[Paymaster V4 Generator]
        G1 & G2 & G3 & G4 -->|Execute Tx| BLOCKCHAIN((Blockchain))
    end

    subgraph "Phase 2: Data Collection"
        BLOCKCHAIN -->|Receipts| HF[Historical Fetcher]
        HF -->|Raw Data| CACHE[(Data Store / JSON)]
        style HF fill:#f9f,stroke:#333
    end

    subgraph "Phase 3: Analysis Engine"
        CACHE -->|Load| DC[DataCollector]
        DC -->|Enrich| CC[CostCalculator]
        
        CC --> AA[Attribution Analyzer]
        CC --> CA[Comparison Analyzer]
        CC --> TA[Trend Analyzer]
        
        AA & CA & TA --> REPORT[Final Academic Report]
    end

🧩 Key Modules ​

1. Traffic Generators (src/generators/) ​

Responsible for creating controlled, verifiable traffic patterns on testnets (Sepolia, OP Sepolia) and mainnets.

  • EOAGenerator: Baseline ETH transfers to measure intrinsic network costs.
  • StandardAAGenerator: ERC-4337 flows using industry-standard Paymasters (Pimlico/Alchemy).
  • SuperPaymasterGenerator: Treatment Group. Uses the EndUserClient to execute gasless transactions via the "Credit/Asset-Oriented" model (Dual-Token).
  • PaymasterV4Generator: Treatment Group B. Uses the "Deposit" model (Single-Token) for comparative analysis.

2. Data Collectors (src/collectors/) ​

Responsible for gathering "Ground Truth" data.

  • HistoricalFetcher: Connects to Etherscan/OptimismScan APIs to retrieve full transaction histories for test accounts defined in l4-state.json. Crucial for auditability.
  • LogParser: Legacy parser for development logs (kept for backward compatibility).

3. Analysis Engine (src/core/ & src/analyzers/) ​

The brain of the operation.

  • Double-Layer Analysis:
    • Intrinsic Layer: Gas used, Blob gas, Calldata efficiency.
    • Economic Layer: USD costs, Protocol Revenue, Net Profit.
  • Attribution: Breaks down cost into L1 Security, L2 Execution, and Protocol Overhead.

🚀 Workflows ​

A. Run Full Experiment (Coordinator) ​

The run_analytics_coordinator.ts script orchestrates the entire lifecycle.

bash
# 1. Fetch History -> 2. Generate Missing Traffic -> 3. Analyze
npx tsx scripts/run_analytics_coordinator.ts --network sepolia

B. Fetch Historical Data Only ​

Useful for auditing existing accounts without spending gas.

bash
npx tsx scripts/run_analytics_coordinator.ts --fetch-only --network op-sepolia

C. Traffic Generation Only ​

Generate a specific number of transactions for a specific group.

bash
npx tsx packages/analytics/src/generators/cli.ts --group superpaymaster --runs 10

📊 Data & Metrics ​

We prioritize Intrinsic Metrics to ensure scientific validity independent of market volatility.

MetricDefinitionSource
Gas UsedTotal gas consumed by the transactionreceipt.gasUsed
L1 FeeCost of posting data to L1 (for L2s)Oracle Contract / Header
LatencyTime from UserOp submission to inclusionClient-side Timestamp
StepsNumber of signatures/interactions requiredProtocol Definition

📂 Directory Structure ​

text
packages/analytics/
├── src/
│   ├── generators/       # [NEW] Traffic Generation Logic
│   ├── collectors/       # [NEW] Etherscan/RPC Fetchers
│   ├── core/             # Core Analysis Engines
│   ├── analyzers/        # Specific Analysis Strategies
│   └── gas-analyzer.ts   # Main Entry Point
├── data/                 # Raw JSON Data Store
└── reports/              # HTML/Markdown Reports

🕷️ Transaction Scraper ​

A Puppeteer-based scraper to extract detailed gas and fee metrics from Optimism Etherscan.

Prerequisites ​

  • Node.js & pnpm
  • Chrome browser (Puppeteer will attempt to install this automatically, but you can run npx puppeteer browsers install chrome if needed)

Running the Scraper ​

The scraper reads transaction hashes from data/gasless_data_collection.csv and outputs enriched metrics to data/gasless_metrics_detailed.csv.

bash
pnpm tsx scripts/scrape-tx.ts

📂 Data Directory (Paper7 Ground Truth) ​

  • data/gasless_data_collection.csv: 输入文件,包含 Timestamp,Label,TxHash,用于抓取交易详情。
  • data/gasless_data_collection_v2.csv: 主网/测试网的高保真样本集合(包含 GasUsed(L2), L2ExecutionFee(Wei), L1DataFee(Wei) 等列),用于论文/报告里的“真实网络成本与可用性”对照。
  • data/gasless_metrics_detailed.csv: 抓取后的明细输出(L1 Fee, L2 Fee, Gas Used 等),主要由 scripts/scrape-tx.ts 生成。

🧪 Paper7 专属数据:Credit / Reputation / Liquidity Loop ​

Paper7 需要一组与通用 gasless 基线不同的专属证据,用来证明 CommunityFi 的闭环语义成立(而不仅是“能跑通 gasless”):

  • Reputation → Credit:将贡献/声誉同步进 Registry,并观察信用额度随之变化
  • Credit → Debt → Repay:在 Paymaster/Registry 侧记录债务,再用 xPNTs 完成清算归零
  • Liquidity(Baseline Liquidity):用可复现实验/仿真曲线展示“积分可用于偿债/赞助”对流动性速度的影响(作为机制层证据,不依赖市场价格)

1) 如何运行(推荐) ​

统一入口脚本(负责启动 Anvil、必要时自动部署并同步配置,然后跑各子任务):

bash
pnpm exec tsx scripts/paper7-exclusive-data.ts --network anvil --cycles 5

等价的 shell 包装(更适合 CI/重复跑批):

bash
./packages/analytics/run_paper7_exclusive_data.sh --network anvil --cycles 5

2) 脚本目标与流程定位 ​

  • scripts/paper7-exclusive-data.ts
    • 目标:生成 Paper7 专属闭环数据(credit cycles + reputation→credit + liquidity simulation)。
    • 作用位置:属于“可重复的受控实验层”,用 gas units 固定地刻画合约路径开销与状态变化,避免 ETH/USD 等市场变量污染结论。
  • scripts/paper7_credit_loop.ts
    • 目标:跑一次完整 credit→debt→repay 闭环(Anvil-only,依赖 anvil_* RPC)。
    • 产出:每次运行写一个 credit_cycle_*.json。
  • scripts/paper7_reputation_credit.ts
    • 目标:跑一次 reputation sync → registry credit update,并记录关键读数与每笔交易 gasUsed。
    • 产出:写 reputation_credit.json。
  • liquidity_velocity_simulation.csv
    • 目标:给论文提供“Baseline Liquidity 机制”的直观趋势证据(对比可用于 gas 清算 vs 不可清算时,积分存量随时间的衰减/累积差异)。

3) 数据产物(在哪里、是什么、怎么看) ​

所有 Paper7 专属数据默认写入:

packages/analytics/data/paper7_exclusive/<timestamp>/

典型结构如下:

text
paper7_exclusive/<timestamp>/
  credit_cycle_1.json
  credit_cycle_2.json
  ...
  reputation_credit.json
  liquidity_velocity_simulation.csv
  anvil.log                # 若自动启动/部署,保留日志便于审计
  deploy.log               # 若触发自动部署,保留 forge 日志便于复现
  synced_config.anvil.json # 若触发自动同步,记录当次使用的合约地址快照

A) credit_cycle_*.json(闭环清算) ​

每个 cycle 都是一次独立账户的闭环验证,核心字段:

  • creditLimitWei / creditLimitEth:该账户在 Registry 的信用额度(用于赞助/欠款边界)
  • debtBeforeWei / debtAfterRecordWei / debtAfterRepayWei:欠款从 0 → 增加 → 清算归零
  • gasUsed.*:每一步合约调用的 gas units(approve, setCreditTier, recordDebt, mint)
  • tx.*:对应交易哈希(便于回溯 receipts / debug)

B) reputation_credit.json(声誉到信用映射) ​

用于证明 Reputation sync 后,Registry 中的 globalReputation 与 getCreditLimit 发生预期变化,并给出每步 gas units:

  • score:ReputationSystem 计算出的 score
  • globalReputation:Registry 聚合后的全局声誉
  • creditLimitWei / creditLimitEth:映射后的信用额度
  • gasUsed.*:setRule, setReputationSource, setEntropyFactor, syncToRegistry

C) liquidity_velocity_simulation.csv(基线流动性趋势) ​

列定义:

  • day:仿真步(天)
  • points_gas_redeemable:积分可用于 gas 清算/赞助时的积分存量曲线
  • points_baseline:积分不可清算(仅基础用途)时的积分存量曲线

Released under the Apache-2.0 License.