🛠️ Easily track & compare gas costs estimated by Foundry on each of your Pull Requests!

Overview

🔥 🛠️ Foundry Gas Diff Reporter

  • Easily compare gas reports generated by Foundry automatically on each of your Pull Requests!

How it works

Everytime somebody opens a Pull Request, the action expects Foundry forge to run a test suite, generating a gas report to a temporary file (named gasreport.ansi by default).

Once generated, the action will fetch the comparative gas report stored as an artifact from previous runs; parse & compare them, storing the results in the action's outputs as shell and as markdown.

You can then do whatever you want with the results!

Our recommandation: Automatically submit a sticky comment displaying the gas diff!

Live Example


Changes to gas costs

Generated at commit: d62d23148ca73df77cd4378ee1b3c17f1f303dbf, compared to commit: d62d23148ca73df77cd4378ee1b3c17f1f303dbf

🧾 Summary

Contract Method Avg (+/-) %
PositionsManager borrowLogic
supplyLogic
+702
+849
+0.13%
+0.23%
Morpho supply +809 +0.22%

Full diff report 👇
Contract Deployment Cost (+/-) Method Min (+/-) % Avg (+/-) % Median (+/-) % Max (+/-) % # Calls (+/-)
PositionsManager 4,546,050 (+14,617) borrowLogic
supplyLogic
148,437 (0)
737 (0)
0.00%
0.00%
542,977 (+702)
365,894 (+849)
+0.13%
+0.23%
438,816 (0)
383,960 (+995)
0.00%
+0.26%
1,090,968 (0)
2,121,294 (+304)
0.00%
+0.01%
292 (0)
500 (0)
Morpho 3,150,242 (0) supply 3,997 (0) 0.00% 371,586 (+809) +0.22% 395,247 (+995) +0.25% 2,125,764 (+304) +0.01% 502 (0)

Getting started

Automatically generate a gas report diff on every PR

Add a workflow (.github/workflows/foundry-gas-diff.yml):

name: Report gas diff

on:
  push:
    branches:
      - main
  pull_request:
    # Optionally configure to run only for specific files. For example:
    # paths:
    # - src/**
    # - test/**
    # - foundry.toml
    # - remappings.txt
    # - .github/workflows/foundry-gas-diff.yml

jobs:
  compare_gas_reports:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: recursive

      - name: Install Foundry
        uses: onbjerg/foundry-toolchain@v1
        with:
          version: nightly

      # Add any step generating a gas report to a temporary file named gasreport.ansi
      # For example:
      - name: Run tests
        run: forge test --gas-report | tee gasreport.ansi
        env:
          # make fuzzing semi-deterministic to avoid noisy gas cost estimation
          # due to non-deterministic fuzzing, but keep it not always deterministic
          FOUNDRY_FUZZ_SEED: 0x${{ github.event.pull_request.base.sha || github.sha }}

      - name: Compare gas reports
        uses: Rubilmax/[email protected]
        with:
          sortCriteria: avg,max # optionnally sort diff rows by criteria
          sortOrders: desc,asc # and directions
          ignore: test/**/* # optionally filter out gas reports from specific paths
        id: gas_diff

      - name: Add gas diff to sticky comment
        if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
        uses: marocchino/sticky-pull-request-comment@v2
        with:
          # delete the comment in case changes no longer impact gas costs
          delete: ${{ !steps.gas_diff.outputs.markdown }}
          message: ${{ steps.gas_diff.outputs.markdown }}

ℹ️ An error will appear at first run!
🔴 Error: No workflow run found with an artifact named "main.gasreport.ansi"
As the action is expecting a comparative file stored on the base branch and cannot find it (because the action never ran on the target branch and thus has never uploaded any gas report)

Options

report {string}

This should correspond to the path of a file where the output of forge's gas report has been logged. Only necessary when generating multiple gas reports on the same repository.

⚠️ Make sure this file uniquely identifies a gas report, to avoid messing up with a gas report of another workflow on the same repository!

Defaults to: gasreport.ansi

base {string}

The gas diff reference branch name, used to fetch the previous gas report to compare the freshly generated gas report to.

Defaults to: ${{ github.base_ref || github.ref_name }}

head {string}

The gas diff target branch name, used to upload the freshly generated gas report.

Defaults to: ${{ github.head_ref || github.ref_name }}

token {string}

The github token allowing the action to upload and download gas reports generated by foundry. You should not need to customize this, as the action already has access to the default Github Action token.

Defaults to: ${{ github.token }}

header {string}

The top section displayed in the markdown output. Can be used to identify multiple gas diffs in the same PR or add metadata/information to the markdown output.

Defaults to:

# Changes to gas cost

sortCriteria {string[]}

A list of criteria to sort diff rows by in the report table (can be name | min | avg | median | max | calls), separated by a comma. Must have the same length as sortOrders.

Defaults to: name

sortOrders {string[]}

A list of directions to sort diff rows by in the report table (can be asc | desc), for each sort criterion, separated by a comma. Must have the same length as sortCriteria.

Defaults to: asc

ignore {string[]}

The list of paths from which to ignore gas reports, separated by a comma. This allows to clean out gas diffs from dependency contracts impacted by a change (e.g. Proxies, ERC20, ...).

No default assigned: optional opt-in (Please note that node dependencies are always discarded from gas reports)

match {string[]}

The list of paths of which only to keep gas reports, separated by a comma. This allows to only display gas diff of specific contracts.

No default assigned: optional opt-in

⚠️ Known limitations

Library gas reports
Forge does not generate library gas reports. You need to wrap their usage in a contract calling the library to be able to compare gas costs of calling the library.

Average gas cost estimation
Average & median gas costs for each function is estimated based on the test suite, which means they are easily impacted by small changes in the tests. We recommend using a separate, specific test suite, rarily updated, designed to perform accurate gas estimations.

Fuzzing impacts gas costs
Fuzzing can lead differences in gas costs estimated each time a test suite is ran. We thus recommend setting a deterministic fuzzing seed via the --fuzz-seed argument.

This repository is maintained independently from Foundry and may not work as expected with all versions of forge.

Comments
  • forge test --gas-report >> gasreport.ansi fail in Git workflow

    forge test --gas-report >> gasreport.ansi fail in Git workflow

    Description

    At the moment install the plugins in the git workflow of own repo, this fail in this job

    Run touch gasreport.ansi
      touch gasreport.ansi
      forge test --gas-report >> gasreport.ansi
      shell: /usr/bin/bash -e {0}
      env:
        FOUNDRY_FUZZ_SEED: 0xf918dca568a9678b0953a5296872f0139bae
        FOUNDRY_VIA_IR: false
    Error: Process completed with exit code 1.
    

    [2]https://github.com/keyper-labs/KeyperModule/actions/runs/3583017651/jobs/6027933980#step:4:2 [3]https://github.com/keyper-labs/KeyperModule/actions/runs/3583017651/jobs/6027933980#step:4:3 [4]https://github.com/keyper-labs/KeyperModule/actions/runs/3583017651/jobs/6027933980#step:4:4 [6]https://github.com/keyper-labs/KeyperModule/actions/runs/3583017651/jobs/6027933980#step:4:6

    when run the forge test --gas-report and try to create the gesreport.ansi, this fail in all moments

    TRY

    i try to changes the yaml file, but i can't found a solutions!!, pls check and let me know how fixed

    opened by alfredolopez80 6
  • Bump @typescript-eslint/parser from 5.41.0 to 5.42.0

    Bump @typescript-eslint/parser from 5.41.0 to 5.42.0

    Bumps @typescript-eslint/parser from 5.41.0 to 5.42.0.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.42.0

    5.42.0 (2022-10-31)

    Bug Fixes

    • ast-spec: add TSQualifiedName to TypeNode union (#5906) (5c316c1)
    • eslint-plugin: [no-extra-parens] handle type assertion in extends clause (#5901) (8ed7219)
    • typescript-estree: don't allow single-run unless we're in type-aware linting mode (#5893) (891b087)

    Features

    • eslint-plugin: [member-ordering] add natural sort order (#5662) (1eaae09)
    • eslint-plugin: [no-invalid-void-type] better report message for void used as a constituent inside a function return type (#5274) (d806bda)
    • typescript-estree: clarify docs and error for program project without matching TSConfig (#5762) (67744db)
    • utils: add RuleTester API for top-level dependency constraints (#5896) (0520d53)
    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.42.0 (2022-10-31)

    Features

    Reverts

    Commits
    • 1e5e9ea chore: publish v5.42.0
    • 2ee81df Revert "feat(scope-manager): ignore ECMA version" (#5888)
    • 3b8d449 feat(scope-manager): ignore ECMA version (#5881)
    • fcf3f9d docs: Mention wide globs performance implications in monorepos docs and parse...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @types/node from 18.7.14 to 18.11.0

    Bump @types/node from 18.7.14 to 18.11.0

    Bumps @types/node from 18.7.14 to 18.11.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump minimatch from 5.1.1 to 5.1.2

    Bump minimatch from 5.1.1 to 5.1.2

    Bumps minimatch from 5.1.1 to 5.1.2.

    Commits
    • baa3578 5.1.2
    • 8d7ff45 changelog for changes in next patch update
    • 56a2b05 treat invalid classes as non-matching patterns
    • f6fd04d fix: character class escaping
    • de77766 tests: escape regex properly within classes
    • 50eccc7 fix: unescape bracket validation
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump adm-zip from 0.5.9 to 0.5.10

    Bump adm-zip from 0.5.9 to 0.5.10

    Bumps adm-zip from 0.5.9 to 0.5.10.

    Release notes

    Sourced from adm-zip's releases.

    v0.5.10

    Add Unix mode attribute even when archive is created from Windows Fixed an issue where addLocalFolderAsync causes stack overflow when a lot of files are filtered Support to unzip symlinks Fix parameter initialization bug of extractAllToAsync Allow for custom stat or permissions value in addLocalFolder Various small fixes and tests

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump @typescript-eslint/parser from 5.45.1 to 5.46.1

    Bump @typescript-eslint/parser from 5.45.1 to 5.46.1

    Bumps @typescript-eslint/parser from 5.45.1 to 5.46.1.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.46.1

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/typescript-eslint

    v5.46.0

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)
    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.0 (2022-12-08)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump @vercel/ncc from 0.34.0 to 0.36.0

    Bump @vercel/ncc from 0.34.0 to 0.36.0

    Bumps @vercel/ncc from 0.34.0 to 0.36.0.

    Release notes

    Sourced from @​vercel/ncc's releases.

    0.36.0

    0.36.0 (2022-12-05)

    Bug Fixes

    • gitignore should include release.config.js (#1016) (44e2eac)
    • node 18 by update source-map used by Terser to 0.7.4 (#999) (2f69f83)

    Features

    Commits
    • 44e2eac fix: gitignore should include release.config.js (#1016)
    • be3405d feat: add semantic-release to autopublish (#1015)
    • 92801d6 chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 (#1009)
    • e730044 chore(deps): bump minimatch from 3.0.4 to 3.1.2 (#1010)
    • 75931d5 chore(deps-dev): bump auth0 from 2.36.1 to 2.44.0 (#1007)
    • 000c7e7 chore: test node 18 (#1006)
    • 2f69f83 fix: node 18 by update source-map used by Terser to 0.7.4 (#999)
    • 9ff8aa6 chore(deps): bump socket.io-parser from 4.0.4 to 4.0.5 (#1001)
    • dc04439 chore(deps): bump styfle/cancel-workflow-action from 0.10.1 to 0.11.0 (#993)
    • f5826a3 chore(deps-dev): bump got from 11.8.5 to 12.5.2 (#994)
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by vercel-release-bot, a new releaser for @​vercel/ncc since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump @typescript-eslint/parser from 5.44.0 to 5.45.1

    Bump @typescript-eslint/parser from 5.44.0 to 5.45.1

    Bumps @typescript-eslint/parser from 5.44.0 to 5.45.1.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)
    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.45.1 (2022-12-05)

    Bug Fixes

    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump @typescript-eslint/parser from 5.44.0 to 5.45.0

    Bump @typescript-eslint/parser from 5.44.0 to 5.45.0

    Bumps @typescript-eslint/parser from 5.44.0 to 5.45.0.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)
    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump minimatch from 5.1.0 to 5.1.1

    Bump minimatch from 5.1.0 to 5.1.1

    Bumps minimatch from 5.1.0 to 5.1.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump typescript from 4.8.4 to 4.9.3

    Bump typescript from 4.8.4 to 4.9.3

    ⚠️ Dependabot is rebasing this PR ⚠️

    Rebasing might not happen immediately, so don't worry if this takes some time.

    Note: if you make any changes to this PR yourself, they will take precedence over the rebase.


    Bumps typescript from 4.8.4 to 4.9.3.

    Release notes

    Sourced from typescript's releases.

    TypeScript 4.9

    For release notes, check out the release announcement.

    Downloads are available on:

    Changes:

    • 93bd577458d55cd720b2677705feab5c91eb12ce Bump version to 4.9.3 and LKG.
    • 107f832b80df2dc97748021cb00af2b6813db75b Update LKG.
    • 31bee5682df130a14ffdd5742f994dbe7313dd0e Cherry-pick PR #50977 into release-4.9 (#51363) [ #50872 ]
    • 1e2fa7ae15f8530910fef8b916ec8a4ed0b59c45 Update version to 4.9.2-rc and LKG.
    • 7ab89e5c6e401d161f31f28a6c555a3ba530910e Merge remote-tracking branch 'origin/main' into release-4.9
    • e5cd686defb1a4cbdb36bd012357ba5bed28f371 Update package-lock.json
    • 8d40dc15d1b9945837e7860320fdccfe27c40cad Update package-lock.json
    • 5cfb3a2fe344a5350734305193e6cc99516285ca Only call return() for an abrupt completion in user code (#51297)
    • a7a9d158e817fcb0e94dc1c24e0a401b21be0cc9 Fix for broken baseline in yieldInForInInDownlevelGenerator (#51345)
    • 7f8426f4df0d0a7dd8b72079dafc3e60164a23b1 fix for-in enumeration containing yield in generator (#51295)
    • 3d2b4017eb6b9a2b94bc673291e56ae95e8beddd Fix assertion functions accessed via wildcard imports (#51324)
    • 64d0d5ae140b7b26a09e75114517b418d6bcaa9f fix(51301): Fixing an unused import at the end of a line removes the newline (#51320)
    • 754eeb2986bde30d5926e0fa99c87dda9266d01b Update CodeQL workflow and configuration, fix found bugs (#51263)
    • d8aad262006ad2d2c91aa7a0e4449b4b83c57f7b Update package-lock.json
    • d4f26c840b1db76c0b25a405c8e73830a2b45cbc fix(51245): Class with parameter decorator in arrow function causes "convert to default export" refactoring failure (#51256)
    • 16faf45682173ea437a50330feb4785578923d7f Update package-lock.json
    • 8b1ecdb701e2a2e19e9f8bcdd6b2beac087eabee fix(50654): "Move to a new file" breaks the declaration of referenced variable (#50681)
    • 170a17fad57eae619c5ef2b7bdb3ac00d6c32c47 Dom update 2022-10-25 (#51300)
    • 9c4e14d75174432f6a4dc5967a09712a6784ab88 Remove "No type information for this code" from baseline (#51311)
    • 88d25b4f232929df59729156dfda6b65277affec fix(50068): Refactors trigger debug failure when JSX text has a ' and a tag on the same line. (#51299)
    • 8bee69acf410d4986cb0cc102b949e2d133d5380 Update package-lock.json
    • 702de1eeaaef88a189e4d06e5a2aae287853790a Fix early call to return/throw on generator (#51294)
    • 2c12b1499908ad7718e65d20e264561207c22375 Add a GH Action to file a new issue if we go a week without seeing a typescript-error-deltas issue (#51271)
    • 6af270dee09d62516f6dc02ec102a745ffebc037 Update package-lock.json
    • 2cc4c16a26672a7ba6c97ba16309fcf334db7cae Update package-lock.json
    • 60934915d9ccc4ca9c0fb2cd060d7ec81601942b Fix apparent typo in getStringMappingType (#51248)
    • 61c26096e3373719ece686b84c698423890e9a5f Update package-lock.json
    • ef69116c41cb6805f89e6592eacb0ccb7f02207d Generate shortest rootDirs module specifier instead of first possible (#51244)
    • bbb42f453dc684e03d977c5b70391124d57543a9 Fix typo in canWatchDirectoryOrFile found by CodeQL (#51262)
    • a56b254ad3c52b598bc5d44f83f3d0a1cf806068 Include 'this' type parameter in isRelatedTo fast path (#51230)
    • 3abd351c0eea55758f27ee5558a4a1525b77f45b Fix super property transform in async arrow in method (#51240)
    • eed05112180e0d94f78aa02d676d49468f15dc31 Update package-lock.json
    • 2625c1feae25aede35465ca835440fc57bf13d52 Make the init config category order predictable (#51247)
    • 1ca99b34029dafad2c18af7bdc0711f4abf7e522 fix(50551): Destructuring assignment with var bypasses "variable is used before being assigned" check (2454) (#50560)
    • 3f28fa12dfecb8dfd66ce4684bf26f64e1f092f1 Update package-lock.json
    • 906ebe49334a3a9c2dbd73cd3c902898bc712b66 Revert structuredTypeRelatedTo change and fix isUnitLikeType (#51076)
    • 8ac465239f52de1da3ada8cdc4c3f107f4d62e45 change type (#51231)
    • 245a02cbed7ad50a21289730159abc8d19a66f40 fix(51222): Go-to-definition on return statements should jump to the containing function declaration (#51227)
    • 2dff34e8c4a91c0005ca9ccfb7e045e225b6f2e4 markAliasReferenced should include ExportValue as well (#51219)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
Releases(v3.13.1)
  • v3.13.1(Dec 27, 2022)

    What's Changed

    • Bump eslint-plugin-jest from 27.1.6 to 27.1.7 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/87
    • Bump @types/node from 18.11.13 to 18.11.17 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/88
    • Bump eslint from 8.29.0 to 8.30.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/90
    • Bump typescript from 4.9.3 to 4.9.4 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/91
    • Bump @typescript-eslint/parser from 5.45.1 to 5.47.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/92
    • Bump @typescript-eslint/parser from 5.47.0 to 5.47.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/95

    Full Changelog: https://github.com/Rubilmax/foundry-gas-diff/compare/v3.13...v3.13.1

    Source code(tar.gz)
    Source code(zip)
  • v3.13(Dec 15, 2022)

    • Fixes a bug hiding changes decreasing the gas cost of functions from the summary section

    Full Changelog: https://github.com/Rubilmax/foundry-gas-diff/compare/v3.12.1...v3.13

    Source code(tar.gz)
    Source code(zip)
  • v3.12.1(Dec 13, 2022)

    What's Changed

    • Bump eslint from 8.28.0 to 8.29.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/79
    • Bump @types/lodash from 4.14.190 to 4.14.191 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/80
    • Bump @types/node from 18.11.9 to 18.11.10 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/78
    • Bump @types/node from 18.11.10 to 18.11.11 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/82
    • Bump @typescript-eslint/parser from 5.44.0 to 5.45.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/81
    • Bump @types/node from 18.11.11 to 18.11.13 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/85
    • Bump eslint-plugin-github from 4.4.1 to 4.6.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/83
    • Bump prettier from 2.8.0 to 2.8.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/86

    Full Changelog: https://github.com/Rubilmax/foundry-gas-diff/compare/v3.12...v3.12.1

    Source code(tar.gz)
    Source code(zip)
  • v3.12(Dec 1, 2022)

    • Tries to fix #75 by increasing the wait delay from 200ms to 800ms (max 5000 requests/hour)

    Full Changelog: https://github.com/Rubilmax/foundry-gas-diff/compare/v3.11...v3.12

    Source code(tar.gz)
    Source code(zip)
  • v3.11(Nov 23, 2022)

  • v3.10(Nov 22, 2022)

    What's Changed

    • Bump eslint from 8.26.0 to 8.27.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/62
    • Bump @types/node from 18.11.3 to 18.11.9 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/61
    • Bump eslint-plugin-jest from 27.1.3 to 27.1.4 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/60
    • Bump @types/lodash from 4.14.186 to 4.14.188 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/58
    • Bump @typescript-eslint/parser from 5.41.0 to 5.42.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/63
    • Bump @jest/types from 29.2.1 to 29.3.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/65
    • Bump eslint-plugin-jest from 27.1.4 to 27.1.5 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/64
    • Bump eslint from 8.27.0 to 8.28.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/68
    • Bump @typescript-eslint/parser from 5.42.1 to 5.44.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/67
    • Bump @types/lodash from 4.14.188 to 4.14.189 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/66

    Full Changelog: https://github.com/Rubilmax/foundry-gas-diff/compare/v3.9.1...v3.10

    Source code(tar.gz)
    Source code(zip)
  • v3.9.1(Nov 7, 2022)

    What's Changed

    • Bump eslint from 8.19.0 to 8.21.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/1
    • Bump eslint-plugin-jest from 26.6.0 to 26.7.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/2
    • Bump ts-jest from 28.0.6 to 28.0.7 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/5
    • Bump @typescript-eslint/parser from 5.30.6 to 5.32.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/4
    • Bump eslint-plugin-github from 4.3.6 to 4.3.7 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/3
    • Bump @typescript-eslint/parser from 5.32.0 to 5.33.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/6
    • Bump @trivago/prettier-plugin-sort-imports from 3.2.0 to 3.3.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/7
    • Bump eslint-plugin-jest from 26.7.0 to 26.8.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/8
    • Bump @types/node from 18.0.3 to 18.6.5 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/9
    • Bump eslint-plugin-jest from 26.8.0 to 26.8.3 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/14
    • Bump ts-jest from 28.0.7 to 28.0.8 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/12
    • Bump eslint from 8.21.0 to 8.22.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/13
    • Bump @octokit/core from 4.0.4 to 4.0.5 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/11
    • Bump @types/lodash from 4.14.182 to 4.14.184 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/18
    • Bump @types/node from 18.6.5 to 18.7.13 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/17
    • Bump @types/minimatch from 3.0.5 to 5.1.2 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/19
    • Bump eslint from 8.22.0 to 8.23.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/16
    • Bump @types/node from 18.7.13 to 18.7.14 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/21
    • Bump @typescript-eslint/parser from 5.33.0 to 5.36.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/20
    • Bump @actions/core from 1.9.0 to 1.9.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/10
    • Bump eslint-plugin-jest from 26.8.3 to 27.1.2 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/44
    • Bump @typescript-eslint/parser from 5.36.1 to 5.40.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/43
    • Bump @jest/types from 28.1.3 to 29.2.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/41
    • Bump typescript from 4.7.4 to 4.8.4 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/35
    • Bump @types/node from 18.7.14 to 18.11.3 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/45
    • Bump eslint-plugin-jest from 27.1.2 to 27.1.3 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/50
    • Bump @types/lodash from 4.14.184 to 4.14.186 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/49
    • Bump @typescript-eslint/parser from 5.40.1 to 5.41.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/48
    • Bump @actions/core from 1.9.1 to 1.10.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/47
    • Bump @jest/types from 29.2.0 to 29.2.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/46
    • Bump @actions/github from 5.0.3 to 5.1.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/56
    • Bump eslint from 8.23.0 to 8.26.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/55
    • Bump @trivago/prettier-plugin-sort-imports from 3.3.0 to 3.4.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/53
    • Bump @octokit/core from 4.0.5 to 4.1.0 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/52
    • Bump eslint-plugin-github from 4.3.7 to 4.4.1 by @dependabot in https://github.com/Rubilmax/foundry-gas-diff/pull/57

    New Contributors

    • @dependabot made their first contribution in https://github.com/Rubilmax/foundry-gas-diff/pull/1

    Full Changelog: https://github.com/Rubilmax/foundry-gas-diff/compare/v3.9...v3.9.1

    Source code(tar.gz)
    Source code(zip)
  • v3.9(Aug 4, 2022)

  • v3.8(Jul 29, 2022)

  • v3.7(Jul 22, 2022)

  • v3.6(Jul 21, 2022)

  • v3.5(Jul 21, 2022)

  • v3.4(Jul 21, 2022)

  • v3.3(Jul 20, 2022)

  • v3.2(Jul 20, 2022)

  • v3.1(Jul 19, 2022)

  • v3(Jul 18, 2022)

  • v2.1(Jul 18, 2022)

Owner
Romain Milon
Engineer @morpho-labs 🦋 | Solidity | Typescript | Python | Java | Rust
Romain Milon
A sequence of smart contracts to practice gas optimization. These are used as practice assignments for RareSkills.io and the Udemy Gas Optimization Course

RareSkills Gas Puzzles Puzzles that are ready for you Distribute (hard) Array Sum (easy) Escrow EscrowV2 Mint Presale Require (easy) Staking Contribut

RareSkills 240 Dec 31, 2022
Foundry-Hardhat plugins: Use Foundry for Hardhat projects

This repo contains hardhat plugins to use foundry tools in hardhat environments. Installation See in each plugin anvil forge foundryup Documentation F

Foundry 77 Nov 3, 2022
Open! Inclusive! Collaborative! A community for enthusiasts exploring new technologies, working on innovative ideas and helping each other grow together. Open Issues, Raise ideas, Make Pull Requests!

About Us OplnCo previously known as Devstucom represents Open Inclusive Collaborative. We as a community help our fellow students build skills through

OpInCo Community 4 Oct 13, 2022
Compare camelized/dasherized/underscored strings each other 🤜🏿 🤛🏿

aynen Compare camelized/dasherized/underscored strings each other Install npm install aynen yarn add aynen Usage import aynen from 'aynen'; aynen('fo

null 4 Mar 25, 2022
Hardhat plugin to track gas on the transaction level

hardhat-gas-trackooor Hardhat plugin to track gas on the transaction level. Example report Installation npm install hardhat-gas-trackooor --save-dev A

null 16 Jan 3, 2023
Add a table of contents to the sidebar of your GitHub issues and pull requests.

github-sidebar-jump-extension Getting started ?? Build locally Checkout the repository to your local machine Run npm install to install all required d

Jason Barry 11 Sep 7, 2022
Example CRUD API for API Fest'22. See Pull Requests for chapter 2 and 3

Example CRUD API for API Fest'22. See Pull Requests for chapter 2 and 3

Postman Student Program 6 Mar 2, 2022
Automate adding issues and pull requests to GitHub projects (beta)

actions/add-to-project Use this action to automatically add the current issue or pull request to a GitHub project. Note that this is for GitHub projec

GitHub Actions 293 Jan 3, 2023
Tool for GitHub/GitLab to keep Repositories/Projects you are interested in and their Pull/Merge Requests in desktop Tray Menu

Tool for GitHub/GitLab to keep Repositories/Projects you are interested in and their Pull/Merge Requests in desktop Tray Menu. More info in User Guide.

Oleksii Bilyk 5 Jul 31, 2022
Add Read the Docs preview's link to Pull Requests

Add Read the Docs preview's link to Pull Requests GitHub Action that automatically edits Pull Requests' descriptions with a link to documentation's pr

Read the Docs 10 Nov 18, 2022
Use this as learning repo on how to create successful pull requests.

Hacktoberfest 2022 Special We will be posting a problem daily at 10 AM related to languages like HTML/CSS, Python, C++ till 30th Oct. No need to get i

null 24 Dec 22, 2022
Full stack app to journal and keep track of your overall mood each day of the year, inspired by GitHub's contribution graph.

Mood Tracker Mood tracker to journal and keep track of your overall mood each day of the year. How It's Made: Tech used: EJS, CSS, JavaScript, Node.js

Bianca Togonon 44 Dec 14, 2022
✨ View all of your GitHub stats and compare your stats with friends, made using nextjs and tailwind.

Octotastic All of your GitHub Stats in one place. Features: View your own stats or any other user's stats. View advanced stats using graphs and charts

ashish 10 Sep 6, 2022
Ethereum smart contract gas cost waste pattern detection and patching tool

Ethereum smart contract gas cost waste pattern detection and patching tool

ibelab 4 Mar 23, 2022
An implementation of ERC1155D, a record setter for minting and transfer gas efficiency.

ERC1155D An implementation of ERC1155D, a record setter for minting and transfer gas efficiency. This contract is in alpha stage and has not been audi

null 72 Dec 26, 2022
Gas-efficient on-chain batched shuffling for NFTs

Batch NFT reveal This repository contains a gas-efficient implementation of an on-chain shuffling algorithm used to reveal NFTs in batches. The main b

Tubby Cats 97 Dec 12, 2022
A prototype snap for injecting gas fee prices into a confirmation window that also serves as the basis for a 5-minute Snaps tutorial

@Montoya/gas-fee-snap A simple Snap example based on @MetaMask/template-snap. Read below for a tutorial! Prerequisites Before you begin, make sure you

Christian Montoya 18 Dec 8, 2022
Eigen ZK-ZKRollup, Low gas-fee, better privacy-enhancement, high composable

ZKZRU: Eigen ZK-ZKRollup Eigen ZK-ZKRollup provides confidential transaction for users with low gas cost. The ZK-Rollup is an extention of RollupNC an

Eigen Labs 25 Dec 22, 2022
aka Scaletor, take screenshots of a piece of a map and scale/compare with other parts of the map

scale-a-tron A quick-and-dirty map that lets you compare one area to another. Draw a shape around a region, zoom in to another place on the map, and c

Stamen Design 24 Nov 7, 2022