feat: Lido DeepTracer, atupa init, and Studio Side-by-Side Diff#1
Merged
intelliDean merged 28 commits intoOne-Block-Org:mainfrom Apr 25, 2026
Merged
Conversation
- atupa-rpc: Enable EVM stack traces so target contract addresses can be extracted from CALLs. - atupa-rpc: Fix serde error caused by mapping Etherscan's 'message' to '_message'. - atupa-parser: Zero-pad target contract addresses for Etherscan integration. - atupa-sdk: Enhance offline demo traces to visualize without active RPC calls. - project-wide: Remove println! usage in favor of proper log::info! logging.
Add local disk caching for EtherscanResolver to avoid redundant API calls across sessions. On startup, the resolver loads any existing mappings from ~/.atupa/etherscan_cache.json. Each successful resolution is flushed back to disk immediately, so subsequent runs skip the Etherscan API entirely for already-seen contract addresses. - Add dirs = "5" workspace dependency for XDG/OS-aware cache dir - load_cache() / flush_cache() helpers in atupa-rpc/src/etherscan.rs - Log 📦 Loaded N entries on startup; 📦 Cache hit at DEBUG level per hit
…dalone CLI - Refactor CLI to standalone 'atupa' binary (Foundry-style) - Implement hierarchical configuration loading using 'figment' (CLI > Env > Local > Global) - Add interactive SVG Flamegraph component to Atupa Studio - Implement flat-to-tree trace transformation with depth-stack algorithm - Integrate 'Visual Trace' view into Studio sidebar with search functionality
- Add --profile to atupa capture: generates SVG flamegraph from the same RPC trace call, eliminating a redundant network fetch - Add --etherscan-key to atupa capture: resolves contract addresses to human-readable names during trace; baked into the output JSON - Add --studio to atupa capture: auto-launches Atupa Studio after capture completes and opens the browser with a pre-load hint - Add studio_port to AtupaConfig (default 5173, configurable via ATUPA_STUDIO_PORT env var or atupa.toml) - Auto-fix 4 pre-existing clippy warnings (atupa-rpc, atupa-sdk, atupa bin)
…egraph, unique paths count
…n, add static selector resolvers
…ture for visual parity
- action.yml: source-aware atupa setup, SVG upload artifact, sticky PR comments, protocol deep diff support, and regression gate with graceful exit ordering - gas-regression.yml: three-job pipeline (baseline → target → diff) using ephemeral Anvil nodes with forge script integration and manual hash override
Scaffolds CI integration with a single command: - Auto-detects Foundry / Hardhat / Stylus-only project type - Creates tailored atupa.toml with appropriate gas thresholds - Creates .github/workflows/atupa.yml (3-job baseline→target→diff pipeline) - Creates a project-specific template profile script: - Foundry: script/AtupaProfile.s.sol (forge broadcast pattern) - Hardhat: scripts/AtupaProfile.js (ethers.js pattern) - --force flag to overwrite existing files - No-overwrite protection by default with clear skip messages - Getting Started checklist printed on completion Inspired by Stylus-Trace CI init pattern, improved with: project detection, multiple file scaffolding, embedded templates, and actionable next-steps checklist output
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements the full Lido stETH DeepTracer, adds the
atupa initonboarding command, and introduces Side-by-Side Diffing in Atupa Studio. These changes transition Atupa into a professional-grade, production-ready auditing suite for the ONE BLOCK organization.Key Changes
1. Lido DeepTracer Implementation
LidoDeepTracerinto theatupa diffandatupa auditCLI flows.2.
atupa init& CI/CD Pipelineatupa initcommand to automatically detect project types (Foundry, Hardhat, Stylus) and protocols.atupa.yml) that gates gas regressions on PRs.3. Atupa Studio: Side-by-Side Diff
DiffReportJSON format.DiffOverviewcomponent showing side-by-side category breakdowns and colored gas deltas.4. Architectural Unification
ProtocolDiffReportandDiffRowstructures inatupa-coreto resolve cross-crate type mismatches.atupa-aaveandatupa-lidoto use the shared core types.Impact
Developers can now bootstrap gas regression monitoring in seconds using
atupa initand visually inspect regressions in the Studio. This significantly improves the auditability and performance monitoring of core DeFi protocols.Documentation
Updated the
README.mdto reflect the new onboarding flow and CI/CD capabilities.Part of the One Block infrastructure suite.