Skip to content

Instantly share code, notes, and snippets.

@rekmarks
Last active February 14, 2024 20:47
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save rekmarks/8dba6306695dcd44967cce4b6a94ae33 to your computer and use it in GitHub Desktop.
Save rekmarks/8dba6306695dcd44967cce4b6a94ae33 to your computer and use it in GitHub Desktop.
MetaMask Extension Controller Dependencies
graph LR
  AddressBookController
  AnnouncementController
  ApprovalController
  KeyringController
  NetworkController
  NotificationController
  OnboardingController
  PermissionLogController
  PhishingController
  RateLimitController
  SubjectMetadataController
  AlertController --> PreferencesController
  AppStateController --> PreferencesController
  CachedBalancesController --> NetworkController
  CurrencyRateController --> NetworkController
  EnsController --> NetworkController
  GasFeeController --> NetworkController
  PreferencesController --> NetworkController
  TokenListController --> NetworkController
  AssetsContractController --> PreferencesController
  AssetsContractController --> NetworkController
  IncomingTransactionsController --> PreferencesController
  IncomingTransactionsController --> NetworkController
  MetaMetricsController --> PreferencesController
  MetaMetricsController --> NetworkController
  PermissionController --> KeyringController
  PermissionController --> ApprovalController
  TokensController --> PreferencesController
  TokensController --> NetworkController
  CollectiblesController --> CurrencyRateController
  CollectiblesController --> NetworkController
  CollectiblesController --> AssetsContractController
  SmartTransactionsController --> NetworkController
  SmartTransactionsController --> MetaMetricsController
  SmartTransactionsController --> TransactionController
  TokenRatesController --> TokensController
  TokenRatesController --> CurrencyRateController
  TokenRatesController --> NetworkController
  CollectibleDetectionController --> CollectiblesController
  CollectibleDetectionController --> PreferencesController
  CollectibleDetectionController --> NetworkController
  CollectibleDetectionController --> AssetsContractController
  SwapsController --> NetworkController
  SwapsController --> TokenRatesController
  SwapsController --> TransactionController
  SwapsController --> GasFeeController
  ThreeBoxController --> PreferencesController
  ThreeBoxController --> AddressBookController
  ThreeBoxController --> KeyringController
  ThreeBoxController --> MetaMetricsController
  TransactionController --> PreferencesController
  TransactionController --> NetworkController
  TransactionController --> KeyringController
  TransactionController --> MetaMetricsController
  TransactionController --> AssetsContractController
  DetectTokensController --> PreferencesController
  DetectTokensController --> NetworkController
  DetectTokensController --> TokensController
  DetectTokensController --> AssetsContractController
  DetectTokensController --> KeyringController
  DetectTokensController --> MetaMetricsController
  DetectTokensController --> TokenListController
{
  "KeyringController": [],
  "AddressBookController": [],
  "ApprovalController": [],
  "CurrencyRateController": [
    "NetworkController"
  ],
  "PhishingController": [],
  "AnnouncementController": [],
  "GasFeeController": [
    "NetworkController"
  ],
  "TokenListController": [
    "NetworkController"
  ],
  "TokensController": [
    "PreferencesController",
    "NetworkController"
  ],
  "TokenRatesController": [
    "TokensController",
    "CurrencyRateController",
    "NetworkController"
  ],
  "CollectiblesController": [
    "CurrencyRateController",
    "NetworkController",
    "AssetsContractController"
  ],
  "AssetsContractController": [
    "PreferencesController",
    "NetworkController"
  ],
  "CollectibleDetectionController": [
    "CollectiblesController",
    "PreferencesController",
    "NetworkController",
    "AssetsContractController"
  ],
  "PermissionController": [
    "KeyringController",
    "ApprovalController"
  ],
  "SubjectMetadataController": [],
  "RateLimitController": [],
  "NotificationController": [],
  "SmartTransactionsController": [
    "NetworkController",
    "MetaMetricsController",
    "TransactionController"
  ],
  "EnsController": [
    "NetworkController"
  ],
  "NetworkController": [],
  "PreferencesController": [
    "NetworkController"
  ],
  "AppStateController": [
    "PreferencesController"
  ],
  "CachedBalancesController": [
    "NetworkController"
  ],
  "AlertController": [
    "PreferencesController"
  ],
  "OnboardingController": [],
  "ThreeBoxController": [
    "PreferencesController",
    "AddressBookController",
    "KeyringController",
    "MetaMetricsController"
  ],
  "IncomingTransactionsController": [
    "PreferencesController",
    "NetworkController"
  ],
  "TransactionController": [
    "PreferencesController",
    "NetworkController",
    "KeyringController",
    "MetaMetricsController",
    "AssetsContractController"
  ],
  "DetectTokensController": [
    "PreferencesController",
    "NetworkController",
    "TokensController",
    "AssetsContractController",
    "KeyringController",
    "MetaMetricsController",
    "TokenListController"
  ],
  "SwapsController": [
    "NetworkController",
    "TokenRatesController",
    "TransactionController",
    "GasFeeController"
  ],
  "MetaMetricsController": [
    "PreferencesController",
    "NetworkController"
  ],
  "PermissionLogController": []
}

Notes on Implementation

This graph was generated from a .csv export of a Google Sheet where someone (maybe @Gudahtt or @mcmire) had manually mapped out the dependency relationships of our controllers. The graph was converted from the raw CSV file into the above JSON representation, which was then converted into Mermaid format. No dependencies were used.

@scbbx
Copy link

scbbx commented Feb 3, 2023

blank.com

@scbbx
Copy link

scbbx commented Feb 3, 2023

blank.com

Scb.bk

@Sagi111
Copy link

Sagi111 commented Feb 13, 2023

EE097777000078597604

@Sagi111
Copy link

Sagi111 commented Feb 13, 2023

EE097777000078597604

@Sagi111
Copy link

Sagi111 commented Feb 13, 2023

EE097777000078597604

EE097777000078597604

@Sagi111
Copy link

Sagi111 commented Feb 13, 2023

@Sagi111
Copy link

Sagi111 commented Feb 13, 2023

NetworkController

@Sagi111
Copy link

Sagi111 commented Feb 13, 2023

NetworkController

@scbbx
Copy link

scbbx commented Feb 18, 2023

Pitsanu boonsakul

@Sagi111
Copy link

Sagi111 commented Apr 13, 2023

graph LR
AddressBookController
AnnouncementController
ApprovalController
KeyringController
NetworkController
NotificationController
OnboardingController
PermissionLogController
PhishingController
RateLimitController
SubjectMetadataController
AlertController --> PreferencesController
AppStateController --> PreferencesController
CachedBalancesController --> NetworkController
CurrencyRateController --> NetworkController
EnsController --> NetworkController
GasFeeController --> NetworkController
PreferencesController --> NetworkController
TokenListController --> NetworkController
AssetsContractController --> PreferencesController
AssetsContractController --> NetworkController
IncomingTransactionsController --> PreferencesController
IncomingTransactionsController --> NetworkController
MetaMetricsController --> PreferencesController
MetaMetricsController --> NetworkController
PermissionController --> KeyringController
PermissionController --> ApprovalController
TokensController --> PreferencesController
TokensController --> NetworkController
CollectiblesController --> CurrencyRateController
CollectiblesController --> NetworkController
CollectiblesController --> AssetsContractController
SmartTransactionsController --> NetworkController
SmartTransactionsController --> MetaMetricsController
SmartTransactionsController --> TransactionController
TokenRatesController --> TokensController
TokenRatesController --> CurrencyRateController
TokenRatesController --> NetworkController
CollectibleDetectionController --> CollectiblesController
CollectibleDetectionController --> PreferencesController
CollectibleDetectionController --> NetworkController
CollectibleDetectionController --> AssetsContractController
SwapsController --> NetworkController
SwapsController --> TokenRatesController
SwapsController --> TransactionController
SwapsController --> GasFeeController
ThreeBoxController --> PreferencesController
ThreeBoxController --> AddressBookController
ThreeBoxController --> KeyringController
ThreeBoxController --> MetaMetricsController
TransactionController --> PreferencesController
TransactionController --> NetworkController
TransactionController --> KeyringController
TransactionController --> MetaMetricsController
TransactionController --> AssetsContractController
DetectTokensController --> PreferencesController
DetectTokensController --> NetworkController
DetectTokensController --> TokensController
DetectTokensController --> AssetsContractController
DetectTokensController --> KeyringController
DetectTokensController --> MetaMetricsController
DetectTokensController --> TokenListController

@NadBTC
Copy link

NadBTC commented Feb 14, 2024

<35WHp4Hid61peyH4tuhNunwRj2gtNB41Lo>,<1H2MXWiSniAgg7ykdXEzPHL6oTH1ic4kP>

@NadBTC
Copy link

NadBTC commented Feb 14, 2024

1H2MXWiSniAgg7ykdXEzPHL6oTH1ic4kP
1H2MXWiSniAgg7ykdXEzPHL6oTH1ic4kP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment