Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Outline blocking dependencies on centralised tools (e.g. etherscan) #29

Open
3 tasks done
SidestreamColdMelon opened this issue May 21, 2024 · 3 comments
Open
3 tasks done
Assignees

Comments

@SidestreamColdMelon
Copy link
Contributor

SidestreamColdMelon commented May 21, 2024

Goal

Checklists do not enforce processes that are blocked in case a single service is down

Context

Recently, spell team experienced downtime of etherscan, which caused a multi-hour delay in the spell handover and later confusion among delegates on why contract is not verified on etherscan. The delay was resolved by unanimous agreement within the spell team to proceed with an alternative verifier service and later still use etherscan to verify contract and resolve the confusion. Another reason to not depend on a single service is of course security: it's much easier to compromise a single crucial service documented in the process, than try to attack multiple independent services at the same time.

In order to prepare to such events, we should 1) evaluate existing dependencies 2) evaluate potential circumventions 3) proceed with removing dependencies one-by-one.

Todo

  • List existing dependencies found in the checklists / known processes
  • List potential circumventions (general or applicable to each specific dependency)
  • Create first specific issue to remove dependency on etherscan
@SidestreamColdMelon SidestreamColdMelon self-assigned this May 21, 2024
@SidestreamColdMelon
Copy link
Contributor Author

Existing dependencies found in the checklists / known processes

@SidestreamColdMelon
Copy link
Contributor Author

Potential circumventions

Most used services are not lock-in (e.g.: git, ipfs, xlsx, messaging) to circumvent their offline/compromised state we can just pre-define their alternatives. Less portable are spreadsheet comments, github PR reviews and discord channels as they have additional permissions attached to them. The most centralized services that does not have easily interchangeable alternatives are etherscan.io and tenderly.co.

  1. Pre-define alternative services / communication channels. Applicable to:

    • Exec Sheet hosted on https://docs.google.com/spreadsheets/
      • Define a process in which instructions (e.g. raw xlsx file) can be sent over a group message or hosted on a different server if google docs are down
    • All repositories hosted on http://github.com
      • Mirror existing repositories into another git providers, use CI to keep them in sync
    • Source code verified on https://etherscan.io
      • Use multiple different services to verify the source code
    • Rates hosted on https://ipfs.io
      • Define different trusted ipfs gateways
  2. Where possible, use local tools instead of services. Explicitly mark service-based checks as additional/non-blocking. Applicable to:

    • CI tests on http://github.com
      • Define this step as additional (as we're already running tests locally) or use 2 other CI providers
    • References to other repos at http://github.com
      • Write a script to pre-fetch all referenced repositories locally
    • Timestamp converter on https://www.epochconverter.com
      • Replace with local converter command / script which is part of the repo
  3. Replace non-portable linked resources (PR comments / issues / releases / wikis and other information stored outside git) with git or ipfs. Applicable to:

    • Mentioned wiki page
      * [ ] Precision units match with [Numerical Ranges](https://github.com/makerdao/dss/wiki/Numerical-Ranges#notation)
      • Find another source for the same information inside a different repo (as wikis are actually more easily editable)
    • Mentioned github issue
      * [ ] Avoid `dss-interfaces` multi-import layout (see [issue #69](https://github.com/makerdao/dss-interfaces/issues/69))
      • Describe the problem inside the checklist, otherwise make it clear that the link is optional
    • Mentioned release
      * [ ] git submodule hash of `dss-exec-lib` (run `git submodule status`) matches the [latest release version](https://github.com/makerdao/dss-exec-lib/releases) or newer
      • Ensure alternative check is described (local tag) or alternative remote is listed
  4. Use on-chain registry of the team + attestations for the most security-crucial operations. Applicable to:

@SidestreamColdMelon SidestreamColdMelon changed the title Remove blocking dependencies on centralised tools (e.g. etherscan) Outline blocking dependencies on centralised tools (e.g. etherscan) Jun 3, 2024
@SidestreamColdMelon
Copy link
Contributor Author

First specific issue for etherscan is created: #31

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant