Skip to main content

Crystal-Clear CLI: Smart Contract Supply Chain 🔗

Python 3.12+ Poetry License: MIT Tests

Analyze and visualize Ethereum smart contract dependencies with ease. SCSC helps you understand contract interactions by generating detailed call graphs from on-chain data.

✨ Features

  • 📊 Generate comprehensive call graphs from smart contract interactions
  • 🔍 Analyze contract dependencies across specified block ranges
  • 📈 Export visualizations in DOT format for further analysis
  • ⚙️ Flexible configuration options for node connections and logging

🚀 Quick Start

Prerequisites

  • Python 3.12 or higher
  • Access to an Archive Ethereum node (local or remote)
  • Allium API access: optional, used to enrich addresses with labels
  • Etherscan API access: required for retrieving verified smart contract source code
  • Poetry

Installation

# Clone the repository
git clone https://github.com/mab-xyz/crystal-clear.git
cd crystal-clear/webapp/backend/crystal-clear

# Install with Poetry
poetry install

# Activate the environment
poetry shell

💻 Usage

Crystal-Clear CLI provides two main commands:

1. Analyze Dependencies Command

Dependency Graph

# note the RPC node must have method trace_filter 
crystal-clear dependency --node-url <node_url> \
            --address <contract_address> \
            --from-block <block> \
            --to-block <block> \
            [options]

# this exports the smart contract dependency graph
crystal-clear dependency  --node-url <node_url>
            --address 0xE592427A0AEce92De3Edee1F18E0157C05861564 \
            --from-block 0x14c3b86 \
            --to-block 0x14c3b90 \
            --export-dot graph.dot

Risk analysis per contract (computes the risk factors, incl. proxy and permission risks)

You can select the scope of the analysis:

  • single – assesses the risk of the specified contract only.
  • supply-chain – assesses the risk of the contract and all dependent contracts in its supply chain.
crystal-clear risk --etherscan-api-key <etherscan_api> \
            --node-url <node_url> \
            --scope [single|supply-chain]
            --address <contract_address> \
            [options]

crystal-clear risk
            --address 0xE592427A0AEce92De3Edee1F18E0157C05861564 \
            --scope single
            --export-json analysis.json

Key Parameters

Parameter Description Example
--node-url Ethereum node URL http://localhost:8545
--allium-api-key Allium API Key ``
--etherscan-api-key Etherscan API Key ``
--address Contract address to analyze 0xE592427A0AEce92De3Edee1F18E0157C05861564
--from-block Starting block number (hex/decimal) 0x14c3b86 or 21665670
--to-block Ending block number (hex/decimal) 0x14c3b90 or 21665680
--log-level Logging verbosity (analyze only) ERROR, INFO, DEBUG
--export-dot Output file for DOT graph (analyze only) output.dot
--export-json Output file for JSON (analyze only) output.json

🛠️ Development

We use modern Python tools to maintain high code quality:

  • Black: Code formatting
  • Ruff: Fast Python linting
  • pre-commit: Git hooks

Set up the development environment:

# Install development dependencies
poetry install --with dev

# Set up pre-commit hooks
pre-commit install

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.


Made with transparency 🔍 by the crystal-clear team

Metadata

Release files for mab-crystal-clear 1.0.22

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mab-crystal-clear 1.0.22
File Size Uploaded
mab_crystal_clear-1.0.22.tar.gz 30.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mab-crystal-clear 1.0.22
File Interpreter ABI Platform
mab_crystal_clear-1.0.22-py3-none-any.whl Python 3 none any Details

Total release size: 66.5 kB

Release files / mab_crystal_clear-1.0.22.tar.gz

Download URL mab_crystal_clear-1.0.22.tar.gz
Size 30.0 kB
Tags Source
SHA-256 checksum
How to use checksums
30021c2306436eac87e5aaa4580d8ae6938ed5cfeec14a3e30e512e44872f837
BLAKE2b-256 checksum
How to use checksums
fe99c63f343ff2d79bfd2cab6f845ac85b7583ed61ee98907095586acd5e6b8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.2 CPython/3.12.14 Linux/6.17.0-1022-azure

Release files / mab_crystal_clear-1.0.22-py3-none-any.whl

Download URL mab_crystal_clear-1.0.22-py3-none-any.whl
Size 36.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3abd2b306de989750699e86c36c89d8ab9a1c8169ac84c3671e4105d7fbfe1fd
BLAKE2b-256 checksum
How to use checksums
bd683484e177f9cb0e87a16e42790db7631a88e8f037782c79d54e9273a91303
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.2 CPython/3.12.14 Linux/6.17.0-1022-azure

Release history Release notifications | RSS feed

1.0.25

2 release files

1.0.24

2 release files

1.0.23

2 release files

This release

1.0.22 This release

2 release files

1.0.21

2 release files

1.0.19

2 release files

1.0.18

2 release files

1.0.17

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page