parent
3ee1b6796e
commit
5c762c44d7
|
@ -1,10 +1,9 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
title: ""
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
**Version**
|
||||
|
|
|
@ -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.**
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -27,6 +27,6 @@ the code change.
|
|||
|
||||
## PR Checklist
|
||||
|
||||
- [ ] Added Tests
|
||||
- [ ] Added Documentation
|
||||
- [ ] Updated the changelog
|
||||
- [ ] Added Tests
|
||||
- [ ] Added Documentation
|
||||
- [ ] Updated the changelog
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 }}
|
||||
security_audit:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions-rs/audit-check@v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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' }}
|
||||
|
|
538
CHANGELOG.md
538
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<u8>`.
|
||||
[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<H160>` and From<Vec<H160>> traits to `ValueOrArray<H160>` [#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<u8>`.
|
||||
[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<H160>` and From<Vec<H160>> traits to `ValueOrArray<H160>` [#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<Middleware> 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<Middleware> 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<Abi>` with `abi: Option<LosslessAbi>` 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<Abi>` with `abi: Option<LosslessAbi>` 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<Middleware> 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<Middleware> 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<Middleware> 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<Middleware> 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)
|
||||
|
|
|
@ -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::<T>::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 <release_type> --execute
|
||||
```
|
||||
```bash
|
||||
cargo release --workspace <release_type> --execute
|
||||
```
|
||||
|
||||
[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md
|
||||
|
|
16
Cargo.toml
16
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"
|
||||
|
|
327
LICENSE-APACHE
327
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
|
||||
|
|
36
LICENSE-MIT
36
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.
|
||||
|
|
62
README.md
62
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
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
[package]
|
||||
name = "ethers-contract-abigen"
|
||||
version = "0.17.0"
|
||||
authors = ["Nicholas Rodrigues Lordello <nlordell@gmail.com>", "Georgios Konstantopoulos <me@gakonst.com>"]
|
||||
authors = [
|
||||
"Nicholas Rodrigues Lordello <nlordell@gmail.com>",
|
||||
"Georgios Konstantopoulos <me@gakonst.com>",
|
||||
]
|
||||
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",
|
||||
] }
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
[package]
|
||||
name = "ethers-contract-derive"
|
||||
version = "0.17.0"
|
||||
authors = ["Nicholas Rodrigues Lordello <nlordell@gmail.com>", "Georgios Konstantopoulos <me@gakonst.com>"]
|
||||
authors = [
|
||||
"Nicholas Rodrigues Lordello <nlordell@gmail.com>",
|
||||
"Georgios Konstantopoulos <me@gakonst.com>",
|
||||
]
|
||||
edition = "2018"
|
||||
license = "MIT OR Apache-2.0"
|
||||
description = "Proc macro for type-safe bindings generation to Ethereum and Celo smart contracts"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -4,7 +4,7 @@ version = "0.17.0"
|
|||
rust-version = "1.62"
|
||||
authors = [
|
||||
"Matthias Seitz <matthias.seitz@outlook.de>",
|
||||
"Georgios Konstantopoulos <me@gakonst.com>"
|
||||
"Georgios Konstantopoulos <me@gakonst.com>",
|
||||
]
|
||||
license = "MIT OR Apache-2.0"
|
||||
edition = "2018"
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -5,7 +5,7 @@ edition = "2018"
|
|||
rust-version = "1.62"
|
||||
authors = [
|
||||
"Matthias Seitz <matthias.seitz@outlook.de>",
|
||||
"Georgios Konstantopoulos <me@gakonst.com>"
|
||||
"Georgios Konstantopoulos <me@gakonst.com>",
|
||||
]
|
||||
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 }
|
||||
|
||||
|
|
Loading…
Reference in New Issue