diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 098c2f95..a57d69c5 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,10 +1,9 @@ --- name: Bug report about: Create a report to help us improve -title: '' +title: "" labels: bug -assignees: '' - +assignees: "" --- **Version** diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 982a4dc0..df058852 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,10 +1,9 @@ --- name: Feature request about: Suggest an idea for this project -title: '' +title: "" labels: feature-request -assignees: '' - +assignees: "" --- **Is your feature request related to a problem? Please describe.** diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 445ecc99..02c2353a 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,10 +1,9 @@ --- name: Question about: Please use the Telegram group for questions -title: '' -labels: '' -assignees: '' - +title: "" +labels: "" +assignees: "" --- Please post your question as a discussion in Telegram: https://t.me/ethers_rs diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 614258bd..73ddc580 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -27,6 +27,6 @@ the code change. ## PR Checklist -- [ ] Added Tests -- [ ] Added Documentation -- [ ] Updated the changelog +- [ ] Added Tests +- [ ] Added Documentation +- [ ] Updated the changelog diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6ba99219..db41d65b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,49 +1,49 @@ version: 2 updates: -- package-ecosystem: cargo - directory: "/" - schedule: - interval: daily - time: "03:00" - open-pull-requests-limit: 10 - ignore: - - dependency-name: async-trait - versions: - - 0.1.48 - - 0.1.49 - - dependency-name: futures-core - versions: - - 0.3.13 - - 0.3.14 - - dependency-name: futures-channel - versions: - - 0.3.14 - - dependency-name: anyhow - versions: - - 1.0.40 - - dependency-name: elliptic-curve - versions: - - 0.9.0 - - 0.9.2 - - 0.9.6 - - dependency-name: pin-project - versions: - - 1.0.6 - - dependency-name: arrayvec - versions: - - 0.6.0 - - dependency-name: serde - versions: - - 1.0.125 - - dependency-name: tokio - versions: - - 1.3.0 - - dependency-name: serde_json - versions: - - 1.0.63 - - dependency-name: ethereum-types - versions: - - 0.11.0 - - dependency-name: yubihsm - versions: - - 0.38.0 + - package-ecosystem: cargo + directory: "/" + schedule: + interval: daily + time: "03:00" + open-pull-requests-limit: 10 + ignore: + - dependency-name: async-trait + versions: + - 0.1.48 + - 0.1.49 + - dependency-name: futures-core + versions: + - 0.3.13 + - 0.3.14 + - dependency-name: futures-channel + versions: + - 0.3.14 + - dependency-name: anyhow + versions: + - 1.0.40 + - dependency-name: elliptic-curve + versions: + - 0.9.0 + - 0.9.2 + - 0.9.6 + - dependency-name: pin-project + versions: + - 1.0.6 + - dependency-name: arrayvec + versions: + - 0.6.0 + - dependency-name: serde + versions: + - 1.0.125 + - dependency-name: tokio + versions: + - 1.3.0 + - dependency-name: serde_json + versions: + - 1.0.63 + - dependency-name: ethereum-types + versions: + - 0.11.0 + - dependency-name: yubihsm + versions: + - 0.38.0 diff --git a/.github/workflows/audit-on-push.yml b/.github/workflows/audit-on-push.yml index e46bb3cc..7ecf3535 100644 --- a/.github/workflows/audit-on-push.yml +++ b/.github/workflows/audit-on-push.yml @@ -1,14 +1,14 @@ name: Security audit on: - push: - paths: - - '**/Cargo.toml' - - '**/Cargo.lock' + push: + paths: + - "**/Cargo.toml" + - "**/Cargo.lock" jobs: - security_audit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: actions-rs/audit-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + security_audit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions-rs/audit-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17323a3e..4245a60d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,8 @@ on: - push: - branches: - - master - pull_request: + push: + branches: + - master + pull_request: name: Tests @@ -10,282 +10,285 @@ name: Tests # so that we do not get rate limited by Etherscan (and it's free to generate as # many as you want) env: - ETHERSCAN_API_KEY_ETHEREUM: I5BXNZYP5GEDWFINGVEZKYIVU2695NPQZB - ETHERSCAN_API_KEY_CELO: B13XSMUT6Q3Q4WZ5DNQR8RXDBA2KNTMT4M - RINKEBY_PRIVATE_KEY: "fa4a1a79e869a96fcb42727f75e3232d6865a82ea675bb95de967a7fe6a773b2" + ETHERSCAN_API_KEY_ETHEREUM: I5BXNZYP5GEDWFINGVEZKYIVU2695NPQZB + ETHERSCAN_API_KEY_CELO: B13XSMUT6Q3Q4WZ5DNQR8RXDBA2KNTMT4M + RINKEBY_PRIVATE_KEY: "fa4a1a79e869a96fcb42727f75e3232d6865a82ea675bb95de967a7fe6a773b2" jobs: - tests: - name: ethereum tests - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - - name: Install Anvil - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - name: Install Solc - run: | - mkdir -p "$HOME/bin" - wget -q https://github.com/ethereum/solidity/releases/download/v0.8.10/solc-static-linux -O $HOME/bin/solc - chmod u+x "$HOME/bin/solc" - export PATH=$HOME/bin:$PATH - solc --version + tests: + name: ethereum tests + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Install Anvil + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + - name: Install Solc + run: | + mkdir -p "$HOME/bin" + wget -q https://github.com/ethereum/solidity/releases/download/v0.8.10/solc-static-linux -O $HOME/bin/solc + chmod u+x "$HOME/bin/solc" + export PATH=$HOME/bin:$PATH + solc --version - - name: Install geth - run: | - mkdir -p "$HOME/bin" - wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.23-8c2f2715.tar.gz - tar -xvf geth-linux-amd64-1.9.23-8c2f2715.tar.gz - mv geth-linux-amd64-1.9.23-8c2f2715/geth $HOME/bin/geth - chmod u+x "$HOME/bin/geth" - export PATH=$HOME/bin:$PATH - geth version - - name: Install stable toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - components: rustfmt, clippy - - uses: Swatinem/rust-cache@v1 - with: - cache-on-failure: true - - name: cargo test - run: | - export PATH=$HOME/bin:$PATH - export ETHERSCAN_API_KEY=$ETHERSCAN_API_KEY_ETHEREUM - cargo test + - name: Install geth + run: | + mkdir -p "$HOME/bin" + wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.23-8c2f2715.tar.gz + tar -xvf geth-linux-amd64-1.9.23-8c2f2715.tar.gz + mv geth-linux-amd64-1.9.23-8c2f2715/geth $HOME/bin/geth + chmod u+x "$HOME/bin/geth" + export PATH=$HOME/bin:$PATH + geth version + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true + - name: cargo test + run: | + export PATH=$HOME/bin:$PATH + export ETHERSCAN_API_KEY=$ETHERSCAN_API_KEY_ETHEREUM + cargo test - feature-tests: - name: celo tests - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - # TODO: can we combine these shared steps in github actions? - - name: Install Anvil - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - name: Install Solc - run: | - mkdir -p "$HOME/bin" - wget -q https://github.com/ethereum/solidity/releases/download/v0.8.10/solc-static-linux -O $HOME/bin/solc - chmod u+x "$HOME/bin/solc" - export PATH=$HOME/bin:$PATH - solc --version - - name: Install geth - run: | - mkdir -p "$HOME/bin" - wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.23-8c2f2715.tar.gz - tar -xvf geth-linux-amd64-1.9.23-8c2f2715.tar.gz - mv geth-linux-amd64-1.9.23-8c2f2715/geth $HOME/bin/geth - chmod u+x "$HOME/bin/geth" - export PATH=$HOME/bin:$PATH - geth version + feature-tests: + name: celo tests + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + # TODO: can we combine these shared steps in github actions? + - name: Install Anvil + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + - name: Install Solc + run: | + mkdir -p "$HOME/bin" + wget -q https://github.com/ethereum/solidity/releases/download/v0.8.10/solc-static-linux -O $HOME/bin/solc + chmod u+x "$HOME/bin/solc" + export PATH=$HOME/bin:$PATH + solc --version + - name: Install geth + run: | + mkdir -p "$HOME/bin" + wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.23-8c2f2715.tar.gz + tar -xvf geth-linux-amd64-1.9.23-8c2f2715.tar.gz + mv geth-linux-amd64-1.9.23-8c2f2715/geth $HOME/bin/geth + chmod u+x "$HOME/bin/geth" + export PATH=$HOME/bin:$PATH + geth version - - name: Install stable toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - components: rustfmt, clippy - - uses: Swatinem/rust-cache@v1 - with: - cache-on-failure: true - - name: cargo test (Celo) - run: | - export PATH=$HOME/bin:$PATH - export ETHERSCAN_API_KEY=$ETHERSCAN_API_KEY_CELO - cargo test --all-features + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true + - name: cargo test (Celo) + run: | + export PATH=$HOME/bin:$PATH + export ETHERSCAN_API_KEY=$ETHERSCAN_API_KEY_CELO + cargo test --all-features - lint: - name: lints - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - - name: Install toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly - profile: minimal - components: rustfmt, clippy - override: true - - uses: Swatinem/rust-cache@v1 - with: - cache-on-failure: true - - name: cargo fmt - run: cargo +nightly fmt --all -- --check - - name: cargo clippy - run: cargo +nightly clippy --all-features -- -D warnings + lint: + name: lints + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + profile: minimal + components: rustfmt, clippy + override: true + - uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true + - name: cargo fmt + run: cargo +nightly fmt --all -- --check + - name: cargo clippy + run: cargo +nightly clippy --all-features -- -D warnings - wasm: - name: WASM - runs-on: ubuntu-latest + wasm: + name: WASM + runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - - name: Install rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - target: wasm32-unknown-unknown - profile: minimal - override: true + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Install rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: wasm32-unknown-unknown + profile: minimal + override: true - - name: Install Anvil - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly + - name: Install Anvil + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly - - uses: Swatinem/rust-cache@v1 - with: - cache-on-failure: true + - uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true - - name: Check - uses: actions-rs/cargo@v1 - with: - command: check - args: --target wasm32-unknown-unknown + - name: Check + uses: actions-rs/cargo@v1 + with: + command: check + args: --target wasm32-unknown-unknown - - name: Launch Anvil - run: anvil --block-time 2 -m "stuff inherit faith park genre spread huge knee ecology private marble supreme" & + - name: Launch Anvil + run: + anvil --block-time 2 -m "stuff inherit faith park genre spread huge knee ecology + private marble supreme" & - - name: Install wasm-pack - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + - name: Install wasm-pack + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - name: Wasm-pack test firefox - run: | - cd examples/ethers-wasm - wasm-pack test --headless --firefox + - name: Wasm-pack test firefox + run: | + cd examples/ethers-wasm + wasm-pack test --headless --firefox - - name: Wasm-pack test chrome - run: | - cd examples/ethers-wasm - wasm-pack test --headless --chrome + - name: Wasm-pack test chrome + run: | + cd examples/ethers-wasm + wasm-pack test --headless --chrome - examples: - name: Examples - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 + examples: + name: Examples + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 - - name: Install geth (for state overrides example) - run: | - mkdir -p "$HOME/bin" - wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.23-8c2f2715.tar.gz - tar -xvf geth-linux-amd64-1.9.23-8c2f2715.tar.gz - mv geth-linux-amd64-1.9.23-8c2f2715/geth $HOME/bin/geth - chmod u+x "$HOME/bin/geth" - export PATH=$HOME/bin:$PATH - geth version + - name: Install geth (for state overrides example) + run: | + mkdir -p "$HOME/bin" + wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.23-8c2f2715.tar.gz + tar -xvf geth-linux-amd64-1.9.23-8c2f2715.tar.gz + mv geth-linux-amd64-1.9.23-8c2f2715/geth $HOME/bin/geth + chmod u+x "$HOME/bin/geth" + export PATH=$HOME/bin:$PATH + geth version - - name: Install Anvil - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly + - name: Install Anvil + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly - - name: Install Solc - run: | - mkdir -p "$HOME/bin" - wget -q https://github.com/ethereum/solidity/releases/download/v0.8.10/solc-static-linux -O $HOME/bin/solc - chmod u+x "$HOME/bin/solc" - export PATH=$HOME/bin:$PATH - solc --version + - name: Install Solc + run: | + mkdir -p "$HOME/bin" + wget -q https://github.com/ethereum/solidity/releases/download/v0.8.10/solc-static-linux -O $HOME/bin/solc + chmod u+x "$HOME/bin/solc" + export PATH=$HOME/bin:$PATH + solc --version - - name: Install stable toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - components: rustfmt, clippy - - uses: Swatinem/rust-cache@v1 - with: - cache-on-failure: true - - name: Build all examples - run: | - export PATH=$HOME/bin:$PATH - examples=$(cargo metadata --format-version 1 | \ - jq -c '.packages[] - | select(.name == "ethers") - | .targets[] - | select(.kind[] | contains("example")) - | with_entries(select([.key] - | inside(["name", "required-features"])))' - ) - for example in $examples; do - name="$(echo "$example" | jq -r '.name')" - args=( - -p ethers - --example "$name" - ) - features="$(echo "$example" | jq -r 'try(."required-features" | join(","))')" - if [[ ! -z "$features" ]]; then - args+=(--features "$features") - fi + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true + - name: Build all examples + run: | + export PATH=$HOME/bin:$PATH + examples=$(cargo metadata --format-version 1 | \ + jq -c '.packages[] + | select(.name == "ethers") + | .targets[] + | select(.kind[] | contains("example")) + | with_entries(select([.key] + | inside(["name", "required-features"])))' + ) + for example in $examples; do + name="$(echo "$example" | jq -r '.name')" + args=( + -p ethers + --example "$name" + ) + features="$(echo "$example" | jq -r 'try(."required-features" | join(","))')" + if [[ ! -z "$features" ]]; then + args+=(--features "$features") + fi - echo "building $name" - cargo build "${args[@]}" - done - - name: Run all examples - run: | - export PATH=$HOME/bin:$PATH - chmod +x ./scripts/examples.sh - ./scripts/examples.sh + echo "building $name" + cargo build "${args[@]}" + done + - name: Run all examples + run: | + export PATH=$HOME/bin:$PATH + chmod +x ./scripts/examples.sh + ./scripts/examples.sh - windows-build: - runs-on: windows-latest - name: (${{ matrix.target }}, ${{ matrix.cfg_release_channel }}) - env: - CFG_RELEASE_CHANNEL: ${{ matrix.cfg_release_channel }} - strategy: - fail-fast: false - matrix: - target: [ - i686-pc-windows-gnu, - i686-pc-windows-msvc, - x86_64-pc-windows-gnu, - x86_64-pc-windows-msvc, - ] - cfg_release_channel: [nightly] + windows-build: + runs-on: windows-latest + name: (${{ matrix.target }}, ${{ matrix.cfg_release_channel }}) + env: + CFG_RELEASE_CHANNEL: ${{ matrix.cfg_release_channel }} + strategy: + fail-fast: false + matrix: + target: + [ + i686-pc-windows-gnu, + i686-pc-windows-msvc, + x86_64-pc-windows-gnu, + x86_64-pc-windows-msvc, + ] + cfg_release_channel: [nightly] - steps: - - name: checkout - uses: actions/checkout@v2 + steps: + - name: checkout + uses: actions/checkout@v2 - # Run build - - name: Install Rustup using win.rustup.rs - run: | - # disable download progress bar - $ProgressPreference = "SilentlyContinue" - Invoke-WebRequest https://win.rustup.rs/ -OutFile rustup-init.exe - .\rustup-init.exe -y --default-host=x86_64-pc-windows-msvc --default-toolchain=none - del rustup-init.exe - rustup target add ${{ matrix.target }} - shell: powershell + # Run build + - name: Install Rustup using win.rustup.rs + run: | + # disable download progress bar + $ProgressPreference = "SilentlyContinue" + Invoke-WebRequest https://win.rustup.rs/ -OutFile rustup-init.exe + .\rustup-init.exe -y --default-host=x86_64-pc-windows-msvc --default-toolchain=none + del rustup-init.exe + rustup target add ${{ matrix.target }} + shell: powershell - - name: Add mingw32 to path for i686-gnu - run: | - echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH - if: matrix.target == 'i686-pc-windows-gnu' && matrix.channel == 'nightly' - shell: bash + - name: Add mingw32 to path for i686-gnu + run: | + echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH + if: matrix.target == 'i686-pc-windows-gnu' && matrix.channel == 'nightly' + shell: bash - - name: Add mingw64 to path for x86_64-gnu - run: echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH - if: matrix.target == 'x86_64-pc-windows-gnu' && matrix.channel == 'nightly' - shell: bash + - name: Add mingw64 to path for x86_64-gnu + run: echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH + if: matrix.target == 'x86_64-pc-windows-gnu' && matrix.channel == 'nightly' + shell: bash - - name: build - run: | - rustc -Vv - cargo -V - # we test without --all-features on Windows so that sha2-asm is not activated. - cargo check - shell: cmd + - name: build + run: | + rustc -Vv + cargo -V + # we test without --all-features on Windows so that sha2-asm is not activated. + cargo check + shell: cmd diff --git a/.github/workflows/release-tag-from.js b/.github/workflows/release-tag-from.js index b796824e..3f907042 100644 --- a/.github/workflows/release-tag-from.js +++ b/.github/workflows/release-tag-from.js @@ -1,36 +1,34 @@ const semver = require("semver"); const previousVersion = (currentVersion, releaseType) => { - const parsedVersion = semver.parse(currentVersion); + const parsedVersion = semver.parse(currentVersion); - switch (releaseType) { - case "major": { - return `v${parsedVersion.major - 1}.0.0`; + switch (releaseType) { + case "major": { + return `v${parsedVersion.major - 1}.0.0`; + } + case "minor": { + return `v${parsedVersion.major}.${parsedVersion.minor - 1}.0`; + } + case "patch": { + return `v${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch - 1}`; + } + case "alpha": { + return `v${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-alpha.${ + parsedVersion.prerelease[1] - 1 + }`; + } + case "beta": { + return `v${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-beta.${ + parsedVersion.prerelease[1] - 1 + }`; + } + case "rc": { + return `v${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-rc.${ + parsedVersion.prerelease[1] - 1 + }`; + } } - case "minor": { - return `v${parsedVersion.major}.${parsedVersion.minor - 1}.0`; - } - case "patch": { - return `v${parsedVersion.major}.${parsedVersion.minor}.${ - parsedVersion.patch - 1 - }`; - } - case "alpha": { - return `v${parsedVersion.major}.${parsedVersion.minor}.${ - parsedVersion.patch - }-alpha.${parsedVersion.prerelease[1] - 1}`; - } - case "beta": { - return `v${parsedVersion.major}.${parsedVersion.minor}.${ - parsedVersion.patch - }-beta.${parsedVersion.prerelease[1] - 1}`; - } - case "rc": { - return `v${parsedVersion.major}.${parsedVersion.minor}.${ - parsedVersion.patch - }-rc.${parsedVersion.prerelease[1] - 1}`; - } - } }; const [currentVersion, releaseType] = process.argv.slice(-2); diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 6dc4ad0a..5ae5a53d 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -1,99 +1,99 @@ name: Release on: - schedule: - - cron: "0 0 * * 0" + schedule: + - cron: "0 0 * * 0" - workflow_dispatch: - inputs: - release_type: - type: choice - description: Release type - options: - - major - - minor - - patch - - rc - - beta - - alpha + workflow_dispatch: + inputs: + release_type: + type: choice + description: Release type + options: + - major + - minor + - patch + - rc + - beta + - alpha permissions: - contents: write + contents: write jobs: - release: - runs-on: ubuntu-latest - env: - CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }} - RELEASE_TYPE: ${{ github.event.inputs.release_type }} - steps: - - name: Checkout sources - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Configure git - run: | - git config user.name github-actions - git config user.email github-actions@github.com - - name: Rust stable - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - - uses: Swatinem/rust-cache@v1 - with: - cache-on-failure: true - - name: Install cargo-release - uses: actions-rs/install@v0.1 - with: - crate: cargo-release - version: latest - - name: Cargo login - run: | - cargo login $CARGO_TOKEN - - name: Dry-run cargo release - run: | - cargo release --workspace ${RELEASE_TYPE:-alpha} --exclude ethers-wasm - - name: Publish release - run: | - cargo release --workspace ${RELEASE_TYPE:-alpha} --exclude ethers-wasm --execute --no-confirm - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: 14 - - run: | - npm i semver - - name: Install git-cliff - uses: actions-rs/install@v0.1 - with: - crate: git-cliff - version: latest - - name: Publish changelog - id: changelog - run: | - current_version=$(git tag --contains HEAD -l "v*" | head -1) - from_version=$(node .github/workflows/release-tag-from.js $current_version $RELEASE_TYPE) - echo from $from_version to $current_version - - echo "::set-output name=release_version::$(echo $current_version)" - - if git rev-parse "$from_version" >/dev/null 2>&1; then - echo "tag exists, can generate changelog"; - else - echo "tag does not exist, cannot generate changelog, publish github release manually" - exit 0 - fi - - git cliff $from_version..$current_version > GENERATED_CHANGELOG.md - cat GENERATED_CHANGELOG.md - - name: Create GitHub release - id: release - uses: actions/create-release@v1 + release: + runs-on: ubuntu-latest env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_VERSION: ${{ steps.changelog.outputs.release_version }} - with: - tag_name: ${{ env.RELEASE_VERSION }} - release_name: ${{ env.RELEASE_VERSION }} - body_path: GENERATED_CHANGELOG.md - prerelease: ${{ env.RELEASE_TYPE == 'alpha' }} + CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }} + RELEASE_TYPE: ${{ github.event.inputs.release_type }} + steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Configure git + run: | + git config user.name github-actions + git config user.email github-actions@github.com + - name: Rust stable + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + - uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true + - name: Install cargo-release + uses: actions-rs/install@v0.1 + with: + crate: cargo-release + version: latest + - name: Cargo login + run: | + cargo login $CARGO_TOKEN + - name: Dry-run cargo release + run: | + cargo release --workspace ${RELEASE_TYPE:-alpha} --exclude ethers-wasm + - name: Publish release + run: | + cargo release --workspace ${RELEASE_TYPE:-alpha} --exclude ethers-wasm --execute --no-confirm + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 14 + - run: | + npm i semver + - name: Install git-cliff + uses: actions-rs/install@v0.1 + with: + crate: git-cliff + version: latest + - name: Publish changelog + id: changelog + run: | + current_version=$(git tag --contains HEAD -l "v*" | head -1) + from_version=$(node .github/workflows/release-tag-from.js $current_version $RELEASE_TYPE) + echo from $from_version to $current_version + + echo "::set-output name=release_version::$(echo $current_version)" + + if git rev-parse "$from_version" >/dev/null 2>&1; then + echo "tag exists, can generate changelog"; + else + echo "tag does not exist, cannot generate changelog, publish github release manually" + exit 0 + fi + + git cliff $from_version..$current_version > GENERATED_CHANGELOG.md + cat GENERATED_CHANGELOG.md + - name: Create GitHub release + id: release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_VERSION: ${{ steps.changelog.outputs.release_version }} + with: + tag_name: ${{ env.RELEASE_VERSION }} + release_name: ${{ env.RELEASE_VERSION }} + body_path: GENERATED_CHANGELOG.md + prerelease: ${{ env.RELEASE_TYPE == 'alpha' }} diff --git a/.gitignore b/.gitignore index 252650b6..026535e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ /target .vscode /.envrc -.idea \ No newline at end of file +.idea diff --git a/CHANGELOG.md b/CHANGELOG.md index 40090899..fffa6f22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,340 +4,340 @@ ### Unreleased -- Add comment about safety of u8 -> u64 cast in `ethers_core::types::Signature` -- Stop defaulting to the `"latest"` block in `eth_estimateGas` params [#1657](https://github.com/gakonst/ethers-rs/pull/1657) -- Fix geth trace types for debug_traceTransaction rpc -- Fix RLP decoding of legacy `Transaction` -- Fix RLP encoding of `TransactionReceipt` [#1661](https://github.com/gakonst/ethers-rs/pull/1661) -- Add `Unit8` helper type [#1639](https://github.com/gakonst/ethers-rs/pull/1639) -- Add `evm.deployedBytecode.immutableReferences` output selector [#1523](https://github.com/gakonst/ethers-rs/pull/1523) -- Added `get_erc1155_token_transfer_events` function for etherscan client [#1503](https://github.com/gakonst/ethers-rs/pull/1503) -- Add support for Geth `debug_traceTransaction` [#1469](https://github.com/gakonst/ethers-rs/pull/1469) -- Use correct, new transaction type for `typool_content` RPC endpoint [#1501](https://github.com/gakonst/ethers-rs/pull/1501) -- Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458) -- Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433) -- capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423) -- Methods like `set_to()` from `TypedTransaction` can be chained -- Use H64 for Block Nonce [#1396](https://github.com/gakonst/ethers-rs/pull/1396) -- Add `as_*_mut` methods on `TypedTransaction` - [#1310](https://github.com/gakonst/ethers-rs/pull/1310) -- AWS EIP712 data signing no longer signs with EIP155 -- Added Cronos testnet to etherscan options [1276](https://github.com/gakonst/ethers-rs/pull/1276) -- Fix parsing of a pending block - [1272](https://github.com/gakonst/ethers-rs/pull/1272) -- Removed Cronos mainnet beta from `is_legacy` [1246](https://github.com/gakonst/ethers-rs/pull/1246) -- Fix RLP decoding of `from` field for `Eip1559TransactionRequest` and - `Eip2930TransactionRequest`, remove `Eip1559TransactionRequest` `sighash` - method [1180](https://github.com/gakonst/ethers-rs/pull/1180) -- Fix RLP encoding of absent access list in `Transaction` [1137](https://github.com/gakonst/ethers-rs/pull/1137) -- Pass compilation time as additional argument to `Reporter::on_solc_success` [1098](https://github.com/gakonst/ethers-rs/pull/1098) -- Fix aws signer bug which maps un-normalized signature to error if no normalization occurs (in `aws::utils::decode_signature`) -- Implement signed transaction RLP decoding [#1096](https://github.com/gakonst/ethers-rs/pull/1096) -- `Transaction::from` will default to `Address::zero()`. Add `recover_from` and - `recover_from_mut` methods for recovering the sender from signature, and also - setting the same on tx [1075](https://github.com/gakonst/ethers-rs/pull/1075). -- Add Etherscan account API endpoints [939](https://github.com/gakonst/ethers-rs/pull/939) -- Add FTM Mainet and testnet to parse method "try_from" from Chain.rs and add cronos mainet and testnet to "from_str" -- Add FTM mainnet and testnet Multicall addresses [927](https://github.com/gakonst/ethers-rs/pull/927) -- Add Cronos mainnet beta and testnet to the list of known chains - [926](https://github.com/gakonst/ethers-rs/pull/926) -- `Chain::to_string` will return the same chain name as `Chain::from_str` -- Add `eth_syncing` [848](https://github.com/gakonst/ethers-rs/pull/848) -- Fix overflow and possible divide-by-zero in `estimate_priority_fee` -- Add BSC mainnet and testnet to the list of known chains - [831](https://github.com/gakonst/ethers-rs/pull/831) -- Returns error on invalid type conversion instead of panicking - [691](https://github.com/gakonst/ethers-rs/pull/691/files) -- Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and - solidity `uint8[]` to rust `Vec`. - [613](https://github.com/gakonst/ethers-rs/pull/613) -- Fix `format_units` to return a `String` of representing a decimal point float - such that the decimal places don't get truncated. - [597](https://github.com/gakonst/ethers-rs/pull/597) -- Implement hex display format for `ethers::core::Bytes` - [#624](https://github.com/gakonst/ethers-rs/pull/624). -- Fix `fee_history` to first try with `block_count` encoded as a hex `QUANTITY`. - [#668](https://github.com/gakonst/ethers-rs/pull/668) -- Fix `fill_transaction` to set nonces in transactions, if the sender is known - and no nonce is specified -- Move `fill_transaction` implementation to the provider, to allow middleware - to properly override its behavior. -- Add informational messages to solc installation and compilation. -- Significantly refactor `MultiAbigen` module generation. Now allows for lib - generation, and does not make unnecessary disk writes. - [#854](https://github.com/gakonst/ethers-rs/pull/852) -- Refactor `ethers-contract-abigen` to use `eyre` instead of `anyhow` via - [#858](https://github.com/gakonst/ethers-rs/pull/858) -- Add `Deployer.send_with_receipt -> Result<(Contract, Receipt), Error>` - so that the receipt can be returned to the called when deploying - a contract [#865](https://github.com/gakonst/ethers-rs/pull/865) -- Add Arbitrum mainnet and testnet to the list of known chains -- Add ENS avatar and TXT records resolution - [#889](https://github.com/gakonst/ethers-rs/pull/889) -- Do not override gas limits provided by an outer middleware when including an EIP-2930 access list - [#901](https://github.com/gakonst/ethers-rs/pull/901) -- Add a getter to `ProjectCompileOutput` that returns a mapping of compiler - versions to a vector of name + contract struct tuples - [#908](https://github.com/gakonst/ethers-rs/pull/908) -- Add Yul compilation [994](https://github.com/gakonst/ethers-rs/pull/994) -- Enforce commutativity of ENS reverse resolution - [#996](https://github.com/gakonst/ethers-rs/pull/996) -- Add `TransactionReceipt::to` and `TransactionReceipt::from` - [#1184](https://github.com/gakonst/ethers-rs/pull/1184) -- Add `From` and From> traits to `ValueOrArray` [#1199](https://github.com/gakonst/ethers-rs/pull/1200) -- Fix handling of Websocket connection errors [#1287](https://github.com/gakonst/ethers-rs/pull/1287) -- Add Arithmetic Shift Right operation for I256 [#1323](https://github.com/gakonst/ethers-rs/issues/1323) -- [#1535](https://github.com/gakonst/ethers-rs/pull/1535) Add support to Aurora and Aurora testnet networks. -- [#1632](https://github.com/gakonst/ethers-rs/pull/1632) Re-export `H32` from `ethabi`. -- [#1634](https://github.com/gakonst/ethers-rs/pull/1634) Derive missing `Clone`, `Copy` and `Debug` impls in ethers-etherscan. -- Bytes debug format now displays hex literals [#1658](https://github.com/gakonst/ethers-rs/pull/1658) +- Add comment about safety of u8 -> u64 cast in `ethers_core::types::Signature` +- Stop defaulting to the `"latest"` block in `eth_estimateGas` params [#1657](https://github.com/gakonst/ethers-rs/pull/1657) +- Fix geth trace types for debug_traceTransaction rpc +- Fix RLP decoding of legacy `Transaction` +- Fix RLP encoding of `TransactionReceipt` [#1661](https://github.com/gakonst/ethers-rs/pull/1661) +- Add `Unit8` helper type [#1639](https://github.com/gakonst/ethers-rs/pull/1639) +- Add `evm.deployedBytecode.immutableReferences` output selector [#1523](https://github.com/gakonst/ethers-rs/pull/1523) +- Added `get_erc1155_token_transfer_events` function for etherscan client [#1503](https://github.com/gakonst/ethers-rs/pull/1503) +- Add support for Geth `debug_traceTransaction` [#1469](https://github.com/gakonst/ethers-rs/pull/1469) +- Use correct, new transaction type for `typool_content` RPC endpoint [#1501](https://github.com/gakonst/ethers-rs/pull/1501) +- Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458) +- Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433) +- capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423) +- Methods like `set_to()` from `TypedTransaction` can be chained +- Use H64 for Block Nonce [#1396](https://github.com/gakonst/ethers-rs/pull/1396) +- Add `as_*_mut` methods on `TypedTransaction` + [#1310](https://github.com/gakonst/ethers-rs/pull/1310) +- AWS EIP712 data signing no longer signs with EIP155 +- Added Cronos testnet to etherscan options [1276](https://github.com/gakonst/ethers-rs/pull/1276) +- Fix parsing of a pending block + [1272](https://github.com/gakonst/ethers-rs/pull/1272) +- Removed Cronos mainnet beta from `is_legacy` [1246](https://github.com/gakonst/ethers-rs/pull/1246) +- Fix RLP decoding of `from` field for `Eip1559TransactionRequest` and + `Eip2930TransactionRequest`, remove `Eip1559TransactionRequest` `sighash` + method [1180](https://github.com/gakonst/ethers-rs/pull/1180) +- Fix RLP encoding of absent access list in `Transaction` [1137](https://github.com/gakonst/ethers-rs/pull/1137) +- Pass compilation time as additional argument to `Reporter::on_solc_success` [1098](https://github.com/gakonst/ethers-rs/pull/1098) +- Fix aws signer bug which maps un-normalized signature to error if no normalization occurs (in `aws::utils::decode_signature`) +- Implement signed transaction RLP decoding [#1096](https://github.com/gakonst/ethers-rs/pull/1096) +- `Transaction::from` will default to `Address::zero()`. Add `recover_from` and + `recover_from_mut` methods for recovering the sender from signature, and also + setting the same on tx [1075](https://github.com/gakonst/ethers-rs/pull/1075). +- Add Etherscan account API endpoints [939](https://github.com/gakonst/ethers-rs/pull/939) +- Add FTM Mainet and testnet to parse method "try_from" from Chain.rs and add cronos mainet and testnet to "from_str" +- Add FTM mainnet and testnet Multicall addresses [927](https://github.com/gakonst/ethers-rs/pull/927) +- Add Cronos mainnet beta and testnet to the list of known chains + [926](https://github.com/gakonst/ethers-rs/pull/926) +- `Chain::to_string` will return the same chain name as `Chain::from_str` +- Add `eth_syncing` [848](https://github.com/gakonst/ethers-rs/pull/848) +- Fix overflow and possible divide-by-zero in `estimate_priority_fee` +- Add BSC mainnet and testnet to the list of known chains + [831](https://github.com/gakonst/ethers-rs/pull/831) +- Returns error on invalid type conversion instead of panicking + [691](https://github.com/gakonst/ethers-rs/pull/691/files) +- Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and + solidity `uint8[]` to rust `Vec`. + [613](https://github.com/gakonst/ethers-rs/pull/613) +- Fix `format_units` to return a `String` of representing a decimal point float + such that the decimal places don't get truncated. + [597](https://github.com/gakonst/ethers-rs/pull/597) +- Implement hex display format for `ethers::core::Bytes` + [#624](https://github.com/gakonst/ethers-rs/pull/624). +- Fix `fee_history` to first try with `block_count` encoded as a hex `QUANTITY`. + [#668](https://github.com/gakonst/ethers-rs/pull/668) +- Fix `fill_transaction` to set nonces in transactions, if the sender is known + and no nonce is specified +- Move `fill_transaction` implementation to the provider, to allow middleware + to properly override its behavior. +- Add informational messages to solc installation and compilation. +- Significantly refactor `MultiAbigen` module generation. Now allows for lib + generation, and does not make unnecessary disk writes. + [#854](https://github.com/gakonst/ethers-rs/pull/852) +- Refactor `ethers-contract-abigen` to use `eyre` instead of `anyhow` via + [#858](https://github.com/gakonst/ethers-rs/pull/858) +- Add `Deployer.send_with_receipt -> Result<(Contract, Receipt), Error>` + so that the receipt can be returned to the called when deploying + a contract [#865](https://github.com/gakonst/ethers-rs/pull/865) +- Add Arbitrum mainnet and testnet to the list of known chains +- Add ENS avatar and TXT records resolution + [#889](https://github.com/gakonst/ethers-rs/pull/889) +- Do not override gas limits provided by an outer middleware when including an EIP-2930 access list + [#901](https://github.com/gakonst/ethers-rs/pull/901) +- Add a getter to `ProjectCompileOutput` that returns a mapping of compiler + versions to a vector of name + contract struct tuples + [#908](https://github.com/gakonst/ethers-rs/pull/908) +- Add Yul compilation [994](https://github.com/gakonst/ethers-rs/pull/994) +- Enforce commutativity of ENS reverse resolution + [#996](https://github.com/gakonst/ethers-rs/pull/996) +- Add `TransactionReceipt::to` and `TransactionReceipt::from` + [#1184](https://github.com/gakonst/ethers-rs/pull/1184) +- Add `From` and From> traits to `ValueOrArray` [#1199](https://github.com/gakonst/ethers-rs/pull/1200) +- Fix handling of Websocket connection errors [#1287](https://github.com/gakonst/ethers-rs/pull/1287) +- Add Arithmetic Shift Right operation for I256 [#1323](https://github.com/gakonst/ethers-rs/issues/1323) +- [#1535](https://github.com/gakonst/ethers-rs/pull/1535) Add support to Aurora and Aurora testnet networks. +- [#1632](https://github.com/gakonst/ethers-rs/pull/1632) Re-export `H32` from `ethabi`. +- [#1634](https://github.com/gakonst/ethers-rs/pull/1634) Derive missing `Clone`, `Copy` and `Debug` impls in ethers-etherscan. +- Bytes debug format now displays hex literals [#1658](https://github.com/gakonst/ethers-rs/pull/1658) ## ethers-contract-abigen ### Unreleased -- Use corresponding rust structs for event fields if they're solidity structs [#1674](https://github.com/gakonst/ethers-rs/pull/1674) -- Add `ContractFilter` to filter contracts in `MultiAbigen` [#1564](https://github.com/gakonst/ethers-rs/pull/1564) -- generate error bindings for custom errors [#1549](https://github.com/gakonst/ethers-rs/pull/1549) -- Support overloaded events - [#1233](https://github.com/gakonst/ethers-rs/pull/1233) -- Relax Clone requirements when Arc is used - [#1183](https://github.com/gakonst/ethers-rs/pull/1183) -- Generate a deploy function if bytecode is provided in the abigen! input (json artifact) - [#1030](https://github.com/gakonst/ethers-rs/pull/1030). -- Generate correct bindings of struct's field names that are reserved words - [#989](https://github.com/gakonst/ethers-rs/pull/989). -- Generate correct binding module names that are reserved words - [#1498](https://github.com/gakonst/ethers-rs/pull/1498). Note: this changes - generated module names to snake case. For example, `MyContract` is now - `my_contract` rather than `mycontract_mod`. -- The `Cargo.toml` generated by bindings now includes the `abigen` feature on - ethers. [#1508](https://github.com/gakonst/ethers-rs/pull/1508) -- More descriptive contract deserialization errors. - [#1633](https://github.com/gakonst/ethers-rs/pull/1633) +- Use corresponding rust structs for event fields if they're solidity structs [#1674](https://github.com/gakonst/ethers-rs/pull/1674) +- Add `ContractFilter` to filter contracts in `MultiAbigen` [#1564](https://github.com/gakonst/ethers-rs/pull/1564) +- generate error bindings for custom errors [#1549](https://github.com/gakonst/ethers-rs/pull/1549) +- Support overloaded events + [#1233](https://github.com/gakonst/ethers-rs/pull/1233) +- Relax Clone requirements when Arc is used + [#1183](https://github.com/gakonst/ethers-rs/pull/1183) +- Generate a deploy function if bytecode is provided in the abigen! input (json artifact) + [#1030](https://github.com/gakonst/ethers-rs/pull/1030). +- Generate correct bindings of struct's field names that are reserved words + [#989](https://github.com/gakonst/ethers-rs/pull/989). +- Generate correct binding module names that are reserved words + [#1498](https://github.com/gakonst/ethers-rs/pull/1498). Note: this changes + generated module names to snake case. For example, `MyContract` is now + `my_contract` rather than `mycontract_mod`. +- The `Cargo.toml` generated by bindings now includes the `abigen` feature on + ethers. [#1508](https://github.com/gakonst/ethers-rs/pull/1508) +- More descriptive contract deserialization errors. + [#1633](https://github.com/gakonst/ethers-rs/pull/1633) ### 0.6.0 -- Add `MultiAbigen` to generate a series of contract bindings that can be kept in the repo - [#724](https://github.com/gakonst/ethers-rs/pull/724). -- Add provided `event_derives` to call and event enums as well - [#721](https://github.com/gakonst/ethers-rs/pull/721). -- Implement snowtrace and polygonscan on par with the etherscan integration - [#666](https://github.com/gakonst/ethers-rs/pull/666). +- Add `MultiAbigen` to generate a series of contract bindings that can be kept in the repo + [#724](https://github.com/gakonst/ethers-rs/pull/724). +- Add provided `event_derives` to call and event enums as well + [#721](https://github.com/gakonst/ethers-rs/pull/721). +- Implement snowtrace and polygonscan on par with the etherscan integration + [#666](https://github.com/gakonst/ethers-rs/pull/666). ## ethers-solc ### Unreleased -- Add `OutputContext` to `ArtifactOutput` trait - [#1621](https://github.com/gakonst/ethers-rs/pull/1621) -- On windows all paths in the `ProjectCompilerOutput` are now slashed by default - [#1540](https://github.com/gakonst/ethers-rs/pull/1540) -- `ArtifactOutput::write_extras` now takes the `Artifacts` directly - [#1491](https://github.com/gakonst/ethers-rs/pull/1491) -- Make `ethers-solc` optional dependency of `ethers`, needs `ethers-solc` feature to activate - [#1463](https://github.com/gakonst/ethers-rs/pull/1463) -- Add `rawMetadata:String` field to configurable contract output - [#1365](https://github.com/gakonst/ethers-rs/pull/1365) -- Use relative source paths and `solc --base-path` - [#1317](https://github.com/gakonst/ethers-rs/pull/1317) -- Save cache entry objects with relative paths - [#1307](https://github.com/gakonst/ethers-rs/pull/1307) -- Bundle svm, svm-builds and sha2 dependencies in new `svm-solc` feature - [#1071](https://github.com/gakonst/ethers-rs/pull/1071) -- Emit artifact files for source files without any ContractDefinition - [#1296](https://github.com/gakonst/ethers-rs/pull/1296) -- Wrap `ethabi::Contract` into new type `LosslessAbi` and `abi: Option` with `abi: Option` in `ConfigurableContractArtifact` - [#952](https://github.com/gakonst/ethers-rs/pull/952) -- Let `Project` take ownership of `ArtifactOutput` and change trait interface - [#907](https://github.com/gakonst/ethers-rs/pull/907) -- Total revamp of the `Project::compile` pipeline - [#802](https://github.com/gakonst/ethers-rs/pull/802) - - Support multiple versions of compiled contracts - - Breaking: deprecate hardhat cache file compatibility, cache file now tracks artifact paths and their versions -- Fix flatten replacement target location - [#846](https://github.com/gakonst/ethers-rs/pull/846) -- Fix duplicate files during flattening - [#813](https://github.com/gakonst/ethers-rs/pull/813) -- Add ability to flatten file imports - [#774](https://github.com/gakonst/ethers-rs/pull/774) -- Add dependency graph and resolve all imported libraryfiles - [#750](https://github.com/gakonst/ethers-rs/pull/750) -- `Remapping::find_many` does not return a `Result` anymore - [#707](https://github.com/gakonst/ethers-rs/pull/707) -- Add support for hardhat artifacts - [#677](https://github.com/gakonst/ethers-rs/pull/677) -- Add more utility functions to the `Artifact` trait - [#673](https://github.com/gakonst/ethers-rs/pull/673) -- Return cached artifacts from project `compile` when the cache only contains - some files -- Add support for library linking and make `Bytecode`'s `object` filed an - `enum BytecodeObject` [#656](https://github.com/gakonst/ethers-rs/pull/656). -- Nit: remove accidentally doubled double-quotes in an error message -- Fix when compiler-out metadata is empty and there's no internalType [#1182](https://github.com/gakonst/ethers-rs/pull/1182) -- Add basic `solc` model checker options. - [#1258](https://github.com/gakonst/ethers-rs/pull/1258) +- Add `OutputContext` to `ArtifactOutput` trait + [#1621](https://github.com/gakonst/ethers-rs/pull/1621) +- On windows all paths in the `ProjectCompilerOutput` are now slashed by default + [#1540](https://github.com/gakonst/ethers-rs/pull/1540) +- `ArtifactOutput::write_extras` now takes the `Artifacts` directly + [#1491](https://github.com/gakonst/ethers-rs/pull/1491) +- Make `ethers-solc` optional dependency of `ethers`, needs `ethers-solc` feature to activate + [#1463](https://github.com/gakonst/ethers-rs/pull/1463) +- Add `rawMetadata:String` field to configurable contract output + [#1365](https://github.com/gakonst/ethers-rs/pull/1365) +- Use relative source paths and `solc --base-path` + [#1317](https://github.com/gakonst/ethers-rs/pull/1317) +- Save cache entry objects with relative paths + [#1307](https://github.com/gakonst/ethers-rs/pull/1307) +- Bundle svm, svm-builds and sha2 dependencies in new `svm-solc` feature + [#1071](https://github.com/gakonst/ethers-rs/pull/1071) +- Emit artifact files for source files without any ContractDefinition + [#1296](https://github.com/gakonst/ethers-rs/pull/1296) +- Wrap `ethabi::Contract` into new type `LosslessAbi` and `abi: Option` with `abi: Option` in `ConfigurableContractArtifact` + [#952](https://github.com/gakonst/ethers-rs/pull/952) +- Let `Project` take ownership of `ArtifactOutput` and change trait interface + [#907](https://github.com/gakonst/ethers-rs/pull/907) +- Total revamp of the `Project::compile` pipeline + [#802](https://github.com/gakonst/ethers-rs/pull/802) + - Support multiple versions of compiled contracts + - Breaking: deprecate hardhat cache file compatibility, cache file now tracks artifact paths and their versions +- Fix flatten replacement target location + [#846](https://github.com/gakonst/ethers-rs/pull/846) +- Fix duplicate files during flattening + [#813](https://github.com/gakonst/ethers-rs/pull/813) +- Add ability to flatten file imports + [#774](https://github.com/gakonst/ethers-rs/pull/774) +- Add dependency graph and resolve all imported libraryfiles + [#750](https://github.com/gakonst/ethers-rs/pull/750) +- `Remapping::find_many` does not return a `Result` anymore + [#707](https://github.com/gakonst/ethers-rs/pull/707) +- Add support for hardhat artifacts + [#677](https://github.com/gakonst/ethers-rs/pull/677) +- Add more utility functions to the `Artifact` trait + [#673](https://github.com/gakonst/ethers-rs/pull/673) +- Return cached artifacts from project `compile` when the cache only contains + some files +- Add support for library linking and make `Bytecode`'s `object` filed an + `enum BytecodeObject` [#656](https://github.com/gakonst/ethers-rs/pull/656). +- Nit: remove accidentally doubled double-quotes in an error message +- Fix when compiler-out metadata is empty and there's no internalType [#1182](https://github.com/gakonst/ethers-rs/pull/1182) +- Add basic `solc` model checker options. + [#1258](https://github.com/gakonst/ethers-rs/pull/1258) ### 0.6.0 -- add `EthAbiCodec` proc macro to derive `AbiEncode` `AbiDecode` implementation - [#704](https://github.com/gakonst/ethers-rs/pull/704) -- move `AbiEncode` `AbiDecode` trait to ethers-core and implement for core types - [#531](https://github.com/gakonst/ethers-rs/pull/531) -- Add EIP-712 `sign_typed_data` signer method; add ethers-core type `Eip712` - trait and derive macro in ethers-derive-eip712 - [#481](https://github.com/gakonst/ethers-rs/pull/481) +- add `EthAbiCodec` proc macro to derive `AbiEncode` `AbiDecode` implementation + [#704](https://github.com/gakonst/ethers-rs/pull/704) +- move `AbiEncode` `AbiDecode` trait to ethers-core and implement for core types + [#531](https://github.com/gakonst/ethers-rs/pull/531) +- Add EIP-712 `sign_typed_data` signer method; add ethers-core type `Eip712` + trait and derive macro in ethers-derive-eip712 + [#481](https://github.com/gakonst/ethers-rs/pull/481) ### 0.5.3 -- Allow configuring the optimizer & passing arbitrary arguments to solc - [#427](https://github.com/gakonst/ethers-rs/pull/427) -- Decimal support for `ethers_core::utils::parse_units` - [#463](https://github.com/gakonst/ethers-rs/pull/463) -- Fixed Wei unit calculation in `Units` - [#460](https://github.com/gakonst/ethers-rs/pull/460) -- Add `ethers_core::utils::get_create2_address_from_hash` - [#444](https://github.com/gakonst/ethers-rs/pull/444) -- Bumped ethabi to 0.15.0 and fixing breaking changes - [#469](https://github.com/gakonst/ethers-rs/pull/469), - [#448](https://github.com/gakonst/ethers-rs/pull/448), - [#445](https://github.com/gakonst/ethers-rs/pull/445) +- Allow configuring the optimizer & passing arbitrary arguments to solc + [#427](https://github.com/gakonst/ethers-rs/pull/427) +- Decimal support for `ethers_core::utils::parse_units` + [#463](https://github.com/gakonst/ethers-rs/pull/463) +- Fixed Wei unit calculation in `Units` + [#460](https://github.com/gakonst/ethers-rs/pull/460) +- Add `ethers_core::utils::get_create2_address_from_hash` + [#444](https://github.com/gakonst/ethers-rs/pull/444) +- Bumped ethabi to 0.15.0 and fixing breaking changes + [#469](https://github.com/gakonst/ethers-rs/pull/469), + [#448](https://github.com/gakonst/ethers-rs/pull/448), + [#445](https://github.com/gakonst/ethers-rs/pull/445) ### 0.5.2 -- Correctly RLP Encode transactions as received from the mempool - ([#415](https://github.com/gakonst/ethers-rs/pull/415)) +- Correctly RLP Encode transactions as received from the mempool + ([#415](https://github.com/gakonst/ethers-rs/pull/415)) ## ethers-providers ### Unreleased -- Return String for net version - [1376](https://github.com/gakonst/ethers-rs/pull/1376) -- Stream of paginated logs that load logs in small pages - [1285](https://github.com/gakonst/ethers-rs/pull/1285) -- Load previous logs before subscribing to new logs in case fromBlock is set - [1264](https://github.com/gakonst/ethers-rs/pull/1264) -- Add retries to the pending transaction future - [1221](https://github.com/gakonst/ethers-rs/pull/1221) -- Add support for basic and bearer authentication in http and non-wasm websockets. - [829](https://github.com/gakonst/ethers-rs/pull/829) -- Export `ethers_providers::IpcError` and `ethers_providers::QuorumError` - [1012](https://github.com/gakonst/ethers-rs/pull/1012) +- Return String for net version + [1376](https://github.com/gakonst/ethers-rs/pull/1376) +- Stream of paginated logs that load logs in small pages + [1285](https://github.com/gakonst/ethers-rs/pull/1285) +- Load previous logs before subscribing to new logs in case fromBlock is set + [1264](https://github.com/gakonst/ethers-rs/pull/1264) +- Add retries to the pending transaction future + [1221](https://github.com/gakonst/ethers-rs/pull/1221) +- Add support for basic and bearer authentication in http and non-wasm websockets. + [829](https://github.com/gakonst/ethers-rs/pull/829) +- Export `ethers_providers::IpcError` and `ethers_providers::QuorumError` + [1012](https://github.com/gakonst/ethers-rs/pull/1012) ### 0.6.0 -- re-export error types for `Http` and `Ws` providers in - [#570](https://github.com/gakonst/ethers-rs/pull/570) -- add a method on the `Middleware` to broadcast a tx with a series of escalating - gas prices via [#566](https://github.com/gakonst/ethers-rs/pull/566) -- Remove unnecessary `Serialize` constraint to `R` (the Response type) in the - `request` method of `JsonRpcClient`. -- Fix `http Provider` data race when generating new request `id`s. -- Add support for `net_version` RPC method. - [595](https://github.com/gakonst/ethers-rs/pull/595) -- Add support for `evm_snapshot` and `evm_revert` dev RPC methods. - [640](https://github.com/gakonst/ethers-rs/pull/640) +- re-export error types for `Http` and `Ws` providers in + [#570](https://github.com/gakonst/ethers-rs/pull/570) +- add a method on the `Middleware` to broadcast a tx with a series of escalating + gas prices via [#566](https://github.com/gakonst/ethers-rs/pull/566) +- Remove unnecessary `Serialize` constraint to `R` (the Response type) in the + `request` method of `JsonRpcClient`. +- Fix `http Provider` data race when generating new request `id`s. +- Add support for `net_version` RPC method. + [595](https://github.com/gakonst/ethers-rs/pull/595) +- Add support for `evm_snapshot` and `evm_revert` dev RPC methods. + [640](https://github.com/gakonst/ethers-rs/pull/640) ### 0.5.3 -- Expose `ens` module [#435](https://github.com/gakonst/ethers-rs/pull/435) -- Add `eth_getProof` [#459](https://github.com/gakonst/ethers-rs/pull/459) +- Expose `ens` module [#435](https://github.com/gakonst/ethers-rs/pull/435) +- Add `eth_getProof` [#459](https://github.com/gakonst/ethers-rs/pull/459) ### 0.5.2 -- Set resolved ENS name during gas estimation - ([1e5a9e](https://github.com/gakonst/ethers-rs/commit/1e5a9efb3c678eecd43d5c341b4932da35445831)) +- Set resolved ENS name during gas estimation + ([1e5a9e](https://github.com/gakonst/ethers-rs/commit/1e5a9efb3c678eecd43d5c341b4932da35445831)) ## ethers-signers ### Unreleased -- `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated - keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910) +- `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated + keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910) ### 0.6.0 -- `LocalWallet::new_keystore` now returns a tuple `(LocalWallet, String)` - instead of `LocalWallet`, where the string represents the UUID of the newly - created encrypted JSON keystore. The JSON keystore is stored as a file - `/dir/uuid`. The issue [#557](https://github.com/gakonst/ethers-rs/issues/557) - is addressed [#559](https://github.com/gakonst/ethers-rs/pull/559) +- `LocalWallet::new_keystore` now returns a tuple `(LocalWallet, String)` + instead of `LocalWallet`, where the string represents the UUID of the newly + created encrypted JSON keystore. The JSON keystore is stored as a file + `/dir/uuid`. The issue [#557](https://github.com/gakonst/ethers-rs/issues/557) + is addressed [#559](https://github.com/gakonst/ethers-rs/pull/559) ## ethers-contract ### Unreleased -- Add abigen to default features - [#1684](https://github.com/gakonst/ethers-rs/pull/1684) -- Add extra Multicall helper methods - [#1666](https://github.com/gakonst/ethers-rs/pull/1666) -- Update Multicall to Multicall3 - [#1584](https://github.com/gakonst/ethers-rs/pull/1584) -- Add `Event::stream_with_meta` and `Event::subscribe_with_meta` - [#1483](https://github.com/gakonst/ethers-rs/pull/1483) -- Added tx builder methods to `ContractFactory` - [#1289](https://github.com/gakonst/ethers-rs/pull/1289) -- Relax Clone requirements when Arc is used - [#1183](https://github.com/gakonst/ethers-rs/pull/1183) -- Add `EventStream::select` to combine streams with different event types - [#725](https://github.com/gakonst/ethers-rs/pull/725) -- Substitute output tuples with rust struct types for function calls - [#664](https://github.com/gakonst/ethers-rs/pull/664) -- Add AbiType implementation during EthAbiType expansion - [#647](https://github.com/gakonst/ethers-rs/pull/647) -- fix Etherscan conditional HTTP support - [#632](https://github.com/gakonst/ethers-rs/pull/632) -- use `CARGO_MANIFEST_DIR` as root for relative paths in abigen - [#631](https://github.com/gakonst/ethers-rs/pull/631) +- Add abigen to default features + [#1684](https://github.com/gakonst/ethers-rs/pull/1684) +- Add extra Multicall helper methods + [#1666](https://github.com/gakonst/ethers-rs/pull/1666) +- Update Multicall to Multicall3 + [#1584](https://github.com/gakonst/ethers-rs/pull/1584) +- Add `Event::stream_with_meta` and `Event::subscribe_with_meta` + [#1483](https://github.com/gakonst/ethers-rs/pull/1483) +- Added tx builder methods to `ContractFactory` + [#1289](https://github.com/gakonst/ethers-rs/pull/1289) +- Relax Clone requirements when Arc is used + [#1183](https://github.com/gakonst/ethers-rs/pull/1183) +- Add `EventStream::select` to combine streams with different event types + [#725](https://github.com/gakonst/ethers-rs/pull/725) +- Substitute output tuples with rust struct types for function calls + [#664](https://github.com/gakonst/ethers-rs/pull/664) +- Add AbiType implementation during EthAbiType expansion + [#647](https://github.com/gakonst/ethers-rs/pull/647) +- fix Etherscan conditional HTTP support + [#632](https://github.com/gakonst/ethers-rs/pull/632) +- use `CARGO_MANIFEST_DIR` as root for relative paths in abigen + [#631](https://github.com/gakonst/ethers-rs/pull/631) ### 0.6.0 -- Provide a way to opt out of networking support in abigen proc macro with - `abigen-offline` feature [#580](https://github.com/gakonst/ethers-rs/pull/580) -- Add `.call()` method to `Deployer` for performing dry runs of contract - deployments. [#554](https://github.com/gakonst/ethers-rs/pull/554) -- Improve error message from failure in `ethers_contract_abigen::Source::parse` - [#552](https://github.com/gakonst/ethers-rs/pull/552) -- use enumerated aliases for overloaded functions - [#545](https://github.com/gakonst/ethers-rs/pull/545) -- add `EthCall` trait and derive macro which generates matching structs for - contract calls [#517](https://github.com/gakonst/ethers-rs/pull/517) -- Use rust types as contract function inputs for human readable abi - [#482](https://github.com/gakonst/ethers-rs/pull/482) -- `abigen!` now generates `Display` for all events using the new `EthDisplay` - macro [#513](https://github.com/gakonst/ethers-rs/pull/513) -- `abigen!` now supports overloaded functions natively - [#501](https://github.com/gakonst/ethers-rs/pull/501) -- `abigen!` now supports multiple contracts - [#498](https://github.com/gakonst/ethers-rs/pull/498) +- Provide a way to opt out of networking support in abigen proc macro with + `abigen-offline` feature [#580](https://github.com/gakonst/ethers-rs/pull/580) +- Add `.call()` method to `Deployer` for performing dry runs of contract + deployments. [#554](https://github.com/gakonst/ethers-rs/pull/554) +- Improve error message from failure in `ethers_contract_abigen::Source::parse` + [#552](https://github.com/gakonst/ethers-rs/pull/552) +- use enumerated aliases for overloaded functions + [#545](https://github.com/gakonst/ethers-rs/pull/545) +- add `EthCall` trait and derive macro which generates matching structs for + contract calls [#517](https://github.com/gakonst/ethers-rs/pull/517) +- Use rust types as contract function inputs for human readable abi + [#482](https://github.com/gakonst/ethers-rs/pull/482) +- `abigen!` now generates `Display` for all events using the new `EthDisplay` + macro [#513](https://github.com/gakonst/ethers-rs/pull/513) +- `abigen!` now supports overloaded functions natively + [#501](https://github.com/gakonst/ethers-rs/pull/501) +- `abigen!` now supports multiple contracts + [#498](https://github.com/gakonst/ethers-rs/pull/498) ### Unreleased ### 0.5.3 -- (De)Tokenize structs and events with only a single field as `Token:Tuple` - ([#417](https://github.com/gakonst/ethers-rs/pull/417)) +- (De)Tokenize structs and events with only a single field as `Token:Tuple` + ([#417](https://github.com/gakonst/ethers-rs/pull/417)) ## ethers-middleware ### Unreleased -- Relax Clone requirements when Arc is used - [#1183](https://github.com/gakonst/ethers-rs/pull/1183) -- Ensure a consistent chain ID between a Signer and Provider in SignerMiddleware - [#1095](https://gakonst/ethers-rs/pull/1095) -- Add BlockNative gas oracle [#1175](https://github.com/gakonst/ethers-rs/pull/1175) +- Relax Clone requirements when Arc is used + [#1183](https://github.com/gakonst/ethers-rs/pull/1183) +- Ensure a consistent chain ID between a Signer and Provider in SignerMiddleware + [#1095](https://gakonst/ethers-rs/pull/1095) +- Add BlockNative gas oracle [#1175](https://github.com/gakonst/ethers-rs/pull/1175) ### 0.6.0 -- add the missing constructor for `Timelag` middleware via - [#568](https://github.com/gakonst/ethers-rs/pull/568) -- Removes GasNow as a gas price oracle - [#508](https://github.com/gakonst/ethers-rs/pull/508) -- add initialize_nonce public function to initialize NonceMiddleManager +- add the missing constructor for `Timelag` middleware via + [#568](https://github.com/gakonst/ethers-rs/pull/568) +- Removes GasNow as a gas price oracle + [#508](https://github.com/gakonst/ethers-rs/pull/508) +- add initialize_nonce public function to initialize NonceMiddleManager ### 0.5.3 -- Added Time Lagged middleware - [#457](https://github.com/gakonst/ethers-rs/pull/457) +- Added Time Lagged middleware + [#457](https://github.com/gakonst/ethers-rs/pull/457) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 233aa78e..2d925088 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -167,7 +167,7 @@ directly referencing the crate. The type level example for `ethers_providers::Provider` provides a good example of a documentation test: -```rust +````rust /// ```no_run /// use ethers::providers::{JsonRpcClient, Provider, Http}; /// use std::convert::TryFrom; @@ -182,9 +182,9 @@ documentation test: /// # Ok(()) /// # } /// ``` -``` +```` -Given that this is a *type* level documentation test and the primary way users +Given that this is a _type_ level documentation test and the primary way users of `ethers-rs` will create an instance of `Provider` is by using `Provider::::try_from`, this is how the documentation test is structured. @@ -210,18 +210,18 @@ A good commit message should describe what changed and why. 1. The first line should: - * contain a short description of the change (preferably 50 characters or less, +- contain a short description of the change (preferably 50 characters or less, and no more than 72 characters) - * be entirely in lowercase with the exception of proper nouns, acronyms, and +- be entirely in lowercase with the exception of proper nouns, acronyms, and the words that refer to code, like function/variable names - * be prefixed with the name of the sub crate being changed (without the `ethers-` +- be prefixed with the name of the sub crate being changed (without the `ethers-` prefix) and start with an imperative verb. If modifying `ethers` proper, omit the crate prefix. - Examples: +Examples: - * providers: introduce ENS querying for names and addresses - * re-export the abi, types and utils modules from `ethers_core` +- providers: introduce ENS querying for names and addresses +- re-export the abi, types and utils modules from `ethers_core` 2. Keep the second line blank. 3. Wrap all other lines at 72 columns (except for long URLs). @@ -230,10 +230,10 @@ A good commit message should describe what changed and why. references use `Refs: #`. `Refs` may include multiple issues, separated by a comma. - Examples: + Examples: - - `Fixes: #1337` - - `Refs: #1234` + - `Fixes: #1337` + - `Refs: #1234` Sample complete commit message: @@ -326,7 +326,7 @@ Note that only **incremental** improvement is needed to land a PR. This means that the PR does not need to be perfect, only better than the status quo. Follow up PRs may be opened to continue iterating. -When changes are necessary, *request* them, do not *demand* them, and **do not +When changes are necessary, _request_ them, do not _demand_ them, and **do not assume that the submitter already knows how to add a test or run a benchmark**. Specific performance optimization techniques, coding styles and conventions @@ -346,7 +346,7 @@ with the appropriate reason to keep the conversation flow concise and relevant. ### Be aware of the person behind the code -Be aware that *how* you communicate requests and reviews in your feedback can +Be aware that _how_ you communicate requests and reviews in your feedback can have a significant impact on the success of the Pull Request. Yes, we may land a particular change that makes ethers-rs better, but the individual might just not want to have anything to do with ethers-rs ever again. The goal is not just having @@ -390,8 +390,8 @@ When releasing the workspace: crate's changelog may also be used for reference. 4. **Release the crate.** Run the following command: - ```bash - cargo release --workspace --execute - ``` + ```bash + cargo release --workspace --execute + ``` [keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md diff --git a/Cargo.toml b/Cargo.toml index 5eb28a78..d0654130 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ members = [ "ethers-middleware", "ethers-etherscan", "ethers-solc", - "examples/ethers-wasm" + "examples/ethers-wasm", ] default-members = [ @@ -32,7 +32,7 @@ default-members = [ "ethers-core", "ethers-middleware", "ethers-etherscan", - "ethers-solc" + "ethers-solc", ] [package.metadata.docs.rs] @@ -51,7 +51,7 @@ celo = [ "ethers-signers/celo", "ethers-contract/celo", "ethers-middleware/celo", - "legacy" + "legacy", ] legacy = ["ethers-core/legacy", "ethers-contract/legacy"] @@ -66,13 +66,13 @@ rustls = [ "ethers-providers/rustls", "ethers-etherscan/rustls", "ethers-contract/rustls", - "ethers-solc/rustls" + "ethers-solc/rustls", ] openssl = [ "ethers-providers/openssl", "ethers-etherscan/openssl", "ethers-contract/openssl", - "ethers-solc/openssl" + "ethers-solc/openssl", ] dev-rpc = ["ethers-providers/dev-rpc"] ## signers @@ -101,16 +101,16 @@ ethers-etherscan = { version = "^0.17.0", default-features = false, path = "./et [dev-dependencies] ethers-contract = { version = "^0.17.0", default-features = false, path = "./ethers-contract", features = [ "abigen", - "eip712" + "eip712", ] } ethers-providers = { version = "^0.17.0", default-features = false, path = "./ethers-providers", features = [ - "ws" + "ws", ] } [target.'cfg(target_family = "unix")'.dev-dependencies] ethers-providers = { version = "^0.17.0", default-features = false, path = "./ethers-providers", features = [ "ws", - "ipc" + "ipc", ] } eyre = "0.6" rand = "0.8.5" diff --git a/LICENSE-APACHE b/LICENSE-APACHE index d0196a99..d9a10c0d 100644 --- a/LICENSE-APACHE +++ b/LICENSE-APACHE @@ -1,203 +1,176 @@ -Copyright (c) 2020 Georgios Konstantopoulos + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. -1. Definitions. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + END OF TERMS AND CONDITIONS diff --git a/LICENSE-MIT b/LICENSE-MIT index affc9fed..cb2a219b 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -1,25 +1,19 @@ Copyright (c) 2020 Georgios Konstantopoulos -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER -DEALINGS IN THE SOFTWARE.R +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 492c9a2e..920016ad 100644 --- a/README.md +++ b/README.md @@ -74,31 +74,31 @@ ethers = { git = "https://github.com/gakonst/ethers-rs", features = ["celo"] } Celo's transactions differ from Ethereum transactions by including 3 new fields: -- `fee_currency`: The currency fees are paid in (None for CELO, otherwise it's an Address) -- `gateway_fee_recipient`: The address of the fee recipient (None for no gateway fee paid) -- `gateway_fee`: Gateway fee amount (None for no gateway fee paid) +- `fee_currency`: The currency fees are paid in (None for CELO, otherwise it's an Address) +- `gateway_fee_recipient`: The address of the fee recipient (None for no gateway fee paid) +- `gateway_fee`: Gateway fee amount (None for no gateway fee paid) The feature flag enables these additional fields in the transaction request builders and in the transactions which are fetched over JSON-RPC. ## Features -- [x] Ethereum JSON-RPC Client -- [x] Interacting and deploying smart contracts -- [x] Type safe smart contract bindings code generation -- [x] Querying past events -- [x] Event monitoring as `Stream`s -- [x] ENS as a first class citizen -- [x] Celo support -- [x] Polygon support -- [x] Avalanche support -- [x] Websockets / `eth_subscribe` -- [x] Hardware Wallet Support -- [x] Parity APIs (`tracing`, `parity_blockWithReceipts`) -- [x] Geth TxPool API -- [ ] WASM Bindings (see note) -- [ ] FFI Bindings (see note) -- [ ] CLI for common operations +- [x] Ethereum JSON-RPC Client +- [x] Interacting and deploying smart contracts +- [x] Type safe smart contract bindings code generation +- [x] Querying past events +- [x] Event monitoring as `Stream`s +- [x] ENS as a first class citizen +- [x] Celo support +- [x] Polygon support +- [x] Avalanche support +- [x] Websockets / `eth_subscribe` +- [x] Hardware Wallet Support +- [x] Parity APIs (`tracing`, `parity_blockWithReceipts`) +- [x] Geth TxPool API +- [ ] WASM Bindings (see note) +- [ ] FFI Bindings (see note) +- [ ] CLI for common operations ### Websockets @@ -126,6 +126,7 @@ If you are looking to connect to a HTTPS endpoint, then you need to enable the ` feature-flags. To enable `rustls`: + ```toml [dependencies] @@ -133,6 +134,7 @@ ethers = { git = "https://github.com/gakonst/ethers-rs", features = ["rustls"] } ``` To enable `openssl`: + ```toml [dependencies] @@ -175,20 +177,20 @@ issues itself: `cargo +nightly clippy --fix -Z unstable-options` This library would not have been possibly without the great work done in: -- [`ethers.js`](https://github.com/ethers-io/ethers.js/) -- [`rust-web3`](https://github.com/tomusdrw/rust-web3/) -- [`ethcontract-rs`](https://github.com/gnosis/ethcontract-rs/) -- [`guac_rs`](https://github.com/althea-net/guac_rs/tree/master/web3/src/jsonrpc) +- [`ethers.js`](https://github.com/ethers-io/ethers.js/) +- [`rust-web3`](https://github.com/tomusdrw/rust-web3/) +- [`ethcontract-rs`](https://github.com/gnosis/ethcontract-rs/) +- [`guac_rs`](https://github.com/althea-net/guac_rs/tree/master/web3/src/jsonrpc) A lot of the code was inspired and adapted from them, to a unified and opinionated interface, built with async/await and std futures from the ground up. ## Projects using ethers-rs -- [Yield Liquidator](https://github.com/yieldprotocol/yield-liquidator/): Liquidator for Yield Protocol -- [MEV Inspect](https://github.com/flashbots/mev-inspect-rs/): Miner Extractable Value inspector -- [Ethers Flashbots](https://github.com/onbjerg/ethers-flashbots): Ethers middleware for [Flashbots](https://docs.flashbots.net) -- [Ethers Fireblocks](https://github.com/gakonst/ethers-fireblocks): Ethers middleware and signer for [Fireblocks](https://fireblocks.io)' API -- [Celo Threshold BLS DKG](https://github.com/celo-org/celo-threshold-bls-rs/): CLI for using Celo as a data availability network for the Joint-Feldman BLS DKG -- [Celo Plumo Prover](https://github.com/celo-org/plumo-prover): Creates Celo's ultralight client proof from on-chain data -- [Celo SNARK Setup Coordinator](https://github.com/celo-org/snark-setup-operator): Coordinator for executing a pipelined Groth16 SNARK setup +- [Yield Liquidator](https://github.com/yieldprotocol/yield-liquidator/): Liquidator for Yield Protocol +- [MEV Inspect](https://github.com/flashbots/mev-inspect-rs/): Miner Extractable Value inspector +- [Ethers Flashbots](https://github.com/onbjerg/ethers-flashbots): Ethers middleware for [Flashbots](https://docs.flashbots.net) +- [Ethers Fireblocks](https://github.com/gakonst/ethers-fireblocks): Ethers middleware and signer for [Fireblocks](https://fireblocks.io)' API +- [Celo Threshold BLS DKG](https://github.com/celo-org/celo-threshold-bls-rs/): CLI for using Celo as a data availability network for the Joint-Feldman BLS DKG +- [Celo Plumo Prover](https://github.com/celo-org/plumo-prover): Creates Celo's ultralight client proof from on-chain data +- [Celo SNARK Setup Coordinator](https://github.com/celo-org/snark-setup-operator): Coordinator for executing a pipelined Groth16 SNARK setup diff --git a/ethers-contract/Cargo.toml b/ethers-contract/Cargo.toml index db602458..07a743ee 100644 --- a/ethers-contract/Cargo.toml +++ b/ethers-contract/Cargo.toml @@ -27,13 +27,13 @@ hex = { version = "0.4.3", default-features = false, features = ["std"] } [dev-dependencies] ethers-providers = { version = "^0.17.0", path = "../ethers-providers", default-features = false, features = [ - "ws" + "ws", ] } ethers-signers = { version = "^0.17.0", path = "../ethers-signers" } ethers-contract-abigen = { version = "^0.17.0", path = "ethers-contract-abigen" } ethers-contract-derive = { version = "^0.17.0", path = "ethers-contract-derive" } ethers-core = { version = "^0.17.0", path = "../ethers-core", default-features = false, features = [ - "eip712" + "eip712", ] } ethers-derive-eip712 = { version = "^0.17.0", path = "../ethers-core/ethers-derive-eip712" } ethers-solc = { version = "^0.17.0", path = "../ethers-solc", default-features = false } diff --git a/ethers-contract/ethers-contract-abigen/Cargo.toml b/ethers-contract/ethers-contract-abigen/Cargo.toml index f4d150db..d633f40b 100644 --- a/ethers-contract/ethers-contract-abigen/Cargo.toml +++ b/ethers-contract/ethers-contract-abigen/Cargo.toml @@ -1,7 +1,10 @@ [package] name = "ethers-contract-abigen" version = "0.17.0" -authors = ["Nicholas Rodrigues Lordello ", "Georgios Konstantopoulos "] +authors = [ + "Nicholas Rodrigues Lordello ", + "Georgios Konstantopoulos ", +] edition = "2018" license = "MIT OR Apache-2.0" description = "Code generation for type-safe bindings to Ethereum smart contracts" @@ -20,7 +23,7 @@ url = "2.1" serde_json = "1.0.61" serde = { version = "1.0.124", features = ["derive"] } hex = { version = "0.4.2", default-features = false, features = ["std"] } -reqwest = { version = "0.11.3", default-features = false, features = ["blocking"] , optional = true } +reqwest = { version = "0.11.3", default-features = false, features = ["blocking"], optional = true } cfg-if = "1.0.0" dunce = "1.0.2" walkdir = "2.3.2" @@ -42,4 +45,7 @@ rustls = ["reqwest/rustls-tls"] [dev-dependencies] tempfile = "3.2.0" -ethers-solc = { version = "^0.17.0", path = "../../ethers-solc", default-features = false, features = ["project-util", "svm-solc"] } +ethers-solc = { version = "^0.17.0", path = "../../ethers-solc", default-features = false, features = [ + "project-util", + "svm-solc", +] } diff --git a/ethers-contract/ethers-contract-derive/Cargo.toml b/ethers-contract/ethers-contract-derive/Cargo.toml index 98fa5153..6939c01d 100644 --- a/ethers-contract/ethers-contract-derive/Cargo.toml +++ b/ethers-contract/ethers-contract-derive/Cargo.toml @@ -1,7 +1,10 @@ [package] name = "ethers-contract-derive" version = "0.17.0" -authors = ["Nicholas Rodrigues Lordello ", "Georgios Konstantopoulos "] +authors = [ + "Nicholas Rodrigues Lordello ", + "Georgios Konstantopoulos ", +] edition = "2018" license = "MIT OR Apache-2.0" description = "Proc macro for type-safe bindings generation to Ethereum and Celo smart contracts" diff --git a/ethers-core/README.md b/ethers-core/README.md index dcaf77d2..15cba6ce 100644 --- a/ethers-core/README.md +++ b/ethers-core/README.md @@ -1,7 +1,7 @@ # Ethereum types, cryptography and utilities. It is recommended to use the `utils`, `types` and `abi` re-exports instead of -the `core` module to simplify your imports.\_ +the `core` module to simplify your imports. This library provides type definitions for Ethereum's main datatypes along with other utilities for interacting with the Ethereum ecosystem @@ -37,7 +37,7 @@ The crate provides utilities for launching local Ethereum testnets by using # Features -- - ["eip712"] | Provides Eip712 trait for EIP-712 encoding of typed data for +- ["eip712"] | Provides Eip712 trait for EIP-712 encoding of typed data for derived structs # ABI Encoding and Decoding diff --git a/ethers-etherscan/Cargo.toml b/ethers-etherscan/Cargo.toml index 84997bb8..362bcb51 100644 --- a/ethers-etherscan/Cargo.toml +++ b/ethers-etherscan/Cargo.toml @@ -4,7 +4,7 @@ version = "0.17.0" rust-version = "1.62" authors = [ "Matthias Seitz ", - "Georgios Konstantopoulos " + "Georgios Konstantopoulos ", ] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/ethers-middleware/Cargo.toml b/ethers-middleware/Cargo.toml index 0ee48edf..ff0f9ddf 100644 --- a/ethers-middleware/Cargo.toml +++ b/ethers-middleware/Cargo.toml @@ -45,7 +45,7 @@ hex = { version = "0.4.3", default-features = false, features = ["std"] } rand = { version = "0.8.5", default-features = false } ethers-providers = { version = "^0.17.0", path = "../ethers-providers", default-features = false, features = [ "ws", - "rustls" + "rustls", ] } once_cell = "1.15.0" ethers-solc = { version = "^0.17.0", path = "../ethers-solc" } diff --git a/ethers-middleware/README.md b/ethers-middleware/README.md index 9366bbeb..3d24264f 100644 --- a/ethers-middleware/README.md +++ b/ethers-middleware/README.md @@ -4,18 +4,18 @@ middleware functionalities that you need. ## Available Middleware -- [`Signer`](./signer/struct.SignerMiddleware.html): Signs transactions locally, - with a private key or a hardware wallet -- [`Nonce Manager`](./nonce_manager/struct.NonceManagerMiddleware.html): Manages - nonces locally, allowing the rapid broadcast of transactions without having to - wait for them to be submitted -- [`Gas Escalator`](./gas_escalator/struct.GasEscalatorMiddleware.html): Bumps - transaction gas prices in the background -- [`Gas Oracle`](./gas_oracle/struct.GasOracleMiddleware.html): Allows getting - your gas price estimates from places other than `eth_gasPrice`. -- [`Transformer`](./transformer/trait.Transformer.html): Allows intercepting and - transforming a transaction to be broadcasted via a proxy wallet, e.g. - [`DSProxy`](./transformer/struct.DsProxy.html). +- [`Signer`](./signer/struct.SignerMiddleware.html): Signs transactions locally, + with a private key or a hardware wallet +- [`Nonce Manager`](./nonce_manager/struct.NonceManagerMiddleware.html): Manages + nonces locally, allowing the rapid broadcast of transactions without having to + wait for them to be submitted +- [`Gas Escalator`](./gas_escalator/struct.GasEscalatorMiddleware.html): Bumps + transaction gas prices in the background +- [`Gas Oracle`](./gas_oracle/struct.GasOracleMiddleware.html): Allows getting + your gas price estimates from places other than `eth_gasPrice`. +- [`Transformer`](./transformer/trait.Transformer.html): Allows intercepting and + transforming a transaction to be broadcasted via a proxy wallet, e.g. + [`DSProxy`](./transformer/struct.DsProxy.html). ## Example of a middleware stack diff --git a/ethers-providers/Cargo.toml b/ethers-providers/Cargo.toml index 26bef20e..6e1e5b78 100644 --- a/ethers-providers/Cargo.toml +++ b/ethers-providers/Cargo.toml @@ -47,7 +47,7 @@ hashers = "1.0.1" # tokio tokio = { version = "1.18", features = ["time"] } tokio-tungstenite = { version = "0.17.2", default-features = false, features = [ - "connect" + "connect", ], optional = true } [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/ethers-signers/Cargo.toml b/ethers-signers/Cargo.toml index b910f8ca..a2dd3c07 100644 --- a/ethers-signers/Cargo.toml +++ b/ethers-signers/Cargo.toml @@ -30,7 +30,7 @@ futures-util = { version = "^0.3", optional = true } futures-executor = { version = "^0.3", optional = true } semver = { version = "1.0.14", optional = true } trezor-client = { version = "0.0.6", optional = true, default-features = false, features = [ - "f_ethereum" + "f_ethereum", ] } # aws diff --git a/ethers-signers/README.md b/ethers-signers/README.md index 696b69ea..227d2cb47 100644 --- a/ethers-signers/README.md +++ b/ethers-signers/README.md @@ -7,11 +7,11 @@ signing middleware. Supported signers: -- [Private key](./src/wallet) -- [Ledger](./src/ledger) -- [Trezor](./src/trezor) -- [YubiHSM2](./src/wallet/yubi.rs) -- [AWS KMS](./src/aws) +- [Private key](./src/wallet) +- [Ledger](./src/ledger) +- [Trezor](./src/trezor) +- [YubiHSM2](./src/wallet/yubi.rs) +- [AWS KMS](./src/aws) ```no_run # use ethers_signers::{LocalWallet, Signer}; diff --git a/ethers-solc/Cargo.toml b/ethers-solc/Cargo.toml index 5de09132..7083ad24 100644 --- a/ethers-solc/Cargo.toml +++ b/ethers-solc/Cargo.toml @@ -5,7 +5,7 @@ edition = "2018" rust-version = "1.62" authors = [ "Matthias Seitz ", - "Georgios Konstantopoulos " + "Georgios Konstantopoulos ", ] license = "MIT OR Apache-2.0" readme = "../README.md" @@ -46,7 +46,7 @@ cfg-if = "1.0.0" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] home = "0.5.3" svm = { package = "svm-rs", version = "0.2.18", default-features = false, optional = true, features = [ - "blocking" + "blocking", ] } svm-builds = { package = "svm-rs-builds", version = "0.1.8", optional = true } diff --git a/ethers-solc/README.md b/ethers-solc/README.md index 2ee3f438..98eb5ecd 100644 --- a/ethers-solc/README.md +++ b/ethers-solc/README.md @@ -6,7 +6,7 @@ To also compile contracts during `cargo build` (so that ethers `abigen!` can pul First add `ethers-solc` to your cargo build-dependencies. -Once you compiled the project, you can configure cargo change detection with `rerun_if_sources_changed`, so that cargo will execute the `build.rs` file if a contract in the sources directory has changed +Once you compiled the project, you can configure cargo change detection with `rerun_if_sources_changed`, so that cargo will execute the `build.rs` file if a contract in the sources directory has changed ```toml [build-dependencies] @@ -23,8 +23,8 @@ fn main() { .build() .unwrap(); let output = project.compile().unwrap(); - + // Tell Cargo that if a source file changes, to rerun this build script. project.rerun_if_sources_changed(); } -``` \ No newline at end of file +``` diff --git a/examples/ethers-wasm/index.html b/examples/ethers-wasm/index.html index 3e41e1a0..e0da4763 100644 --- a/examples/ethers-wasm/index.html +++ b/examples/ethers-wasm/index.html @@ -8,4 +8,4 @@

ethers WASM

- \ No newline at end of file + diff --git a/examples/ethers-wasm/index.js b/examples/ethers-wasm/index.js index 4d235834..b075993e 100644 --- a/examples/ethers-wasm/index.js +++ b/examples/ethers-wasm/index.js @@ -4,4 +4,4 @@ ethers .then(m => { m.deploy().catch(console.error); }) - .catch(console.error); \ No newline at end of file + .catch(console.error); diff --git a/rustfmt.toml b/rustfmt.toml index 8971d8ab..e70aee8c 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -6,4 +6,4 @@ wrap_comments = true binop_separator = "Back" trailing_comma = "Vertical" trailing_semicolon = false -use_field_init_shorthand = true \ No newline at end of file +use_field_init_shorthand = true