Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5e5e5322c4 |
4
.github/workflows/generate-docs.yml
vendored
4
.github/workflows/generate-docs.yml
vendored
@ -21,7 +21,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 20.x
|
node-version: 18.x
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -35,7 +35,7 @@ jobs:
|
|||||||
run: npm install --no-save 'https://github.com/ricmoo/flatworm.git#tsdocs'
|
run: npm install --no-save 'https://github.com/ricmoo/flatworm.git#tsdocs'
|
||||||
|
|
||||||
- name: Build Documentation
|
- name: Build Documentation
|
||||||
run: node node_modules/flatworm/lib/cli-test ./docs.wrm/config.mjs
|
run: node node_modules/flatworm/lib/cli-test ./docs.wrm/config.js
|
||||||
|
|
||||||
- name: Upload documentation to to docs.ethers.org
|
- name: Upload documentation to to docs.ethers.org
|
||||||
uses: ethers-io/sync-s3-action@main
|
uses: ethers-io/sync-s3-action@main
|
||||||
|
46
.github/workflows/test-browser.yml
vendored
46
.github/workflows/test-browser.yml
vendored
@ -1,46 +0,0 @@
|
|||||||
name: Browser Tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- "src.ts/**"
|
|
||||||
- "lib.esm/**"
|
|
||||||
- "lib.commonjs/**"
|
|
||||||
- "misc/test-browser/**"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test-browser:
|
|
||||||
name: Run Browser Tests
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
environment: ethers-tests
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Install Node.js
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: 20.x
|
|
||||||
|
|
||||||
- name: Install and run Geth
|
|
||||||
uses: ethers-io/run-geth-action@main
|
|
||||||
|
|
||||||
- name: Insall Chrome
|
|
||||||
run: wget -q 'https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb' && sudo dpkg --install google-chrome-stable_current_amd64.deb
|
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Build browser bundles (from TypeScript)
|
|
||||||
run: npm run build-dist
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: npm run test-browser
|
|
8
.github/workflows/test-ci.yml
vendored
8
.github/workflows/test-ci.yml
vendored
@ -6,8 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- "src.ts/**"
|
- "src.ts/**"
|
||||||
- "lib.esm/**"
|
|
||||||
- "lib.commonjs/**"
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
@ -25,7 +23,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [ 18.x, 20.x ]
|
node-version: [ 16.x, 18.x ]
|
||||||
test-type: [ esm, commonjs ]
|
test-type: [ esm, commonjs ]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -66,7 +64,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 20.x
|
node-version: 18.x
|
||||||
|
|
||||||
- name: Install and run Geth
|
- name: Install and run Geth
|
||||||
uses: ethers-io/run-geth-action@main
|
uses: ethers-io/run-geth-action@main
|
||||||
@ -98,7 +96,7 @@ jobs:
|
|||||||
name: coverage-complete
|
name: coverage-complete
|
||||||
path: ./output/coverage.tar
|
path: ./output/coverage.tar
|
||||||
|
|
||||||
- name: Upload coverage to build.ethers.org
|
- name: Upload coverage to to build.ethers.org
|
||||||
uses: ethers-io/sync-s3-action@main
|
uses: ethers-io/sync-s3-action@main
|
||||||
with:
|
with:
|
||||||
aws_access_key_id: ${{ secrets.BUILD_AWS_ACCESS_KEY_ID }}
|
aws_access_key_id: ${{ secrets.BUILD_AWS_ACCESS_KEY_ID }}
|
||||||
|
52
.github/workflows/test-env.yml
vendored
52
.github/workflows/test-env.yml
vendored
@ -7,8 +7,8 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
test-tsc-env:
|
test-env:
|
||||||
name: Test TypeScript Environments
|
name: Test Environments
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
@ -18,32 +18,25 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
tsModuleResolution: [ "node", "node16", "nodenext" ]
|
test: [ "ts-import-cjs-node16", "ts-import-esm-node16", "ts-import-cjs", "ts-import-esm" ]
|
||||||
tsModule: [ "commonjs", "es2020" ]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 20.x
|
node-version: 18.x
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: "faux_modules/ethers"
|
path: "faux_modules/ethers"
|
||||||
|
|
||||||
- name: Copy tests to working directory
|
|
||||||
run: cp -r faux_modules/ethers/testcases/test-env/test-tsc/* .
|
|
||||||
|
|
||||||
- name: Prepare setup moduleResolution=${{ matrix.tsModuleResolution }} module=${{ matrix.tsModule }}
|
|
||||||
run: node prepare.cjs ${{ matrix.tsModuleResolution }} ${{ matrix.tsModule }}
|
|
||||||
|
|
||||||
- name: Dump Config
|
|
||||||
run: cat package.json tsconfig.json
|
|
||||||
|
|
||||||
- name: Install and run Faux Registry
|
- name: Install and run Faux Registry
|
||||||
uses: ethers-io/hijack-npm-action@main
|
uses: ethers-io/hijack-npm-action@main
|
||||||
|
|
||||||
|
- name: Copy tests to working directory
|
||||||
|
run: cp faux_modules/ethers/testcases/test-env/${{ matrix.test }}/* .
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: npm install
|
run: npm install
|
||||||
|
|
||||||
@ -53,34 +46,3 @@ jobs:
|
|||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: npm test
|
run: npm test
|
||||||
|
|
||||||
test-angular:
|
|
||||||
name: Test Angular Environment
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
env:
|
|
||||||
npm_config_registry: http://localhost:8043
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Use Node.js
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: 20.x
|
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
path: "faux_modules/ethers"
|
|
||||||
|
|
||||||
- name: Copy tests to working directory
|
|
||||||
run: cp -r faux_modules/ethers/testcases/test-env/angular/* .
|
|
||||||
|
|
||||||
- name: Install and run Faux Registry
|
|
||||||
uses: ethers-io/hijack-npm-action@main
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
run: npm install
|
|
||||||
|
|
||||||
- name: Build project
|
|
||||||
run: npm run build
|
|
||||||
|
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,7 +1,6 @@
|
|||||||
node_modules/**
|
node_modules/**
|
||||||
output/**
|
output/**
|
||||||
|
misc/**
|
||||||
|
|
||||||
**/*.save
|
|
||||||
**/*.swp
|
**/*.swp
|
||||||
**/*.tgz
|
|
||||||
dist/*.gz
|
dist/*.gz
|
||||||
|
@ -27,5 +27,3 @@ testcases/**
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules/**
|
node_modules/**
|
||||||
misc/**
|
misc/**
|
||||||
**/*.tgz
|
|
||||||
dist/*.gz
|
|
||||||
|
1
.npmrc
1
.npmrc
@ -1 +0,0 @@
|
|||||||
@tornado:registry=https://git.tornado.ws/api/packages/tornado-packages/npm/
|
|
216
CHANGELOG.md
216
CHANGELOG.md
@ -3,223 +3,9 @@ Change Log
|
|||||||
|
|
||||||
This change log is maintained by `src.ts/_admin/update-changelog.ts` but may also be manually updated.
|
This change log is maintained by `src.ts/_admin/update-changelog.ts` but may also be manually updated.
|
||||||
|
|
||||||
ethers/v6.12.0 (2024-04-17 01:09)
|
ethers/v6.3.1 (2023-04-22 18:55)
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
- Added Linea Sepolia network and Infura endpoint ([#4655](https://github.com/ethers-io/ethers.js/issues/4655); [b4aaab8](https://github.com/ethers-io/ethers.js/commit/b4aaab8d39fe47f8a1a296fa442f0856f84faf03)).
|
|
||||||
- Do not send unsubscribe messages to destroyed Providers ([#4678](https://github.com/ethers-io/ethers.js/issues/4678); [c45935e](https://github.com/ethers-io/ethers.js/commit/c45935e29ca0dd1ecdf1277fa1107246041be580)).
|
|
||||||
- Get definitive network from InfuraProvider when using InfuraWebSocketProvider ([38e32d8](https://github.com/ethers-io/ethers.js/commit/38e32d82145eb289e5179f9b6b11f4a9225a7022)).
|
|
||||||
- Better error messages for transaction field mismatch ([#4659](https://github.com/ethers-io/ethers.js/issues/4659); [9230aa0](https://github.com/ethers-io/ethers.js/commit/9230aa0b9a88b5241915a8d6afa8a522d35abd5d)).
|
|
||||||
- Added prevRandao to block ([#3372](https://github.com/ethers-io/ethers.js/issues/3372); [ec6a754](https://github.com/ethers-io/ethers.js/commit/ec6a754f0c8647dae59c73b2589225cb200d83dd)).
|
|
||||||
- Added Polygon Amoy testnet ([#4645](https://github.com/ethers-io/ethers.js/issues/4645); [1717abb](https://github.com/ethers-io/ethers.js/commit/1717abbf29a14a6f6b106e479fe9a5b1f8768dc4)).
|
|
||||||
- Added Chainstack provider ([#2741](https://github.com/ethers-io/ethers.js/issues/2741); [014004d](https://github.com/ethers-io/ethers.js/commit/014004d9402d7fd8c15553792cfb7a8a84ed327a)).
|
|
||||||
- Added deep convertion to Result for toObject and toArray ([#4681](https://github.com/ethers-io/ethers.js/issues/4681); [03bfe2a](https://github.com/ethers-io/ethers.js/commit/03bfe2a4f7b29b15cd90127974b7fc1d8b03edf9)).
|
|
||||||
- Added EIP-4844 broadcast support ([92bad88](https://github.com/ethers-io/ethers.js/commit/92bad88261a5d8a538535a7d5528162fe5010527)).
|
|
||||||
- Fix ignored throttle parameters ([#4663](https://github.com/ethers-io/ethers.js/issues/4663); [12772e9](https://github.com/ethers-io/ethers.js/commit/12772e9498b70f8538838f30e16f3792ea90e173)).
|
|
||||||
|
|
||||||
ethers/v6.11.1 (2024-02-14 13:13)
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
- Throw an error when attempting to derive from a master path from a non-master node ([#4551](https://github.com/ethers-io/ethers.js/issues/4551); [556fdd9](https://github.com/ethers-io/ethers.js/commit/556fdd91d9b6bf7db4041bb099e66b2080e1a985)).
|
|
||||||
- Allow ENS wildcards with labels up to 255 bytes wide; discussed with ENS and deemed safe ([#4543](https://github.com/ethers-io/ethers.js/issues/4543); [7f14bde](https://github.com/ethers-io/ethers.js/commit/7f14bdebf1aef6760462a1c2437c31f002b984fe)).
|
|
||||||
- Enforce string is passed to toUtf8Bytes ([#4583](https://github.com/ethers-io/ethers.js/issues/4583); [f45bb87](https://github.com/ethers-io/ethers.js/commit/f45bb87aefaf2c6c3a4991f6e30a81c227ae83c0)).
|
|
||||||
- Fix transaction.index not being populated on some backends ([#4591](https://github.com/ethers-io/ethers.js/issues/4591); [7f0e140](https://github.com/ethers-io/ethers.js/commit/7f0e140d5e3925a42e8bb2ac9eb1ba3fbd939864)).
|
|
||||||
|
|
||||||
ethers/v6.11.0 (2024-02-08 20:26)
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
- Allow transaction encoding for inferred type transactions ([f02211d](https://github.com/ethers-io/ethers.js/commit/f02211d055567b51373b5faa2c3dc6efe0523618)).
|
|
||||||
- Added EIP-4788, receipts root and state root fields to Block ([#4570](https://github.com/ethers-io/ethers.js/issues/4570); [c5f126f](https://github.com/ethers-io/ethers.js/commit/c5f126faf7d826b6a99df0ee578ff3d0ef409381)).
|
|
||||||
- Added EIP-4844 fields to Provider classes and formatter ([#4570](https://github.com/ethers-io/ethers.js/issues/4570); [7b4f2c1](https://github.com/ethers-io/ethers.js/commit/7b4f2c1a74db411829b5e8ef758bfa2ee21e5890)).
|
|
||||||
- Assert BrowserProvider receives an EIP-1193 provider to fail early when passing undefined ethereum object ([b69f43b](https://github.com/ethers-io/ethers.js/commit/b69f43bc6f35da881ca7a0c8ccc5fda92edd076d)).
|
|
||||||
- Add timeout to ContractTransactionResponse wait ([#4497](https://github.com/ethers-io/ethers.js/issues/4497); [095de51](https://github.com/ethers-io/ethers.js/commit/095de51e605a9b88576e5e34fd55a6e32befa4eb)).
|
|
||||||
- Allow override keyword in human-readable ABI and improve error messages ([#4514](https://github.com/ethers-io/ethers.js/issues/4514), [#4548](https://github.com/ethers-io/ethers.js/issues/4548); [be5ec2d](https://github.com/ethers-io/ethers.js/commit/be5ec2d327a503b2e5fc0f37c47eee9e828f8e23)).
|
|
||||||
- Expand Contract sub-class to accept BaseContract super-class constructor arguments ([#4538](https://github.com/ethers-io/ethers.js/issues/4538); [98496bc](https://github.com/ethers-io/ethers.js/commit/98496bc48ec23ce0d9c21d3c6c87e5b1b796a610)).
|
|
||||||
- Allow network for default provider to be null to select mainnet ([#4501](https://github.com/ethers-io/ethers.js/issues/4501); [b6bf7ab](https://github.com/ethers-io/ethers.js/commit/b6bf7aba62fb38839cd01858432b801cc5c28a11)).
|
|
||||||
- Allow long dnsEncode names with optional length parameter ([#4543](https://github.com/ethers-io/ethers.js/issues/4543); [a136348](https://github.com/ethers-io/ethers.js/commit/a1363483a56b0dee342595c8f44ed8fcce7ecca9)).
|
|
||||||
- Fix parseLog signature when receiving read-only array for topics ([#4029](https://github.com/ethers-io/ethers.js/issues/4029), [#4459](https://github.com/ethers-io/ethers.js/issues/4459); [20cd8a2](https://github.com/ethers-io/ethers.js/commit/20cd8a23eaf8e8a14e2b51f7f64da4cb3e32fccb)).
|
|
||||||
- Use Secure endpoints for BNB on Etherscan ([#4525](https://github.com/ethers-io/ethers.js/issues/4525); [1f6e188](https://github.com/ethers-io/ethers.js/commit/1f6e1882515195bd67f0bce9fe347ec05107324b)).
|
|
||||||
- Added holesky network and related end-points for supporting providers ([c6e6c43](https://github.com/ethers-io/ethers.js/commit/c6e6c432574a0b7e55c300ab3e470aafdace28b3)).
|
|
||||||
- Added EIP-4844 BLOb transactions ([#4554](https://github.com/ethers-io/ethers.js/issues/4554); [9c1e82e](https://github.com/ethers-io/ethers.js/commit/9c1e82e1230526ebcd62902890c4f24b1f7f7d79)).
|
|
||||||
- Normalize EIP-712 types before computing the payload ([#4541](https://github.com/ethers-io/ethers.js/issues/4541); [56c1361](https://github.com/ethers-io/ethers.js/commit/56c1361ee83db8b68859caf0850c95ff70e7e306)).
|
|
||||||
- Updated thrid-part provider URLs for QuickNode ([2b4891d](https://github.com/ethers-io/ethers.js/commit/2b4891d86e72e849079cb1dc98b18e158b0c0620)).
|
|
||||||
- Fixed normalization and abstracted EIP-712 Array parsing ([#4541](https://github.com/ethers-io/ethers.js/issues/4541); [8f99601](https://github.com/ethers-io/ethers.js/commit/8f99601df1f26a8ba4d6d9dea5e033e7f688107e)).
|
|
||||||
- Updated third-party provider network URLs ([#4542](https://github.com/ethers-io/ethers.js/issues/4542); [84ca14f](https://github.com/ethers-io/ethers.js/commit/84ca14f1ffc5afbdd7f4c26a9b734ec5951eee3c)).
|
|
||||||
- Added additional sepolia testnets ([4efef76](https://github.com/ethers-io/ethers.js/commit/4efef76e8cab0acaf1b2ba231a0148f9381bb1ee)).
|
|
||||||
- Fix EIP-712 type aliases for uint and int ([#4541](https://github.com/ethers-io/ethers.js/issues/4541); [43fb9c2](https://github.com/ethers-io/ethers.js/commit/43fb9c233696aeaa80b1c2b0e5fafce90e0ad508)).
|
|
||||||
- Fixed typo in Error string ([#4539](https://github.com/ethers-io/ethers.js/issues/4539); [7882905](https://github.com/ethers-io/ethers.js/commit/78829050853093bc5291ae78fc5a904044759aa0)).
|
|
||||||
- Better debugging output on fetch errors ([bee07a0](https://github.com/ethers-io/ethers.js/commit/bee07a0750b448a9d13c2d57014bcf27f43e2ed7)).
|
|
||||||
|
|
||||||
ethers/v6.10.0 (2024-01-12 19:46)
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
- Limit decoded result imflation ratio from ABI-encoded data ([#4537](https://github.com/ethers-io/ethers.js/issues/4537); [1b4debd](https://github.com/ethers-io/ethers.js/commit/1b4debd4a9e61d171bfc60590116facb8bdbd2da)).
|
|
||||||
|
|
||||||
ethers/v6.9.2 (2024-01-02 19:12)
|
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
- Fix Base58 padding for string representation of binary data ([#4527](https://github.com/ethers-io/ethers.js/issues/4527); [ccac24a](https://github.com/ethers-io/ethers.js/commit/ccac24a5b0a4d07a4b639c1c4d0a44703e32d418)).
|
|
||||||
|
|
||||||
ethers/v6.9.1 (2023-12-19 04:53)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fix uncatchable issue when sending transactions over JSON-RPC and provide some retry-recovery for missing v ([#4513](https://github.com/ethers-io/ethers.js/issues/4513); [1802215](https://github.com/ethers-io/ethers.js/commit/180221574c5d2af9ad85404af4fab8752d3d5029)).
|
|
||||||
|
|
||||||
ethers/v6.9.0 (2023-11-27 06:15)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Use provider-specified suggested priority fee when available, otherwise fallback onto existing logic of 1 gwei ([#4463](https://github.com/ethers-io/ethers.js/issues/4463); [f8f11c7](https://github.com/ethers-io/ethers.js/commit/f8f11c754aa2c9b541db73d3bde66a8ffa5146f0)).
|
|
||||||
- Add auto-detected static network support to providers and allow customizing socket provider options ([#4199](https://github.com/ethers-io/ethers.js/issues/4199), [#4418](https://github.com/ethers-io/ethers.js/issues/4418), [#4441](https://github.com/ethers-io/ethers.js/issues/4441); [4681b83](https://github.com/ethers-io/ethers.js/commit/4681b83d516ab2eb41ddb68b5021c97e14c6f2cf)).
|
|
||||||
- Added Base network to AlchemyProvider ([#4384](https://github.com/ethers-io/ethers.js/issues/4384); [9e74d14](https://github.com/ethers-io/ethers.js/commit/9e74d14432e6efebdff21b9a7d2e6143af55e143)).
|
|
||||||
- Fixed ParamType formatting causing bad tuple full and minimal ABI output ([#4329](https://github.com/ethers-io/ethers.js/issues/4329), [#4479](https://github.com/ethers-io/ethers.js/issues/4479); [2b67488](https://github.com/ethers-io/ethers.js/commit/2b6748815169abf2c99a647131875c13b8b6a787)).
|
|
||||||
- Adjust for provider config weight when kicking off a request in FallbackProvider ([#4298](https://github.com/ethers-io/ethers.js/issues/4298); [da34e35](https://github.com/ethers-io/ethers.js/commit/da34e3569e95357d9469209d926cb645f0750bfa)).
|
|
||||||
- More robust FallbackProvider broadcast ([#4186](https://github.com/ethers-io/ethers.js/issues/4186), [#4297](https://github.com/ethers-io/ethers.js/issues/4297), [#4442](https://github.com/ethers-io/ethers.js/issues/4442); [e2485b8](https://github.com/ethers-io/ethers.js/commit/e2485b8ef927d18c7a15d2d29b3b0feffec9991a)).
|
|
||||||
- Added safe and finalized provider events ([#3921](https://github.com/ethers-io/ethers.js/issues/3921); [a92766e](https://github.com/ethers-io/ethers.js/commit/a92766e56ad04185625037d84fc28adaac7fae8c)).
|
|
||||||
|
|
||||||
ethers/v6.8.1 (2023-11-01 16:08)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fixed typo in error description when converting values to arrays ([#4427](https://github.com/ethers-io/ethers.js/issues/4427), [#4446](https://github.com/ethers-io/ethers.js/issues/4446); [8fed2f8](https://github.com/ethers-io/ethers.js/commit/8fed2f84768ace4bf3e5742c931a74841da7c637)).
|
|
||||||
- Fix invalid token nonpayable being included in formatted constructor ([#4412](https://github.com/ethers-io/ethers.js/issues/4412); [2e0bd90](https://github.com/ethers-io/ethers.js/commit/2e0bd90744b8e76fcf03f75a66cb0061d50f7bd9)).
|
|
||||||
- Add ENS support for Sepolia ([#4422](https://github.com/ethers-io/ethers.js/issues/4422); [1da50ae](https://github.com/ethers-io/ethers.js/commit/1da50ae286da01e58a70bb8df8aa5cc5d260e33e)).
|
|
||||||
|
|
||||||
ethers/v6.8.0 (2023-10-10 22:42)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Replicated former ENS normalize behaviour for empty strings and update namehash testcases ([125ff11](https://github.com/ethers-io/ethers.js/commit/125ff1189b9cefb8abfd7da9c104c75e382a50cc)).
|
|
||||||
- Initial shortMessage support for errors ([#4241](https://github.com/ethers-io/ethers.js/issues/4241); [d6a8c14](https://github.com/ethers-io/ethers.js/commit/d6a8c14d907cf8b90347444c0186b83a5db2e293)).
|
|
||||||
- Fixed resolving ENS addresses used as from parameters ([#3961](https://github.com/ethers-io/ethers.js/issues/3961); [2616f4c](https://github.com/ethers-io/ethers.js/commit/2616f4c30c82bd45449b73fa37ef269d60a07d80)).
|
|
||||||
- Merge: 9a4b7534 0c9c23b0 Merge branch 'v5.8-progress' ([cd5f0fe](https://github.com/ethers-io/ethers.js/commit/cd5f0fe03f2137fbc47e295f8db38a5151111e72)).
|
|
||||||
- Allow more loose input format for RLP encoder ([#4402](https://github.com/ethers-io/ethers.js/issues/4402); [9a4b753](https://github.com/ethers-io/ethers.js/commit/9a4b7534458fc79a0654b0eb57fc956bffa02a2f)).
|
|
||||||
- Update to latest noble crypto libraries ([#3975](https://github.com/ethers-io/ethers.js/issues/3975); [b27faa0](https://github.com/ethers-io/ethers.js/commit/b27faa02ac8f90e2e54b188e8139c59d98c469e3)).
|
|
||||||
- More robust configuration options for FetchRequest getUrl functions ([#4353](https://github.com/ethers-io/ethers.js/issues/4353); [9541f2f](https://github.com/ethers-io/ethers.js/commit/9541f2f70cd7f5c6f3caf93f5a3d5e34eae5281a)).
|
|
||||||
- Ignore blockTag when calling Etherscan if it is the default block tag ([dcea9b3](https://github.com/ethers-io/ethers.js/commit/dcea9b353619d85878ad2ba340ae17e5c285d558)).
|
|
||||||
|
|
||||||
ethers/v6.7.1 (2023-08-15 03:08)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Prevent destroyed providers from emitting network detection errors ([7d41730](https://github.com/ethers-io/ethers.js/commit/7d4173049edc3b4ff2de1971c3ecca3b08588651)).
|
|
||||||
- Fix VSCode reported lint issues ([#4153](https://github.com/ethers-io/ethers.js/issues/4153), [#4156](https://github.com/ethers-io/ethers.js/issues/4156), [#4158](https://github.com/ethers-io/ethers.js/issues/4158), [#4159](https://github.com/ethers-io/ethers.js/issues/4159); [4eb84da](https://github.com/ethers-io/ethers.js/commit/4eb84da865a82a27c5113c38102b6b710096958e), [203dfc3](https://github.com/ethers-io/ethers.js/commit/203dfc33b9c8e72c9cdfe0a349ac763ef17a4484)).
|
|
||||||
- Add gasPrice to Polygon feeData for type 0 and type 1 legacy transactions ([#4315](https://github.com/ethers-io/ethers.js/issues/4315); [0df3ab9](https://github.com/ethers-io/ethers.js/commit/0df3ab93137039de1e1986bbfe9a5b32ceffa8a4)).
|
|
||||||
|
|
||||||
ethers/v6.7.0 (2023-08-02 23:52)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fixed receipt wait not throwing on reverted transactions ([25fef4f](https://github.com/ethers-io/ethers.js/commit/25fef4f8d756f5bbf5a2a05e38233248a8eb43ac)).
|
|
||||||
- Added custom priority fee to Optimism chain (via telegram) ([ff80b04](https://github.com/ethers-io/ethers.js/commit/ff80b04f31da21496e72d3687cecd1c01efaecc5)).
|
|
||||||
- Add context to Logs that fail decoding due to ABI issues to help debugging ([f3c46f2](https://github.com/ethers-io/ethers.js/commit/f3c46f22994d194ff78b3b176407b2ecb7af1c77)).
|
|
||||||
- Added new exports for FallbackProviderOptions and FetchUrlFeeDataNetworkPlugin ([#2828](https://github.com/ethers-io/ethers.js/issues/2828), [#4160](https://github.com/ethers-io/ethers.js/issues/4160); [b1dbbb0](https://github.com/ethers-io/ethers.js/commit/b1dbbb0de3f10a3d9e12d6a84ad5c52bea25c7f6)).
|
|
||||||
- Allow overriding pollingInterval in JsonRpcProvider constructor (via discord) ([f42f258](https://github.com/ethers-io/ethers.js/commit/f42f258beb305a06e563ad16522f095a72da32eb)).
|
|
||||||
- Fixed FallbackProvider priority sorting ([#4150](https://github.com/ethers-io/ethers.js/issues/4150); [78538eb](https://github.com/ethers-io/ethers.js/commit/78538eb100addd135d29e60c9fa4fed3946278fa)).
|
|
||||||
- Added linea network to InfuraProvider and Network ([#4184](https://github.com/ethers-io/ethers.js/issues/4184), [#4190](https://github.com/ethers-io/ethers.js/issues/4190); [d3e5e2c](https://github.com/ethers-io/ethers.js/commit/d3e5e2c45b28c377f306091acfc024e30c49ef20)).
|
|
||||||
- Added whitelist support to getDefaultProvider ([82bb936](https://github.com/ethers-io/ethers.js/commit/82bb936542e29c6441ac8dc2d3ebbdd4edb708ee)).
|
|
||||||
- Add Polygon RPC endpoints to the default provider ([#3689](https://github.com/ethers-io/ethers.js/issues/3689); [23704a9](https://github.com/ethers-io/ethers.js/commit/23704a9c44d5857817e138fb19d44ce2103ca005)).
|
|
||||||
- Added customizable quorum to FallbackProvider ([#4160](https://github.com/ethers-io/ethers.js/issues/4160); [8f0a509](https://github.com/ethers-io/ethers.js/commit/8f0a50921a12a866addcf5b0fabc576bfc287689)).
|
|
||||||
- Added basic Gas Station support via a NetworkPlugin ([#2828](https://github.com/ethers-io/ethers.js/issues/2828); [229145d](https://github.com/ethers-io/ethers.js/commit/229145ddf566a962517588eaeed155734c7d4598)).
|
|
||||||
- Add BNB URLs to EtherscanProvider networks ([ec39abe](https://github.com/ethers-io/ethers.js/commit/ec39abe067259fad4ea8607a6c5aece61890eb41)).
|
|
||||||
- Added tests for JSON format ([#4248](https://github.com/ethers-io/ethers.js/issues/4248); [ba36079](https://github.com/ethers-io/ethers.js/commit/ba36079a285706694532ce726568c4c447acad47)).
|
|
||||||
- Use empty string for unnamed parameters in JSON output instead of undefined ([#4248](https://github.com/ethers-io/ethers.js/issues/4248); [8c2652c](https://github.com/ethers-io/ethers.js/commit/8c2652c8cb4d054207d89688d30930869d9d3f8b)).
|
|
||||||
- Return undefined for Contract properties that do not exist instead of throwing an error ([#4266](https://github.com/ethers-io/ethers.js/issues/4266); [5bf7b34](https://github.com/ethers-io/ethers.js/commit/5bf7b3494ed62952fc387b4368a0bdc86dfe163e)).
|
|
||||||
|
|
||||||
ethers/v6.6.7 (2023-07-28 14:50)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Prevent malformed logs from preventing other logs being decoded ([#4275](https://github.com/ethers-io/ethers.js/issues/4275); [0dca645](https://github.com/ethers-io/ethers.js/commit/0dca645632d73488bf6ad460e0d779361a537bbe)).
|
|
||||||
- Allow visibility on human-readable constructors ([#4278](https://github.com/ethers-io/ethers.js/issues/4278); [3a52201](https://github.com/ethers-io/ethers.js/commit/3a52201fe2ba68a00105cca2c0901da5ffa18d6b)).
|
|
||||||
|
|
||||||
ethers/v6.6.6 (2023-07-28 01:14)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Better error message when passing invalid overrides object into a contract deployment ([#4182](https://github.com/ethers-io/ethers.js/issues/4182); [aa2ea3d](https://github.com/ethers-io/ethers.js/commit/aa2ea3d5296956fd0d40b83888e1ca053bb250ee)).
|
|
||||||
|
|
||||||
ethers/v6.6.5 (2023-07-24 00:04)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Reflect symbols in the Contract Proxy to target ([#4084](https://github.com/ethers-io/ethers.js/issues/4048); [ac2f5e5](https://github.com/ethers-io/ethers.js/commit/ac2f5e563b8ec0e91a931470eb6ea58b0c01fb3d)).
|
|
||||||
- Allow arrays of address for indexed filter topics ([#4259](https://github.com/ethers-io/ethers.js/issues/4259); [93af87c](https://github.com/ethers-io/ethers.js/commit/93af87c447eeb77090e29bd940612603b3f74026)).
|
|
||||||
- Fixed filter encoding for bytesX ([#4244](https://github.com/ethers-io/ethers.js/issues/4244); [fa3a883](https://github.com/ethers-io/ethers.js/commit/fa3a883ff7c88611ce766f58bdd4b8ac90814470)).
|
|
||||||
- Fix JSON formatting for tuple arrays ([#4237](https://github.com/ethers-io/ethers.js/issues/4237); [a8bc49b](https://github.com/ethers-io/ethers.js/commit/a8bc49bdcf07a51b35f38cf209db27e116cc1a59)).
|
|
||||||
- Better error messages when parsing fragment strings ([#4246](https://github.com/ethers-io/ethers.js/issues/4246); [e36b6c3](https://github.com/ethers-io/ethers.js/commit/e36b6c35b7bc777c9adbe0055b32b31a13185240)).
|
|
||||||
- Include the missing fragment key and args when no matching Contract method or event is present ([#3809](https://github.com/ethers-io/ethers.js/issues/3809); [450a176](https://github.com/ethers-io/ethers.js/commit/450a176ee25f88a2ddb9ff23b153ef70bf1dc546)).
|
|
||||||
- Prevent a single malformed event from preventing other Contract logs; reported on Discord ([b1375f4](https://github.com/ethers-io/ethers.js/commit/b1375f4e4463b856855ebc684b45945455ac082e)).
|
|
||||||
|
|
||||||
ethers/v6.6.4 (2023-07-16 00:35)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- More robust support for Signatures with less standard parameter values ([#3835](https://github.com/ethers-io/ethers.js/issues/3835), [#4228](https://github.com/ethers-io/ethers.js/issues/4228); [a7e4048](https://github.com/ethers-io/ethers.js/commit/a7e4048fe3b75a743cec8c8ef2a5fad4bdc8b14c)).
|
|
||||||
- Fixed CCIP-read in the EnsResolver ([#4221](https://github.com/ethers-io/ethers.js/issues/4221); [57f1e1c](https://github.com/ethers-io/ethers.js/commit/57f1e1c47148921148e35c10c83539531942923e)).
|
|
||||||
- Skip checking confirmation count if confirms is 0 ([#4229](https://github.com/ethers-io/ethers.js/issues/4229), [#4242](https://github.com/ethers-io/ethers.js/issues/4242); [492919d](https://github.com/ethers-io/ethers.js/commit/492919d14f646c630f29e1596e5564df1e51f309)).
|
|
||||||
- Fixed waiting for confirmations in deployment transactions ([#4212](https://github.com/ethers-io/ethers.js/issues/4212), [#4230](https://github.com/ethers-io/ethers.js/issues/4230); [43c253a](https://github.com/ethers-io/ethers.js/commit/43c253a402f52a08353c424f6c4e236836cfaf36)).
|
|
||||||
|
|
||||||
ethers/v6.6.3 (2023-07-11 20:55)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Throw more desscriptive error for unconfigured ENS name contract targets ([#4213](https://github.com/ethers-io/ethers.js/issues/4213); [80f62ef](https://github.com/ethers-io/ethers.js/commit/80f62efc41c3a29e690af40a1976928b7f886a0e)).
|
|
||||||
- Fixed contract once not running stop callback ([7d061b7](https://github.com/ethers-io/ethers.js/commit/7d061b786f72cbfc461bf80d139d10aeff533a6e)).
|
|
||||||
|
|
||||||
ethers/v6.6.2 (2023-06-27 23:30)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Wider error detection for call exceptions on certain backends ([#4154](https://github.com/ethers-io/ethers.js/issues/4154), [#4155](https://github.com/ethers-io/ethers.js/issues/4155); [9197f9f](https://github.com/ethers-io/ethers.js/commit/9197f9f938b5f3b5f97c043f2dab06854656c932)).
|
|
||||||
- Added wider error deetection for JSON-RPC unsupported operation ([#4162](https://github.com/ethers-io/ethers.js/issues/4162); [1dc8986](https://github.com/ethers-io/ethers.js/commit/1dc8986a33be9dce536b24189326cbfaabf1342e)).
|
|
||||||
- Fixed formatUnits and parseUnits for values over 128 bits ([#4037](https://github.com/ethers-io/ethers.js/issues/4037), [#4133](https://github.com/ethers-io/ethers.js/issues/4133); [3d141b4](https://github.com/ethers-io/ethers.js/commit/3d141b44b528f52b3c9205125b64ce342f91643c)).
|
|
||||||
|
|
||||||
ethers/v6.6.1 (2023-06-23 00:35)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fixed CCIP read in contract calls ([#4043](https://github.com/ethers-io/ethers.js/issues/4043); [d51e3fb](https://github.com/ethers-io/ethers.js/commit/d51e3fbff43c31d88353ac71151626312d22c0b9), [857aa8c](https://github.com/ethers-io/ethers.js/commit/857aa8ccc30f25eda8e83dcac3e0ad2c1a5ce2b3)).
|
|
||||||
|
|
||||||
ethers/v6.6.0 (2023-06-13 21:42)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Add exports for AbstractProviderOptions and for MulticoinProviderPlugin ([203a759](https://github.com/ethers-io/ethers.js/commit/203a759efc65bf6901d3e574a601525ea3936238)).
|
|
||||||
- Add option to adjust perform cache timeout in AbstractProvider ([de0f518](https://github.com/ethers-io/ethers.js/commit/de0f5189f695c181a5fa09100af96a691a338e2b)).
|
|
||||||
- Add full support for MultiCoin plugins and automatic detection for EVM-compatible coin types ([#3888](https://github.com/ethers-io/ethers.js/issues/3888), [#4081](https://github.com/ethers-io/ethers.js/issues/4081); [84375be](https://github.com/ethers-io/ethers.js/commit/84375be92d32a2939cf4a2f713e4c554b5b54a32)).
|
|
||||||
- Allow Interface instances where InterfaceAbi are allowed ([#4142](https://github.com/ethers-io/ethers.js/issues/4142); [2318005](https://github.com/ethers-io/ethers.js/commit/2318005dfd996c8a7c51603d0264ceabe9bb6141)).
|
|
||||||
- Allow Numeric type for decimals in FixedNumber ([#4141](https://github.com/ethers-io/ethers.js/issues/4141); [9055ef6](https://github.com/ethers-io/ethers.js/commit/9055ef6c69291f1a44ea23a2e7b5aaf3140a5577)).
|
|
||||||
|
|
||||||
ethers/v6.5.1 (2023-06-07 20:19)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fix lost promise fulfillment when a batch has an error response ([#4126](https://github.com/ethers-io/ethers.js/issues/4126); [8dd21f0](https://github.com/ethers-io/ethers.js/commit/8dd21f03334ffd3cdb7ac532376d51fd4130c7ab)).
|
|
||||||
|
|
||||||
ethers/v6.5.0 (2023-06-06 22:41)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fix CJS browser bundling ([#4033](https://github.com/ethers-io/ethers.js/issues/4033); [38ee319](https://github.com/ethers-io/ethers.js/commit/38ee3195b0192d8180899fd61308e03fa3a0eb32)).
|
|
||||||
- Fixed type guard for non-Typed instances ([#4087](https://github.com/ethers-io/ethers.js/issues/4087); [20c3d1b](https://github.com/ethers-io/ethers.js/commit/20c3d1b109743e33ab60a75d69bf7ede73b15ce2)).
|
|
||||||
- Add confirmations to TransactionResponse ([#4094](https://github.com/ethers-io/ethers.js/issues/4094); [bb8685b](https://github.com/ethers-io/ethers.js/commit/bb8685b112ce1c689c740d4dbcb358c16fb9b22d)).
|
|
||||||
- Fix stray promises when a node returns invalid results ([#4118](https://github.com/ethers-io/ethers.js/issues/4118); [3c1bad2](https://github.com/ethers-io/ethers.js/commit/3c1bad2fb7ad4a6ff90ff11f3e382fd18e41c800)).
|
|
||||||
- Added support to detect and stop providers spinning on intitial network detection ([#4015](https://github.com/ethers-io/ethers.js/issues/4015); [f37a52d](https://github.com/ethers-io/ethers.js/commit/f37a52da28ac130b7f4de52901618320994ea87a)).
|
|
||||||
|
|
||||||
ethers/v6.4.2 (2023-06-05 22:41)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Bump ens-normalize version ([#4071](https://github.com/ethers-io/ethers.js/issues/4071), [#4077](https://github.com/ethers-io/ethers.js/issues/4077), [#4080](https://github.com/ethers-io/ethers.js/issues/4080), [#4102](https://github.com/ethers-io/ethers.js/issues/4102); [c135784](https://github.com/ethers-io/ethers.js/commit/c1357847dcdec93d72f28d890f9271d0289ccefd)).
|
|
||||||
- Fix for networks with polling with non-consistent block and filter events ([#4119](https://github.com/ethers-io/ethers.js/issues/4119); [9b0e992](https://github.com/ethers-io/ethers.js/commit/9b0e9920c09577296ec0e2abb3acc3f3299d96c7)).
|
|
||||||
|
|
||||||
ethers/v6.4.1 (2023-06-01 17:52)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Fixed AbstractProvider lookupAddress bug ([#4086](https://github.com/ethers-io/ethers.js/issues/4086); [15ed2f5](https://github.com/ethers-io/ethers.js/commit/15ed2f5b32084527961332481c9442a313036a01)).
|
|
||||||
- Fix FixedNumber comparison bug ([#4112](https://github.com/ethers-io/ethers.js/issues/4112); [d8e9586](https://github.com/ethers-io/ethers.js/commit/d8e9586044e888e424b5ead0f6e01f88140dba8a)).
|
|
||||||
|
|
||||||
ethers/v6.4.0 (2023-05-18 17:28)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
- Coerce value into BigInt when checking for value ([83d7f43](https://github.com/ethers-io/ethers.js/commit/83d7f43b9ca4b9868a3952510e56b41ea8610baa)).
|
|
||||||
- Better errors when junk passed as Contract target ([#3947](https://github.com/ethers-io/ethers.js/issues/3947), [#4053](https://github.com/ethers-io/ethers.js/issues/4053); [219b16d](https://github.com/ethers-io/ethers.js/commit/219b16dc284b0c6a532c8c49e824d8234f94222b)).
|
|
||||||
- More robust message checking in socket providers ([#4051](https://github.com/ethers-io/ethers.js/issues/4051); [f58990b](https://github.com/ethers-io/ethers.js/commit/f58990b80cfd83579014339315e58663c0aa6ae3)).
|
|
||||||
- More robust defaultProvider start-up when a backend fails on bootstrap ([#3979](https://github.com/ethers-io/ethers.js/issues/3979); [984f6fa](https://github.com/ethers-io/ethers.js/commit/984f6fa155fca08ebec2353c75ee0a0b974e8568)).
|
|
||||||
- Fix Result.map when Array contains zero elements ([#4036](https://github.com/ethers-io/ethers.js/issues/4036), [#4048](https://github.com/ethers-io/ethers.js/issues/4048); [2e5935b](https://github.com/ethers-io/ethers.js/commit/2e5935b91cff462165a054b33c8b8413f51e3f39)).
|
|
||||||
- Fixed error handling for contracts with receive and non-payable fallback ([6db7458](https://github.com/ethers-io/ethers.js/commit/6db7458cf0a09e8e8a2abb712239972ab81dc9df)).
|
|
||||||
- Remove superfluous logging in defaultProvider ([f87f6ef](https://github.com/ethers-io/ethers.js/commit/f87f6ef9a01ca399664f9fe106b0a677dba0c8e8)).
|
|
||||||
- Removed superfluous logging ([1bc8b55](https://github.com/ethers-io/ethers.js/commit/1bc8b55d502a95c4ae58352bdcfce9e5f9ea72d3)).
|
|
||||||
- Fix receipt gas price when effectiveGasPrice is 0 on testnets ([#4014](https://github.com/ethers-io/ethers.js/issues/4014); [2b0fe61](https://github.com/ethers-io/ethers.js/commit/2b0fe611335432aee334d777a64d8c7827881618)).
|
|
||||||
- Added error event to provider ([#3970](https://github.com/ethers-io/ethers.js/issues/3970), [#3982](https://github.com/ethers-io/ethers.js/issues/3982); [af0291c](https://github.com/ethers-io/ethers.js/commit/af0291c01639674658f5049343da88a84da763a1)).
|
|
||||||
- Removed superfluous parameters for internal transaction functions ([e848978](https://github.com/ethers-io/ethers.js/commit/e8489787585c2e69a23f6cdec6901f22b096aebe)).
|
|
||||||
- More aggresive tree-shaking ([076edad](https://github.com/ethers-io/ethers.js/commit/076edad81ef62474f48f2b4c8af0edc6e4fd64f2)).
|
|
||||||
- More flexible static network checking ([#3834](https://github.com/ethers-io/ethers.js/issues/3834); [7c0465c](https://github.com/ethers-io/ethers.js/commit/7c0465c5fb834eba18d4e5535072685bdc1029f0)).
|
|
||||||
- Support transitive dependants that use non-node16 moduleResolution ([#3920](https://github.com/ethers-io/ethers.js/issues/3920); [df685b1](https://github.com/ethers-io/ethers.js/commit/df685b1bd9ad346ee7863beb6c3ca3f4e94932a2)).
|
- Support transitive dependants that use non-node16 moduleResolution ([#3920](https://github.com/ethers-io/ethers.js/issues/3920); [df685b1](https://github.com/ethers-io/ethers.js/commit/df685b1bd9ad346ee7863beb6c3ca3f4e94932a2)).
|
||||||
- Populate any missing log.removed with false ([#3959](https://github.com/ethers-io/ethers.js/issues/3959); [4e478e6](https://github.com/ethers-io/ethers.js/commit/4e478e625d5648f2172631eef5fda5776ee776b0)).
|
- Populate any missing log.removed with false ([#3959](https://github.com/ethers-io/ethers.js/issues/3959); [4e478e6](https://github.com/ethers-io/ethers.js/commit/4e478e625d5648f2172631eef5fda5776ee776b0)).
|
||||||
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"drips": {
|
|
||||||
"ethereum": {
|
|
||||||
"ownedBy": "0x89EdE5cBE53473A64d6C8DF14176a0d658dAAeDC"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
23
README.md
23
README.md
@ -21,33 +21,27 @@ in [TypeScript](https://www.typescriptlang.org).
|
|||||||
- Meta-classes create JavaScript objects from any contract ABI, including **ABIv2** and **Human-Readable ABI**
|
- Meta-classes create JavaScript objects from any contract ABI, including **ABIv2** and **Human-Readable ABI**
|
||||||
- Connect to Ethereum nodes over [JSON-RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC), [INFURA](https://infura.io), [Etherscan](https://etherscan.io), [Alchemy](https://alchemyapi.io), [Ankr](https://ankr.com) or [MetaMask](https://metamask.io)
|
- Connect to Ethereum nodes over [JSON-RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC), [INFURA](https://infura.io), [Etherscan](https://etherscan.io), [Alchemy](https://alchemyapi.io), [Ankr](https://ankr.com) or [MetaMask](https://metamask.io)
|
||||||
- **ENS names** are first-class citizens; they can be used anywhere an Ethereum addresses can be used
|
- **ENS names** are first-class citizens; they can be used anywhere an Ethereum addresses can be used
|
||||||
- **Small** (~144kb compressed; 460kb uncompressed)
|
- **Tiny** (~120kb compressed; 400kb uncompressed)
|
||||||
- **Tree-shaking** focused; include only what you need during bundling
|
- **Tree-shaking** focused; include only what you need during bundling
|
||||||
- **Complete** functionality for all your Ethereum desires
|
- **Complete** functionality for all your Ethereum desires
|
||||||
- Extensive [documentation](https://docs.ethers.org/v6/)
|
- Extensive [documentation](https://docs.ethers.org/v6/)
|
||||||
- Large collection of **test cases** which are maintained and added to
|
- Large collection of **test cases** which are maintained and added to
|
||||||
- Fully written in **TypeScript**, with strict types for security and safety
|
- Fully written in **TypeScript**, with strict types for security
|
||||||
- **MIT License** (including ALL dependencies); completely open source to do with as you please
|
- **MIT License** (including ALL dependencies); completely open source to do with as you please
|
||||||
|
|
||||||
|
|
||||||
Keep Updated
|
Keep Updated
|
||||||
------------
|
------------
|
||||||
|
|
||||||
For advisories and important notices, follow [@ethersproject](https://twitter.com/ethersproject)
|
For the latest news and advisories, please follow the
|
||||||
on Twitter (low-traffic, non-marketing, important information only) as well as watch this GitHub project.
|
[@ethersproject](https://twitter.com/ethersproject) on Twitter (low-traffic,
|
||||||
|
non-marketing, important information only) as well as watch this GitHub project.
|
||||||
For more general news, discussions, and feedback, follow or DM me,
|
|
||||||
[@ricmoo](https://twitter.com/ricmoo) on Twitter or on the
|
|
||||||
[Ethers Discord](https://discord.gg/qYtSscGYYc).
|
|
||||||
|
|
||||||
|
|
||||||
For the latest changes, see the
|
For the latest changes, see the
|
||||||
[CHANGELOG](https://github.com/ethers-io/ethers.js/blob/main/CHANGELOG.md).
|
[CHANGELOG](https://github.com/ethers-io/ethers.js/blob/main/CHANGELOG.md).
|
||||||
|
|
||||||
|
|
||||||
**Summaries**
|
**Summaries**
|
||||||
|
|
||||||
- [August 2023](https://blog.ricmoo.com/highlights-ethers-js-august-2023-fb68354c576c)
|
|
||||||
- [September 2022](https://blog.ricmoo.com/highlights-ethers-js-september-2022-d7bda0fc37ed)
|
- [September 2022](https://blog.ricmoo.com/highlights-ethers-js-september-2022-d7bda0fc37ed)
|
||||||
- [June 2022](https://blog.ricmoo.com/highlights-ethers-js-june-2022-f5328932e35d)
|
- [June 2022](https://blog.ricmoo.com/highlights-ethers-js-june-2022-f5328932e35d)
|
||||||
- [March 2022](https://blog.ricmoo.com/highlights-ethers-js-march-2022-f511fe1e88a1)
|
- [March 2022](https://blog.ricmoo.com/highlights-ethers-js-march-2022-f511fe1e88a1)
|
||||||
@ -117,6 +111,7 @@ A special thanks to these services for providing community resources:
|
|||||||
- [Etherscan](https://etherscan.io/)
|
- [Etherscan](https://etherscan.io/)
|
||||||
- [INFURA](https://infura.io/)
|
- [INFURA](https://infura.io/)
|
||||||
- [Alchemy](https://dashboard.alchemyapi.io/signup?referral=55a35117-028e-4b7c-9e47-e275ad0acc6d)
|
- [Alchemy](https://dashboard.alchemyapi.io/signup?referral=55a35117-028e-4b7c-9e47-e275ad0acc6d)
|
||||||
|
- [Pocket](https://pokt.network/pocket-gateway-ethereum-mainnet/)
|
||||||
|
|
||||||
|
|
||||||
Extension Packages
|
Extension Packages
|
||||||
@ -126,11 +121,7 @@ The `ethers` package only includes the most common and most core
|
|||||||
functionality to interact with Ethereum. There are many other
|
functionality to interact with Ethereum. There are many other
|
||||||
packages designed to further enhance the functionality and experience.
|
packages designed to further enhance the functionality and experience.
|
||||||
|
|
||||||
- [MulticallProvider](https://github.com/ethers-io/ext-provider-multicall) - A Provider which bundles multiple call requests into a single `call` to reduce latency and backend request capacity
|
- Hardware Wallets (@TODO)
|
||||||
- [MulticoinPlugin](https://github.com/ethers-io/ext-provider-plugin-multicoin) - A Provider plugin to expand the support of ENS coin types
|
|
||||||
- [GanaceProvider](https://github.com/ethers-io/ext-provider-ganache) - A Provider for in-memory node instances, for fast debugging, testing and simulating blockchain operations
|
|
||||||
- [Optimism Utilities](https://github.com/ethers-io/ext-utils-optimism) - A collection of Optimism utilities
|
|
||||||
- [LedgerSigner](https://github.com/ethers-io/ext-signer-ledger) - A Signer to interact directly with Ledger Hardware Wallets
|
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
|
6981
dist/ethers.js
vendored
6981
dist/ethers.js
vendored
File diff suppressed because one or more lines are too long
2
dist/ethers.js.map
vendored
2
dist/ethers.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/ethers.min.js
vendored
2
dist/ethers.min.js
vendored
File diff suppressed because one or more lines are too long
6989
dist/ethers.umd.js
vendored
6989
dist/ethers.umd.js
vendored
File diff suppressed because one or more lines are too long
2
dist/ethers.umd.js.map
vendored
2
dist/ethers.umd.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/ethers.umd.min.js
vendored
2
dist/ethers.umd.min.js
vendored
File diff suppressed because one or more lines are too long
200
dist/wordlists-extra.js
vendored
200
dist/wordlists-extra.js
vendored
@ -2,11 +2,21 @@ function number(n) {
|
|||||||
if (!Number.isSafeInteger(n) || n < 0)
|
if (!Number.isSafeInteger(n) || n < 0)
|
||||||
throw new Error(`Wrong positive integer: ${n}`);
|
throw new Error(`Wrong positive integer: ${n}`);
|
||||||
}
|
}
|
||||||
|
function bool(b) {
|
||||||
|
if (typeof b !== 'boolean')
|
||||||
|
throw new Error(`Expected boolean, not ${b}`);
|
||||||
|
}
|
||||||
function bytes(b, ...lengths) {
|
function bytes(b, ...lengths) {
|
||||||
if (!(b instanceof Uint8Array))
|
if (!(b instanceof Uint8Array))
|
||||||
throw new Error('Expected Uint8Array');
|
throw new TypeError('Expected Uint8Array');
|
||||||
if (lengths.length > 0 && !lengths.includes(b.length))
|
if (lengths.length > 0 && !lengths.includes(b.length))
|
||||||
throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);
|
throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);
|
||||||
|
}
|
||||||
|
function hash(hash) {
|
||||||
|
if (typeof hash !== 'function' || typeof hash.create !== 'function')
|
||||||
|
throw new Error('Hash should be wrapped by utils.wrapConstructor');
|
||||||
|
number(hash.outputLen);
|
||||||
|
number(hash.blockLen);
|
||||||
}
|
}
|
||||||
function exists(instance, checkFinished = true) {
|
function exists(instance, checkFinished = true) {
|
||||||
if (instance.destroyed)
|
if (instance.destroyed)
|
||||||
@ -21,39 +31,34 @@ function output(out, instance) {
|
|||||||
throw new Error(`digestInto() expects output buffer of length at least ${min}`);
|
throw new Error(`digestInto() expects output buffer of length at least ${min}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const assert$1 = {
|
||||||
|
number,
|
||||||
|
bool,
|
||||||
|
bytes,
|
||||||
|
hash,
|
||||||
|
exists,
|
||||||
|
output,
|
||||||
|
};
|
||||||
|
|
||||||
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
||||||
// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.
|
|
||||||
// node.js versions earlier than v19 don't declare it in global scope.
|
|
||||||
// For node.js, package.json#exports field mapping rewrites import
|
|
||||||
// from `crypto` to `cryptoNode`, which imports native module.
|
|
||||||
// Makes the utils un-importable in browsers without a bundler.
|
|
||||||
// Once node.js 18 is deprecated, we can just drop the import.
|
|
||||||
const u8a = (a) => a instanceof Uint8Array;
|
|
||||||
const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
|
const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
|
||||||
// big-endian hardware is rare. Just in case someone still decides to run hashes:
|
// big-endian hardware is rare. Just in case someone still decides to run hashes:
|
||||||
// early-throw an error because we don't support BE yet.
|
// early-throw an error because we don't support BE yet.
|
||||||
const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;
|
const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;
|
||||||
if (!isLE)
|
if (!isLE)
|
||||||
throw new Error('Non little-endian hardware is not supported');
|
throw new Error('Non little-endian hardware is not supported');
|
||||||
/**
|
Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));
|
||||||
* @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
|
|
||||||
*/
|
|
||||||
function utf8ToBytes(str) {
|
function utf8ToBytes(str) {
|
||||||
if (typeof str !== 'string')
|
if (typeof str !== 'string') {
|
||||||
throw new Error(`utf8ToBytes expected string, got ${typeof str}`);
|
throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);
|
||||||
return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809
|
}
|
||||||
|
return new TextEncoder().encode(str);
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Normalizes (non-hex) string or Uint8Array to Uint8Array.
|
|
||||||
* Warning: when Uint8Array is passed, it would NOT get copied.
|
|
||||||
* Keep in mind for future mutable operations.
|
|
||||||
*/
|
|
||||||
function toBytes(data) {
|
function toBytes(data) {
|
||||||
if (typeof data === 'string')
|
if (typeof data === 'string')
|
||||||
data = utf8ToBytes(data);
|
data = utf8ToBytes(data);
|
||||||
if (!u8a(data))
|
if (!(data instanceof Uint8Array))
|
||||||
throw new Error(`expected Uint8Array, got ${typeof data}`);
|
throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
// For runtime check if class implements interface
|
// For runtime check if class implements interface
|
||||||
@ -63,17 +68,25 @@ class Hash {
|
|||||||
return this._cloneInto();
|
return this._cloneInto();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function wrapConstructor(hashCons) {
|
function wrapConstructor(hashConstructor) {
|
||||||
const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
|
const hashC = (message) => hashConstructor().update(toBytes(message)).digest();
|
||||||
const tmp = hashCons();
|
const tmp = hashConstructor();
|
||||||
hashC.outputLen = tmp.outputLen;
|
hashC.outputLen = tmp.outputLen;
|
||||||
hashC.blockLen = tmp.blockLen;
|
hashC.blockLen = tmp.blockLen;
|
||||||
hashC.create = () => hashCons();
|
hashC.create = () => hashConstructor();
|
||||||
|
return hashC;
|
||||||
|
}
|
||||||
|
function wrapConstructorWithOpts(hashCons) {
|
||||||
|
const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
|
||||||
|
const tmp = hashCons({});
|
||||||
|
hashC.outputLen = tmp.outputLen;
|
||||||
|
hashC.blockLen = tmp.blockLen;
|
||||||
|
hashC.create = (opts) => hashCons(opts);
|
||||||
return hashC;
|
return hashC;
|
||||||
}
|
}
|
||||||
|
|
||||||
const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
|
const U32_MASK64 = BigInt(2 ** 32 - 1);
|
||||||
const _32n = /* @__PURE__ */ BigInt(32);
|
const _32n = BigInt(32);
|
||||||
// We are not using BigUint64Array, because they are extremely slow as per 2022
|
// We are not using BigUint64Array, because they are extremely slow as per 2022
|
||||||
function fromBig(n, le = false) {
|
function fromBig(n, le = false) {
|
||||||
if (le)
|
if (le)
|
||||||
@ -89,18 +102,54 @@ function split(lst, le = false) {
|
|||||||
}
|
}
|
||||||
return [Ah, Al];
|
return [Ah, Al];
|
||||||
}
|
}
|
||||||
|
const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);
|
||||||
|
// for Shift in [0, 32)
|
||||||
|
const shrSH = (h, l, s) => h >>> s;
|
||||||
|
const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
|
||||||
|
// Right rotate for Shift in [1, 32)
|
||||||
|
const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));
|
||||||
|
const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
|
||||||
|
// Right rotate for Shift in (32, 64), NOTE: 32 is special case.
|
||||||
|
const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));
|
||||||
|
const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));
|
||||||
|
// Right rotate for shift===32 (just swaps l&h)
|
||||||
|
const rotr32H = (h, l) => l;
|
||||||
|
const rotr32L = (h, l) => h;
|
||||||
// Left rotate for Shift in [1, 32)
|
// Left rotate for Shift in [1, 32)
|
||||||
const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
|
const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
|
||||||
const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
|
const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
|
||||||
// Left rotate for Shift in (32, 64), NOTE: 32 is special case.
|
// Left rotate for Shift in (32, 64), NOTE: 32 is special case.
|
||||||
const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
|
const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
|
||||||
const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
|
const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
|
||||||
|
// JS uses 32-bit signed integers for bitwise operations which means we cannot
|
||||||
|
// simple take carry out of low bit sum by shift, we need to use division.
|
||||||
|
// Removing "export" has 5% perf penalty -_-
|
||||||
|
function add(Ah, Al, Bh, Bl) {
|
||||||
|
const l = (Al >>> 0) + (Bl >>> 0);
|
||||||
|
return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };
|
||||||
|
}
|
||||||
|
// Addition with more than 2 elements
|
||||||
|
const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);
|
||||||
|
const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;
|
||||||
|
const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);
|
||||||
|
const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;
|
||||||
|
const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
|
||||||
|
const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;
|
||||||
|
// prettier-ignore
|
||||||
|
const u64 = {
|
||||||
|
fromBig, split, toBig,
|
||||||
|
shrSH, shrSL,
|
||||||
|
rotrSH, rotrSL, rotrBH, rotrBL,
|
||||||
|
rotr32H, rotr32L,
|
||||||
|
rotlSH, rotlSL, rotlBH, rotlBL,
|
||||||
|
add, add3L, add3H, add4L, add4H, add5H, add5L,
|
||||||
|
};
|
||||||
|
|
||||||
/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */
|
/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */
|
||||||
/**
|
/**
|
||||||
* The current version of Ethers.
|
* The current version of Ethers.
|
||||||
*/
|
*/
|
||||||
const version = "6.12.0";
|
const version = "6.3.1";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Property helper functions.
|
* Property helper functions.
|
||||||
@ -145,11 +194,7 @@ function defineProperties(target, values, types) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All errors in ethers include properties to ensure they are both
|
* About Errors.
|
||||||
* human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).
|
|
||||||
*
|
|
||||||
* The [[isError]] function can be used to check the error ``code`` and
|
|
||||||
* provide a type guard for the properties present on that error interface.
|
|
||||||
*
|
*
|
||||||
* @_section: api/utils/errors:Errors [about-errors]
|
* @_section: api/utils/errors:Errors [about-errors]
|
||||||
*/
|
*/
|
||||||
@ -192,16 +237,15 @@ function stringify(value) {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Returns a new Error configured to the format ethers emits errors, with
|
* Returns a new Error configured to the format ethers emits errors, with
|
||||||
* the %%message%%, [[api:ErrorCode]] %%code%% and additional properties
|
* the %%message%%, [[api:ErrorCode]] %%code%% and additioanl properties
|
||||||
* for the corresponding EthersError.
|
* for the corresponding EthersError.
|
||||||
*
|
*
|
||||||
* Each error in ethers includes the version of ethers, a
|
* Each error in ethers includes the version of ethers, a
|
||||||
* machine-readable [[ErrorCode]], and depending on %%code%%, additional
|
* machine-readable [[ErrorCode]], and depneding on %%code%%, additional
|
||||||
* required properties. The error message will also include the %%message%%,
|
* required properties. The error message will also include the %%meeage%%,
|
||||||
* ethers version, %%code%% and all additional properties, serialized.
|
* ethers version, %%code%% and all aditional properties, serialized.
|
||||||
*/
|
*/
|
||||||
function makeError(message, code, info) {
|
function makeError(message, code, info) {
|
||||||
let shortMessage = message;
|
|
||||||
{
|
{
|
||||||
const details = [];
|
const details = [];
|
||||||
if (info) {
|
if (info) {
|
||||||
@ -209,9 +253,6 @@ function makeError(message, code, info) {
|
|||||||
throw new Error(`value will overwrite populated values: ${stringify(info)}`);
|
throw new Error(`value will overwrite populated values: ${stringify(info)}`);
|
||||||
}
|
}
|
||||||
for (const key in info) {
|
for (const key in info) {
|
||||||
if (key === "shortMessage") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const value = (info[key]);
|
const value = (info[key]);
|
||||||
// try {
|
// try {
|
||||||
details.push(key + "=" + stringify(value));
|
details.push(key + "=" + stringify(value));
|
||||||
@ -243,9 +284,6 @@ function makeError(message, code, info) {
|
|||||||
if (info) {
|
if (info) {
|
||||||
Object.assign(error, info);
|
Object.assign(error, info);
|
||||||
}
|
}
|
||||||
if (error.shortMessage == null) {
|
|
||||||
defineProperties(error, { shortMessage });
|
|
||||||
}
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -503,7 +541,6 @@ function getUtf8CodePoints(_bytes, onError) {
|
|||||||
* If %%form%% is specified, the string is normalized.
|
* If %%form%% is specified, the string is normalized.
|
||||||
*/
|
*/
|
||||||
function toUtf8Bytes(str, form) {
|
function toUtf8Bytes(str, form) {
|
||||||
assertArgument(typeof (str) === "string", "invalid string value", "str", str);
|
|
||||||
if (form != null) {
|
if (form != null) {
|
||||||
assertNormalize(form);
|
assertNormalize(form);
|
||||||
str = str.normalize(form);
|
str = str.normalize(form);
|
||||||
@ -558,16 +595,14 @@ function toUtf8String(bytes, onError) {
|
|||||||
return _toUtf8String(getUtf8CodePoints(bytes, onError));
|
return _toUtf8String(getUtf8CodePoints(bytes, onError));
|
||||||
}
|
}
|
||||||
|
|
||||||
// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.
|
|
||||||
// It's called a sponge function.
|
|
||||||
// Various per round constants calculations
|
// Various per round constants calculations
|
||||||
const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];
|
const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];
|
||||||
const _0n = /* @__PURE__ */ BigInt(0);
|
const _0n = BigInt(0);
|
||||||
const _1n = /* @__PURE__ */ BigInt(1);
|
const _1n = BigInt(1);
|
||||||
const _2n = /* @__PURE__ */ BigInt(2);
|
const _2n = BigInt(2);
|
||||||
const _7n = /* @__PURE__ */ BigInt(7);
|
const _7n = BigInt(7);
|
||||||
const _256n = /* @__PURE__ */ BigInt(256);
|
const _256n = BigInt(256);
|
||||||
const _0x71n = /* @__PURE__ */ BigInt(0x71);
|
const _0x71n = BigInt(0x71);
|
||||||
for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
|
for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
|
||||||
// Pi
|
// Pi
|
||||||
[x, y] = [y, (2 * x + 3 * y) % 5];
|
[x, y] = [y, (2 * x + 3 * y) % 5];
|
||||||
@ -579,14 +614,14 @@ for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
|
|||||||
for (let j = 0; j < 7; j++) {
|
for (let j = 0; j < 7; j++) {
|
||||||
R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;
|
R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;
|
||||||
if (R & _2n)
|
if (R & _2n)
|
||||||
t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);
|
t ^= _1n << ((_1n << BigInt(j)) - _1n);
|
||||||
}
|
}
|
||||||
_SHA3_IOTA.push(t);
|
_SHA3_IOTA.push(t);
|
||||||
}
|
}
|
||||||
const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);
|
const [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);
|
||||||
// Left rotation (without 0, 32, 64)
|
// Left rotation (without 0, 32, 64)
|
||||||
const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));
|
const rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);
|
||||||
const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));
|
const rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);
|
||||||
// Same as keccakf1600, but allows to skip some rounds
|
// Same as keccakf1600, but allows to skip some rounds
|
||||||
function keccakP(s, rounds = 24) {
|
function keccakP(s, rounds = 24) {
|
||||||
const B = new Uint32Array(5 * 2);
|
const B = new Uint32Array(5 * 2);
|
||||||
@ -647,7 +682,7 @@ class Keccak extends Hash {
|
|||||||
this.finished = false;
|
this.finished = false;
|
||||||
this.destroyed = false;
|
this.destroyed = false;
|
||||||
// Can be passed from user as dkLen
|
// Can be passed from user as dkLen
|
||||||
number(outputLen);
|
assert$1.number(outputLen);
|
||||||
// 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes
|
// 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes
|
||||||
if (0 >= this.blockLen || this.blockLen >= 200)
|
if (0 >= this.blockLen || this.blockLen >= 200)
|
||||||
throw new Error('Sha3 supports only keccak-f1600 function');
|
throw new Error('Sha3 supports only keccak-f1600 function');
|
||||||
@ -660,7 +695,7 @@ class Keccak extends Hash {
|
|||||||
this.pos = 0;
|
this.pos = 0;
|
||||||
}
|
}
|
||||||
update(data) {
|
update(data) {
|
||||||
exists(this);
|
assert$1.exists(this);
|
||||||
const { blockLen, state } = this;
|
const { blockLen, state } = this;
|
||||||
data = toBytes(data);
|
data = toBytes(data);
|
||||||
const len = data.length;
|
const len = data.length;
|
||||||
@ -686,8 +721,8 @@ class Keccak extends Hash {
|
|||||||
this.keccak();
|
this.keccak();
|
||||||
}
|
}
|
||||||
writeInto(out) {
|
writeInto(out) {
|
||||||
exists(this, false);
|
assert$1.exists(this, false);
|
||||||
bytes(out);
|
assert$1.bytes(out);
|
||||||
this.finish();
|
this.finish();
|
||||||
const bufferOut = this.state;
|
const bufferOut = this.state;
|
||||||
const { blockLen } = this;
|
const { blockLen } = this;
|
||||||
@ -708,11 +743,11 @@ class Keccak extends Hash {
|
|||||||
return this.writeInto(out);
|
return this.writeInto(out);
|
||||||
}
|
}
|
||||||
xof(bytes) {
|
xof(bytes) {
|
||||||
number(bytes);
|
assert$1.number(bytes);
|
||||||
return this.xofInto(new Uint8Array(bytes));
|
return this.xofInto(new Uint8Array(bytes));
|
||||||
}
|
}
|
||||||
digestInto(out) {
|
digestInto(out) {
|
||||||
output(out, this);
|
assert$1.output(out, this);
|
||||||
if (this.finished)
|
if (this.finished)
|
||||||
throw new Error('digest() was already called');
|
throw new Error('digest() was already called');
|
||||||
this.writeInto(out);
|
this.writeInto(out);
|
||||||
@ -743,11 +778,25 @@ class Keccak extends Hash {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));
|
const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));
|
||||||
|
gen(0x06, 144, 224 / 8);
|
||||||
|
/**
|
||||||
|
* SHA3-256 hash function
|
||||||
|
* @param message - that would be hashed
|
||||||
|
*/
|
||||||
|
gen(0x06, 136, 256 / 8);
|
||||||
|
gen(0x06, 104, 384 / 8);
|
||||||
|
gen(0x06, 72, 512 / 8);
|
||||||
|
gen(0x01, 144, 224 / 8);
|
||||||
/**
|
/**
|
||||||
* keccak-256 hash function. Different from SHA3-256.
|
* keccak-256 hash function. Different from SHA3-256.
|
||||||
* @param message - that would be hashed
|
* @param message - that would be hashed
|
||||||
*/
|
*/
|
||||||
const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);
|
const keccak_256 = gen(0x01, 136, 256 / 8);
|
||||||
|
gen(0x01, 104, 384 / 8);
|
||||||
|
gen(0x01, 72, 512 / 8);
|
||||||
|
const genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));
|
||||||
|
genShake(0x1f, 168, 128 / 8);
|
||||||
|
genShake(0x1f, 136, 256 / 8);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cryptographic hashing functions
|
* Cryptographic hashing functions
|
||||||
@ -906,7 +955,6 @@ class Wordlist {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Use the encode-latin.js script to create the necessary
|
// Use the encode-latin.js script to create the necessary
|
||||||
// data files to be consumed by this class
|
|
||||||
/**
|
/**
|
||||||
* An OWL format Wordlist is an encoding method that exploits
|
* An OWL format Wordlist is an encoding method that exploits
|
||||||
* the general locality of alphabetically sorted words to
|
* the general locality of alphabetically sorted words to
|
||||||
@ -917,7 +965,7 @@ class Wordlist {
|
|||||||
* based on ASCII-7 small.
|
* based on ASCII-7 small.
|
||||||
*
|
*
|
||||||
* If necessary, there are tools within the ``generation/`` folder
|
* If necessary, there are tools within the ``generation/`` folder
|
||||||
* to create the necessary data.
|
* to create these necessary data.
|
||||||
*/
|
*/
|
||||||
class WordlistOwl extends Wordlist {
|
class WordlistOwl extends Wordlist {
|
||||||
#data;
|
#data;
|
||||||
@ -932,13 +980,7 @@ class WordlistOwl extends Wordlist {
|
|||||||
this.#checksum = checksum;
|
this.#checksum = checksum;
|
||||||
this.#words = null;
|
this.#words = null;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* The OWL-encoded data.
|
|
||||||
*/
|
|
||||||
get _data() { return this.#data; }
|
get _data() { return this.#data; }
|
||||||
/**
|
|
||||||
* Decode all the words for the wordlist.
|
|
||||||
*/
|
|
||||||
_decodeWords() {
|
_decodeWords() {
|
||||||
return decodeOwl(this.#data);
|
return decodeOwl(this.#data);
|
||||||
}
|
}
|
||||||
@ -1064,25 +1106,15 @@ function decodeOwlA(data, accents) {
|
|||||||
* based on latin-1 small.
|
* based on latin-1 small.
|
||||||
*
|
*
|
||||||
* If necessary, there are tools within the ``generation/`` folder
|
* If necessary, there are tools within the ``generation/`` folder
|
||||||
* to create the necessary data.
|
* to create these necessary data.
|
||||||
*/
|
*/
|
||||||
class WordlistOwlA extends WordlistOwl {
|
class WordlistOwlA extends WordlistOwl {
|
||||||
#accent;
|
#accent;
|
||||||
/**
|
|
||||||
* Creates a new Wordlist for %%locale%% using the OWLA %%data%%
|
|
||||||
* and %%accent%% data and validated against the %%checksum%%.
|
|
||||||
*/
|
|
||||||
constructor(locale, data, accent, checksum) {
|
constructor(locale, data, accent, checksum) {
|
||||||
super(locale, data, checksum);
|
super(locale, data, checksum);
|
||||||
this.#accent = accent;
|
this.#accent = accent;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* The OWLA-encoded accent data.
|
|
||||||
*/
|
|
||||||
get _accent() { return this.#accent; }
|
get _accent() { return this.#accent; }
|
||||||
/**
|
|
||||||
* Decode all the words for the wordlist.
|
|
||||||
*/
|
|
||||||
_decodeWords() {
|
_decodeWords() {
|
||||||
return decodeOwlA(this._data, this._accent);
|
return decodeOwlA(this._data, this._accent);
|
||||||
}
|
}
|
||||||
|
2
dist/wordlists-extra.js.map
vendored
2
dist/wordlists-extra.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/wordlists-extra.min.js
vendored
2
dist/wordlists-extra.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,97 +1,26 @@
|
|||||||
_section: Application Binary Interfaces @<docs-abi>
|
_section: ABI
|
||||||
|
|
||||||
When interacting with any application, whether it is on Ethereum,
|
Explain about ABI here, what it does and does not do
|
||||||
over the internet or within a compiled application on a computer
|
|
||||||
all information is stored and sent as binary data which is just a
|
|
||||||
sequence of bytes.
|
|
||||||
|
|
||||||
So every application must agree on how to encode and decode their
|
- encodes arbitrary (but defined) data structures to raw bytes
|
||||||
information as a sequence of bytes.
|
|
||||||
|
|
||||||
An **Application Binary Interface** (ABI) provides a way to describe
|
_subsection: Call
|
||||||
the encoding and decoding process, in a generic way so that a variety
|
|
||||||
of types and structures of types can be defined.
|
|
||||||
|
|
||||||
For example, a string is often encoded as a UTF-8 sequence of bytes,
|
About encoding
|
||||||
which uses specific bits within sub-sequences to indicate emoji and
|
|
||||||
other special characters. Every implementation of UTF-8 must understand
|
|
||||||
and operate under the same rules so that strings work universally. In
|
|
||||||
this way, UTF-8 standard is itself an ABI.
|
|
||||||
|
|
||||||
When interacting with Ethereum, a contract received a sequence of bytes
|
_heading: selector or signature hash (sighash)
|
||||||
as input (provided by sending a transaction or through a call) and
|
|
||||||
returns a result as a sequence of bytes. So, each Contract has its own
|
|
||||||
ABI that helps specify how to encode the input and how to decode the output.
|
|
||||||
|
|
||||||
It is up to the contract developer to make this ABI available. Many
|
_heading: Results
|
||||||
Contracts implement a standard (such as ERC-20), in which case the
|
|
||||||
ABI for that standard can be used. Many developers choose to verify their
|
|
||||||
source code on Etherscan, in which case Etherscan computes the ABI and
|
|
||||||
provides it through their website (which can be fetched using the ``getContract``
|
|
||||||
method). Otherwise, beyond reverse engineering the Contract there is
|
|
||||||
not a meaningful way to extract the contract ABI.
|
|
||||||
|
|
||||||
_subsection: Call Data Representation
|
_subsection: Events
|
||||||
|
|
||||||
When calling a Contract on Ethereum, the input data must be encoded
|
|
||||||
according to the ABI.
|
|
||||||
|
|
||||||
The first 4 bytes of the data are the **method selector**, which is
|
|
||||||
the keccak256 hash of the normalized method signature.
|
|
||||||
|
|
||||||
Then the method parameters are encoded and concatenated to the selector.
|
|
||||||
|
|
||||||
All encoded data is made up of components padded to 32 bytes, so the length
|
|
||||||
of input data will always be congruent to ``4 mod 32``.
|
|
||||||
|
|
||||||
The result of a successful call will be encoded values, whose components
|
|
||||||
are padded to 32 bytes each as well, so the length of a result will always
|
|
||||||
be congruent to ``0 mod 32``, on success.
|
|
||||||
|
|
||||||
The result of a reverted call will contain the **error selector** as the
|
|
||||||
first 4 bytes, which is the keccak256 of the normalized error signature,
|
|
||||||
followed by the encoded values, whose components are padded to 32 bytes
|
|
||||||
each, so the length of a revert will be congruent to ``4 mod 32``.
|
|
||||||
|
|
||||||
The one exception to all this is that ``revert(false)`` will return a
|
|
||||||
result or ``0x``.
|
|
||||||
|
|
||||||
|
|
||||||
_subsection: Event Data Representation
|
|
||||||
|
|
||||||
When an Event is emitted from a contract, there are two places data is
|
|
||||||
logged in a Log: the **topics** and the **data**.
|
|
||||||
|
|
||||||
An additonal fee is paid for each **topic**, but this affords a topic
|
|
||||||
to be indexed in a bloom filter within the block, which allows efficient
|
|
||||||
filtering.
|
|
||||||
|
|
||||||
The **topic hash** is always the first topic in a Log, which is the
|
|
||||||
keccak256 of the normalized event signature. This allows a specific
|
|
||||||
event to be efficiently filtered, finding the matching events in a block.
|
|
||||||
|
|
||||||
Each additional **indexed** parameter (i.e. parameters marked with
|
|
||||||
``indexed`` in the signautre) are placed in the topics as well, but may be
|
|
||||||
filtered to find matching values.
|
|
||||||
|
|
||||||
All non-indexed parameters are encoded and placed in the **data**. This
|
|
||||||
is cheaper and more compact, but does not allow filtering on these values.
|
|
||||||
|
|
||||||
For example, the event ``Transfer(address indexed from, address indexed to, uint value)``
|
|
||||||
would require 3 topics, which are the topic hash, the ``from`` address
|
|
||||||
and the ``to`` address and the data would contain 32 bytes, which is
|
|
||||||
the padded big-endian representation of ``value``. This allows for
|
|
||||||
efficient filtering by the event (i.e. ``Transfer``) as well as the ``from``
|
|
||||||
address and ``to`` address.
|
|
||||||
|
|
||||||
|
|
||||||
_subsection: Deployment
|
_subsection: Deployment
|
||||||
|
|
||||||
When deploying a transaction, the data provided is treated as **initcode**,
|
About initcode
|
||||||
which executes the data as normal EVM bytecode, which returns a sequence
|
|
||||||
of bytes, but instead of that sequence of bytes being treated as data that
|
|
||||||
result is instead the bytecode to install as the bytecode of the contract.
|
|
||||||
|
|
||||||
The bytecode produced by Solidity is designed to have all constructor
|
Another paragraph [[link-bip-39]].
|
||||||
parameters encoded normally and concatenated to the bytecode and provided
|
|
||||||
as the ``data`` to a transaction with no ``to`` address.
|
_heading: Foo?
|
||||||
|
|
||||||
|
Bar?
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
_section: Ethereum Basics @<docs-basics> @priority<99>
|
_section: Ethereum Basics @priority<99>
|
||||||
|
|
||||||
This section aims to cover some of the basics for those interested
|
Prelude here...
|
||||||
in a deeper understanding of the inner-workings of Ethereum.
|
|
||||||
|
|
||||||
_subsection: Topics
|
_subsection: About stuff?
|
||||||
|
|
||||||
- [Application Binary Interface](docs-abi)
|
Some info
|
||||||
|
@ -65,7 +65,7 @@ _code: Building with the v2 Flatworm @lang<shell>
|
|||||||
/home/ricmoo/flatworm> npm install
|
/home/ricmoo/flatworm> npm install
|
||||||
|
|
||||||
# Ready to build the docs; output to a folder ./output/
|
# Ready to build the docs; output to a folder ./output/
|
||||||
/home/ricmoo/flatworm> node lib/cli-test PATH_TO_WRM_ROOT
|
/home/ricmoo/flatworm> node lib/test-api-index PATH_TO_WRM_ROOT
|
||||||
|
|
||||||
Eventually the code for the v2 branch will be cleaned up, and it
|
Eventually the code for the v2 branch will be cleaned up, and it
|
||||||
will be much easier to include as a ``devDependency`` for Ethers.
|
will be much easier to include as a ``devDependency`` for Ethers.
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
_section: Cookbook: ENS Recipes @<cookbook-ens>
|
|
||||||
|
|
||||||
Here is a collection of short, but useful examples of working with
|
|
||||||
ENS entries.
|
|
||||||
|
|
||||||
|
|
||||||
_subsection: Get all Text records @<cookbook-ens-allText>
|
|
||||||
|
|
||||||
Here is a short recipe to get all the text records set for an ENS
|
|
||||||
name.
|
|
||||||
|
|
||||||
It first queries all ``TextChanged`` events on the resovler, and
|
|
||||||
uses a MulticallProvider to batch all the ``eth_call`` queries
|
|
||||||
for each key into a single ``eth_call``. As such, you will need
|
|
||||||
to install:
|
|
||||||
|
|
||||||
``/home/ricmoo> npm install @ethers-ext/provider-multicall``
|
|
||||||
|
|
||||||
|
|
||||||
_code: Fetching all ENS text records. @lang<script>
|
|
||||||
|
|
||||||
import { ethers } from "ethers";
|
|
||||||
import { MulticallProvider } from "@ethers-ext/provider-multicall";
|
|
||||||
|
|
||||||
async function getTextRecords(_provider, name) {
|
|
||||||
// Prepare a multicall-based provider to batch all the call operations
|
|
||||||
const provider = new MulticallProvider(_provider);
|
|
||||||
|
|
||||||
// Get the resolver for the given name
|
|
||||||
const resolver = await provider.getResolver(name);
|
|
||||||
|
|
||||||
// A contract instance; used filter and parse logs
|
|
||||||
const contract = new ethers.Contract(resolver.address, [
|
|
||||||
"event TextChanged(bytes32 indexed node, string indexed _key, string key)"
|
|
||||||
], provider);
|
|
||||||
|
|
||||||
// A filter for the given name
|
|
||||||
const filter = contract.filters.TextChanged(ethers.namehash(name));
|
|
||||||
|
|
||||||
// Get the matching logs
|
|
||||||
const logs = await contract.queryFilter(filter);
|
|
||||||
|
|
||||||
// Filter the *unique* keys
|
|
||||||
const keys = [ ...(new Set(logs.map((log) => log.args.key))) ];
|
|
||||||
|
|
||||||
// Get the values for the keys; failures are discarded
|
|
||||||
const values = await Promise.all(keys.map((key) => {
|
|
||||||
try {
|
|
||||||
return resolver.getText(key);
|
|
||||||
} catch (error) { }
|
|
||||||
return null;
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Return a Map of the key/value pairs
|
|
||||||
return keys.reduce((accum, key, index) => {
|
|
||||||
const value = values[index];
|
|
||||||
if (value != null) { accum.set(key, value); }
|
|
||||||
return accum;
|
|
||||||
}, new Map());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Example usage
|
|
||||||
(async function() {
|
|
||||||
const provider = new ethers.InfuraProvider();
|
|
||||||
console.log(await getTextRecords(provider, "ricmoo.eth"));
|
|
||||||
})();
|
|
@ -1,7 +0,0 @@
|
|||||||
_section: Cookbook @<cookbook>
|
|
||||||
|
|
||||||
A growing collection of code snippets for common problems and use cases
|
|
||||||
when developing dapps and other blockchain tools.
|
|
||||||
|
|
||||||
- [Signing Messages and Data](cookbook-signing)
|
|
||||||
- [React Native Performance](cookbook-react-native)
|
|
@ -1,36 +0,0 @@
|
|||||||
_section: React Native @<cookbook-react-native>
|
|
||||||
|
|
||||||
When using React Native, many of the built-in cryptographic primitives
|
|
||||||
can be replaced by native, substantially faster implementations.
|
|
||||||
|
|
||||||
This should be available in its own package in the future, but for now
|
|
||||||
this is highly recommended, and requires installing the
|
|
||||||
[[link-npm-react-native-quick-crypto]] package.
|
|
||||||
|
|
||||||
|
|
||||||
_code:
|
|
||||||
|
|
||||||
import { ethers } from "ethers";
|
|
||||||
|
|
||||||
import crypto from "react-native-quick-crypto";
|
|
||||||
|
|
||||||
ethers.randomBytes.register((length) => {
|
|
||||||
return new Uint8Array(crypto.randomBytes(length));
|
|
||||||
});
|
|
||||||
|
|
||||||
ethers.computeHmac.register((algo, key, data) => {
|
|
||||||
return crypto.createHmac(algo, key).update(data).digest();
|
|
||||||
});
|
|
||||||
|
|
||||||
ethers.pbkdf2.register((passwd, salt, iter, keylen, algo) => {
|
|
||||||
return crypto.pbkdf2Sync(passwd, salt, iter, keylen, algo);
|
|
||||||
});
|
|
||||||
|
|
||||||
ethers.sha256.register((data) => {
|
|
||||||
return crypto.createHash('sha256').update(data).digest();
|
|
||||||
});
|
|
||||||
|
|
||||||
ethers.sha512.register((data) => {
|
|
||||||
return crypto.createHash('sha512').update(data).digest();
|
|
||||||
});
|
|
||||||
|
|
@ -1,273 +0,0 @@
|
|||||||
_section: Signing @<cookbook-signing>
|
|
||||||
|
|
||||||
Signing content and providing the content and signature to a
|
|
||||||
Contract allows on-chain validation that a signer has access
|
|
||||||
to the private key of a specific address.
|
|
||||||
|
|
||||||
The ecrecover algorithm allows the public key to be determined
|
|
||||||
given some message digest and the signature generated by the
|
|
||||||
private key for that digest. From the public key, the address
|
|
||||||
can then be computed.
|
|
||||||
|
|
||||||
How a digest is derived depends on the type of data being
|
|
||||||
signed and a variety of encoding formats are employed. Each
|
|
||||||
format is designed to ensure that they do not collide, so for
|
|
||||||
example, a user **cannot** be tricked into signing a message
|
|
||||||
which is actually a valid transaction.
|
|
||||||
|
|
||||||
For this reason, most APIs in Ethereum do not permit signing a
|
|
||||||
raw digest, and instead require a separate API for each format
|
|
||||||
type and require the related data be specified, protecting the
|
|
||||||
user from accidentally authorizing an action they didn't intend.
|
|
||||||
|
|
||||||
_subsection: Messages @<cookbook-signing-messages>
|
|
||||||
|
|
||||||
A signed message can be any data, but it is generally recommended
|
|
||||||
to use human-readable text, as this is easier for a user to
|
|
||||||
verify visually.
|
|
||||||
|
|
||||||
This technique could be used, for example, to sign into a service
|
|
||||||
by using the text ``"I am signing into ethers.org on 2023-06-04 12:57pm"``.
|
|
||||||
The user can then see the message in MetaMask or on a Ledger
|
|
||||||
Hardware Wallet and accept that they wish to sign the message which
|
|
||||||
the site can then authenticate them with. By providing a timestamp
|
|
||||||
the site can ensure that an older signed message cannot be used again
|
|
||||||
in the future.
|
|
||||||
|
|
||||||
The format that is signed uses [[link-eip-191]] with the
|
|
||||||
**personal sign** version code (``0x45``, or ``"E"``).
|
|
||||||
|
|
||||||
For those interested in the choice of this prefix, signed messages
|
|
||||||
began as a Bitcoin feature, which used ``"\\x18Bitcoin Signed Message:\\n"``,
|
|
||||||
which was a Bitcoin var-int length-prefixed string (as ``0x18`` is 24,
|
|
||||||
the length of ``"Bitcoin Signed Message:\\n"``.). When Ethereum adopted
|
|
||||||
the similar feature, the relevant string was ``"\\x19Ethereum Signed Message:\\n"``.
|
|
||||||
|
|
||||||
In one of the most brilliant instances of technical retcon-ing,
|
|
||||||
since 0x19 is invalid as the first byte of a transaction (in [[link-rlp]] it
|
|
||||||
indicates a single byte of value 25), the initial byte ``\\x19`` has
|
|
||||||
now been adopted as a prefix for //some sort of signed data//,
|
|
||||||
where the second byte determines how to interpret that data. If the
|
|
||||||
second byte is 69 (the letter ``"E"``, as in
|
|
||||||
``"Ethereum Signed Message:\\n"``), then the format is a
|
|
||||||
the above prefixed message format.
|
|
||||||
|
|
||||||
So, all existing messages, tools and instances using the signed
|
|
||||||
message format were already EIP-191 compliant, long before the
|
|
||||||
standard existed or was even conceived and allowed for an extensible
|
|
||||||
format for future formats (of which there now a few).
|
|
||||||
|
|
||||||
Anyways, the necessary JavaScript and Solidity are provided below.
|
|
||||||
|
|
||||||
_code: JavaScript @lang<javascript>
|
|
||||||
|
|
||||||
// The contract below is deployed to Sepolia at this address
|
|
||||||
contractAddress = "0xf554DA5e35b2e40C09DDB481545A395da1736513";
|
|
||||||
contract = new Contract(contractAddress, [
|
|
||||||
"function recoverStringFromCompact(string message, (bytes32 r, bytes32 yParityAndS) sig) pure returns (address)",
|
|
||||||
"function recoverStringFromExpanded(string message, (uint8 v, bytes32 r, bytes32 s) sig) pure returns (address)",
|
|
||||||
"function recoverStringFromVRS(string message, uint8 v, bytes32 r, bytes32 s) pure returns (address)",
|
|
||||||
"function recoverStringFromRaw(string message, bytes sig) pure returns (address)",
|
|
||||||
"function recoverHashFromCompact(bytes32 hash, (bytes32 r, bytes32 yParityAndS) sig) pure returns (address)"
|
|
||||||
], new ethers.InfuraProvider("sepolia"));
|
|
||||||
|
|
||||||
// The Signer; it does not need to be connected to a Provider to sign
|
|
||||||
signer = new Wallet(id("foobar"));
|
|
||||||
signer.address
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
// Our message
|
|
||||||
message = "Hello World";
|
|
||||||
|
|
||||||
// The raw signature; 65 bytes
|
|
||||||
rawSig = await signer.signMessage(message);
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
// Converting it to a Signature object provides more
|
|
||||||
// flexibility, such as using it as a struct
|
|
||||||
sig = Signature.from(rawSig);
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
|
|
||||||
// If the signature matches the EIP-2098 format, a Signature
|
|
||||||
// can be passed as the struct value directly, since the
|
|
||||||
// parser will pull out the matching struct keys from sig.
|
|
||||||
await contract.recoverStringFromCompact(message, sig);
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
// Likewise, if the struct keys match an expanded signature
|
|
||||||
// struct, it can also be passed as the struct value directly.
|
|
||||||
await contract.recoverStringFromExpanded(message, sig);
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
// If using an older API which requires the v, r and s be passed
|
|
||||||
// separately, those members are present on the Signature.
|
|
||||||
await contract.recoverStringFromVRS(message, sig.v, sig.r, sig.s);
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
// Or if using an API that expects a raw signature.
|
|
||||||
await contract.recoverStringFromRaw(message, rawSig);
|
|
||||||
//_result:
|
|
||||||
|
|
||||||
// Note: The above recovered addresses matches the signer address
|
|
||||||
|
|
||||||
_null:
|
|
||||||
|
|
||||||
The Solidity Contract has been deployed and verified on
|
|
||||||
the Sepolia testnet at the address
|
|
||||||
[0xf554DA5e35b2e40C09DDB481545A395da1736513](link-sol-recovermessage).
|
|
||||||
|
|
||||||
It provides a variety of examples using various Signature
|
|
||||||
encodings and formats, to recover the address for an [[link-eip-191]]
|
|
||||||
signed message.
|
|
||||||
|
|
||||||
_code: Solidity @lang<solidity>
|
|
||||||
|
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
// For more info, see: https://docs.ethers.org
|
|
||||||
|
|
||||||
|
|
||||||
pragma solidity ^0.8.21;
|
|
||||||
|
|
||||||
// Returns the decimal string representation of value
|
|
||||||
function itoa(uint value) pure returns (string memory) {
|
|
||||||
|
|
||||||
// Count the length of the decimal string representation
|
|
||||||
uint length = 1;
|
|
||||||
uint v = value;
|
|
||||||
while ((v /= 10) != 0) { length++; }
|
|
||||||
|
|
||||||
// Allocated enough bytes
|
|
||||||
bytes memory result = new bytes(length);
|
|
||||||
|
|
||||||
// Place each ASCII string character in the string,
|
|
||||||
// right to left
|
|
||||||
while (true) {
|
|
||||||
length--;
|
|
||||||
|
|
||||||
// The ASCII value of the modulo 10 value
|
|
||||||
result[length] = bytes1(uint8(0x30 + (value % 10)));
|
|
||||||
|
|
||||||
value /= 10;
|
|
||||||
|
|
||||||
if (length == 0) { break; }
|
|
||||||
}
|
|
||||||
|
|
||||||
return string(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
contract RecoverMessage {
|
|
||||||
|
|
||||||
// This is the EIP-2098 compact representation, which reduces gas costs
|
|
||||||
struct SignatureCompact {
|
|
||||||
bytes32 r;
|
|
||||||
bytes32 yParityAndS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is an expaned Signature representation
|
|
||||||
struct SignatureExpanded {
|
|
||||||
uint8 v;
|
|
||||||
bytes32 r;
|
|
||||||
bytes32 s;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper function
|
|
||||||
function _ecrecover(string memory message, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
|
|
||||||
// Compute the EIP-191 prefixed message
|
|
||||||
bytes memory prefixedMessage = abi.encodePacked(
|
|
||||||
"\x19Ethereum Signed Message:\n",
|
|
||||||
itoa(bytes(message).length),
|
|
||||||
message
|
|
||||||
);
|
|
||||||
|
|
||||||
// Compute the message digest
|
|
||||||
bytes32 digest = keccak256(prefixedMessage);
|
|
||||||
|
|
||||||
// Use the native ecrecover provided by the EVM
|
|
||||||
return ecrecover(digest, v, r, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recover the address from an EIP-2098 compact Signature, which packs the bit for
|
|
||||||
// v into an unused bit within s, which saves gas overall, costing a little extra
|
|
||||||
// in computation, but saves far more in calldata length.
|
|
||||||
//
|
|
||||||
// This Signature format is 64 bytes in length.
|
|
||||||
function recoverStringFromCompact(string calldata message, SignatureCompact calldata sig) public pure returns (address) {
|
|
||||||
|
|
||||||
// Decompose the EIP-2098 signature (the struct is 64 bytes in length)
|
|
||||||
uint8 v = 27 + uint8(uint256(sig.yParityAndS) >> 255);
|
|
||||||
bytes32 s = bytes32((uint256(sig.yParityAndS) << 1) >> 1);
|
|
||||||
|
|
||||||
return _ecrecover(message, v, sig.r, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recover the address from the expanded Signature struct.
|
|
||||||
//
|
|
||||||
// This Signature format is 96 bytes in length.
|
|
||||||
function recoverStringFromExpanded(string calldata message, SignatureExpanded calldata sig) public pure returns (address) {
|
|
||||||
|
|
||||||
// The v, r and s are included directly within the struct, which is 96 bytes in length
|
|
||||||
return _ecrecover(message, sig.v, sig.r, sig.s);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recover the address from a v, r and s passed directly into the method.
|
|
||||||
//
|
|
||||||
// This Signature format is 96 bytes in length.
|
|
||||||
function recoverStringFromVRS(string calldata message, uint8 v, bytes32 r, bytes32 s) public pure returns (address) {
|
|
||||||
|
|
||||||
// The v, r and s are included directly within the struct, which is 96 bytes in length
|
|
||||||
return _ecrecover(message, v, r, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recover the address from a raw signature. The signature is 65 bytes, which when
|
|
||||||
// ABI encoded is 160 bytes long (a pointer, a length and the padded 3 words of data).
|
|
||||||
//
|
|
||||||
// When using raw signatures, some tools return the v as 0 or 1. In this case you must
|
|
||||||
// add 27 to that value as v must be either 27 or 28.
|
|
||||||
//
|
|
||||||
// This Signature format is 65 bytes of data, but when ABI encoded is 160 bytes in length;
|
|
||||||
// a pointer (32 bytes), a length (32 bytes) and the padded 3 words of data (96 bytes).
|
|
||||||
function recoverStringFromRaw(string calldata message, bytes calldata sig) public pure returns (address) {
|
|
||||||
|
|
||||||
// Sanity check before using assembly
|
|
||||||
require(sig.length == 65, "invalid signature");
|
|
||||||
|
|
||||||
// Decompose the raw signature into r, s and v (note the order)
|
|
||||||
uint8 v;
|
|
||||||
bytes32 r;
|
|
||||||
bytes32 s;
|
|
||||||
assembly {
|
|
||||||
r := calldataload(sig.offset)
|
|
||||||
s := calldataload(add(sig.offset, 0x20))
|
|
||||||
v := calldataload(add(sig.offset, 0x21))
|
|
||||||
}
|
|
||||||
|
|
||||||
return _ecrecover(message, v, r, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is provided as a quick example for those that only need to recover a signature
|
|
||||||
// for a signed hash (highly discouraged; but common), which means we can hardcode the
|
|
||||||
// length in the prefix. This means we can drop the itoa and _ecrecover functions above.
|
|
||||||
function recoverHashFromCompact(bytes32 hash, SignatureCompact calldata sig) public pure returns (address) {
|
|
||||||
bytes memory prefixedMessage = abi.encodePacked(
|
|
||||||
// Notice the length of the message is hard-coded to 32
|
|
||||||
// here -----------------------v
|
|
||||||
"\x19Ethereum Signed Message:\n32",
|
|
||||||
hash
|
|
||||||
);
|
|
||||||
|
|
||||||
bytes32 digest = keccak256(prefixedMessage);
|
|
||||||
|
|
||||||
// Decompose the EIP-2098 signature
|
|
||||||
uint8 v = 27 + uint8(uint256(sig.yParityAndS) >> 255);
|
|
||||||
bytes32 s = bytes32((uint256(sig.yParityAndS) << 1) >> 1);
|
|
||||||
|
|
||||||
return ecrecover(digest, v, sig.r, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
_subsection: EIP-712 Typed Data @<cookbook-signing-eip712>
|
|
||||||
|
|
||||||
//Coming soon...//
|
|
@ -11,7 +11,7 @@ If using NPM, you must first install Ethers.
|
|||||||
|
|
||||||
_code: installing via NPM @lang<shell>
|
_code: installing via NPM @lang<shell>
|
||||||
# Install ethers
|
# Install ethers
|
||||||
/home/ricmoo/test-ethers> npm install ethers
|
/home/ricmoo/test-ethers> npm install ethers@beta-exports
|
||||||
|
|
||||||
_null:
|
_null:
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ _code: importing in Node.js @lang<script>
|
|||||||
|
|
||||||
_code: importing ESM in a browser @lang<script>
|
_code: importing ESM in a browser @lang<script>
|
||||||
<script type="module">
|
<script type="module">
|
||||||
import { ethers } from "https://cdnjs.cloudflare.com/ajax/libs/ethers/6.7.0/ethers.min.js";
|
import { ethers } from "https://cdnjs.cloudflare.com/ajax/libs/ethers/5.7.2/ethers.min.js";
|
||||||
// Your code here...
|
// Your code here...
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -129,8 +129,8 @@ _code: @lang<script>
|
|||||||
|
|
||||||
// If MetaMask is not installed, we use the default provider,
|
// If MetaMask is not installed, we use the default provider,
|
||||||
// which is backed by a variety of third-party services (such
|
// which is backed by a variety of third-party services (such
|
||||||
// as INFURA). They do not have private keys installed,
|
// as INFURA). They do not have private keys installed so are
|
||||||
// so they only have read-only access
|
// only have read-only access
|
||||||
console.log("MetaMask not installed; using read-only defaults")
|
console.log("MetaMask not installed; using read-only defaults")
|
||||||
provider = ethers.getDefaultProvider()
|
provider = ethers.getDefaultProvider()
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ you can use the [[JsonRpcProvider]] directly, which communicates
|
|||||||
using the [[link-jsonrpc]] protocol.
|
using the [[link-jsonrpc]] protocol.
|
||||||
|
|
||||||
When using your own Ethereum node or a developer-base blockchain,
|
When using your own Ethereum node or a developer-base blockchain,
|
||||||
such as Hardhat or Ganache, you can get access to the accounts with
|
such as Hardhat or Ganache, you can get access the accounts with
|
||||||
[[JsonRpcProvider-getSigner]].
|
[[JsonRpcProvider-getSigner]].
|
||||||
|
|
||||||
_code: connecting to a JSON-RPC URL @lang<script>
|
_code: connecting to a JSON-RPC URL @lang<script>
|
||||||
@ -177,7 +177,7 @@ results when performing mathematic operations.
|
|||||||
|
|
||||||
As a result, the internal units used (e.g. wei) which are suited for
|
As a result, the internal units used (e.g. wei) which are suited for
|
||||||
machine-readable purposes and maths are often very large and not
|
machine-readable purposes and maths are often very large and not
|
||||||
easily human-readable.
|
terribly human-readable.
|
||||||
|
|
||||||
For example, imagine dealing with dollars and cents; you would show
|
For example, imagine dealing with dollars and cents; you would show
|
||||||
values like ``"$2.56"``. In the blockchain world, we would keep all
|
values like ``"$2.56"``. In the blockchain world, we would keep all
|
||||||
@ -295,9 +295,9 @@ human-readable ABI, which is just the Solidity signature.
|
|||||||
|
|
||||||
_code: simplified ERC-20 ABI @lang<script>
|
_code: simplified ERC-20 ABI @lang<script>
|
||||||
abi = [
|
abi = [
|
||||||
"function decimals() view returns (string)",
|
"function decimals() returns (string)",
|
||||||
"function symbol() view returns (string)",
|
"function symbol() returns (string)",
|
||||||
"function balanceOf(address addr) view returns (uint)"
|
"function balanceOf(address addr) returns (uint)"
|
||||||
]
|
]
|
||||||
|
|
||||||
// Create a contract
|
// Create a contract
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
link-js-array [link-js-array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
|
link-js-array [link-js-array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
|
||||||
link-js-bigint [link-js-bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)
|
link-js-bigint [link-js-bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)
|
||||||
link-js-date [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
|
link-js-date [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
|
||||||
link-js-fetch [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
|
|
||||||
link-js-normalize [String.normalize](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)
|
link-js-normalize [String.normalize](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)
|
||||||
link-js-maxsafe [link-js-maxsafe](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER#Description)
|
link-js-maxsafe [link-js-maxsafe](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER#Description)
|
||||||
link-js-proxy [link-js-proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)
|
link-js-proxy [link-js-proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)
|
||||||
|
@ -2,4 +2,3 @@ link-npm-ethers [link-ethers-npm](https://www.npmjs.com/search?q=%40ethersprojec
|
|||||||
link-npm-events [EventEmitter](https://nodejs.org/dist/latest-v13.x/docs/api/events.html#events_class_eventemitter)
|
link-npm-events [EventEmitter](https://nodejs.org/dist/latest-v13.x/docs/api/events.html#events_class_eventemitter)
|
||||||
link-npm-query-bignumber [link-npm-query-bignumber](https://www.npmjs.com/search?q=bignumber)
|
link-npm-query-bignumber [link-npm-query-bignumber](https://www.npmjs.com/search?q=bignumber)
|
||||||
link-npm-react-native-get-random-values [React Native get-random-values](https://www.npmjs.com/package/react-native-get-random-values)
|
link-npm-react-native-get-random-values [React Native get-random-values](https://www.npmjs.com/package/react-native-get-random-values)
|
||||||
link-npm-react-native-quick-crypto [Quick Crypto](https://www.npmjs.com/package/react-native-quick-crypto)
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
link-alchemy [Alchemy](https://alchemy.com/?a=ethers)
|
link-alchemy [Alchemy](https://alchemy.com/?a=ethers)
|
||||||
link-ankr [Ankr](https://www.ankr.com)
|
link-ankr [Ankr](https://www.ankr.com)
|
||||||
link-chainstack [Chainstack](https://chainstack.com)
|
|
||||||
link-cloudflare [Cloudflare](https://developers.cloudflare.com/distributed-web/ethereum-gateway/)
|
link-cloudflare [Cloudflare](https://developers.cloudflare.com/distributed-web/ethereum-gateway/)
|
||||||
link-ens [ENS](https://ens.domains/)
|
link-ens [ENS](https://ens.domains/)
|
||||||
link-ethereum [Ethereum](https://ethereumorg)
|
link-ethereum [Ethereum](https://ethereumorg)
|
||||||
@ -13,7 +12,6 @@ link-infura [INFURA](https://infura.io)
|
|||||||
link-javascriptcore [JavaScriptCore](https://developer.apple.com/documentation/javascriptcore?language=objc)
|
link-javascriptcore [JavaScriptCore](https://developer.apple.com/documentation/javascriptcore?language=objc)
|
||||||
link-ledger [Ledger](https://www.ledger.com)
|
link-ledger [Ledger](https://www.ledger.com)
|
||||||
link-metamask [MetaMask](https://metamask.io/)
|
link-metamask [MetaMask](https://metamask.io/)
|
||||||
link-node [Node.js](https://nodejs.org/)
|
|
||||||
link-otto [Otto](https://github.com/robertkrimen/otto)
|
link-otto [Otto](https://github.com/robertkrimen/otto)
|
||||||
link-parity [Parity](https://www.parity.io)
|
link-parity [Parity](https://www.parity.io)
|
||||||
link-pocket [Pocket Network](https://pokt.network)
|
link-pocket [Pocket Network](https://pokt.network)
|
||||||
@ -46,5 +44,3 @@ link-solidity-errors [link-solidity-errors](https://docs.soliditylang.org/en/v0.
|
|||||||
link-solidity-events [link-solidity-events](https://docs.soliditylang.org/en/v0.8.4/abi-spec.html#events)
|
link-solidity-events [link-solidity-events](https://docs.soliditylang.org/en/v0.8.4/abi-spec.html#events)
|
||||||
|
|
||||||
link-other-ethereum-dev-docs [link-other-ethereum-dev-docs](https://ethereum.org/en/developers/docs/)
|
link-other-ethereum-dev-docs [link-other-ethereum-dev-docs](https://ethereum.org/en/developers/docs/)
|
||||||
|
|
||||||
link-sol-recovermessage [RecoverMessage.sol](https://sepolia.etherscan.io/address/0xf554da5e35b2e40c09ddb481545a395da1736513#code)
|
|
||||||
|
@ -31,8 +31,6 @@ link-eip-2098 [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098)
|
|||||||
link-eip-2304 [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304)
|
link-eip-2304 [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304)
|
||||||
link-eip-2718 [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718)
|
link-eip-2718 [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718)
|
||||||
link-eip-2930 [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)
|
link-eip-2930 [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)
|
||||||
link-eip-4788 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4788)
|
|
||||||
link-eip-4844 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)
|
|
||||||
|
|
||||||
# Open Standards
|
# Open Standards
|
||||||
link-base58 [Base58](https://en.bitcoinwiki.org/wiki/Base58)
|
link-base58 [Base58](https://en.bitcoinwiki.org/wiki/Base58)
|
||||||
@ -45,7 +43,6 @@ link-namehash [namehash](https://docs.ens.domains/contract-api-reference/name-pr
|
|||||||
link-rlp [Recursive-Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/)
|
link-rlp [Recursive-Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/)
|
||||||
link-pbkdf2 [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2)
|
link-pbkdf2 [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2)
|
||||||
link-solc-abi [ABI Specification](https://docs.soliditylang.org/en/v0.8.19/abi-spec.html#formal-specification-of-the-encoding)
|
link-solc-abi [ABI Specification](https://docs.soliditylang.org/en/v0.8.19/abi-spec.html#formal-specification-of-the-encoding)
|
||||||
link-solc-jsonabi [ABI JSON Specification](https://docs.soliditylang.org/en/v0.8.19/abi-spec.html#json)
|
|
||||||
link-solc-errors [Solidity Custom Errors](https://docs.soliditylang.org/en/v0.8.4/abi-spec.html#errors)
|
link-solc-errors [Solidity Custom Errors](https://docs.soliditylang.org/en/v0.8.4/abi-spec.html#errors)
|
||||||
link-solc-events [Solidity Events](https://docs.soliditylang.org/en/v0.8.4/abi-spec.html#events)
|
link-solc-events [Solidity Events](https://docs.soliditylang.org/en/v0.8.4/abi-spec.html#events)
|
||||||
link-solc-output [solc standard output](https://solidity.readthedocs.io/en/v0.6.0/using-the-compiler.html#output-description)
|
link-solc-output [solc standard output](https://solidity.readthedocs.io/en/v0.6.0/using-the-compiler.html#output-description)
|
||||||
|
@ -4,7 +4,7 @@ This guide aims to capture some of the high-level differences
|
|||||||
between v5 and v6 to help those migrating an existing app and
|
between v5 and v6 to help those migrating an existing app and
|
||||||
those already familiar with v5 that just need a quick primer.
|
those already familiar with v5 that just need a quick primer.
|
||||||
|
|
||||||
The biggest difference in v6 is the use of modern ES6 features,
|
The biggest differnce in v6 is the use of modern ES6 features,
|
||||||
so a lot of changes are largely internal.
|
so a lot of changes are largely internal.
|
||||||
|
|
||||||
- [BigNumbers](migrate-bigint)
|
- [BigNumbers](migrate-bigint)
|
||||||
@ -60,7 +60,7 @@ _code: simple comparison on large numbers @lang<script>
|
|||||||
isEqual = value1.eq(value2)
|
isEqual = value1.eq(value2)
|
||||||
|
|
||||||
// Using BigInt in v6
|
// Using BigInt in v6
|
||||||
isEqual = (value1 == value2)
|
isEqaul = (value1 == value2)
|
||||||
|
|
||||||
|
|
||||||
_subsection: Contracts @<migrate-contracts>
|
_subsection: Contracts @<migrate-contracts>
|
||||||
@ -172,7 +172,7 @@ managed as a monorepo.
|
|||||||
|
|
||||||
In v6 all imports are available in the root package, and for those
|
In v6 all imports are available in the root package, and for those
|
||||||
who wish to have finer-grained control, the ``pkg.exports`` makes
|
who wish to have finer-grained control, the ``pkg.exports`` makes
|
||||||
certain folders available directly.
|
certain folders avilable directly.
|
||||||
|
|
||||||
_code: importing in v5 @lang<script>
|
_code: importing in v5 @lang<script>
|
||||||
|
|
||||||
@ -225,27 +225,6 @@ _code: broadcasting transactions @lang<script>
|
|||||||
provider.broadcastTransaction(signedTx)
|
provider.broadcastTransaction(signedTx)
|
||||||
|
|
||||||
|
|
||||||
The ``StaticJsonRpcProvider`` in v5 is now integrated into the v6
|
|
||||||
``JsonRpcProvider`` directly. When connecting to a network which
|
|
||||||
cannot change its network, it is much more efficient to disable
|
|
||||||
the automatic safety check ethers performs.
|
|
||||||
|
|
||||||
_code: Create a Provider on a static network @lang<script>
|
|
||||||
// v5
|
|
||||||
provider = new StaticJsonRpcProvider(url, network);
|
|
||||||
|
|
||||||
// v6: If you know the network ahead of time and wish
|
|
||||||
// to avoid even a single eth_chainId call
|
|
||||||
provider = new JsonRpcProvider(url, network, {
|
|
||||||
staticNetwork: network
|
|
||||||
});
|
|
||||||
|
|
||||||
// v6: If you want the network automatically detected,
|
|
||||||
// this will query eth_chainId only once
|
|
||||||
provider = new JsonRpcProvider(url, undefined, {
|
|
||||||
staticNetwork: true
|
|
||||||
});
|
|
||||||
|
|
||||||
_subsection: Signatures @<migrate-signatures>
|
_subsection: Signatures @<migrate-signatures>
|
||||||
|
|
||||||
The Signature is now a class which facilitates all the parsing
|
The Signature is now a class which facilitates all the parsing
|
||||||
@ -335,7 +314,7 @@ _code: fetching content @lang<script>
|
|||||||
url, user: "username", password: "password"
|
url, user: "username", password: "password"
|
||||||
// etc. properties have FetchRequest equivalents
|
// etc. properties have FetchRequest equivalents
|
||||||
};
|
};
|
||||||
data = await ethers.utils.fetchJson(req, json, processFunc)
|
data = await ethers.utils.detchJson(req, json, processFunc)
|
||||||
|
|
||||||
// v6
|
// v6
|
||||||
req = new ethers.FetchRequest(url)
|
req = new ethers.FetchRequest(url)
|
||||||
@ -369,13 +348,9 @@ _code: hex conversion @lang<script>
|
|||||||
_code: solidity non-standard packed @lang<script>
|
_code: solidity non-standard packed @lang<script>
|
||||||
// v5
|
// v5
|
||||||
ethers.utils.solidityPack(types, values)
|
ethers.utils.solidityPack(types, values)
|
||||||
ethers.utils.solidityKeccak256(types, values)
|
|
||||||
ethers.utils.soliditySha256(types, values)
|
|
||||||
|
|
||||||
// v6
|
// v6
|
||||||
ethers.solidityPacked(types, values)
|
ethers.solidityPacked(types, values)
|
||||||
ethers.solidityPackedKeccak256(types, values)
|
|
||||||
ethers.solidityPackedSha256(types, values)
|
|
||||||
|
|
||||||
_code: property manipulation @lang<script>
|
_code: property manipulation @lang<script>
|
||||||
// v5
|
// v5
|
||||||
@ -384,30 +359,6 @@ _code: property manipulation @lang<script>
|
|||||||
// v6
|
// v6
|
||||||
ethers.defineProperties(obj, { name: value });
|
ethers.defineProperties(obj, { name: value });
|
||||||
|
|
||||||
_code: commify @lang<script>
|
|
||||||
// v5
|
|
||||||
ethers.utils.commify("1234.5")
|
|
||||||
|
|
||||||
// v6; we removed some of these local-specific utilities,
|
|
||||||
// however the functionality can be easily replicated
|
|
||||||
// and adjusted depending on your desired output format,
|
|
||||||
// for which everyone wanted their own tweaks anyways.
|
|
||||||
//
|
|
||||||
// However, to mimic v5 functionality, this can be used:
|
|
||||||
function commify(value) {
|
|
||||||
const match = value.match(/^(-?)([0-9]*)(\.?)([0-9]*)$/);
|
|
||||||
if (!match || (!match[2] && !match[4])) {
|
|
||||||
throw new Error(`bad formatted number: ${ JSON.stringify(value) }`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const neg = match[1];
|
|
||||||
const whole = BigInt(match[2] || 0).toLocaleString("en-us");
|
|
||||||
const frac = match[4] ? match[4].match(/^(.*?)0*$/)[1]: "0";
|
|
||||||
|
|
||||||
return `${ neg }${ whole }.${ frac }`;
|
|
||||||
}
|
|
||||||
|
|
||||||
commify("1234.5");
|
|
||||||
|
|
||||||
_subsection: Removed Classes and functions @<migrate-missing>
|
_subsection: Removed Classes and functions @<migrate-missing>
|
||||||
|
|
||||||
|
15
lib.commonjs/_tests/blockchain-data.d.ts
vendored
15
lib.commonjs/_tests/blockchain-data.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
export type TestBlockchainNetwork = "mainnet" | "goerli" | "sepolia";
|
export type TestBlockchainNetwork = "mainnet" | "goerli";
|
||||||
export interface TestBlockchainAddress {
|
export interface TestBlockchainAddress {
|
||||||
test: string;
|
test: string;
|
||||||
address: string;
|
address: string;
|
||||||
@ -22,18 +22,12 @@ export interface TestBlockchainBlock {
|
|||||||
extraData: string;
|
extraData: string;
|
||||||
transactions: Array<string>;
|
transactions: Array<string>;
|
||||||
baseFeePerGas?: bigint;
|
baseFeePerGas?: bigint;
|
||||||
blobGasUsed?: bigint;
|
|
||||||
excessBlobGas?: bigint;
|
|
||||||
parentBeaconBlockRoot?: string;
|
|
||||||
stateRoot?: string;
|
|
||||||
receiptsRoot?: string;
|
|
||||||
}
|
}
|
||||||
export interface TestBlockchainTransaction {
|
export interface TestBlockchainTransaction {
|
||||||
test: string;
|
test: string;
|
||||||
hash: string;
|
hash: string;
|
||||||
blockHash: string;
|
blockHash: string;
|
||||||
blockNumber: number;
|
blockNumber: number;
|
||||||
index: number;
|
|
||||||
type: number;
|
type: number;
|
||||||
from: string;
|
from: string;
|
||||||
gasPrice: bigint;
|
gasPrice: bigint;
|
||||||
@ -46,7 +40,7 @@ export interface TestBlockchainTransaction {
|
|||||||
r: string;
|
r: string;
|
||||||
s: string;
|
s: string;
|
||||||
yParity: 0 | 1;
|
yParity: 0 | 1;
|
||||||
v?: number;
|
v: number;
|
||||||
networkV: null | bigint;
|
networkV: null | bigint;
|
||||||
};
|
};
|
||||||
creates: null | string;
|
creates: null | string;
|
||||||
@ -54,8 +48,6 @@ export interface TestBlockchainTransaction {
|
|||||||
accessList?: Array<Record<string, Array<string>>>;
|
accessList?: Array<Record<string, Array<string>>>;
|
||||||
maxPriorityFeePerGas?: bigint;
|
maxPriorityFeePerGas?: bigint;
|
||||||
maxFeePerGas?: bigint;
|
maxFeePerGas?: bigint;
|
||||||
maxFeePerBlobGas?: bigint;
|
|
||||||
blobVersionedHashes?: Array<string>;
|
|
||||||
}
|
}
|
||||||
export interface TestBlockchainReceipt {
|
export interface TestBlockchainReceipt {
|
||||||
test: string;
|
test: string;
|
||||||
@ -83,8 +75,6 @@ export interface TestBlockchainReceipt {
|
|||||||
to: string;
|
to: string;
|
||||||
hash: string;
|
hash: string;
|
||||||
index: number;
|
index: number;
|
||||||
blobGasUsed?: bigint;
|
|
||||||
blobGasPrice?: bigint;
|
|
||||||
}
|
}
|
||||||
export declare const testAddress: Record<TestBlockchainNetwork, Array<TestBlockchainAddress>>;
|
export declare const testAddress: Record<TestBlockchainNetwork, Array<TestBlockchainAddress>>;
|
||||||
export declare const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>>;
|
export declare const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>>;
|
||||||
@ -92,4 +82,3 @@ export declare const testTransaction: Record<TestBlockchainNetwork, Array<TestBl
|
|||||||
export declare const testReceipt: Record<TestBlockchainNetwork, Array<TestBlockchainReceipt>>;
|
export declare const testReceipt: Record<TestBlockchainNetwork, Array<TestBlockchainReceipt>>;
|
||||||
export declare const networkNames: Array<TestBlockchainNetwork>;
|
export declare const networkNames: Array<TestBlockchainNetwork>;
|
||||||
export declare function networkFeatureAtBlock(feature: string, block: number): boolean;
|
export declare function networkFeatureAtBlock(feature: string, block: number): boolean;
|
||||||
//# sourceMappingURL=blockchain-data.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"blockchain-data.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/blockchain-data.ts"],"names":[],"mappings":"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"}
|
|
@ -23,8 +23,7 @@ exports.testAddress = {
|
|||||||
name: "ricmoo.firefly.eth"
|
name: "ricmoo.firefly.eth"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
goerli: [],
|
goerli: []
|
||||||
sepolia: []
|
|
||||||
};
|
};
|
||||||
exports.testBlock = {
|
exports.testBlock = {
|
||||||
mainnet: [
|
mainnet: [
|
||||||
@ -40,8 +39,6 @@ exports.testBlock = {
|
|||||||
gasUsed: BigInt("0"),
|
gasUsed: BigInt("0"),
|
||||||
miner: "0x5088D623ba0fcf0131E0897a91734A4D83596AA0",
|
miner: "0x5088D623ba0fcf0131E0897a91734A4D83596AA0",
|
||||||
extraData: "0x476574682f76312e302e302d66633739643332642f6c696e75782f676f312e34",
|
extraData: "0x476574682f76312e302e302d66633739643332642f6c696e75782f676f312e34",
|
||||||
stateRoot: '0x76ab0b899e8387436ff2658e2988f83cbf1af1590b9fe9feca3714f8d1824940',
|
|
||||||
receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
|
|
||||||
transactions: []
|
transactions: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -57,8 +54,6 @@ exports.testBlock = {
|
|||||||
miner: "0x2A20380DcA5bC24D052acfbf79ba23e988ad0050",
|
miner: "0x2A20380DcA5bC24D052acfbf79ba23e988ad0050",
|
||||||
extraData: "0x706f6f6c696e2e636f6d21f7092f019bb92a76",
|
extraData: "0x706f6f6c696e2e636f6d21f7092f019bb92a76",
|
||||||
baseFeePerGas: BigInt("40911884304"),
|
baseFeePerGas: BigInt("40911884304"),
|
||||||
stateRoot: '0xd08663f630cfcf2d7d8fe4d52f7685ad09798b7e6150cabea5eeceb1d89e11c2',
|
|
||||||
receiptsRoot: '0x473e83ec3df279f44c4fc6da50fe1d0c5a18f1929b90de8917bdcdb88a132750',
|
|
||||||
transactions: [
|
transactions: [
|
||||||
"0x1c3a398933db10634631f54b435c40c8805c13f12bbac7c3dab858ca44213fa2",
|
"0x1c3a398933db10634631f54b435c40c8805c13f12bbac7c3dab858ca44213fa2",
|
||||||
"0xd98947cbdd892cc7f679c903903e6d18a5c5afb19e94437beba79372ad71c347",
|
"0xd98947cbdd892cc7f679c903903e6d18a5c5afb19e94437beba79372ad71c347",
|
||||||
@ -91,104 +86,6 @@ exports.testBlock = {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
goerli: [],
|
goerli: [],
|
||||||
sepolia: [
|
|
||||||
{
|
|
||||||
test: "eip-4844-BLob-block",
|
|
||||||
hash: "0xa76eb2ed547798d6010f599902788136f0cd289e2c6df5bbf5242e36e356124d",
|
|
||||||
parentHash: "0x2b579cb7224abdbe7a66c76380d60329bba41d95d225feb80ca1a78cf83a5124",
|
|
||||||
parentBeaconBlockRoot: '0xa05d27aa9c2f3d57943ca86134a08f6f7852ad5e9dbe360f86b466e2f0ed7bb5',
|
|
||||||
number: 5198187,
|
|
||||||
timestamp: 1706801700,
|
|
||||||
nonce: "0x0000000000000000",
|
|
||||||
difficulty: BigInt(0),
|
|
||||||
gasLimit: BigInt("30000000"),
|
|
||||||
gasUsed: BigInt("5622957"),
|
|
||||||
baseFeePerGas: BigInt("48793932840"),
|
|
||||||
miner: "0x008b3b2F992C0E14eDaa6E2c662Bec549CAA8df1",
|
|
||||||
extraData: "0x",
|
|
||||||
blobGasUsed: BigInt("524288"),
|
|
||||||
excessBlobGas: BigInt("79691776"),
|
|
||||||
stateRoot: '0xa78ad0e0f5d2b3383fdb13f4ad0523723816863556be3a5414536862f4d217df',
|
|
||||||
receiptsRoot: '0xa254ed337328248b77011c70c2b85d6575f965f2fe65ed233c27e3750c0b7170',
|
|
||||||
transactions: [
|
|
||||||
"0xe8a096a98cd7b8d783cbb30687c3adc8e59f1e9563c0454623cc8af59f8bcab1",
|
|
||||||
"0x5aac2d50b15e177e8edaae4819e989650a6cdb335dd8924b5a7a7ed1675d15e7",
|
|
||||||
"0x21c94c24419f746efd2c1f470c0842df21ab8da14f7db8e30a12c53a4e7d5145",
|
|
||||||
"0x85b40ce37262a7962487bd37bf36867b344525b425a90a25516ac3c2cb1f6535",
|
|
||||||
"0x1a674ff3bd6bbe7bc7ada2ae3da893a7b74b4cfaadebc8c3f0fe0c9ad3c1c35b",
|
|
||||||
"0x48cafe99a7d2284a1664e05c404dd88e4113ffb65bf49846716bd855ffc6835d",
|
|
||||||
"0x658065003e8952782d121d9b5729845862c2a45ed24e46c634041a77c4577bed",
|
|
||||||
"0xc5416e0a2383b1a9b3ba030803f88e45faebfb35ad5db022e44a09b15aeae385",
|
|
||||||
"0x9030f7962f3f638f96bb703f45cdaa8778cf393ead767592aa50bce32230eae3",
|
|
||||||
"0xce008888308a4c1d51f87a1c2a75b1d0bd15eb096c675ad091dcc9705e4d016d",
|
|
||||||
"0xcf17c1f09a22c992a469da0023ad3c9bd2c29a8532146bcdf9ce3216609ea50c",
|
|
||||||
"0x3933e49a215c80b35ec7d48e2741fda50c8cc7b92652e79663e4423c00e8e1e2",
|
|
||||||
"0x82b2af4ed108880c151ee38cb3ab28e81ba86a2b0e707dd9cee9bf341f895a8a",
|
|
||||||
"0x51ef5af42d572d6135bec154d5c754928465bad00d1ff7b769a5b65e0054a90e",
|
|
||||||
"0x87cab3ae3a36d439a539ded7eb57e0ef07c5a1fbe1697c2e5ba8d7c03875fd22",
|
|
||||||
"0x70371a20dfbff0ee753b52cd9445f431454b929c7375624a96f5dbc25e88afed",
|
|
||||||
"0x57ee8a4a09875b7720f7d9e75fb93a1cc86d166ad9a1b4c2d7cf2c7c8324fbc0",
|
|
||||||
"0xf004bd2b0119aca5f364b16421a5b2e7db811568761f5542fdcd74903cd9115d",
|
|
||||||
"0x5b6635688362651e1cd33c668bd748d964ba93006661e53dc117d1c1e44886a5",
|
|
||||||
"0xe5893e07bfec18dd206da279a47ee5cc9471930bbb3b85d64ee4945b98137348",
|
|
||||||
"0x4f0f48032a77a80550f71cbcbe86f7d1b34009910f12dbe153a93cb66965393e",
|
|
||||||
"0x5420c3f7b5118e0829df31794aa55a1a91e0009600bbff283b553d5ac7a248ff",
|
|
||||||
"0xece2175e4b06bf6105f5be10a9ed48808a5f96f12f80b3941ee7cb1eeca99e03",
|
|
||||||
"0x383ea6445cd183e32fbc7b846c00b34c419078fe4055cd078f8692fc02b300c8",
|
|
||||||
"0x6c4aef4c26410b1fcbf24d0148e3d66a10cb3e9ad4ca10a71782489688cdd45a",
|
|
||||||
"0xe7e24b8c8182832e7b1113cd07ae68e4ca8618decdc527650f57d25d0b681fde",
|
|
||||||
"0xef5f520662c133be33209249fbc93afb7c614c06a0b45086d15c33bd7c0ca47a",
|
|
||||||
"0x4af20dc2e952e381789065f2cd0c88730fea820bcc3db82eaddf63b36e65b3ac",
|
|
||||||
"0xf99eef2240abc5002c9d71a90ffd463935642aaf81213f37337327c1afcb502c",
|
|
||||||
"0xf7d1ad53e2435e6d978563e39db89660d1b4de6084a3a3cefe7025d28507017f",
|
|
||||||
"0xfc21e64a158ac26ea9afc754460e16fefc4316a3fb92ec9a6042b792d7855788",
|
|
||||||
"0xee60e551bcf518853ef4f5c33551ad07fa95267814940c4203934c79355b1ac0",
|
|
||||||
"0x2a3c649caf77b942b206b9eb1be4635d950cf9a15fea2b43d3d7cbeddf700739",
|
|
||||||
"0xbbd7b9c1434eb98d177f2ff8911b0186309534dea942c40a86517d69247cd0ac",
|
|
||||||
"0xd86daa6d16e2aee4fc6ae831336ada63623685fb998dc5c605284a034604d751",
|
|
||||||
"0xcfc848dfbbbe76fe0095f04ef35c931799c294eb3623e5cb8c0d81362e8bf125",
|
|
||||||
"0x71e3ea97c91bd14388d99d69d122314a1cf0d595cbad1e45040277b470c4e67b",
|
|
||||||
"0xa9b2e44e46d38bb67cbd7a2d47d57e60892dff018f7754b54a221ae3f1b996c4",
|
|
||||||
"0xd1b8f9d669bd7f5072a095476e94e90510f2a18b434551fb7852b5c38c41471a",
|
|
||||||
"0xa3858e80680997080fddde083398e857b14cd4e2cfe74629f6a1245df0447efb",
|
|
||||||
"0x97593f663b07f8a4555202abb691cf7997210284195c24980abee02040c60618",
|
|
||||||
"0x03387f22b01919486338fbd874dd7059f8df62d5b16052cb0ab855b6a364777e",
|
|
||||||
"0xf2561f5f487c3d20c42b42e697a49fb5d05e0fb844ca97b2f127b210475f457e",
|
|
||||||
"0xa67951a1309f1c7ec07ee518ecad831d12c5c78619250681068e7973243f7d9b",
|
|
||||||
"0x7b007997da62b3ac9e5a7005066941e74f5c14d0bdaf4ac44faa8c3479b3cf45",
|
|
||||||
"0x74379408aa3518cbbb394886c91f77ba95ccd37f6b10517834f69a8ff5120ca7",
|
|
||||||
"0xd4843ef02a0d9802d31a89e13e60b6e71870de9124d0b472047012f7a4320f83",
|
|
||||||
"0xaa50331afeafd8f9e913a9f78e898e299314d0825936724cc31211ebf177a9bf",
|
|
||||||
"0xf20c83f2e5d199ad84a7b5dc6fda9611772516e07e7fc71b9f7889af4f2a16aa",
|
|
||||||
"0x89a7c645987dc079ce1af236ed3dd445ad805cc030e5a57766324d4a0a1def9a",
|
|
||||||
"0xe8e7d1116c2c60afd063b9c1e87624426cf6c9fd8d3fa6befe25666e68459570",
|
|
||||||
"0x50be079e71cabf80ca27c39a27f9c0759ac272151f4608b9b75ebfac8284a601",
|
|
||||||
"0xca24f69d47438ebd0b8f304f2f6d7a513d056905f10b164ed6a2cff6da1d4fea",
|
|
||||||
"0x08d2521e04dfd0decc2f556b11274212e84076ff84a0135e9b4e3434de09d42a",
|
|
||||||
"0xcc1e01932a627e9aa20d2b72480d13b4826e128efbbe03526504f7cb9facfc1f",
|
|
||||||
"0x0a3ac907b6d1584cb3d7f9f588ddb4bdd7878db34bc47bd8baf881dd71a98f7d",
|
|
||||||
"0x487539ee9cc6933e13e75e94935c30faffa826c28460fed6d9c3a07d15e2617f",
|
|
||||||
"0xad251856762796acc75dc2846def1f6995fe1b5c747bcab51c10f561d22ffd57",
|
|
||||||
"0x27ca72aa253e009e5e4497dd838986c561e7bea129fec930bc276968525456a8",
|
|
||||||
"0xe26391de668d3eb6f5a3c2f3e14f911dc683873b7ea60d883116c205610b36ff",
|
|
||||||
"0x691c3c5583c5f6444dc6c2f26315a127fc72ebd4f3848055cc8abb8a941d065b",
|
|
||||||
"0x449578293a1dce8d3c147fed564a765515d090e8cd8866209648eb86cd5c1090",
|
|
||||||
"0xb79c6f59d533663ca4fa3a70e9c8be18a3761edc43923c2ecd0904447f654f90",
|
|
||||||
"0xc03863ffa85dd15e0d774ea20006dffd01a868dbf3ff2abe04ccdbf4f027d7ec",
|
|
||||||
"0x28bc1a65696947beb387adbbeabb5328e5f812c435db288688041d9a8c6ab372",
|
|
||||||
"0x6dca99c2103d3894ba83c75e0fa0d42f722e5e93fe6f7a6a55a80cf2907a1a5e",
|
|
||||||
"0x75a7c5f00d79f1b30f82855a8b25077182f1abfd5dbccdf18fe1276e6c9e6a1e",
|
|
||||||
"0x3fc5a320d8c16bcfe2eda847582d34731abc12a3bffbf334a238b47c0bacb90d",
|
|
||||||
"0x47a61770f0771ba34d8e8ab883a3d588769a8d387eb5531b4befccb7ea23a6d3",
|
|
||||||
"0xdc8d0b20e8d8b0fbce50d24eaa36bc56467f35459139dda5e42ffebb1060535c",
|
|
||||||
"0x65bebb9628b5bf5d5e1dbedf00a7e6610fb5615c7ff9d92adaa135bc88f90648",
|
|
||||||
"0x9d2f5b7858631ee196bc24d14d2ef1ce07af081d8fe27b2be70ab90bd8edf930",
|
|
||||||
"0xd7724915af54b4d2c896d05c039f5ba508c878d524eb132c09c3abc22f6111ca",
|
|
||||||
"0xfda6f72dde86c0b8f84ea7c1e157f1d207dd2e974589cc351404bd5a01fe1d9d",
|
|
||||||
"0x3fae3676e266af80b0cc810b6b491750b64b013da78935a288b93e33215bee32"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
exports.testTransaction = {
|
exports.testTransaction = {
|
||||||
mainnet: [
|
mainnet: [
|
||||||
@ -197,7 +94,7 @@ exports.testTransaction = {
|
|||||||
hash: "0xccc90ab97a74c952fb3376c4a3efb566a58a10df62eb4d44a61e106fcf10ec61",
|
hash: "0xccc90ab97a74c952fb3376c4a3efb566a58a10df62eb4d44a61e106fcf10ec61",
|
||||||
blockHash: "0x9653f180a5720f3634816eb945a6d722adee52cc47526f6357ac10adaf368135",
|
blockHash: "0x9653f180a5720f3634816eb945a6d722adee52cc47526f6357ac10adaf368135",
|
||||||
blockNumber: 4097745,
|
blockNumber: 4097745,
|
||||||
index: 18,
|
// index: 18,
|
||||||
type: 0,
|
type: 0,
|
||||||
from: "0x32DEF047DeFd076DB21A2D759aff2A591c972248",
|
from: "0x32DEF047DeFd076DB21A2D759aff2A591c972248",
|
||||||
gasPrice: BigInt("0x4a817c800"),
|
gasPrice: BigInt("0x4a817c800"),
|
||||||
@ -221,7 +118,7 @@ exports.testTransaction = {
|
|||||||
hash: "0x8ff41d0ba5d239acc8c123ff12451a2c15721c838f657e583d355999af4a4349",
|
hash: "0x8ff41d0ba5d239acc8c123ff12451a2c15721c838f657e583d355999af4a4349",
|
||||||
blockHash: '0x9d4c3bef68e119841281105da96beb1c7252f357340d7a3355236b3332b197b0',
|
blockHash: '0x9d4c3bef68e119841281105da96beb1c7252f357340d7a3355236b3332b197b0',
|
||||||
blockNumber: 12966000,
|
blockNumber: 12966000,
|
||||||
index: 185,
|
// index: 185,
|
||||||
type: 2,
|
type: 2,
|
||||||
from: '0x5afFBa12E9332bbc0E221c8E7BEf7CB7cfB3F281',
|
from: '0x5afFBa12E9332bbc0E221c8E7BEf7CB7cfB3F281',
|
||||||
to: '0x2258CcD34ae29E6B199b6CD64eb2aEF157df7CdE',
|
to: '0x2258CcD34ae29E6B199b6CD64eb2aEF157df7CdE',
|
||||||
@ -244,42 +141,7 @@ exports.testTransaction = {
|
|||||||
accessList: []
|
accessList: []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
goerli: [],
|
goerli: []
|
||||||
sepolia: [
|
|
||||||
{
|
|
||||||
test: "EIP-4844-BLOb-tx",
|
|
||||||
hash: "0x6c4aef4c26410b1fcbf24d0148e3d66a10cb3e9ad4ca10a71782489688cdd45a",
|
|
||||||
blockHash: '0xa76eb2ed547798d6010f599902788136f0cd289e2c6df5bbf5242e36e356124d',
|
|
||||||
blockNumber: 5198187,
|
|
||||||
index: 24,
|
|
||||||
type: 3,
|
|
||||||
from: '0x1803c760451DC8da8935c7B7E47e1c60910E6986',
|
|
||||||
to: '0x4f56fFC63c28b72F79b02E91F11a4707bac4043C',
|
|
||||||
gasLimit: BigInt("21000"),
|
|
||||||
nonce: 1635,
|
|
||||||
data: '0x',
|
|
||||||
value: BigInt("0"),
|
|
||||||
gasPrice: BigInt("54793932840"),
|
|
||||||
maxPriorityFeePerGas: BigInt("6000000000"),
|
|
||||||
maxFeePerGas: BigInt("600000000000"),
|
|
||||||
maxFeePerBlobGas: BigInt("60000000000"),
|
|
||||||
chainId: BigInt(11155111),
|
|
||||||
signature: {
|
|
||||||
r: "0x56fc10a770e9fa39a30f71a56d13affbdc390a1bfb419ff806e59b54bfc8bab1",
|
|
||||||
s: "0x35be8b0c774c179520dd43df46925361c4817472441d7dd5162d43efc90679f1",
|
|
||||||
yParity: 1,
|
|
||||||
networkV: null
|
|
||||||
},
|
|
||||||
creates: null,
|
|
||||||
accessList: [],
|
|
||||||
blobVersionedHashes: [
|
|
||||||
"0x010264a7b018f0edbe5caa5cb309ca50d3d7c6c7c990d21bf30a7f18ffd06cd6",
|
|
||||||
"0x017fe9ef61e3c501acec804ec15849d977433f4cf87050c098272dd1257f9c68",
|
|
||||||
"0x019975416c9d7c70ba9cc041464a6e1c3e4f176bdab463573504b55c681364c8",
|
|
||||||
"0x0123ae55ad7d8e8afec2202bdc6dfb931efc8990acf29afbd0c3c0ef61eae92d"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
exports.testReceipt = {
|
exports.testReceipt = {
|
||||||
mainnet: [
|
mainnet: [
|
||||||
@ -365,33 +227,10 @@ exports.testReceipt = {
|
|||||||
index: 0x1e
|
index: 0x1e
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
goerli: [],
|
goerli: []
|
||||||
sepolia: [
|
|
||||||
{
|
|
||||||
test: "eip-4844-BLOb-receipt",
|
|
||||||
//byzantium: true,
|
|
||||||
blockHash: "0xa76eb2ed547798d6010f599902788136f0cd289e2c6df5bbf5242e36e356124d",
|
|
||||||
blockNumber: 5198187,
|
|
||||||
type: 3,
|
|
||||||
contractAddress: null,
|
|
||||||
cumulativeGasUsed: BigInt("930313"),
|
|
||||||
from: "0x1803c760451DC8da8935c7B7E47e1c60910E6986",
|
|
||||||
gasUsed: BigInt("21000"),
|
|
||||||
gasPrice: BigInt("54793932840"),
|
|
||||||
logs: [],
|
|
||||||
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
||||||
root: null,
|
|
||||||
status: 1,
|
|
||||||
to: "0x4f56fFC63c28b72F79b02E91F11a4707bac4043C",
|
|
||||||
hash: "0x6c4aef4c26410b1fcbf24d0148e3d66a10cb3e9ad4ca10a71782489688cdd45a",
|
|
||||||
index: 24,
|
|
||||||
blobGasUsed: BigInt("524288"),
|
|
||||||
blobGasPrice: BigInt("23276216517"),
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
exports.networkNames = [
|
exports.networkNames = [
|
||||||
"mainnet", "goerli", "sepolia"
|
"mainnet", "goerli"
|
||||||
];
|
];
|
||||||
function networkFeatureAtBlock(feature, block) {
|
function networkFeatureAtBlock(feature, block) {
|
||||||
switch (feature) {
|
switch (feature) {
|
||||||
|
File diff suppressed because one or more lines are too long
1
lib.commonjs/_tests/create-provider.d.ts
vendored
1
lib.commonjs/_tests/create-provider.d.ts
vendored
@ -5,4 +5,3 @@ export declare function getProviderNetworks(provider: string): Array<string>;
|
|||||||
export declare function getProvider(provider: string, network: string): null | AbstractProvider;
|
export declare function getProvider(provider: string, network: string): null | AbstractProvider;
|
||||||
export declare function checkProvider(provider: string, network: string): boolean;
|
export declare function checkProvider(provider: string, network: string): boolean;
|
||||||
export declare function connect(network: string): AbstractProvider;
|
export declare function connect(network: string): AbstractProvider;
|
||||||
//# sourceMappingURL=create-provider.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"create-provider.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAkGpD,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED,eAAO,MAAM,aAAa,mBAAuD,CAAC;AAQlF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAInE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAgBtF;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAIzD"}
|
|
@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
exports.connect = exports.checkProvider = exports.getProvider = exports.getProviderNetworks = exports.providerNames = exports.setupProviders = void 0;
|
exports.connect = exports.checkProvider = exports.getProvider = exports.getProviderNetworks = exports.providerNames = exports.setupProviders = void 0;
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
;
|
;
|
||||||
const ethNetworks = ["default", "mainnet", "sepolia"];
|
const ethNetworks = ["default", "mainnet", "goerli"];
|
||||||
//const maticNetworks = [ "matic", "maticmum" ];
|
//const maticNetworks = [ "matic", "maticmum" ];
|
||||||
const ProviderCreators = [
|
const ProviderCreators = [
|
||||||
{
|
{
|
||||||
@ -31,13 +31,6 @@ const ProviderCreators = [
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
*/
|
*/
|
||||||
{
|
|
||||||
name: "ChainstackProvider",
|
|
||||||
networks: ["default", "mainnet", "arbitrum", "bnb", "matic"],
|
|
||||||
create: function (network) {
|
|
||||||
return new index_js_1.ChainstackProvider(network);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "EtherscanProvider",
|
name: "EtherscanProvider",
|
||||||
networks: ethNetworks,
|
networks: ethNetworks,
|
||||||
@ -59,15 +52,13 @@ const ProviderCreators = [
|
|||||||
return index_js_1.InfuraProvider.getWebSocketProvider(network, "49a0efa3aaee4fd99797bfa94d8ce2f1");
|
return index_js_1.InfuraProvider.getWebSocketProvider(network, "49a0efa3aaee4fd99797bfa94d8ce2f1");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/*
|
|
||||||
{
|
{
|
||||||
name: "PocketProvider",
|
name: "PocketProvider",
|
||||||
networks: ethNetworks,
|
networks: ethNetworks,
|
||||||
create: function(network: string) {
|
create: function (network) {
|
||||||
return new PocketProvider(network);
|
return new index_js_1.PocketProvider(network);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
name: "QuickNodeProvider",
|
name: "QuickNodeProvider",
|
||||||
networks: ethNetworks,
|
networks: ethNetworks,
|
||||||
@ -144,7 +135,7 @@ function getProvider(provider, network) {
|
|||||||
exports.getProvider = getProvider;
|
exports.getProvider = getProvider;
|
||||||
function checkProvider(provider, network) {
|
function checkProvider(provider, network) {
|
||||||
const creator = getCreator(provider);
|
const creator = getCreator(provider);
|
||||||
return (creator != null && creator.networks.indexOf(network) >= 0);
|
return (creator != null);
|
||||||
}
|
}
|
||||||
exports.checkProvider = checkProvider;
|
exports.checkProvider = checkProvider;
|
||||||
function connect(network) {
|
function connect(network) {
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
|
21
lib.commonjs/_tests/index.d.ts
vendored
21
lib.commonjs/_tests/index.d.ts
vendored
@ -1,21 +0,0 @@
|
|||||||
import "./test-abi.js";
|
|
||||||
import "./test-address.js";
|
|
||||||
import "./test-contract.js";
|
|
||||||
import "./test-crypto.js";
|
|
||||||
import "./test-hash.js";
|
|
||||||
import "./test-hash-typeddata.js";
|
|
||||||
import "./test-providers-avatar.js";
|
|
||||||
import "./test-providers-ccip.js";
|
|
||||||
import "./test-providers-wildcard.js";
|
|
||||||
import "./test-rlp.js";
|
|
||||||
import "./test-transaction.js";
|
|
||||||
import "./test-utils-maths.js";
|
|
||||||
import "./test-utils-misc.js";
|
|
||||||
import "./test-utils-units.js";
|
|
||||||
import "./test-utils-utf8.js";
|
|
||||||
import "./test-wallet.js";
|
|
||||||
import "./test-wallet-hd.js";
|
|
||||||
import "./test-wallet-json.js";
|
|
||||||
import "./test-wallet-mnemonic.js";
|
|
||||||
import "./test-wordlists.js";
|
|
||||||
//# sourceMappingURL=index.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,mBAAmB,CAAA;AAC1B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,gBAAgB,CAAC;AACxB,OAAO,0BAA0B,CAAC;AAClC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAClC,OAAO,8BAA8B,CAAC;AACtC,OAAO,eAAe,CAAA;AACtB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC"}
|
|
@ -1,31 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
require("./test-abi.js");
|
|
||||||
require("./test-address.js");
|
|
||||||
require("./test-contract.js");
|
|
||||||
require("./test-crypto.js");
|
|
||||||
require("./test-hash.js");
|
|
||||||
require("./test-hash-typeddata.js");
|
|
||||||
require("./test-providers-avatar.js");
|
|
||||||
require("./test-providers-ccip.js");
|
|
||||||
require("./test-providers-wildcard.js");
|
|
||||||
require("./test-rlp.js");
|
|
||||||
require("./test-transaction.js");
|
|
||||||
require("./test-utils-maths.js");
|
|
||||||
require("./test-utils-misc.js");
|
|
||||||
require("./test-utils-units.js");
|
|
||||||
require("./test-utils-utf8.js");
|
|
||||||
require("./test-wallet.js");
|
|
||||||
require("./test-wallet-hd.js");
|
|
||||||
require("./test-wallet-json.js");
|
|
||||||
require("./test-wallet-mnemonic.js");
|
|
||||||
require("./test-wordlists.js");
|
|
||||||
////import "./test-contract-integ.js";
|
|
||||||
////import "./test-providers-data.js";
|
|
||||||
//import "./test-providers-errors.js";
|
|
||||||
////import "./test-providers-extra.js";
|
|
||||||
////import "./test-providers-send.js";
|
|
||||||
/*
|
|
||||||
test-crypto-algoswap.ts
|
|
||||||
*/
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/_tests/index.ts"],"names":[],"mappings":";;AAAA,yBAAuB;AACvB,6BAA0B;AAC1B,8BAA4B;AAC5B,4BAA0B;AAC1B,0BAAwB;AACxB,oCAAkC;AAClC,sCAAoC;AACpC,oCAAkC;AAClC,wCAAsC;AACtC,yBAAsB;AACtB,iCAA+B;AAC/B,iCAA+B;AAC/B,gCAA8B;AAC9B,iCAA+B;AAC/B,gCAA8B;AAC9B,4BAA0B;AAC1B,+BAA6B;AAC7B,iCAA+B;AAC/B,qCAAmC;AACnC,+BAA6B;AAE7B,sCAAsC;AAEtC,sCAAsC;AACtC,sCAAsC;AACtC,uCAAuC;AACvC,sCAAsC;AAEtC;;EAEE"}
|
|
1
lib.commonjs/_tests/test-abi.d.ts
vendored
1
lib.commonjs/_tests/test-abi.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-abi.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-abi.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-abi.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
function equal(actual, expected) {
|
function equal(actual, expected) {
|
||||||
@ -66,9 +68,7 @@ describe("Test Bytes32 strings", function () {
|
|||||||
describe("Test Interface", function () {
|
describe("Test Interface", function () {
|
||||||
const iface = new index_js_1.Interface([
|
const iface = new index_js_1.Interface([
|
||||||
"function balanceOf(address owner) returns (uint)",
|
"function balanceOf(address owner) returns (uint)",
|
||||||
"event Transfer(address indexed from, address indexed to, uint amount)",
|
"event Transfer(address indexed from, address indexed to, uint amount)"
|
||||||
// #4244
|
|
||||||
"event RedemptionRequested(bytes20 indexed walletPubKeyHash, bytes redeemerOutputScript, address indexed redeemer, uint64 requestedAmount, uint64 treasuryFee, uint64 txMaxFee)"
|
|
||||||
]);
|
]);
|
||||||
it("does interface stuff; @TODO expand this", function () {
|
it("does interface stuff; @TODO expand this", function () {
|
||||||
const addr = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
|
const addr = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
|
||||||
@ -97,18 +97,6 @@ describe("Test Interface", function () {
|
|||||||
assert_1.default.equal(filter[0], "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
|
assert_1.default.equal(filter[0], "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
|
||||||
assert_1.default.equal(filter[1], "0x0000000000000000000000008ba1f109551bd432803012645ac136ddd64dba72");
|
assert_1.default.equal(filter[1], "0x0000000000000000000000008ba1f109551bd432803012645ac136ddd64dba72");
|
||||||
assert_1.default.equal(filter[2], "0x000000000000000000000000ac1639cf97a3a46d431e6d1216f576622894cbb5");
|
assert_1.default.equal(filter[2], "0x000000000000000000000000ac1639cf97a3a46d431e6d1216f576622894cbb5");
|
||||||
// See: #4244
|
|
||||||
// https://goerli.etherscan.io/tx/0xe61cef4cd706db8e23114717a207d76cc6b0df0b74ec52805551c4d1bf347a27#eventlog
|
|
||||||
// See `RedemptionRequested` event.
|
|
||||||
{
|
|
||||||
const walletPubKeyHash = "0x03b74d6893ad46dfdd01b9e0e3b3385f4fce2d1e";
|
|
||||||
const redeemer = "0x086813525A7dC7dafFf015Cdf03896Fd276eab60";
|
|
||||||
const filterWithBytes20 = iface.encodeFilterTopics("RedemptionRequested", [walletPubKeyHash, undefined, redeemer]);
|
|
||||||
assert_1.default.equal(filterWithBytes20.length, 3);
|
|
||||||
assert_1.default.equal(filterWithBytes20[0], "0x97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d95");
|
|
||||||
assert_1.default.equal(filterWithBytes20[1], "0x03b74d6893ad46dfdd01b9e0e3b3385f4fce2d1e000000000000000000000000");
|
|
||||||
assert_1.default.equal(filterWithBytes20[2], "0x000000000000000000000000086813525a7dc7dafff015cdf03896fd276eab60");
|
|
||||||
}
|
|
||||||
const eventLog = iface.encodeEventLog("Transfer", [addr, addr2, 234]);
|
const eventLog = iface.encodeEventLog("Transfer", [addr, addr2, 234]);
|
||||||
assert_1.default.equal(eventLog.data, "0x00000000000000000000000000000000000000000000000000000000000000ea");
|
assert_1.default.equal(eventLog.data, "0x00000000000000000000000000000000000000000000000000000000000000ea");
|
||||||
assert_1.default.deepEqual(eventLog.topics, [
|
assert_1.default.deepEqual(eventLog.topics, [
|
||||||
@ -131,21 +119,6 @@ describe("Test Interface", function () {
|
|||||||
assert_1.default.equal(log.args[1], "0xAC1639CF97a3A46D431e6d1216f576622894cBB5");
|
assert_1.default.equal(log.args[1], "0xAC1639CF97a3A46D431e6d1216f576622894cBB5");
|
||||||
assert_1.default.equal(log.args[2], BigInt(234));
|
assert_1.default.equal(log.args[2], BigInt(234));
|
||||||
});
|
});
|
||||||
// See #4248
|
|
||||||
it("formats JSON ABI parameters with default empty string for `name` key", function () {
|
|
||||||
assert_1.default.deepEqual(JSON.parse(iface.getFunction("balanceOf").format('json')), {
|
|
||||||
constant: false,
|
|
||||||
inputs: [
|
|
||||||
{ name: "owner", type: "address" }
|
|
||||||
],
|
|
||||||
name: "balanceOf",
|
|
||||||
outputs: [
|
|
||||||
{ name: "", type: "uint256" }
|
|
||||||
],
|
|
||||||
payable: false,
|
|
||||||
type: "function",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
describe("Tests Legacy ABI formats", function () {
|
describe("Tests Legacy ABI formats", function () {
|
||||||
// See: #3932
|
// See: #3932
|
||||||
|
File diff suppressed because one or more lines are too long
1
lib.commonjs/_tests/test-address.d.ts
vendored
1
lib.commonjs/_tests/test-address.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-address.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-address.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-address.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
describe("computes checksum address", function () {
|
describe("computes checksum address", function () {
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-address.js","sourceRoot":"","sources":["../../src.ts/_tests/test-address.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"test-address.js","sourceRoot":"","sources":["../../src.ts/_tests/test-address.ts"],"names":[],"mappings":"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"}
|
1
lib.commonjs/_tests/test-contract-integ.d.ts
vendored
1
lib.commonjs/_tests/test-contract-integ.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-contract-integ.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-contract-integ.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-contract-integ.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
describe("Tests contract integration", function () {
|
describe("Tests contract integration", function () {
|
||||||
const provider = new index_js_1.ethers.JsonRpcProvider("http:/\/127.0.0.1:8545");
|
const provider = new index_js_1.ethers.JsonRpcProvider("http:/\/127.0.0.1:8545");
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-contract-integ.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract-integ.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"test-contract-integ.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract-integ.ts"],"names":[],"mappings":"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"}
|
1
lib.commonjs/_tests/test-contract.d.ts
vendored
1
lib.commonjs/_tests/test-contract.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-contract.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-contract.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":""}
|
|
@ -1,13 +1,14 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const create_provider_js_1 = require("./create-provider.js");
|
const create_provider_js_1 = require("./create-provider.js");
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
(0, create_provider_js_1.setupProviders)();
|
(0, create_provider_js_1.setupProviders)();
|
||||||
describe("Test Contract", function () {
|
describe("Test Contract", function () {
|
||||||
const addr = "0x24264C81146c23bbF83Db1d3F87d2111C2935Ffa";
|
const addr = "0x99417252Aad7B065940eBdF50d665Fb8879c5958";
|
||||||
const networkName = "sepolia";
|
|
||||||
const abi = [
|
const abi = [
|
||||||
"error CustomError1(uint256 code, string message)",
|
"error CustomError1(uint256 code, string message)",
|
||||||
"event EventUint256(uint256 indexed value)",
|
"event EventUint256(uint256 indexed value)",
|
||||||
@ -22,20 +23,20 @@ describe("Test Contract", function () {
|
|||||||
];
|
];
|
||||||
it("tests contract calls", async function () {
|
it("tests contract calls", async function () {
|
||||||
this.timeout(10000);
|
this.timeout(10000);
|
||||||
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
|
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
|
||||||
const contract = new index_js_1.Contract(addr, abi, provider);
|
const contract = new index_js_1.Contract(addr, abi, provider);
|
||||||
assert_1.default.equal(await contract.testCallAdd(4, 5), BigInt(9), "testCallAdd(4, 5)");
|
assert_1.default.equal(await contract.testCallAdd(4, 5), BigInt(9), "testCallAdd(4, 5)");
|
||||||
assert_1.default.equal(await contract.testCallAdd(6, 0), BigInt(6), "testCallAdd(6, 0)");
|
assert_1.default.equal(await contract.testCallAdd(6, 0), BigInt(6), "testCallAdd(6, 0)");
|
||||||
});
|
});
|
||||||
it("tests events", async function () {
|
it("tests events", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
|
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
|
||||||
assert_1.default.ok(provider);
|
assert_1.default.ok(provider);
|
||||||
const contract = new index_js_1.Contract(addr, abi, provider);
|
const contract = new index_js_1.Contract(addr, abi, provider);
|
||||||
const signer = new index_js_1.Wallet((process.env.FAUCET_PRIVATEKEY), provider);
|
const signer = new index_js_1.Wallet((process.env.FAUCET_PRIVATEKEY), provider);
|
||||||
const contractSigner = contract.connect(signer);
|
const contractSigner = contract.connect(signer);
|
||||||
const vUint256 = 42;
|
const vUint256 = 42;
|
||||||
const vAddrName = "tests.eth";
|
const vAddrName = "ethers.eth";
|
||||||
const vAddr = "0x228568EA92aC5Bc281c1E30b1893735c60a139F1";
|
const vAddr = "0x228568EA92aC5Bc281c1E30b1893735c60a139F1";
|
||||||
const vString = "Hello";
|
const vString = "Hello";
|
||||||
const vBytes = "0x12345678";
|
const vBytes = "0x12345678";
|
||||||
@ -216,9 +217,8 @@ describe("Test Typed Contract Interaction", function () {
|
|||||||
abi.push(`function testTyped(bool) public pure returns (string memory)`);
|
abi.push(`function testTyped(bool) public pure returns (string memory)`);
|
||||||
abi.push(`function testTyped(bytes memory) public pure returns (string memory)`);
|
abi.push(`function testTyped(bytes memory) public pure returns (string memory)`);
|
||||||
abi.push(`function testTyped(string memory) public pure returns (string memory)`);
|
abi.push(`function testTyped(string memory) public pure returns (string memory)`);
|
||||||
const addr = "0xf20ba47c47a32fc2d9ad846ff06f2fa6e89eec74";
|
const addr = "0x838f41545DA5e18AA0e1ab391085d22E172B7B02";
|
||||||
const networkName = "sepolia";
|
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
|
||||||
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
|
|
||||||
const contract = new index_js_1.Contract(addr, abi, provider);
|
const contract = new index_js_1.Contract(addr, abi, provider);
|
||||||
for (const { types, valueFunc } of tests) {
|
for (const { types, valueFunc } of tests) {
|
||||||
for (const type of types) {
|
for (const type of types) {
|
||||||
@ -298,17 +298,16 @@ describe("Test Contract Fallback", function () {
|
|||||||
name: "receive and non-payable fallback",
|
name: "receive and non-payable fallback",
|
||||||
address: "0x5b59d934f0d22b15e73b5d6b9ae83486b70df67e",
|
address: "0x5b59d934f0d22b15e73b5d6b9ae83486b70df67e",
|
||||||
abi: [
|
abi: [
|
||||||
"fallback()",
|
"fallback() payable",
|
||||||
"receive()"
|
"receive()"
|
||||||
],
|
],
|
||||||
sendNone: { data: "0x" },
|
sendNone: { data: "0x" },
|
||||||
sendData: { data: "0x" },
|
sendData: { data: "0x" },
|
||||||
sendValue: { data: "0x" },
|
sendValue: { data: "0x" },
|
||||||
sendDataAndValue: { error: "overrides" },
|
sendDataAndValue: { error: "overrides.value" },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
const networkName = "sepolia";
|
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
|
||||||
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
|
|
||||||
const testGroups = [
|
const testGroups = [
|
||||||
{
|
{
|
||||||
group: "sendNone",
|
group: "sendNone",
|
||||||
@ -348,7 +347,7 @@ describe("Test Contract Fallback", function () {
|
|||||||
assert_1.default.ok(true);
|
assert_1.default.ok(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await assert_1.default.rejects(func, function (error) {
|
assert_1.default.rejects(func, function (error) {
|
||||||
if (error.message === send.error) {
|
if (error.message === send.error) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-crypto-algoswap.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-crypto-algoswap.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-crypto-algoswap.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
describe("test registration", function () {
|
describe("test registration", function () {
|
||||||
let hijack = "";
|
let hijack = "";
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-crypto-algoswap.js","sourceRoot":"","sources":["../../src.ts/_tests/test-crypto-algoswap.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"test-crypto-algoswap.js","sourceRoot":"","sources":["../../src.ts/_tests/test-crypto-algoswap.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,0CAMqB;AAmBrB,QAAQ,CAAC,mBAAmB,EAAE;IAE1B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,SAAS,SAAS,CAAC,IAAY;QAC3B,OAAO,UAAS,GAAG,IAAgB;YAC/B,MAAM,GAAG,YAAa,IAAK,KAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAA;IACL,CAAC;IAED,MAAM,KAAK,GAAoB;QAC3B;YACI,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,CAAE,IAAI,CAAE;YAChB,SAAS,EAAE,0BAA0B;YACrC,SAAS,EAAE,oBAAS;SACvB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAE,IAAI,CAAE;YAChB,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,iBAAM;SACpB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAE,IAAI,CAAE;YAChB,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,iBAAM;SACpB;QACD;YACI,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,CAAE,IAAI,CAAE;YAChB,SAAS,EAAE,0BAA0B;YACrC,SAAS,EAAE,oBAAS;SACvB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAE;YAC1C,SAAS,EAAE,2CAA2C;YACtD,SAAS,EAAE,iBAAM;SACpB;QACD;YACI,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE;YACtC,SAAS,EAAE,0CAA0C;YACrD,SAAS,EAAE,qBAAU;SACxB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE;YACtC,SAAS,EAAE,2CAA2C;YACtD,SAAS,EAAE,iBAAM;SACpB;QACD;YACI,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,CAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAE;YAChC,SAAS,EAAE,wCAAwC;YACnD,SAAS,EAAE,sBAAW;SACzB;QACD;YACI,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,CAAE,EAAE,CAAE;YACd,SAAS,EAAE,4BAA4B;YACvC,SAAS,EAAE,sBAAW;YACtB,SAAS,EAAE,CAAC,KAAU,EAAE,EAAE;gBACtB,OAAO,CAAC,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;SACJ;KACJ,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QAChE,EAAE,CAAC,+BAAgC,IAAK,EAAE,EAAE,KAAK;YAC7C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;YAE3C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAEpC,gBAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YACjD,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEhC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,SAAS,EAAE;gBACX,gBAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACpD;iBAAM;gBACH,gBAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;aACrD;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE;QACjC,IAAA,eAAI,GAAE,CAAC;QAEP,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;YACrD,gBAAM,CAAC,MAAM,CAAC;gBACV,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1C,CAAC,EAAE,UAAS,KAAU;gBAClB,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,GAAI,IAAK,YAAY,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
|
1
lib.commonjs/_tests/test-crypto.d.ts
vendored
1
lib.commonjs/_tests/test-crypto.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-crypto.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-crypto.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-crypto.ts"],"names":[],"mappings":""}
|
|
@ -1,30 +1,31 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
const index_js_2 = require("../index.js");
|
|
||||||
describe("test hashing", function () {
|
describe("test hashing", function () {
|
||||||
const tests = (0, utils_js_1.loadTests)("hashes");
|
const tests = (0, utils_js_1.loadTests)("hashes");
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes sha2-256: ${test.name}`, function () {
|
it(`computes sha2-256: ${test.name}`, function () {
|
||||||
assert_1.default.equal((0, index_js_2.sha256)(test.data), test.sha256);
|
assert_1.default.equal((0, index_js_1.sha256)(test.data), test.sha256);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes sha2-512: ${test.name}`, function () {
|
it(`computes sha2-512: ${test.name}`, function () {
|
||||||
assert_1.default.equal((0, index_js_2.sha512)(test.data), test.sha512);
|
assert_1.default.equal((0, index_js_1.sha512)(test.data), test.sha512);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes ripemd160: ${test.name}`, function () {
|
it(`computes ripemd160: ${test.name}`, function () {
|
||||||
assert_1.default.equal((0, index_js_2.ripemd160)(test.data), test.ripemd160);
|
assert_1.default.equal((0, index_js_1.ripemd160)(test.data), test.ripemd160);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes keccak256: ${test.name}`, function () {
|
it(`computes keccak256: ${test.name}`, function () {
|
||||||
assert_1.default.equal((0, index_js_2.keccak256)(test.data), test.keccak256);
|
assert_1.default.equal((0, index_js_1.keccak256)(test.data), test.keccak256);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -32,31 +33,31 @@ describe("test password-based key derivation", function () {
|
|||||||
const tests = (0, utils_js_1.loadTests)("pbkdf");
|
const tests = (0, utils_js_1.loadTests)("pbkdf");
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes pbkdf2: ${test.name}`, function () {
|
it(`computes pbkdf2: ${test.name}`, function () {
|
||||||
const password = (0, index_js_1.getBytes)(test.password);
|
const password = Buffer.from(test.password.substring(2), "hex");
|
||||||
const salt = (0, index_js_1.getBytes)(test.salt);
|
const salt = Buffer.from(test.salt.substring(2), "hex");
|
||||||
const { iterations, algorithm, key } = test.pbkdf2;
|
const { iterations, algorithm, key } = test.pbkdf2;
|
||||||
const result = (0, index_js_2.pbkdf2)(password, salt, iterations, test.dkLen, algorithm);
|
const result = (0, index_js_1.pbkdf2)(password, salt, iterations, test.dkLen, algorithm);
|
||||||
assert_1.default.equal(result, key);
|
assert_1.default.equal(result, key);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes scrypt (sync): ${test.name}`, function () {
|
it(`computes scrypt (sync): ${test.name}`, function () {
|
||||||
this.timeout(1000);
|
this.timeout(1000);
|
||||||
const password = (0, index_js_1.getBytes)(test.password);
|
const password = Buffer.from(test.password.substring(2), "hex");
|
||||||
const salt = (0, index_js_1.getBytes)(test.salt);
|
const salt = Buffer.from(test.salt.substring(2), "hex");
|
||||||
const { N, r, p, key } = test.scrypt;
|
const { N, r, p, key } = test.scrypt;
|
||||||
const result = (0, index_js_2.scryptSync)(password, salt, N, r, p, test.dkLen);
|
const result = (0, index_js_1.scryptSync)(password, salt, N, r, p, test.dkLen);
|
||||||
assert_1.default.equal(result, key);
|
assert_1.default.equal(result, key);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes scrypt (async): ${test.name}`, async function () {
|
it(`computes scrypt (async): ${test.name}`, async function () {
|
||||||
this.timeout(1000);
|
this.timeout(1000);
|
||||||
const password = (0, index_js_1.getBytes)(test.password);
|
const password = Buffer.from(test.password.substring(2), "hex");
|
||||||
const salt = (0, index_js_1.getBytes)(test.salt);
|
const salt = Buffer.from(test.salt.substring(2), "hex");
|
||||||
const { N, r, p, key } = test.scrypt;
|
const { N, r, p, key } = test.scrypt;
|
||||||
let progressCount = 0, progressOk = true, lastProgress = -1;
|
let progressCount = 0, progressOk = true, lastProgress = -1;
|
||||||
const result = await (0, index_js_2.scrypt)(password, salt, N, r, p, test.dkLen, (progress) => {
|
const result = await (0, index_js_1.scrypt)(password, salt, N, r, p, test.dkLen, (progress) => {
|
||||||
if (progress < lastProgress) {
|
if (progress < lastProgress) {
|
||||||
progressOk = false;
|
progressOk = false;
|
||||||
}
|
}
|
||||||
@ -74,405 +75,8 @@ describe("test hmac", function () {
|
|||||||
tests.forEach((test) => {
|
tests.forEach((test) => {
|
||||||
it(`computes hmac: ${test.name}`, async function () {
|
it(`computes hmac: ${test.name}`, async function () {
|
||||||
const { algorithm, key, data } = test;
|
const { algorithm, key, data } = test;
|
||||||
assert_1.default.equal((0, index_js_2.computeHmac)(algorithm, key, data), test.hmac);
|
assert_1.default.equal((0, index_js_1.computeHmac)(algorithm, key, data), test.hmac);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe("tests ECDH shared secret", function () {
|
|
||||||
const tests = [
|
|
||||||
{
|
|
||||||
"name": "test-0",
|
|
||||||
"keyA": "0xb484f7e25b06a887c3a01c97db40b5d96a1bd1ce69f342442a8395bfc995c34c",
|
|
||||||
"keyB": "0x407f75dc7d9f420c54bcc51189a16841b75aab53827d3ed54d5548448136f577",
|
|
||||||
"shared": "0x04131c0361e18fbdfb1575b06763225e8e7d4b6d33a6b6f369f20ff05bb6bb79cf6f510154615774f14a68ec405244fc8cba9fecdf012d22988575bf7f72f55cea"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-1",
|
|
||||||
"keyA": "0x953287b3e32f93c3ae8974d380b88f9a6d89ce2969c4b589cf4d068ec719c885",
|
|
||||||
"keyB": "0xf92ec8bea281236772a90219e9c661d475c6dd457dbf71f3076e9f136a7dee2b",
|
|
||||||
"shared": "0x04b0d910de1a56e19a300e4cf7d8946fab088da26bad0be01b3139af7f61633387c110d00a9f4059a75808c7471665242996b0999677bfef0f8c9b2eb9cb7ff3f0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-2",
|
|
||||||
"keyA": "0xe47de7c043683a3facabbd72097c5c1c9148fc2d66854dfc32df924bfdb45a13",
|
|
||||||
"keyB": "0x5bfe0ef6a3c40797a4b013d01bbc02dfb150c46cb04c85a52be5d5d370d1f60a",
|
|
||||||
"shared": "0x04abcb75054302b210ac0ab42d412e47cc08bfc0d29298edc3a1c0f11d88c49240a8f922ca57dfbc003e6655337c75d5598b704ea91546206d9495aa61213aa96a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-3",
|
|
||||||
"keyA": "0x3f0b65deb1a95ec280649e81b933ef382441fdc875f6280d782e45628f0dccd7",
|
|
||||||
"keyB": "0x3aeb016c64f23b276f816aa5494a2cec07361d2a4a0d4992a5b99764127e8f9e",
|
|
||||||
"shared": "0x04de883e02e1842f87796a83790b646615902e2a0612477bc63002f23a94d700c15632660cf6018f10a81785a9f294dd100309e397e88e7d1b7d70f601a4cf3b1b"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-4",
|
|
||||||
"keyA": "0xb9f059a915d6421848ae4344c64f1803342a7991c1fd567d61238aaaab583a5a",
|
|
||||||
"keyB": "0x0beb07549d6496d635c45152673455268f4beb89c07ff049c6e269dfa867ac2c",
|
|
||||||
"shared": "0x0411f59f62bd3033dba981f23fac5cc0718737dabeea9f060d0fd572383007402b539dd60b23b936c7842fcf16f4fb0524cc07ab02a06c3be8b33113a20f3d47d0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-5",
|
|
||||||
"keyA": "0xb48da3af696d7893c818b5e38ff682ab77818dccb80599f36b5108ad25214cf0",
|
|
||||||
"keyB": "0xac732d7e814ef45ef8a7acf31c4f04eef30247c992b558c8523f4894e599e772",
|
|
||||||
"shared": "0x0499778f55f0e87e28d72991c380a2ea5147f0336f5bc7d7ef6a1b2ef25e8949d05e3a5e60a1d605abe69427daf321a118f648c4b4da2529843b5409df921fb927"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-6",
|
|
||||||
"keyA": "0x90b5123740bf282e9622ff8a2511692e0abc897bd61a64f49c2497967cb45dd5",
|
|
||||||
"keyB": "0x471e8f4b20e3328d4a25c20dad734e0bdc160c6c3dd3709858ca6ba6ce74d24b",
|
|
||||||
"shared": "0x04428de953d7409c419a6f11622c4a4d087082b54bc8207c514534ecf7901723c1f58359631ba94e95c05d934a2eedcecd705bbb61dd8f57cbb08572dc69e6a782"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-7",
|
|
||||||
"keyA": "0x9f7f6431c1318481003fd21871b4b8a86ca779caaef10fec2209479b5072ea15",
|
|
||||||
"keyB": "0xb6be68f448ac1092a704613f3a75324b5c58157f3595c48a3825a0089d7f9d3c",
|
|
||||||
"shared": "0x0468218704c8c364d4d1838c7f66ccab205797eab0b02b93b75cf4e4437dbe13e7d9d0830971758b3a65e75eab577954b42f6721c104e4b876b77b8db63d23d43d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-8",
|
|
||||||
"keyA": "0xb9113e35ac2f7ba2a315e9f4301275cf561b91860f612d14a351273e38c04966",
|
|
||||||
"keyB": "0x00c3101f5d3d6272299180fd426dc1554854cb06dc911bc85fa97327d4fa3f21",
|
|
||||||
"shared": "0x04532cc9a89b735f0a11a0dbbbd40b05460dcf8e41e9da8359c727336a245d5d9babcca050434b81c01a6c70bd27692123f99377f22c0651bc0b01ae9871624894"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-9",
|
|
||||||
"keyA": "0xf569179eccaaf12c837a7362b7fbe41976dbf760270fa759e3dff18ae2bbe5fd",
|
|
||||||
"keyB": "0xc8654bad899f2e827d581f45db8b7f295a0dcfe5253577d8604c08d589180527",
|
|
||||||
"shared": "0x04d3568b0d1203d09cf9d1707c3ed1a44eb0230d2169c19c89433df8330010160885e6e626ce4505ac6ce7dda68bd57d2ddaa07a5ef5a4685c6a4e3784b8ad9184"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-10",
|
|
||||||
"keyA": "0x0ffd74c78276a1bcffe332b0545400e5992c87f2a2f91caa71ad76215ed2b229",
|
|
||||||
"keyB": "0x47dcfdf847d5b572784d546e0c5048aa4e613e74936fcc5438b75370d5f5525a",
|
|
||||||
"shared": "0x040fc7a5c5a7f9bfb98b596d698dbb0a87e1dcd50457544644acfb09ee3802835bbadc7717d06f4cc19af3bd308755eedfb162055b08134d63a49231ef9a38e503"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-11",
|
|
||||||
"keyA": "0x9777dd28dd62dbf7b17244b8e7b49b3cb673b81ef9dabbb196c23ccd3d0b22e6",
|
|
||||||
"keyB": "0xbc1f73ca7cdc51e1264429d6f6b581c75b3a5986cb993f09ab779156764ae1b1",
|
|
||||||
"shared": "0x04493d9be34f59077b11f56f8f883bb1f9ff247500f482f3ff6c1adcee9860442529b957a92ddc3a40391859e3b853b95c8e2159cf2dcfcf70ad4d6b7b55386f37"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-12",
|
|
||||||
"keyA": "0xd0ae54b6b72ddc5b8ed416251671bb488f9bd18e63fc60ed10dbcd12920d2f65",
|
|
||||||
"keyB": "0x2bcfd3837358a43cb181613ebdb152d72efc9fe7dada0c6bc44eb84d61070e2a",
|
|
||||||
"shared": "0x049f2d2eb2a6ba4937ab44c8ab1769c4b64b74b4d187f965c5ec1272cbe53d79858c8bcadfc17a37d95633da3881fb0e2900a1dfd1ac7160d67fa3dbd81b3de268"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-13",
|
|
||||||
"keyA": "0x14dbcd45b32a3ece2adb1691352096d395354928f7ceb5197c85cfe95b4e23eb",
|
|
||||||
"keyB": "0x111ed2f1a9fafbe021cb07033f0a1d45084fbb6b2facd008fe1d89e7ad029ae8",
|
|
||||||
"shared": "0x0441389bf60228a087c317d6a07b41ce9da09a4749c6b595ba5d8deef7eb7d8c21d266450b3df6a2a2d29ed149e909b3381604c74b5154da7cdcb9bb26336a6aa5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-14",
|
|
||||||
"keyA": "0x3e7d474097eb34d76c38d4bc586f9cefc3bed6d8c172e4e5fea4016e0f820e1c",
|
|
||||||
"keyB": "0x3d8c224427a5cc554fd064020017c20f655c347f344afa68d133b1e3b8bfb0d6",
|
|
||||||
"shared": "0x04acd1f4ff562dd474f6ecda6f94b9d6eac65c497f0b103f1b6bcf03fd306f82505d5c5aa9de302f9c0577e479392795eaa13d68e2c6fe665ed7dc249d5a9ca7bd"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-15",
|
|
||||||
"keyA": "0xa79deef7a811761554cc019967eeb15ad61b6a69b266e3a091c1e00d3bcd2057",
|
|
||||||
"keyB": "0x43fcca9678c66d1ef35617ade47cf015f75da19d1b7189144a0be0c1631a4a00",
|
|
||||||
"shared": "0x0470131669ac84dc65ada0c23469b39cc42a54df3482577427a7aab58bddaf13dc05469397717be0882fa7c37b8b7bbfbf49b500d1f17a3b6fe8c7f233eb2ac2b1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-16",
|
|
||||||
"keyA": "0x1945930000f6a3bdf339d5b632c3864f9ce8a0370243dd2bdcf805aa8f9e80e8",
|
|
||||||
"keyB": "0xa97c423f9cc5827730b33ba804d15c8c97406f154a71561e3ed263299781e591",
|
|
||||||
"shared": "0x0414fca0eb5db9d0b52f64b5e7b794659e87f2ee6816e83076d1e16446f5e9646fb1dd042027eee659363958d472f4a38f9bc400556dd85c7802eb1b87d4250581"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-17",
|
|
||||||
"keyA": "0x5f6e300343975539ba132a6bf26c2b3fa827ee558bb6698c86bbc84ea8a71577",
|
|
||||||
"keyB": "0xc015b1dddc249815a81d9c7f54f4676b10a3ec321d9d0ddd35b800557fed6431",
|
|
||||||
"shared": "0x0476371203edee28e291a2b0fabccdf1018c395b090a8ffff2feec116d3cd103e6d3fa1ea02ddecdbd392dc076ea959c318abf2d69c06e35a92e4f09249d4d73b6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-18",
|
|
||||||
"keyA": "0x3f4f0a728833e864f96e202060239743ceb1150cc75094195e6bd4f53e7bf62a",
|
|
||||||
"keyB": "0x5a7b89392da6f39464967d315ecfbe8822b75062d68f3a43cc2a928a6abf2993",
|
|
||||||
"shared": "0x04959db3cb80d503579bc587399d09b043778c66115d1354ce449e060d3599bf2faa4adcf7da0419aa0af732ab5b82fe3ed68e5e5860dd2f6610f3f4f2ca7351eb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-19",
|
|
||||||
"keyA": "0xc3106be0925e0d69703e4ea6d3dbee7903a8b8bb293ae59b2f90b0efdb0b3a1a",
|
|
||||||
"keyB": "0x44cf9575f03af5afc03c36f62433ebd52579d894c759cab76d29a4b9d0bae083",
|
|
||||||
"shared": "0x04a980b037da455ec856a7e3a9f63e8b9daf73f8e1e929f3f10e2c4b603b5bca48264c057ce04a25f5f48d87d27a43f7192aaac3340d7d5972e2ad3efc5de20c13"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-20",
|
|
||||||
"keyA": "0xb6c7bd2ba0d2b30d3e56d038398c2c937fb5cae348accdc060fb882903312008",
|
|
||||||
"keyB": "0x9ed8d5fb02fa0e825e7e095cfd32f9e817e8cd030c4363470f55d17e37cf73ef",
|
|
||||||
"shared": "0x042aa9b64ce873f5a3005a8eaee54e823f17633eec0a808ce0e24286f3c169485c2b7145f10deee39073056ce69c7d8bbbd2ff693b33b8749ae2b2f47e2e342397"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-21",
|
|
||||||
"keyA": "0x9f44756603bca7e87e2dd718ef2323f12854056aae86dc9e31715f97c0b3dc12",
|
|
||||||
"keyB": "0xd1ae23664d6320f9989b031cd7357fe346e207ffe73ed51de7c485754b8f1578",
|
|
||||||
"shared": "0x04037ab94245dad8282b4fabfec79ae5ca26367db2f45a183eb4c0f0c9ab7bf0d2b33503981159468f660711fb956eb730675b1e34f1e7d0aca07b936b64c47d56"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-22",
|
|
||||||
"keyA": "0x4c6307b149f1052290dc0140d6d597c25ddd23bc0ca826a9f44215009d13dad5",
|
|
||||||
"keyB": "0x9845254fdb40c7c74d0f9f3c6f73ce97a27f4306368685448b1f72dfbb3dd5d9",
|
|
||||||
"shared": "0x04f0ea5528a2efa16d424dbc07d49d3d2943e842289c6472f1cdeded965438326af76bb47449b417ef3b82130096f3c019d0ae3ffc3c9631f065a3285ba8539bfd"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-23",
|
|
||||||
"keyA": "0xab6ac9d67466cae30d31584104970e1093ebda6690dc9bf7bea1f66f07ddfcb7",
|
|
||||||
"keyB": "0xc0f58e549e7984e780cbc307b2a6b4c4863302474d271637586fa7cc0e389df8",
|
|
||||||
"shared": "0x045d5fd0d76d168b746462231a5bfb07fc175f43b206622781614e3df3491ba4c3738c4d3ae2d7f18ab0570c86aeb139778219fcc57cac3d42726de0f38d31b52a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-24",
|
|
||||||
"keyA": "0x5b0e950974450f38dba31e01379814f0ed1b0f983cfda62dfecff5cd3e8db391",
|
|
||||||
"keyB": "0x4739f9e168dee9af2c8a9107b18738c9e3335115af8a431810ecce5269fba577",
|
|
||||||
"shared": "0x04da8ab5cf841804f0b5845f36e46e3463dfa3d6d9e7a306962062b729c680b2e8fdbf2b3eb2bdcc90d2884b9217dbdb3ad3620cd844982f19920e5d4f59353504"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-25",
|
|
||||||
"keyA": "0x9f3583cffcbe992d4a537defb5d8479c2bfa96a39a3f33fcf40123854bc96ea4",
|
|
||||||
"keyB": "0x42fe9367ef668babd70d4f5e836627cc78990b8a1738a56adf23baebf9410b48",
|
|
||||||
"shared": "0x0414edfdae5d2db370a51b5cf45ee6049621f52dd15eb5136c795ed364221c0a5c0f32e9ebbc9211b121ccc06516756e9280b210abe5b1a8f6c658dc69c39341f5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-26",
|
|
||||||
"keyA": "0x289406a24a7794b04469a4acf9846e905ed4cae37349101db835f90e25d09605",
|
|
||||||
"keyB": "0xb2d58cdc470106c12f538b4516559d8ecaad0bcae063848a44f8639168453b93",
|
|
||||||
"shared": "0x04a9a80e466ea54aa0651eccde081e47637d2c142e1aaaf42572ee0753a49f7667c94b99f5bc2bf632b1330e3ffef95d009560e61084cbc07aab020282af5721f9"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-27",
|
|
||||||
"keyA": "0xd9bcf36ef585f59e1570904784f0a3df6435c798bec7e1c406e922d51f98b510",
|
|
||||||
"keyB": "0x40244928c9d371a427a0ce96530120deee3d31af086db679ee6bd8c1a7773030",
|
|
||||||
"shared": "0x04ac55594d87dfdd8af303c5f92745d49fba6ff15afb628212bc5d432d97bbd909938873c298fb93c851d901bf178e14ef1d590ff0dca7f7ead5613e97e3a824db"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-28",
|
|
||||||
"keyA": "0x301b79d85431a2c8bc21236cc58e1221eeb0862d3e3cfb29534423e6992e7591",
|
|
||||||
"keyB": "0xe6a62f0c49971b7b11477fc964d777de92267ab09f1465520ca31edcd7abaffe",
|
|
||||||
"shared": "0x049b7326b33eacc5ee3c102cae791d1835219253b70596f6a36892f2bb35fda1aebd661c781ac38b2461ac67b80ea1c18cd0230d024712a4e1826a6c5463874b0f"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-29",
|
|
||||||
"keyA": "0x49542517ff2bd70e851405cf285cf2280f84af838e2b0a68ed779f96d0ce62eb",
|
|
||||||
"keyB": "0x48ffc78034851d2f4e610bc11b97c21d42f5d7bbada2415ee8f03f6b643c92b7",
|
|
||||||
"shared": "0x04dc12a233b08ff25ee7806cfede3565dedd663e0cd25108ad233b6c5c8f8c25fe82d4b2820fa44e0ef86d51d0eada0033854a1199644204f9233887e457775bb0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-30",
|
|
||||||
"keyA": "0x6597a9b39b58bd47561fd4058894ee327368fdd8b8b267efa0596793c3852ed8",
|
|
||||||
"keyB": "0xbcab19f22f0cca9fc791f998a5717bc4c81853ff4f1c974a7dde7ecef41b4802",
|
|
||||||
"shared": "0x043d622a7f3255437c9f6459e68d5e3333d377b76ac053a50affbdf88c555508c42000b092dbb07b72ecf5887766ebb2e47afdb3d8324b7938d9255171d971b1a8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-31",
|
|
||||||
"keyA": "0x4127797885e7b8b7c882fec5cf38be273f42de47261e8ea4aab49769d606dd01",
|
|
||||||
"keyB": "0xc82a9b18f2f060adaf4f7cf56f29a2f4859d12a452b8b9f079f8850423fba666",
|
|
||||||
"shared": "0x045e7b62ced9cebd94d2115b11f2e9ca6f9a66119a17296613a60439d2960747f927c305822fe15582bb62f48c574aa7c89e7b2c8e5d4affc86f097e794bdf029d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-32",
|
|
||||||
"keyA": "0xf5ffbd9bf88dd867ace131df25fc9bd9ab87b7834d91786f110f40eb2e7b73b2",
|
|
||||||
"keyB": "0x203fe0bd83081d65fe45f194c373dd84c61fcdcfd4783d18e0e060f56efde038",
|
|
||||||
"shared": "0x04cddff70996f116a874442da0a33ac3df0e99f063bd1066644e6ca88442bda15d5b46fe8c6de7467a13c65febf4a6d258ffae99784c21fa61fa8a3b384b666154"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-33",
|
|
||||||
"keyA": "0x5073d19c09be03d0c41cef0b950e13b85ee87c4c1642061addbdfd34c3258618",
|
|
||||||
"keyB": "0x37cf3617c1728e613c738c9b61fc84b76490128b3a584a861862416b1bb5ca60",
|
|
||||||
"shared": "0x046234004e627b076d7bb6b6aedae341ab755f5f3dbca295fb2a70ae3206f26543c8f031605764e7dfb377a12c0be3a61df6983707ba62955487cc36ba8e8c0812"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-34",
|
|
||||||
"keyA": "0x0378dd63bb9f1fd4b0b7c266239ca574c7f6f7ca62645b3e9edcf763918eb110",
|
|
||||||
"keyB": "0xfd144b5e82bb6dbbcc9e9b714d64e283b748e85ba93b0113727fc1670251c6dc",
|
|
||||||
"shared": "0x0481f04971c2282e9850ee373aba6ec92390e3ff12b95d86d339dfce7dfa592f012ef71875aba27adec232a90f209f420c6e7c73fd40f165ba9b6196a10ca5e82b"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-35",
|
|
||||||
"keyA": "0xfa99235e06ec83c103ab50653ff5af505b085892781a6e743c7398219562ffe4",
|
|
||||||
"keyB": "0x6a8850083fdf6ecb9f9bdb613f1c6706fe233e2e74fad460f7c650751bf999e9",
|
|
||||||
"shared": "0x0407117676960073ab08890efd07eb6222584b2c8ad9a1eb64f9e610138c10a4d59f4ca496910ac35a1fad24e56fc08020ffac2dfabb2d79bbcc041e70dffb203c"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-36",
|
|
||||||
"keyA": "0x3abcf36699a174e462196891e49e72759f707d7f82ae5e64a49f1273927802ae",
|
|
||||||
"keyB": "0x44212cd650066f2371908cc6ba520061745db823c64b8b99dae535e364fe7034",
|
|
||||||
"shared": "0x04c354916600479cbbf9d91f5b851ee075f0aac99befa434f3f3b30fa887a0a7af71129ea47b388ac41538a71f9e52f68473ccc2611ace7cdd999ee036bc43b459"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-37",
|
|
||||||
"keyA": "0x858512678a61f3d286fd1a90cb8fb8960d8cffaa31686706d0a879d66acabc7f",
|
|
||||||
"keyB": "0x490e29655cb5da0dcd2f60e4583cb41b7ad9a801fbc00a2927968f06b0c14852",
|
|
||||||
"shared": "0x040dde94c952ec15bcba15d773ba0dfa9cb5ed7731cda1b7f8110fa91f843173f83d577f601b61f2df21b9f7cbf2b1d54792a6f9403c2446a480af7b69e23b8d21"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-38",
|
|
||||||
"keyA": "0xaeb4d6c2a817e5882f991f0c3c81d0f6f2d3d8854d472511a211cae67adae695",
|
|
||||||
"keyB": "0x72c297384a02544ba9719c0ce1f0ad3cb4e89b57536880f65c0462d1f058a55f",
|
|
||||||
"shared": "0x041a61bd828eacb1aaacbbb3b0291d691f5fc1462f16fc55f828b1f28e73342957de6b718501e66c3a1885ce16e124adb600457095ba770f58be012d0b69ca949a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-39",
|
|
||||||
"keyA": "0xb0fc529ff1bb4a7985663d54b279cbf4a597ec922a810ca16b87697ef3ef0dd3",
|
|
||||||
"keyB": "0xaf6019921bc7db54c334102a766d32d3ff06fd68ed08efe8ca2a35ce5074dcd0",
|
|
||||||
"shared": "0x04b49b24610350fde84bf067affc1d9f7ac549b3c4c05fa963aade41e65d6645cf867466f6c87e11298cb433f45f65eec4c5d88e76acdd5515a92802ded42c6e0a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-40",
|
|
||||||
"keyA": "0x160fdb84df11195fb0d33335e593499c3505cadce25ffdf6cdd8af0cb78d400c",
|
|
||||||
"keyB": "0xb37568a52ead1debcb2d402fa3d58f212a37321aae2cea1b90b263a3276bfdce",
|
|
||||||
"shared": "0x04091c2e14e517d9990425bb5d0a9e48f3bfe27a1cb673182fe1f7dc27bd6a56043a7745c9d27052e60ce72a1d82357f6675fadf9994add784c45821f52f2b094e"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-41",
|
|
||||||
"keyA": "0x253ca7443d94998bab1f508e3424c662831c6be6ec5d387e97c79f078087ff15",
|
|
||||||
"keyB": "0x38102245618fddf8a1bd7de152c6fa630523223b89a1649d5f2fa5f9e47ffe4a",
|
|
||||||
"shared": "0x04046754be94d9ad925f67b1bc80fe32cd6920f9f80327cdc83f68e95d999b1d8ab7b41844db1c1ea66662b42737169daefc675c9364583565e3982b674d8a30dd"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-42",
|
|
||||||
"keyA": "0xef558874b5b1d5915c83e3c1e4554d73de1e9943af445eba3f6516b731cc0126",
|
|
||||||
"keyB": "0x956e32c2e87263215b8c31c7f2e7311d6acad863f3c428b0625c9376cbc405cd",
|
|
||||||
"shared": "0x047e9265334e20ad8747098147b0eabb6d01c8ab12722cf0bbede05c1beaa67e8e770e04e19cf6035f48289fbe85cd4b9496a9ca5a90d088f8e75a0c1c6c7f1cc8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-43",
|
|
||||||
"keyA": "0x32c00e0d3a2ba3db6685058e1327dcee6425068190890439391fdb95857f27b0",
|
|
||||||
"keyB": "0x8b39021f7ad57a101534977d323c0349cecc8405d93286c6e71a441f4cc16c86",
|
|
||||||
"shared": "0x04c8095c862e64f6866fd3c177ed898fa3ca5da2d585c60ea4646d8f2cb9f332dbd54ca9d3b2a9e852a15189a0eb97a8edfaa114a01277418aa2ecfdfb3770caa0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-44",
|
|
||||||
"keyA": "0x40627c6987e20c07014833e23a0b9304bbaf66525a59b892e224944b56d3117a",
|
|
||||||
"keyB": "0xe23607bff98d5699816836f65e5405f2e60d4fe2449979acd43ee2b3e9bfc218",
|
|
||||||
"shared": "0x04be3ec3c188e7c74944d42beddf19003aeb0ccf8cccf8532b220dc666520f277e8b98b87ee694e8c76256e51ebf69433479c69a4ccef3032e9cb550632db539f8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-45",
|
|
||||||
"keyA": "0x46c25bcd7d2f8ce6d27148a11f18e0314046260433f8cc6421be4dcd72a6e088",
|
|
||||||
"keyB": "0xf29022ca90a60d455d0b1470034d1c7fbba27a9997b1940a9373a97d092f965e",
|
|
||||||
"shared": "0x041f5fd1dd02afa8ce5d2877a05ce92a4db5aef022a8203551590343352c1bd6e71cad811974a74f49d140949aa091dc4262cf7da0b48bdfa26939cf4b9c461f52"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-46",
|
|
||||||
"keyA": "0x6d6b69d4f9fafd986e5b1a9c36f3021aae9ce64c027f1bf9bd9e9e12d86a276b",
|
|
||||||
"keyB": "0xeed0cabb4ae5a696e762c98e6d697bd88a89d9a0b38458c6e696f0748e404fe6",
|
|
||||||
"shared": "0x04f2f9c8fa945577d7188292f5c4a4fad80bdcc3db44d6d5c15bda5a23971ac7046cb8af44bb5864a9e0e82c921805663c539a22f8c5ef22187062564f1359f4d2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-47",
|
|
||||||
"keyA": "0xf6b6d733b8c473a562f7a23c7cbb23f40273d809d13aeb308149ad709c674300",
|
|
||||||
"keyB": "0xd873a7d24c1f498a43c181f566f265cda248f9e2df8a825e69a73aeb1437dad9",
|
|
||||||
"shared": "0x0495f669c1c7271be4c8e628017ef570a0cb903887c3ea4897f09cc9ecd2a4f6b043e1fa41d1ddbf8f01e60368bc95e81ae2a8bf4922374294b0836ff7e43ad2ab"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-48",
|
|
||||||
"keyA": "0x28410a640558a5da5b7746a46a9cdefc704ba2944f23699d3767f6505a97eb78",
|
|
||||||
"keyB": "0xfd1a548275be4d922cc294276d7b059cea0fbbcb629be29bb8072de597a96597",
|
|
||||||
"shared": "0x04fca25ec051c8532f664fe2c2e213d1bd3e298422232dd34e821245256e0bff4ff80fb1f03524fd57d1d4a6effc076899cc21dde0be10d60016c20c33b7524d00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-49",
|
|
||||||
"keyA": "0x89e51abd416ad4579d523bed183da74b991c589decb982649a0abedfe6061c0f",
|
|
||||||
"keyB": "0x22b4cad2ade397b86756c2457516cd23d0858700b0597fdb2433e891efa435e3",
|
|
||||||
"shared": "0x049316e68898db5d7c987fbfa371b1fbd6a56d585bde1017a825d1dfaad406b428a505e773e63ddd0244b0e25ddc1b08dda6dd9968673f7b10c40d8fe8a1e1d55f"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-50",
|
|
||||||
"keyA": "0x2c645e1abac8e5848617067e6c3d739a6f126484d27f73bc8fdfdc9f0ac3ff04",
|
|
||||||
"keyB": "0x71252585fb806d9273c0103dcf642b419e7632ef3aeba3efc6c71863b50ae177",
|
|
||||||
"shared": "0x04886ec11347e30fc5e68a353201d702c4425358791ea6a6213c444c7489e38103c953fe13f4238dbe769f0d6208f693e356f81e7037977cf8a5b04661e37d2569"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-51",
|
|
||||||
"keyA": "0x572a1ce3adfc10ca3afc39262d36c329ba44d7cfa6ca5c62d2e882ac25480d47",
|
|
||||||
"keyB": "0x2b9081d499417315277663c86e25dd7898ea67e969b632dd11e80d29e92b557f",
|
|
||||||
"shared": "0x0424c5ae82f447c156d97ed31c83f36cf3416cb4a72666bb4e8a61687a4ba4ae22b42f7d18579ff204f7974af9f8dcc51d8f9eabc45c720f607478ba78c2b2921c"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-52",
|
|
||||||
"keyA": "0x60ba350fb7e0729ad992f53a314eacce65da6897856e362d2ef0959e890b9e99",
|
|
||||||
"keyB": "0x6a9629c655cf4f8b8816e95df1c14f769cb946431c6da17a04423ceef8979ee1",
|
|
||||||
"shared": "0x04831e236ece1bde7db14b819c06e0a17964b88b5fc4e8253a8dc316d613fad8ffdb5117eb920f34ce838d6861caa0e885e3c20d37cfd20e19d1092d52976e0f91"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-53",
|
|
||||||
"keyA": "0x32eb6769ade64560a016e080f5e16ea97b2d0cb96b730e9c5c809bfd19a002c4",
|
|
||||||
"keyB": "0x7dff2eb8455b0e9c0fd38838db3d3de96067a6efc05d21d1bb303ca0bd52d87d",
|
|
||||||
"shared": "0x04b0cf54b0590546e434a5e3d2071c3c022d4b3b571660b359cee7d199e525965e9f38d12436affda7741d5b752e0b430149a1ec6d7835a6999e64b3ea324e91c6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-54",
|
|
||||||
"keyA": "0x70446e5ede6e26b96d3cecfe8afc35055a0a90f83c7db4d1b8a819d5cddb6642",
|
|
||||||
"keyB": "0x2df217bf6e92875e35af50bfa301059b2ddf593c0694b70116a8c87ee27ef4c9",
|
|
||||||
"shared": "0x0458e1554b06a40b9508d86d5cedeb3dccb82053881393306b1894d198412500dc0efa4dad2265d7532e59d06f71cf33f3d48728b4707434a5c722eea8d9a9acbc"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-55",
|
|
||||||
"keyA": "0x64e16f672ec5aba6be5a4965d44bd7224aae65d444ceee6dd58690e527b36186",
|
|
||||||
"keyB": "0xefb054ff4222e8e493cb667f56129dc1b6a3437581280a3f984ff0ea09ec3029",
|
|
||||||
"shared": "0x04c806576fb79b4d7d38d00a3ee2c2896dfb1b29ef3a42ac72a82c7bf7626f2073a79aec8ee2c3c101845ce5171b27a9f23075ed74ccdae088956e3dcdbae74e7d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-56",
|
|
||||||
"keyA": "0x284a5592ab3fa9b8df2bf927761a667118697cd7413c255ef3cce9e9de76c321",
|
|
||||||
"keyB": "0x52d0033d83fbdeb0b7c8d21b475ec637fabfcc7c2593494d7e846ecd974083af",
|
|
||||||
"shared": "0x04e092613c7552c3180bdb041c32b9763804e6703c2c116009f1012526002472b5b627a85cb50c90942fe177bd36e2d4fbd8e9d835c72a607ee07ffead29cf12eb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-57",
|
|
||||||
"keyA": "0x488e6c2d97fe0ff3f5357254658ae487ade54bdf7bf871ffdfe27079cbeff103",
|
|
||||||
"keyB": "0x00f8632a6982d58c25236ce1952c19052f6b08edad61edd166570a8679a98f5c",
|
|
||||||
"shared": "0x048f02436bb55798561a6a78aacbeec67f0acd8ba88e99af6ec1b7b5152d9a5d7691a905c11fe26c2ba3d72be918f6ee7c3e66115a31a7f199f33073f6f5087181"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-58",
|
|
||||||
"keyA": "0x0067fd2eec16c7ddf9a364f591d47394bfc12fd2b3ccff1bf1013e92e969f6f0",
|
|
||||||
"keyB": "0x76f1e3f4abfb237ec3ac6e72a56f25bfa06e7561bc5fdc4823282f9db40c49d4",
|
|
||||||
"shared": "0x04975e88ffcd670b06e7752d3d375613d0cd614f2b3a812e684342dcc16be6de336af2bb30ab25da0362ecf43752b477b412081d723f5c6840ea78deacd5f76b4a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-59",
|
|
||||||
"keyA": "0x4ff02743564c317a3578c08f7961a204d48e511e31688ba069037f6090235b37",
|
|
||||||
"keyB": "0xcf22489e1b9058b4a645e38504eaa32e031dea44e1465eb1122e14e4847c9744",
|
|
||||||
"shared": "0x04e584b571a9f99087bc6cb7818741cfc3b630ec412f64da1ada72de17279afa60258c5844cc2c7c1416548497b083f2aeb035c8945c0aa03a25b97bad7870c136"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-60",
|
|
||||||
"keyA": "0xd140deee768594cea37e2eb5c89c60228083f93866ebd62c7c07a1a9f8a9bf58",
|
|
||||||
"keyB": "0xc9f2edf7ccd6db9f21ef5a3966ee11694dec652d60ef21a540802db8b990c370",
|
|
||||||
"shared": "0x0451b4a54b1fcdcbe4f5b97b3003bce3cc91f362cf2baa696ad0abca3cd21b12d4e4f3d1b0dc1c18599917f5fc9be7825d23999769d3811edf61a7ecc34525b403"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-61",
|
|
||||||
"keyA": "0x63dcf1d3db0d89a37df3734e88f601412a184030f15474a0d9687e3105361161",
|
|
||||||
"keyB": "0x5370bec049bcd28507f4078783d9378cd84b8e05230089e8987d3a485c945b08",
|
|
||||||
"shared": "0x04e27e5ec5eb72fa6bda376f832b4730d6f7b9104594fa191ac87198f0d4aeed47c79568cf8f59fae0e43e8bf0931c491eda0cce1f19efc4153aacde94e673ba7f"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-62",
|
|
||||||
"keyA": "0x465d0d758d8c7664d9e1bfa46fb5fb8e27265cb4bc28c0f7752d596910545028",
|
|
||||||
"keyB": "0xeff55416a21e627ec4c55a08c9a3f7378ae2953fd5bf0926bde15965cf6b4d5d",
|
|
||||||
"shared": "0x0487b20dbad3b5443594fc66470559206c37440a01ef91c24c38a51bc7bcf7676409789c6bc214087947ab8d0359927080422b2ecbd23e765bf6a79e4bbb456796"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test-63",
|
|
||||||
"keyA": "0x28469aab3ebc9efdec35b19e7c42a26311c649267ac92ae2ef2f5c8880eb517c",
|
|
||||||
"keyB": "0x786e828e92abb73818380b37395c67dcb6a72f3e0a440bdf1f5f132a0621fc78",
|
|
||||||
"shared": "0x046bfff91c9b31abb6df020018b66734c7f9fc4f7294c809c706b76c308982e5d75c10200fbdf67d75ba4b154223f591bfe3504006ba69634d4025c57b9af4ab73"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
for (const { name, keyA, keyB, shared } of tests) {
|
|
||||||
it(`tests shared secrets match: ${name}`, function () {
|
|
||||||
const signA = new index_js_2.SigningKey(keyA);
|
|
||||||
const signB = new index_js_2.SigningKey(keyB);
|
|
||||||
assert_1.default.equal(signA.computeSharedSecret(signB.publicKey), shared, "privA + pubB");
|
|
||||||
assert_1.default.equal(signB.computeSharedSecret(signA.publicKey), shared, "pubA + privB");
|
|
||||||
assert_1.default.equal(signA.computeSharedSecret(signB.privateKey), shared, "privA + privB");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=test-crypto.js.map
|
//# sourceMappingURL=test-crypto.js.map
|
File diff suppressed because one or more lines are too long
1
lib.commonjs/_tests/test-hash-typeddata.d.ts
vendored
1
lib.commonjs/_tests/test-hash-typeddata.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-hash-typeddata.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-hash-typeddata.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-hash-typeddata.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
describe("Tests Typed Data (EIP-712)", function () {
|
describe("Tests Typed Data (EIP-712)", function () {
|
||||||
@ -16,139 +18,4 @@ describe("Tests Typed Data (EIP-712)", function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
describe("Tests Typed Data (EIP-712) aliases", function () {
|
|
||||||
const tests = [
|
|
||||||
{
|
|
||||||
name: "uint",
|
|
||||||
types: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint256" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
typesAlias: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
a: 35,
|
|
||||||
b: "hello"
|
|
||||||
},
|
|
||||||
encoded: "0x859b6b4a5d436f85a809f6383b4b35a153aa6fe9c95946c366d9dfd634b89f4700000000000000000000000000000000000000000000000000000000000000231c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "int",
|
|
||||||
types: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "int256" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
typesAlias: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "int" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
a: 35,
|
|
||||||
b: "hello"
|
|
||||||
},
|
|
||||||
encoded: "0xa272ada5f88085e4cb18acdb87bd057a8cbfec249fee53de0149409080947cf500000000000000000000000000000000000000000000000000000000000000231c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "array-uint",
|
|
||||||
types: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint256[]" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
typesAlias: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint[]" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
a: [35, 36, 37],
|
|
||||||
b: "hello"
|
|
||||||
},
|
|
||||||
encoded: "0x1a961843d0002bdd66ec21afd6e4a5b0aac34a4b6112890378c6e3a38b752e0b0c22b846886e98aeffc1f1166d4b35868da4d4da853dcb3b2856cfc233fd10c81c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "array-int",
|
|
||||||
types: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "int256[]" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
typesAlias: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "int[]" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
a: [35, 36, 37],
|
|
||||||
b: "hello"
|
|
||||||
},
|
|
||||||
encoded: "0x0b89085a01a3b67d2231c6a136f9c8eea75d7d479a83a127356f8540ee15af010c22b846886e98aeffc1f1166d4b35868da4d4da853dcb3b2856cfc233fd10c81c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "nested-array-uint",
|
|
||||||
types: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint256[][]" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
typesAlias: {
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint[][]" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
a: [[35, 36], [37]],
|
|
||||||
b: "hello"
|
|
||||||
},
|
|
||||||
encoded: "0x5efa7c4b66979cf78fcc7c3e71cbfa04ec2c7529002642082bf20a91552c1147fa5ffe3a0504d850bc7c9eeda1cf960b596b73f4dc0272a6fa89dace08e320291c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"
|
|
||||||
},
|
|
||||||
];
|
|
||||||
for (const test of tests) {
|
|
||||||
it(`tests encoding typed-data: ${test.name}`, function () {
|
|
||||||
const encoder = index_js_1.TypedDataEncoder.from(test.types);
|
|
||||||
assert_1.default.equal(encoder.primaryType, "foo", "primaryType");
|
|
||||||
assert_1.default.equal(encoder.encodeData("foo", test.data), test.encoded, "encoded");
|
|
||||||
const encoderAlias = index_js_1.TypedDataEncoder.from(test.typesAlias);
|
|
||||||
assert_1.default.equal(encoderAlias.primaryType, "foo", "primaryType");
|
|
||||||
assert_1.default.equal(encoderAlias.encodeData("foo", test.data), test.encoded, "encoded");
|
|
||||||
const payload = index_js_1.TypedDataEncoder.getPayload({}, test.types, test.data);
|
|
||||||
const payloadAlias = index_js_1.TypedDataEncoder.getPayload({}, test.typesAlias, test.data);
|
|
||||||
assert_1.default.equal(JSON.stringify(payloadAlias), JSON.stringify(payload), "payload");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
it(`tests overriding an alias as a type`, function () {
|
|
||||||
const encoder = index_js_1.TypedDataEncoder.from({
|
|
||||||
uint: [
|
|
||||||
{ name: "value", type: "uint256" }
|
|
||||||
],
|
|
||||||
foo: [
|
|
||||||
{ name: "a", type: "uint" },
|
|
||||||
{ name: "b", type: "string" },
|
|
||||||
]
|
|
||||||
});
|
|
||||||
assert_1.default.equal(encoder.primaryType, "foo", "primaryType");
|
|
||||||
const data = encoder.encodeData("foo", {
|
|
||||||
a: { value: 42 },
|
|
||||||
b: "hello"
|
|
||||||
});
|
|
||||||
const encoded = "0x87a4bfff36f1a2ecde6468d6acd51ecc5ef8f3a15d8115a412c686d82d3fdbe4628fc3080b86a044fb60153bb7dc3f904e9ed1cebadf35c17099a060ba4df90b1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8";
|
|
||||||
assert_1.default.equal(data, encoded, "encoded");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=test-hash-typeddata.js.map
|
//# sourceMappingURL=test-hash-typeddata.js.map
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-hash-typeddata.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash-typeddata.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"test-hash-typeddata.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash-typeddata.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,yCAAuC;AAGvC,0CAA+C;AAG/C,QAAQ,CAAC,4BAA4B,EAAE;IACnC,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAoB,YAAY,CAAC,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,EAAE,CAAC,8BAA+B,IAAI,CAAC,IAAK,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,2BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACnE,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAEjE,gBAAM,CAAC,KAAK,CAAC,2BAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC3F,gBAAM,CAAC,KAAK,CAAC,2BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;KACN;AACL,CAAC,CAAC,CAAC"}
|
1
lib.commonjs/_tests/test-hash.d.ts
vendored
1
lib.commonjs/_tests/test-hash.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-hash.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-hash.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-hash.ts"],"names":[],"mappings":""}
|
|
@ -1,10 +1,12 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
const index_js_2 = require("../index.js");
|
//import { dnsEncode, isValidName, namehash } from "../index.js";
|
||||||
describe("Tests Namehash", function () {
|
describe("Tests Namehash", function () {
|
||||||
const tests = (0, utils_js_1.loadTests)("namehash");
|
const tests = (0, utils_js_1.loadTests)("namehash");
|
||||||
for (const test of tests) {
|
for (const test of tests) {
|
||||||
@ -37,48 +39,94 @@ describe("Tests Namehash", function () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
describe("Test dnsEncode", function () {
|
/*
|
||||||
const tests = [
|
describe("Tests Bad ENS Names", function() {
|
||||||
{ name: "ricmoo.com", result: "0x067269636d6f6f03636f6d00" },
|
const badTests: Array<{ ensName: any, prefix: string }> = [
|
||||||
{ name: "ricmoo.com", length: 5, error: "exceeds 5 bytes" },
|
{ ensName: ".", prefix: "missing component" },
|
||||||
{
|
{ ensName:"..", prefix: "missing component" },
|
||||||
name: "a-very-long-label-without-a-length-override-foo-12345678901234567890",
|
{ ensName:"ricmoo..eth", prefix: "missing component" },
|
||||||
error: "exceeds 63 bytes"
|
{ ensName:"ricmoo...eth", prefix: "missing component" },
|
||||||
},
|
{ ensName:".foo", prefix: "missing component" },
|
||||||
{
|
{ ensName:"foo.", prefix: "missing component" },
|
||||||
name: "a-very-long-label-with-a-length-override-to-255-foo-12345678901234567890",
|
{ ensName: 1234, prefix: "not a string" },
|
||||||
length: 255, result: "0x48612d766572792d6c6f6e672d6c6162656c2d776974682d612d6c656e6774682d6f766572726964652d746f2d3235352d666f6f2d313233343536373839303132333435363738393000"
|
{ ensName: true, prefix: "not a string" },
|
||||||
},
|
|
||||||
];
|
];
|
||||||
for (const test of tests) {
|
|
||||||
it(`tests dnsEncode: ${test.name}`, function () {
|
// The empty string is not a valid name, but has a valid namehash
|
||||||
if (test.error) {
|
// (the zero hash) as it is the base case for recursion
|
||||||
assert_1.default.throws(() => {
|
it("empty ENS name", function() {
|
||||||
let result;
|
assert.ok(!isValidName(""), "!isValidName");
|
||||||
if (test.length != null) {
|
});
|
||||||
result = (0, index_js_2.dnsEncode)(test.name, test.length);
|
|
||||||
}
|
for (const { ensName, prefix } of badTests) {
|
||||||
else {
|
it(`fails on bad ENS name: ${ JSON.stringify(ensName) }`, function() {
|
||||||
result = (0, index_js_2.dnsEncode)(test.name);
|
assert.ok(!isValidName(ensName), "!isValidName");
|
||||||
}
|
assert.throws(() => {
|
||||||
console.log("result", result);
|
const result = namehash(ensName);
|
||||||
|
console.log(result);
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
return ((0, index_js_1.isError)(error, "INVALID_ARGUMENT") &&
|
const errorPrefix = `invalid ENS name; ${ prefix }`;
|
||||||
error.argument === "name" && error.value === test.name &&
|
return (error.code === "INVALID_ARGUMENT" &&
|
||||||
error.message.indexOf(test.error || "") >= 0);
|
error.argument === "name" && error.value === ensName &&
|
||||||
|
error.message.substring(0, errorPrefix.length) === errorPrefix);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (test.length != null) {
|
|
||||||
assert_1.default.equal((0, index_js_2.dnsEncode)(test.name, test.length), test.result, "dnsEncode(name, length)");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
assert_1.default.equal((0, index_js_2.dnsEncode)(test.name), test.result, "dnsEncode(name)");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Tests DNS Encoding", function() {
|
||||||
|
const tests: Array<{ ensName: string, dnsEncoded: string}> = [
|
||||||
|
{ ensName: "", dnsEncoded: "0x00" },
|
||||||
|
{ ensName: "ricmoo.eth", dnsEncoded: "0x067269636d6f6f0365746800" },
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const { ensName, dnsEncoded } of tests) {
|
||||||
|
it(`computes the DNS Encoding: ${ JSON.stringify(ensName) }`, function() {
|
||||||
|
assert.equal(dnsEncode(ensName), dnsEncoded, "dnsEncoded");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Tests DNS Names", function() {
|
||||||
|
const badTests: Array<{ ensName: any, prefix: string}> = [
|
||||||
|
{ ensName: ".", prefix: "invalid DNS name; missing component" },
|
||||||
|
{ ensName: "foo..bar", prefix: "invalid DNS name; missing component" },
|
||||||
|
{ ensName: ".foo", prefix: "invalid DNS name; missing component" },
|
||||||
|
{ ensName: "foo.", prefix: "invalid DNS name; missing component" },
|
||||||
|
{ ensName: 1234, prefix: "invalid DNS name; not a string" },
|
||||||
|
{ ensName: true, prefix: "invalid DNS name; not a string" },
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const { ensName, prefix } of badTests) {
|
||||||
|
it(`fails on bad DNS name: ${ JSON.stringify(ensName) }`, function() {
|
||||||
|
assert.throws(() => {
|
||||||
|
const result = dnsEncode(ensName);
|
||||||
|
console.log(result);
|
||||||
|
}, (error) => {
|
||||||
|
return (error.code === "INVALID_ARGUMENT" &&
|
||||||
|
error.argument === "name" && error.value === ensName &&
|
||||||
|
error.message.substring(0, prefix.length) === prefix);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const ensName = "foobar012345678901234567890123456789012345678901234567890123456789";
|
||||||
|
const prefix = "too long";
|
||||||
|
it(`fails on bad DNS name: ${ JSON.stringify(ensName) }`, function() {
|
||||||
|
assert.throws(() => {
|
||||||
|
const result = dnsEncode(ensName);
|
||||||
|
console.log(result);
|
||||||
|
}, (error) => {
|
||||||
|
return (error.code === "INVALID_ARGUMENT" &&
|
||||||
|
error.argument === "value" && error.value === ensName &&
|
||||||
|
error.message.substring(0, prefix.length) === prefix);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
*/
|
||||||
describe("Test EIP-191 Personal Message Hash", function () {
|
describe("Test EIP-191 Personal Message Hash", function () {
|
||||||
const tests = [
|
const tests = [
|
||||||
{
|
{
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-hash.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash.ts"],"names":[],"mappings":";;;AAAA,4DAA4B;AAE5B,0CAKqB;AAErB,yCAAsC;AAKtC,0CAAwC;AAExC,QAAQ,CAAC,gBAAgB,EAAE;IACvB,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAmB,UAAU,CAAC,CAAC;IAEtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,EAAE,CAAC,oBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,EAAE;gBAClD,MAAM,MAAM,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEtC,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAEhD,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,gBAAM,CAAC,EAAE,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;iBACvD;YACL,CAAC,CAAC,CAAC;SACN;KACJ;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,EAAE,CAAC,qCAAsC,IAAI,CAAC,KAAM,IAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,EAAE;gBACnF,gBAAM,CAAC,MAAM,CAAC;oBACV,MAAM,MAAM,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBAC3C,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;oBACT,OAAO,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,kBAAkB,CAAC;wBACtC,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAA;gBAEF,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,gBAAM,CAAC,EAAE,CAAC,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;iBACzD;YACL,CAAC,CAAC,CAAC;SACN;KACJ;AACL,CAAC,CAAC,CAAC;AAkGH,QAAQ,CAAC,gBAAgB,EAAE;IAEvB,MAAM,KAAK,GAA6B;QACpC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,4BAA4B,EAAE;QAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE;QAC3D;YACI,IAAI,EAAE,sEAAsE;YAC5E,KAAK,EAAE,kBAAkB;SAC5B;QACD;YACI,IAAI,EAAE,0EAA0E;YAChF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,wJAAwJ;SAChL;KACJ,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,EAAE,CAAC,oBAAqB,IAAI,CAAC,IAAK,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,KAAK,EAAE;gBAEZ,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBACf,IAAI,MAAM,CAAC;oBACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;wBACrB,MAAM,GAAG,IAAA,oBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC9C;yBAAM;wBACH,MAAM,GAAG,IAAA,oBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACjC;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAElC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;oBACT,OAAO,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,kBAAkB,CAAC;wBACtC,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI;wBACtD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;aAEN;iBAAM;gBACH,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;oBACrB,gBAAM,CAAC,KAAK,CAAC,IAAA,oBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;iBAC3F;qBAAM;oBACH,gBAAM,CAAC,KAAK,CAAC,IAAA,oBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBACtE;aACJ;QACL,CAAC,CAAC,CAAC;KACN;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE;IAC3C,MAAM,KAAK,GAAG;QACV;YACI,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,oEAAoE;SAC7E;QACD;YACI,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,IAAI,UAAU,CAAC,CAAE,IAAI,EAAE,IAAI,CAAE,CAAC;YACvC,IAAI,EAAE,oEAAoE;SAC7E;QACD;YACI,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,oEAAoE;SAC7E;KACJ,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,EAAE,CAAC,sBAAuB,IAAI,CAAC,IAAK,EAAE,EAAE;YACpC,gBAAM,CAAC,KAAK,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;KACN;AACL,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,8BAA8B,EAAE;IACrC,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAuB,iBAAiB,CAAC,CAAC;IAEjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,EAAE,CAAC,oCAAqC,IAAI,CAAC,IAAK,EAAE,EAAE;YAClD,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAuB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;KACN;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,EAAE,CAAC,iCAAkC,IAAI,CAAC,IAAK,EAAE,EAAE;YAC/C,gBAAM,CAAC,KAAK,CAAC,IAAA,+BAAoB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;KACN;IAED,MAAM,QAAQ,GAAG;QACb,EAAE,KAAK,EAAE,CAAE,OAAO,CAAE,EAAE,MAAM,EAAE,CAAE,CAAC,CAAE,EAAE;QACrC,EAAE,KAAK,EAAE,CAAE,QAAQ,CAAE,EAAE,MAAM,EAAE,CAAE,IAAI,CAAE,EAAE;QACzC,EAAE,KAAK,EAAE,CAAE,OAAO,CAAE,EAAE,MAAM,EAAE,CAAE,KAAK,CAAE,EAAE;KAC5C,CAAC;IAEF,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE;QACtC,EAAE,CAAC,iCAAiC,EAAE;YAClC,gBAAM,CAAC,MAAM,CAAC;gBACV,MAAM,MAAM,GAAG,IAAA,yBAAc,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,EAAE,UAAU,KAAK;gBACd,OAAO,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;KACN;AACL,CAAC,CAAC,CAAC"}
|
{"version":3,"file":"test-hash.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash.ts"],"names":[],"mappings":"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"}
|
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-providers-avatar.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-providers-avatar.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":""}
|
|
@ -1,18 +1,20 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const create_provider_js_1 = require("./create-provider.js");
|
const create_provider_js_1 = require("./create-provider.js");
|
||||||
(0, create_provider_js_1.setupProviders)();
|
(0, create_provider_js_1.setupProviders)();
|
||||||
describe("Resolve ENS avatar", function () {
|
describe("Resolve ENS avatar", function () {
|
||||||
[
|
[
|
||||||
{ title: "data", name: "data-avatar.tests.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
|
{ title: "data", name: "data-avatar.tests.ethers.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
|
||||||
{ title: "ipfs", name: "ipfs-avatar.tests.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
|
{ title: "ipfs", name: "ipfs-avatar.tests.ethers.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
|
||||||
{ title: "url", name: "url-avatar.tests.eth", value: "https:/\/ethers.org/static/logo.png" },
|
{ title: "url", name: "url-avatar.tests.ethers.eth", value: "https:/\/ethers.org/static/logo.png" },
|
||||||
].forEach((test) => {
|
].forEach((test) => {
|
||||||
it(`Resolves avatar for ${test.title}`, async function () {
|
it(`Resolves avatar for ${test.title}`, async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)("sepolia");
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
const avatar = await provider.getAvatar(test.name);
|
const avatar = await provider.getAvatar(test.name);
|
||||||
assert_1.default.equal(test.value, avatar, "avatar url");
|
assert_1.default.equal(test.value, avatar, "avatar url");
|
||||||
});
|
});
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":";;;AAAA,4DAA4B;AAE5B,6DAA+D;AAE/D,IAAA,mCAAc,GAAE,CAAC;AAEjB,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,owCAAowC,EAAE;QAC7zC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,8EAA8E,EAAE;QACvI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC,EAAE;KAC/F,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACP;;;;;;;;;;;;;MAaE;AACF,CAAC,CAAC,CAAC"}
|
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+D;AAE/D,IAAA,mCAAc,GAAE,CAAC;AAEjB,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,owCAAowC,EAAE;QACp0C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,8EAA8E,EAAE;QAC9I,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,qCAAqC,EAAE;KACtG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACP;;;;;;;;;;;;;MAaE;AACF,CAAC,CAAC,CAAC"}
|
1
lib.commonjs/_tests/test-providers-ccip.d.ts
vendored
1
lib.commonjs/_tests/test-providers-ccip.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-providers-ccip.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-providers-ccip.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
const create_provider_js_1 = require("./create-provider.js");
|
const create_provider_js_1 = require("./create-provider.js");
|
||||||
(0, create_provider_js_1.setupProviders)();
|
(0, create_provider_js_1.setupProviders)();
|
||||||
@ -15,12 +17,11 @@ describe("Test CCIP execution", function () {
|
|||||||
]);
|
]);
|
||||||
assert_1.default.equal(result, (0, index_js_1.keccak256)(check), "response is equal");
|
assert_1.default.equal(result, (0, index_js_1.keccak256)(check), "response is equal");
|
||||||
};
|
};
|
||||||
const address = "0xaeaa06a37e6421ac63120d6daddee0ffa04b43e8";
|
const address = "0x6C5ed35574a9b4d163f75bBf0595F7540D8FCc2d";
|
||||||
const networkName = "sepolia";
|
|
||||||
const calldata = "0x1234";
|
const calldata = "0x1234";
|
||||||
it("testGet passes under normal operation", async function () {
|
it("testGet passes under normal operation", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testGet(bytes callData = "0x1234")
|
// testGet(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address, enableCcipRead: true,
|
to: address, enableCcipRead: true,
|
||||||
@ -31,7 +32,7 @@ describe("Test CCIP execution", function () {
|
|||||||
});
|
});
|
||||||
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
|
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testGet(bytes callData = "0x1234")
|
// testGet(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address,
|
to: address,
|
||||||
@ -41,17 +42,13 @@ describe("Test CCIP execution", function () {
|
|||||||
const result = await provider.call(tx);
|
const result = await provider.call(tx);
|
||||||
console.log(result);
|
console.log(result);
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
const offchainErrorData = (0, index_js_1.concat)([
|
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||||
"0x556f1830000000000000000000000000",
|
|
||||||
address,
|
|
||||||
"0x00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000"
|
|
||||||
]);
|
|
||||||
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
|
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
|
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
provider.disableCcipRead = true;
|
provider.disableCcipRead = true;
|
||||||
// testGetFail(bytes callData = "0x1234")
|
// testGetFail(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
@ -62,17 +59,13 @@ describe("Test CCIP execution", function () {
|
|||||||
const result = await provider.call(tx);
|
const result = await provider.call(tx);
|
||||||
console.log(result);
|
console.log(result);
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
const offchainErrorData = (0, index_js_1.concat)([
|
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||||
"0x556f1830000000000000000000000000",
|
|
||||||
address,
|
|
||||||
"0x00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000"
|
|
||||||
]);
|
|
||||||
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
|
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it("testGetFail should fail if all URLs 5xx", async function () {
|
it("testGetFail should fail if all URLs 5xx", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testGetFail(bytes callData = "0x1234")
|
// testGetFail(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address, enableCcipRead: true,
|
to: address, enableCcipRead: true,
|
||||||
@ -89,7 +82,7 @@ describe("Test CCIP execution", function () {
|
|||||||
});
|
});
|
||||||
it("testGetSenderFail should fail if sender does not match", async function () {
|
it("testGetSenderFail should fail if sender does not match", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testGetSenderFail(bytes callData = "0x1234")
|
// testGetSenderFail(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address, enableCcipRead: true,
|
to: address, enableCcipRead: true,
|
||||||
@ -109,7 +102,7 @@ describe("Test CCIP execution", function () {
|
|||||||
});
|
});
|
||||||
it("testGetMissing should fail if early URL 4xx", async function () {
|
it("testGetMissing should fail if early URL 4xx", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testGetMissing(bytes callData = "0x1234")
|
// testGetMissing(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address, enableCcipRead: true,
|
to: address, enableCcipRead: true,
|
||||||
@ -126,7 +119,7 @@ describe("Test CCIP execution", function () {
|
|||||||
});
|
});
|
||||||
it("testGetFallback passes if any URL returns correctly", async function () {
|
it("testGetFallback passes if any URL returns correctly", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testGetFallback(bytes callData = "0x1234")
|
// testGetFallback(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address, enableCcipRead: true,
|
to: address, enableCcipRead: true,
|
||||||
@ -137,7 +130,7 @@ describe("Test CCIP execution", function () {
|
|||||||
});
|
});
|
||||||
it("testPost passes under normal operation", async function () {
|
it("testPost passes under normal operation", async function () {
|
||||||
this.timeout(60000);
|
this.timeout(60000);
|
||||||
const provider = (0, create_provider_js_1.connect)(networkName);
|
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||||
// testPost(bytes callData = "0x1234")
|
// testPost(bytes callData = "0x1234")
|
||||||
const tx = {
|
const tx = {
|
||||||
to: address, enableCcipRead: true,
|
to: address, enableCcipRead: true,
|
||||||
|
File diff suppressed because one or more lines are too long
1
lib.commonjs/_tests/test-providers-data.d.ts
vendored
1
lib.commonjs/_tests/test-providers-data.d.ts
vendored
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-providers-data.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-providers-data.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-data.ts"],"names":[],"mappings":""}
|
|
@ -1,10 +1,11 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const create_provider_js_1 = require("./create-provider.js");
|
const create_provider_js_1 = require("./create-provider.js");
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
const index_js_1 = require("../index.js");
|
|
||||||
const blockchain_data_js_1 = require("./blockchain-data.js");
|
const blockchain_data_js_1 = require("./blockchain-data.js");
|
||||||
(0, create_provider_js_1.setupProviders)();
|
(0, create_provider_js_1.setupProviders)();
|
||||||
function forEach(prefix, tests, func) {
|
function forEach(prefix, tests, func) {
|
||||||
@ -102,26 +103,13 @@ describe("Test Provider Address operations", function () {
|
|||||||
});
|
});
|
||||||
function assertObj(prefix, actual, expected) {
|
function assertObj(prefix, actual, expected) {
|
||||||
assert_1.default.ok(actual != null, `${prefix} is null`);
|
assert_1.default.ok(actual != null, `${prefix} is null`);
|
||||||
if (typeof (expected) !== "object") {
|
|
||||||
assert_1.default.equal(actual, expected, prefix);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (const key in expected) {
|
for (const key in expected) {
|
||||||
if (expected[key] === undefined) {
|
if (expected[key] === undefined) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (Array.isArray(expected[key])) {
|
|
||||||
assert_1.default.ok(Array.isArray(actual[key]), `Array.isArray(${prefix}.${key})`);
|
|
||||||
assert_1.default.equal(actual[key].length, expected[key].length, `${prefix}.${key}.length`);
|
|
||||||
for (let i = 0; i < expected[key].length; i++) {
|
|
||||||
assertObj(`${prefix}[${i}]`, actual[key][i], expected[key][i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
assert_1.default.equal(actual[key], expected[key], `${prefix}.${key}`);
|
assert_1.default.equal(actual[key], expected[key], `${prefix}.${key}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
function assertBlock(actual, expected) {
|
function assertBlock(actual, expected) {
|
||||||
// Check transactions
|
// Check transactions
|
||||||
for (let i = 0; i < expected.transactions.length; i++) {
|
for (let i = 0; i < expected.transactions.length; i++) {
|
||||||
@ -216,34 +204,4 @@ describe("Test Provider Transaction operations", function () {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe("Test Networks", function () {
|
|
||||||
const networks = [
|
|
||||||
"mainnet", "sepolia", "holesky",
|
|
||||||
"arbitrum", "arbitrum-sepolia",
|
|
||||||
"base", "base-sepolia",
|
|
||||||
"bnb", "bnbt",
|
|
||||||
"linea", "linea-sepolia",
|
|
||||||
"matic", "matic-mumbai", "matic-amoy",
|
|
||||||
"optimism", "optimism-sepolia",
|
|
||||||
"xdai",
|
|
||||||
];
|
|
||||||
const providerNames = [
|
|
||||||
"AlchemyProvider", "InfuraProvider", "AnkrProvider",
|
|
||||||
"QuickNodeProvider",
|
|
||||||
];
|
|
||||||
for (const providerName of providerNames) {
|
|
||||||
for (const networkName of networks) {
|
|
||||||
const network = index_js_1.Network.from(networkName);
|
|
||||||
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
|
|
||||||
if (provider == null || !(provider instanceof index_js_1.JsonRpcProvider)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
it(`checks network chainId: ${providerName}/${networkName}`, async function () {
|
|
||||||
this.timeout(10000);
|
|
||||||
const chainId = await provider.send("eth_chainId", []);
|
|
||||||
assert_1.default.equal(parseInt(chainId), network.chainId, "chainId");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=test-providers-data.js.map
|
//# sourceMappingURL=test-providers-data.js.map
|
File diff suppressed because one or more lines are too long
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-providers-errors.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-providers-errors.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-errors.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
const create_provider_js_1 = require("./create-provider.js");
|
const create_provider_js_1 = require("./create-provider.js");
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
@ -19,8 +21,8 @@ describe("Tests Provider Call Exception", function () {
|
|||||||
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
|
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
|
||||||
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
|
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
|
||||||
];
|
];
|
||||||
const testAddr = "0x86d19fF4b2EB0D451511B5B930b01DC71fD9a2Ee";
|
const testAddr = "0xF20Ba47c47a32fc2d9ad846fF06f2fa6e89eeC74";
|
||||||
const networkName = "sepolia";
|
const networkName = "goerli";
|
||||||
for (const { code, reason } of panics) {
|
for (const { code, reason } of panics) {
|
||||||
for (const method of ["call", "estimateGas"]) {
|
for (const method of ["call", "estimateGas"]) {
|
||||||
for (const providerName of create_provider_js_1.providerNames) {
|
for (const providerName of create_provider_js_1.providerNames) {
|
||||||
@ -132,7 +134,7 @@ describe("Tests Provider Call Exception", function () {
|
|||||||
});
|
});
|
||||||
describe("Test Provider Blockchain Errors", function () {
|
describe("Test Provider Blockchain Errors", function () {
|
||||||
const wallet = new index_js_1.Wallet((process.env.FAUCET_PRIVATEKEY));
|
const wallet = new index_js_1.Wallet((process.env.FAUCET_PRIVATEKEY));
|
||||||
const networkName = "sepolia";
|
const networkName = "goerli";
|
||||||
for (const providerName of create_provider_js_1.providerNames) {
|
for (const providerName of create_provider_js_1.providerNames) {
|
||||||
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
|
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
|
||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,2 +1 @@
|
|||||||
export {};
|
export {};
|
||||||
//# sourceMappingURL=test-providers-extra.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-providers-extra.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-extra.ts"],"names":[],"mappings":""}
|
|
@ -1,7 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tslib_1 = require("tslib");
|
const assert_1 = __importDefault(require("assert"));
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
const index_js_1 = require("../index.js");
|
||||||
const utils_js_1 = require("./utils.js");
|
const utils_js_1 = require("./utils.js");
|
||||||
describe("Test Etherscan extra APIs", function () {
|
describe("Test Etherscan extra APIs", function () {
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"test-providers-extra.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-extra.ts"],"names":[],"mappings":";;;AAAA,4DAA4B;AAE5B,0CAAgD;AAEhD,yCAAqC;AAGrC,QAAQ,CAAC,2BAA2B,EAAE;IAClC,IAAA,kBAAO,EAAC,oCAAoC,EAAE,KAAK;QAC/C,MAAM,QAAQ,GAAG,IAAI,4BAAiB,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACrE,gBAAM,CAAC,EAAE,CAAC,QAAQ,IAAI,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAChD,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
{"version":3,"file":"test-providers-extra.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-extra.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,0CAAgD;AAEhD,yCAAqC;AAGrC,QAAQ,CAAC,2BAA2B,EAAE;IAClC,IAAA,kBAAO,EAAC,oCAAoC,EAAE,KAAK;QAC/C,MAAM,QAAQ,GAAG,IAAI,4BAAiB,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACrE,gBAAM,CAAC,EAAE,CAAC,QAAQ,IAAI,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAChD,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
10
lib.commonjs/_tests/test-providers-fallback.d.ts
vendored
10
lib.commonjs/_tests/test-providers-fallback.d.ts
vendored
@ -1,10 +0,0 @@
|
|||||||
import { AbstractProvider, Network } from "../index.js";
|
|
||||||
import type { PerformActionRequest } from "../index.js";
|
|
||||||
export type Performer = (req: PerformActionRequest) => Promise<any>;
|
|
||||||
export declare class MockProvider extends AbstractProvider {
|
|
||||||
readonly _perform: Performer;
|
|
||||||
constructor(perform: Performer);
|
|
||||||
_detectNetwork(): Promise<Network>;
|
|
||||||
perform(req: PerformActionRequest): Promise<any>;
|
|
||||||
}
|
|
||||||
//# sourceMappingURL=test-providers-fallback.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"test-providers-fallback.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-fallback.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,gBAAgB,EAAoB,OAAO,EAE9C,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EACR,oBAAoB,EACvB,MAAM,aAAa,CAAC;AAWrB,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEpE,qBAAa,YAAa,SAAQ,gBAAgB;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAEjB,OAAO,EAAE,SAAS;IAKxB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAElC,OAAO,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;CAGzD"}
|
|
@ -1,138 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.MockProvider = void 0;
|
|
||||||
const tslib_1 = require("tslib");
|
|
||||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
||||||
const index_js_1 = require("../index.js");
|
|
||||||
const network = index_js_1.Network.from("mainnet");
|
|
||||||
function stall(duration) {
|
|
||||||
return new Promise((resolve) => { setTimeout(resolve, duration); });
|
|
||||||
}
|
|
||||||
class MockProvider extends index_js_1.AbstractProvider {
|
|
||||||
_perform;
|
|
||||||
constructor(perform) {
|
|
||||||
super(network, { cacheTimeout: -1 });
|
|
||||||
this._perform = perform;
|
|
||||||
}
|
|
||||||
async _detectNetwork() { return network; }
|
|
||||||
async perform(req) {
|
|
||||||
return await this._perform(req);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.MockProvider = MockProvider;
|
|
||||||
describe("Test Fallback broadcast", function () {
|
|
||||||
const txHash = "0x33017397ef7c7943dee3b422aec52b0a210de58d73d49c1b3ce455970f01c83a";
|
|
||||||
async function test(actions) {
|
|
||||||
// https://sepolia.etherscan.io/tx/0x33017397ef7c7943dee3b422aec52b0a210de58d73d49c1b3ce455970f01c83a
|
|
||||||
const tx = "0x02f87683aa36a7048459682f00845d899ef982520894b5bdaa442bb34f27e793861c456cd5bdc527ac8c89056bc75e2d6310000080c001a07503893743e94445b2361a444343757e6f59d52e19e9b3f65eb138d802eaa972a06e4e9bc10ff55474f9aac0a4c284733b4195cb7b273de5e7465ce75a168e0c38";
|
|
||||||
const providers = actions.map(({ timeout, error }) => {
|
|
||||||
return new MockProvider(async (r) => {
|
|
||||||
if (r.method === "getBlockNumber") {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (r.method === "broadcastTransaction") {
|
|
||||||
await stall(timeout);
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
return txHash;
|
|
||||||
}
|
|
||||||
throw new Error(`unhandled method: ${r.method}`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
;
|
|
||||||
const provider = new index_js_1.FallbackProvider(providers);
|
|
||||||
return await provider.broadcastTransaction(tx);
|
|
||||||
}
|
|
||||||
it("picks late non-failed broadcasts", async function () {
|
|
||||||
const result = await test([
|
|
||||||
{ timeout: 200, error: (0, index_js_1.makeError)("already seen", "UNKNOWN_ERROR") },
|
|
||||||
{ timeout: 4000, error: (0, index_js_1.makeError)("already seen", "UNKNOWN_ERROR") },
|
|
||||||
{ timeout: 400 },
|
|
||||||
]);
|
|
||||||
(0, assert_1.default)(result.hash === txHash, "result.hash === txHash");
|
|
||||||
});
|
|
||||||
it("picks late non-failed broadcasts with quorum-met red-herrings", async function () {
|
|
||||||
const result = await test([
|
|
||||||
{ timeout: 200, error: (0, index_js_1.makeError)("bad nonce", "NONCE_EXPIRED") },
|
|
||||||
{ timeout: 400, error: (0, index_js_1.makeError)("bad nonce", "NONCE_EXPIRED") },
|
|
||||||
{ timeout: 1000 },
|
|
||||||
]);
|
|
||||||
(0, assert_1.default)(result.hash === txHash, "result.hash === txHash");
|
|
||||||
});
|
|
||||||
it("insufficient funds short-circuit broadcast", async function () {
|
|
||||||
await assert_1.default.rejects(async function () {
|
|
||||||
const result = await test([
|
|
||||||
{ timeout: 200, error: (0, index_js_1.makeError)("is broke", "INSUFFICIENT_FUNDS") },
|
|
||||||
{ timeout: 400, error: (0, index_js_1.makeError)("is broke", "INSUFFICIENT_FUNDS") },
|
|
||||||
{ timeout: 800 },
|
|
||||||
{ timeout: 1000 },
|
|
||||||
]);
|
|
||||||
console.log(result);
|
|
||||||
}, function (error) {
|
|
||||||
(0, assert_1.default)((0, index_js_1.isError)(error, "INSUFFICIENT_FUNDS"));
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
describe("Test Inflight Quorum", function () {
|
|
||||||
// Fires the %%actions%% as providers which will delay before returning,
|
|
||||||
// and returns an array of arrays, where each sub-array indicates which
|
|
||||||
// providers were inflight at once.
|
|
||||||
async function test(actions, quorum) {
|
|
||||||
const inflights = [[]];
|
|
||||||
const configs = actions.map(({ delay, stallTimeout, priority, weight }, index) => ({
|
|
||||||
provider: new MockProvider(async (r) => {
|
|
||||||
if (r.method === "getBlockNumber") {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (r.method === "getBalance") {
|
|
||||||
// Add this as inflight
|
|
||||||
let last = inflights.pop();
|
|
||||||
if (last == null) {
|
|
||||||
throw new Error("no elements");
|
|
||||||
}
|
|
||||||
inflights.push(last);
|
|
||||||
last = last.slice();
|
|
||||||
last.push(index);
|
|
||||||
inflights.push(last);
|
|
||||||
// Do the thing
|
|
||||||
await stall(delay);
|
|
||||||
// Remove as inflight
|
|
||||||
last = inflights.pop();
|
|
||||||
if (last == null) {
|
|
||||||
throw new Error("no elements");
|
|
||||||
}
|
|
||||||
inflights.push(last);
|
|
||||||
last = last.filter((v) => (v !== index));
|
|
||||||
inflights.push(last);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
console.log(r);
|
|
||||||
throw new Error(`unhandled method: ${r.method}`);
|
|
||||||
}),
|
|
||||||
stallTimeout, priority, weight
|
|
||||||
}));
|
|
||||||
const provider = new index_js_1.FallbackProvider(configs, network, {
|
|
||||||
cacheTimeout: -1, pollingInterval: 100,
|
|
||||||
quorum
|
|
||||||
});
|
|
||||||
await provider.getBalance(index_js_1.ZeroAddress);
|
|
||||||
return inflights;
|
|
||||||
}
|
|
||||||
// See: #4298
|
|
||||||
it("applies weights against inflight requests", async function () {
|
|
||||||
this.timeout(2000);
|
|
||||||
const inflights = await test([
|
|
||||||
{ delay: 50, stallTimeout: 1000, priority: 1, weight: 2 },
|
|
||||||
{ delay: 50, stallTimeout: 1000, priority: 1, weight: 2 },
|
|
||||||
], 2);
|
|
||||||
// Make sure there is never more than 1 inflight provider at once
|
|
||||||
for (const running of inflights) {
|
|
||||||
assert_1.default.ok(running.length <= 1, `too many inflight requests: ${JSON.stringify(inflights)}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// @TODO: add lots more tests, checking on priority, weight and stall
|
|
||||||
// configurations
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=test-providers-fallback.js.map
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user