Compare commits

..

259 Commits

Author SHA1 Message Date
053ca44133 Change to @tornado/ethers and use @tornado/noble-curves
Some checks failed
Generate Documentation / Generate Documentation (push) Has been cancelled
Browser Tests / Run Browser Tests (push) Has been cancelled
CI Tests / Run Node.js Tests (18.x, commonjs) (push) Has been cancelled
CI Tests / Run Node.js Tests (18.x, esm) (push) Has been cancelled
CI Tests / Run Node.js Tests (20.x, commonjs) (push) Has been cancelled
CI Tests / Run Node.js Tests (20.x, esm) (push) Has been cancelled
CI Tests / Generate Coverage Report (push) Has been cancelled
Environment Tests / Test TypeScript Environments (commonjs, node) (push) Has been cancelled
Environment Tests / Test TypeScript Environments (commonjs, node16) (push) Has been cancelled
Environment Tests / Test TypeScript Environments (commonjs, nodenext) (push) Has been cancelled
Environment Tests / Test TypeScript Environments (es2020, node) (push) Has been cancelled
Environment Tests / Test TypeScript Environments (es2020, node16) (push) Has been cancelled
Environment Tests / Test TypeScript Environments (es2020, nodenext) (push) Has been cancelled
Environment Tests / Test Angular Environment (push) Has been cancelled
2024-04-18 20:05:00 -07:00
Richard Moore
b553b1bc43 admin: updated dist files 2024-04-17 01:09:22 -04:00
Richard Moore
631aa1d91f tests: migrated all goerli tests to sepolia; contracts and config 2024-04-17 01:08:25 -04:00
Richard Moore
8220090c20 admin: fixed typo in CI (#4634) 2024-04-16 21:49:57 -04:00
Richard Moore
d437d0fd17 admin: updated dist files 2024-04-16 21:49:08 -04:00
Richard Moore
16a22560ff docs: fixed typo in EtherscanProvider (#4666) 2024-04-16 21:47:30 -04:00
Richard Moore
b4aaab8d39 Added Linea Sepolia network and Infura endpoint (#4655). 2024-04-16 21:45:49 -04:00
Richard Moore
287f743107 admin: updated dist files 2024-04-16 21:35:12 -04:00
Richard Moore
c45935e29c Do not send unsubscribe messages to destroyed Providers (#4678). 2024-04-16 21:32:34 -04:00
Richard Moore
38e32d8214 Get definitive network from InfuraProvider when using InfuraWebSocketProvider. 2024-04-16 21:30:15 -04:00
Richard Moore
29beb93ea7 admin: updated dist files 2024-04-12 00:11:30 -04:00
Richard Moore
9230aa0b9a Better error messages for transaction field mismatch (#4659). 2024-04-12 00:09:48 -04:00
Richard Moore
ec6a754f0c Added prevRandao to block (#3372). 2024-04-12 00:08:01 -04:00
Richard Moore
501de23450 admin: updated dist files 2024-04-09 21:13:01 -04:00
Richard Moore
531ab95b3e Merge branch 'wip-4844-write' 2024-04-09 21:04:49 -04:00
Richard Moore
1717abbf29 Added Polygon Amoy testnet (#4645). 2024-04-09 20:58:48 -04:00
Richard Moore
014004d940 Added Chainstack provider (#2741). 2024-04-09 20:36:16 -04:00
Richard Moore
03bfe2a4f7 Added deep convertion to Result for toObject and toArray (#4681). 2024-04-09 20:02:29 -04:00
Richard Moore
a05f40f1be Added note on BLS modulo size per BLOb field. 2024-04-09 19:31:18 -04:00
Richard Moore
92bad88261 Added EIP-4844 broadcast support. 2024-03-27 14:43:57 -04:00
Richard Moore
12772e9498 Fix ignored throttle parameters (#4663). 2024-03-26 16:09:37 -04:00
Richard Moore
ad5f1c5fc7 admin: updated dist files 2024-02-14 13:14:24 -05:00
Richard Moore
556fdd91d9 Throw an error when attempting to derive from a master path from a non-master node (#4551). 2024-02-14 13:11:54 -05:00
Richard Moore
7f14bdebf1 Allow ENS wildcards with labels up to 255 bytes wide; discussed with ENS and deemed safe (#4543). 2024-02-14 12:36:29 -05:00
Richard Moore
f45bb87aef Enforce string is passed to toUtf8Bytes (#4583). 2024-02-14 12:32:43 -05:00
Richard Moore
7f0e140d5e Fix transaction.index not being populated on some backends (#4591). 2024-02-14 12:23:48 -05:00
Richard Moore
3a1d175c20 admin: updated dist files 2024-02-08 20:27:03 -05:00
Richard Moore
f02211d055 Allow transaction encoding for inferred type transactions. 2024-02-08 20:24:50 -05:00
Richard Moore
d8a7cbe83a admin: updated dist files 2024-02-05 19:59:21 -05:00
Richard Moore
c5f126faf7 Added EIP-4788, receipts root and state root fields to Block (#4570). 2024-02-05 19:56:26 -05:00
Richard Moore
cac1da1f91 admin: update dist files 2024-02-03 00:19:51 -05:00
Richard Moore
7b4f2c1a74 Added EIP-4844 fields to Provider classes and formatter (#4570). 2024-02-03 00:17:45 -05:00
Richard Moore
f1666f167f admin: updated dist files 2024-02-02 04:18:15 -05:00
Richard Moore
6bf19c1937 tests: added test for gasless ENS-DNS resolution 2024-02-02 04:17:10 -05:00
Richard Moore
416de27589 admin: update dist files; updated package-lock 2024-02-02 03:30:31 -05:00
Richard Moore
eeb1a4b650 admin: updated dist files 2024-02-02 03:25:03 -05:00
Richard Moore
47f1addb41 admin: update ens-normalize dependency 2024-02-02 03:11:24 -05:00
Richard Moore
b69f43bc6f Assert BrowserProvider receives an EIP-1193 provider to fail early when passing undefined ethereum object. 2024-02-02 03:10:40 -05:00
Richard Moore
095de51e60 Add timeout to ContractTransactionResponse wait (#4497). 2024-02-02 03:03:18 -05:00
Richard Moore
be5ec2d327 Allow override keyword in human-readable ABI and improve error messages (#4514, #4548). 2024-02-01 03:19:20 -05:00
Richard Moore
98496bc48e Expand Contract sub-class to accept BaseContract super-class constructor arguments (#4538). 2024-02-01 01:59:31 -05:00
Richard Moore
b6bf7aba62 Allow network for default provider to be null to select mainnet (#4501). 2024-02-01 01:50:59 -05:00
Richard Moore
59cfa864be docs: fixed jsdocs typo (#4515) 2024-01-31 00:40:17 -05:00
Richard Moore
7a73b686cc docs: fixed jsdocs typo (#4522) 2024-01-31 00:39:08 -05:00
Richard Moore
2c817e5e09 docs: fixed jsdocs typo (#4532) 2024-01-31 00:36:39 -05:00
Richard Moore
62d181ea0f docs: fixed jsdoc typos (#4556) 2024-01-31 00:35:34 -05:00
Richard Moore
a1363483a5 Allow long dnsEncode names with optional length parameter (#4543). 2024-01-31 00:22:23 -05:00
Richard Moore
20cd8a23ea Fix parseLog signature when receiving read-only array for topics (#4029, #4459). 2024-01-31 00:00:19 -05:00
Richard Moore
1f6e188251 Use Secure endpoints for BNB on Etherscan (#4525). 2024-01-30 23:55:06 -05:00
Richard Moore
561f7a0f38 Merge branch 'wip-4844' into wip-v6.11 2024-01-30 23:42:38 -05:00
Richard Moore
c6e6c43257 Added holesky network and related end-points for supporting providers. 2024-01-24 22:39:05 -05:00
Richard Moore
9c1e82e123 Added EIP-4844 BLOb transactions (#4554). 2024-01-24 20:35:59 -05:00
Richard Moore
a26ff77c21 admin: updated dist files 2024-01-17 20:36:41 -05:00
Richard Moore
a513e406ad tests: add tests for EIP-712 payload aliases 2024-01-17 20:36:06 -05:00
Richard Moore
56c1361ee8 Normalize EIP-712 types before computing the payload (#4541). 2024-01-17 20:33:38 -05:00
Richard Moore
319d475648 admin: updated dist files 2024-01-17 14:33:43 -05:00
Richard Moore
ce93cb1eed tests: rename test suite to follow naming convention 2024-01-17 13:23:35 -05:00
Richard Moore
2b4891d86e Updated thrid-part provider URLs for QuickNode. 2024-01-17 13:22:49 -05:00
Richard Moore
fed28e4a8c tests: added testing for correct thrid-party URLs 2024-01-17 00:01:29 -05:00
Richard Moore
e66ce74835 admin: updated dist files 2024-01-16 17:43:38 -05:00
Richard Moore
8f99601df1 Fixed normalization and abstracted EIP-712 Array parsing (#4541). 2024-01-16 17:41:57 -05:00
Richard Moore
92cb3e4c06 admin: updated dist files 2024-01-15 23:07:48 -05:00
Richard Moore
84ca14f1ff Updated third-party provider network URLs (#4542). 2024-01-15 23:06:21 -05:00
Richard Moore
4efef76e8c Added additional sepolia testnets. 2024-01-15 23:04:20 -05:00
Richard Moore
43fb9c2336 Fix EIP-712 type aliases for uint and int (#4541). 2024-01-15 23:03:38 -05:00
Richard Moore
7882905085 Fixed typo in Error string (#4539). 2024-01-15 14:23:49 -05:00
Richard Moore
cd89de4eaf docs: added StaticJsonRpcProvider to migration docs 2024-01-15 14:10:00 -05:00
Richard Moore
bee07a0750 Better debugging output on fetch errors. 2024-01-15 13:43:56 -05:00
Richard Moore
2f36f59d76 admin: updated dist files 2024-01-12 19:47:16 -05:00
Richard Moore
1b4debd4a9 Limit decoded result imflation ratio from ABI-encoded data (#4537). 2024-01-12 19:45:26 -05:00
Richard Moore
6017d3d39a admin: updated dist files 2024-01-02 19:12:56 -05:00
Richard Moore
ccac24a5b0 Fix Base58 padding for string representation of binary data (#4527). 2024-01-02 19:11:11 -05:00
Richard Moore
f6d155c820 admin: update dist files 2023-12-19 04:53:50 -05:00
Richard Moore
180221574c Fix uncatchable issue when sending transactions over JSON-RPC and provide some retry-recovery for missing v (#4513). 2023-12-19 04:52:38 -05:00
Richard Moore
6ee1a5f8bb docs: Fixed some grammar in getting-started (#4486, #4487, #4488) 2023-12-05 16:51:45 -05:00
Richard Moore
98910ba01e admin: update changelog after build-clean 2023-11-27 06:14:57 -05:00
Richard Moore
d60dfc14a3 admin: updated dist files 2023-11-27 06:11:49 -05:00
Richard Moore
f8f11c754a Use provider-specified suggested priority fee when available, otherwise fallback onto existing logic of 1 gwei (#4463). 2023-11-27 06:04:52 -05:00
Richard Moore
4681b83d51 Add auto-detected static network support to providers and allow customizing socket provider options (#4199, #4418, #4441). 2023-11-27 05:23:10 -05:00
Richard Moore
9e74d14432 Added Base network to AlchemyProvider (#4384). 2023-11-25 17:52:15 -05:00
Richard Moore
2b67488151 Fixed ParamType formatting causing bad tuple full and minimal ABI output (#4329, #4479). 2023-11-25 17:46:30 -05:00
Richard Moore
da34e3569e Account for provider config weight when kicking off a request in FallbackProvider (#4298). 2023-11-23 21:26:26 -05:00
Richard Moore
e2485b8ef9 More robust FallbackProvider broadcast (#4186, #4297, #4442). 2023-11-16 20:39:21 -05:00
Richard Moore
93fb138809 admin: style fix (#4356) 2023-11-11 18:48:30 -05:00
Richard Moore
944cbbc0a5 tests: bumped Node versions for testing (#4451) 2023-11-11 18:47:10 -05:00
Richard Moore
a92766e56a Added safe and finalized provider events (#3921). 2023-11-11 18:41:40 -05:00
Richard Moore
cf00331309 admin: updated dist files 2023-11-11 18:00:39 -05:00
Richard Moore
ee79d7d005 admin: added diff scripts for build page 2023-11-11 17:58:48 -05:00
Richard Moore
aff7addfd9 docs: fixed typo in jsdocs for Wallet.createRandom (#4461) 2023-11-10 23:00:50 -05:00
Richard Moore
39315288be docs: updated the readme with more recent URLs and info 2023-11-02 14:56:36 -04:00
Richard Moore
1c71ec6df6 docs: fixed jsdocs for signMessage (#4314) 2023-11-02 14:48:45 -04:00
Richard Moore
1d9c0197a2 docs: removed Pocket from list of community resources (#4345) 2023-11-02 14:47:56 -04:00
Richard Moore
168518f1cb docs: fixed typos in Fetch jsdocs (#4355) 2023-11-02 14:44:53 -04:00
Richard Moore
e9fac926c9 docs: fixed typo in ENS cookbook (#4379) 2023-11-02 14:39:03 -04:00
Richard Moore
238f4f64ca docs: fixed typo from copy-paste ENS cookbook example (#4382) 2023-11-02 14:38:04 -04:00
Richard Moore
d11a2b5a5e docs: fixed typos in signing cookbook (#4400) 2023-11-02 14:37:05 -04:00
Richard Moore
61a66e413a docs: fixed typo in ens cookbook (#4401) 2023-11-02 14:35:19 -04:00
Richard Moore
22b7a2c111 docs: fixed typo in jsdocs (#4417) 2023-11-02 14:33:28 -04:00
Richard Moore
5d62591796 docs: fixed typos in jsdocs (#4421). 2023-11-02 14:32:39 -04:00
Richard Moore
85a039f180 docs: fixed typo in migrations docs (#4435) 2023-11-02 14:29:08 -04:00
Richard Moore
5431723ec3 admin: updated dist files 2023-11-01 16:17:49 -04:00
Richard Moore
8fed2f8476 Fixed typo in error description when converting values to arrays (#4427, #4446). 2023-11-01 16:04:27 -04:00
Richard Moore
73adb393e8 docs: fixed typo in jsdocs (#4391). 2023-11-01 15:58:07 -04:00
Richard Moore
2e0bd90744 Fix invalid token nonpayable being included in formatted constructor (#4412). 2023-11-01 15:56:47 -04:00
Richard Moore
1da50ae286 Add ENS support for Sepolia (#4422). 2023-11-01 15:55:05 -04:00
Richard Moore
e0c1d976b2 tests: only trigger browser testing when relevant code changed 2023-10-11 02:14:04 -04:00
Richard Moore
e454afb2fa tests: fix typo in env prepare scripts 2023-10-11 02:12:06 -04:00
Richard Moore
4772915f0c tests: updated env tests for TypeScript 5.2 2023-10-11 02:10:52 -04:00
Richard Moore
3a73c56ee3 admin: updated dist files 2023-10-10 22:41:46 -04:00
Richard Moore
c847f16d5c Fixed internal ens-normalize testcase for empty string. 2023-10-10 22:40:41 -04:00
Richard Moore
125ff1189b Replicated former ENS normalize behaviour for empty strings and update namehash testcases. 2023-10-10 22:22:55 -04:00
Richard Moore
bc115a2733 docs: update docs building info 2023-10-09 20:28:22 -04:00
Richard Moore
3644140861 admin: updated dist files 2023-10-09 20:27:56 -04:00
Richard Moore
aca848f772 admin: bump ens-normalize package 2023-10-09 20:22:04 -04:00
Richard Moore
d6a8c14d90 Initial shortMessage support for errors (#4241). 2023-10-09 20:20:32 -04:00
Richard Moore
2616f4c30c Fixed resolving ENS addresses used as from parameters (#3961). 2023-10-09 19:34:58 -04:00
Richard Moore
cd5f0fe03f Merge branch 'v5.8-progress' 2023-10-09 18:36:46 -04:00
Richard Moore
9a4b753445 Allow more loose input format for RLP encoder (#4402). 2023-10-09 18:35:44 -04:00
Richard Moore
06db040822 admin: added drips authentication 2023-10-02 04:51:55 -04:00
Richard Moore
0c9c23b02d docs: added docs to getDefaultProvider; fixes search in Flatworm (#4254). 2023-09-27 18:27:24 -04:00
Richard Moore
b27faa02ac Update to latest noble crypto libraries (#3975). 2023-09-13 03:27:40 -04:00
Richard Moore
9541f2f70c More robust configuration options for FetchRequest getUrl functions (#4353). 2023-09-13 02:54:03 -04:00
Richard Moore
c7f8abefa4 docs: fix typo in jsdocs 2023-09-12 21:28:45 -04:00
Richard Moore
dcea9b3536 Ignore blockTag when calling Etherscan if it is the default block tag. 2023-09-12 21:28:14 -04:00
Richard Moore
bc6cfbf2cc docs: added info on transaction order within a block and commify migration info (#4343, #4352) 2023-09-12 21:25:59 -04:00
Richard Moore
77fcc7fdab docs: added some cookbook recipes 2023-09-12 03:27:29 -04:00
Richard Moore
32915634be admin: udpated dist files 2023-08-15 03:08:10 -04:00
Richard Moore
7d4173049e Prevent destroyed providers from emitting network detection errors. 2023-08-15 03:07:03 -04:00
Richard Moore
30d3d6ee32 admin: updated dist files 2023-08-15 00:58:04 -04:00
Richard Moore
71606b5799 docs: remove beta target in getting started docs (#4147) 2023-08-15 00:56:12 -04:00
Richard Moore
4d2e1ff810 docs: added solidity packed functions to migration docs (#4289) 2023-08-15 00:54:56 -04:00
Richard Moore
203dfc33b9 Fixed VSCode lint vs tsc discrepency (#4153, #4156, #4158, #4159). 2023-08-14 20:05:38 -04:00
Richard Moore
4eb84da865 Fix VSCode reported lint issues (#4153, #4156, #4158, #4159). 2023-08-14 20:00:45 -04:00
Richard Moore
609e2f53eb admin: updated devDependency semver 2023-08-14 19:40:50 -04:00
Richard Moore
2710077bea docs: add title for socket providers section 2023-08-14 19:34:41 -04:00
Richard Moore
0df3ab9313 Add gasPrice to Polygon feeData for type 0 and type 1 legacy transactions (#4315). 2023-08-14 19:34:01 -04:00
Richard Moore
b4fb1a166d docs: fixed typo in error message (#4306) 2023-08-10 14:20:41 -04:00
Richard Moore
dfe1eefd03 docs: better align jsdocs with parameter names (#4292) 2023-08-10 14:19:23 -04:00
Richard Moore
6fda150426 docs: fixed typo (discord) 2023-08-08 23:36:21 -04:00
Richard Moore
c5cb7cd71d admin: updated dist files 2023-08-02 23:52:01 -04:00
Richard Moore
e45bc77cd9 tests: add faucet address to output for refilling 2023-08-02 23:51:09 -04:00
Richard Moore
c3971ab428 docs: updated jsdocs for flatworm generation 2023-08-02 23:48:42 -04:00
Richard Moore
d6be75f266 admin: update dist files 2023-08-02 23:42:17 -04:00
Richard Moore
25fef4f8d7 Fixed receipt wait not throwing on reverted transactions. 2023-08-02 19:07:50 -04:00
Richard Moore
ff80b04f31 Added custom priority fee to Optimism chain (via telegram). 2023-08-02 18:37:54 -04:00
Richard Moore
f3c46f2299 Add context to Logs that fail decoding due to ABI issues to help debugging. 2023-08-02 18:29:50 -04:00
Richard Moore
d32f81b3c3 Merge branch 'main' into v6.7.0-progress 2023-07-29 02:37:03 -04:00
Richard Moore
17969fe416 admin: updated dist files 2023-07-28 14:50:56 -04:00
Richard Moore
0dca645632 Prevent malformed logs from preventing other logs being decoded (#4275). 2023-07-28 14:48:55 -04:00
Richard Moore
3a52201fe2 Allow visibility on human-readable constructors (via telegram). 2023-07-28 14:14:23 -04:00
Richard Moore
b5724e4713 admin: updated dist files 2023-07-28 01:14:37 -04:00
Richard Moore
aa2ea3d529 Better error message when passing invalid overrides object into a contract deployment (#4182). 2023-07-28 01:13:21 -04:00
Richard Moore
b1dbbb0de3 Added new exports for FallbackProviderOptions and FetchUrlFeeDataNetworkPlugin (#2828, #4160). 2023-07-28 00:34:29 -04:00
Richard Moore
f42f258beb Allow overriding pollingInterval in JsonRpcProvider constructor (via discord). 2023-07-27 20:53:55 -04:00
Richard Moore
78538eb100 Fixed FallbackProvider priority sorting (#4150). 2023-07-27 20:51:07 -04:00
Richard Moore
d3e5e2c45b Added linea network to InfuraProvider and Network (#4184, #4190). 2023-07-27 20:49:02 -04:00
Richard Moore
82bb936542 Added whitelist support to getDefaultProvider. 2023-07-27 20:21:55 -04:00
Richard Moore
23704a9c44 Add Polygon RPC endpoints to the default provider (#3689). 2023-07-27 20:11:08 -04:00
Richard Moore
8f0a50921a Added customizable quorum to FallbackProvider (#4160). 2023-07-27 19:51:50 -04:00
Richard Moore
229145ddf5 Added basic Gas Station support via a NetworkPlugin (#2828). 2023-07-27 18:04:46 -04:00
Richard Moore
ec39abe067 Add BNB URLs to EtherscanProvider networks. 2023-07-26 17:07:38 -04:00
Richard Moore
ff9d124c60 admin: updated dist files 2023-07-24 17:48:37 -04:00
Richard Moore
ba36079a28 Added tests for JSON format (#4248). 2023-07-24 17:45:27 -04:00
Richard Moore
8c2652c8cb Use empty string for unnamed parameters in JSON output instead of undefined (#4248). 2023-07-24 17:44:42 -04:00
Richard Moore
5bf7b3494e Return undefined for Contract properties that do not exist instead of throwing an error (#4266). 2023-07-24 17:38:32 -04:00
Richard Moore
bcc4d8c870 admin: updated dist files 2023-07-24 00:06:04 -04:00
Richard Moore
ac2f5e563b Reflect symbols in the Contract Proxy to target (#4048). 2023-07-24 00:03:12 -04:00
Richard Moore
93af87c447 Allow arrays of address for indexed filter topics (#4259). 2023-07-23 23:58:16 -04:00
Richard Moore
fa3a883ff7 Fixed filter encoding for bytesX (#4244). 2023-07-23 23:48:47 -04:00
Richard Moore
a8bc49bdcf Fix JSON formatting for tuple arrays (#4237). 2023-07-23 22:50:49 -04:00
Richard Moore
e36b6c35b7 Better error messages when parsing fragment strings (#4246). 2023-07-23 12:59:10 -04:00
Richard Moore
450a176ee2 Include the missing fragment key and args when no matching Contract method or event is present (#3809). 2023-07-23 12:36:52 -04:00
Richard Moore
b1375f4e44 Prevent a single malformed event from preventing other Contract logs; reported on Discord. 2023-07-23 12:30:21 -04:00
Richard Moore
5a56fc36d7 admin: updatd dist files 2023-07-16 00:36:12 -04:00
Richard Moore
a7e4048fe3 More robust support for Signatures with less standard parameter values (#3835, #4228). 2023-07-16 00:33:50 -04:00
Richard Moore
330c318773 admin: updated dist files 2023-07-15 17:55:24 -04:00
Richard Moore
57f1e1c471 Fixed CCIP-read in the EnsResolver (#4221). 2023-07-15 17:51:38 -04:00
Richard Moore
19cbcaf3b0 docs: fixed typo in jsdocs 2023-07-15 17:46:53 -04:00
Richard Moore
492919d14f Skip checking confirmation count if confirms is 0 (#4229, #4242). 2023-07-15 17:45:37 -04:00
Richard Moore
43c253a402 Fixed waiting for confirmations in deployment transactions (#4212, #4230). 2023-07-15 17:25:46 -04:00
Richard Moore
fe631c6f1f docs: fixed typo in migration docs (#4125). 2023-07-15 17:20:57 -04:00
Richard Moore
1dd542721d admin: updated dist files 2023-07-11 20:55:58 -03:00
Richard Moore
80f62efc41 Throw more desscriptive error for unconfigured ENS name contract targets (#4213). 2023-07-11 20:54:37 -03:00
Richard Moore
7d061b786f Fixed contract once not running stop callback. 2023-07-11 20:42:43 -03:00
Richard Moore
3c17cf56b5 admin: updated dist files 2023-06-27 23:31:10 -02:30
Richard Moore
9197f9f938 Wider error detection for call exceptions on certain backends (#4154, #4155). 2023-06-27 23:28:57 -02:30
Richard Moore
1dc8986a33 Added wider error deetection for JSON-RPC unsupported operation (#4162). 2023-06-27 11:18:21 -03:00
Richard Moore
3d141b44b5 Fixed formatUnits and parseUnits for values over 128 bits (#4037, #4133). 2023-06-27 10:58:22 -03:00
Richard Moore
d2b5f1da02 admin: updated dist files 2023-06-23 00:35:07 -04:00
Richard Moore
857aa8ccc3 Prevent CCIP-read flags being passed to EtherscanProvider (#4043) 2023-06-23 00:33:43 -04:00
Richard Moore
3df09fcbe6 admin: updated dist files 2023-06-23 00:07:06 -04:00
Richard Moore
d51e3fbff4 Fixed CCIP read in contract calls (#4043). 2023-06-23 00:04:16 -04:00
Richard Moore
5210b68a78 docs: fix typos 2023-06-13 21:47:55 -04:00
Richard Moore
31cc4edf2c admin: updated dist files 2023-06-13 21:47:44 -04:00
Richard Moore
203a759efc Add exports for AbstractProviderOptions and for MulticoinProviderPlugin. 2023-06-13 21:41:33 -04:00
Richard Moore
de0f5189f6 Add option to adjust perform cache timeout in AbstractProvider. 2023-06-13 21:40:26 -04:00
Richard Moore
84375be92d Add full support for MultiCoin plugins and automatic detection for EVM-compatible coin types (#3888, #4081). 2023-06-13 16:26:40 -04:00
Richard Moore
2318005dfd Allow Interface instances where InterfaceAbi are allowed (#4142). 2023-06-13 16:22:40 -04:00
Richard Moore
9055ef6c69 Allow Numeric type for decimals in FixedNumber (#4141). 2023-06-12 22:11:08 -04:00
Richard Moore
026c5bb137 admin: updated dist files 2023-06-07 20:20:11 -04:00
Richard Moore
c448458633 docs: typo in jsdocs for eip number (#3992) 2023-06-07 20:14:12 -04:00
Richard Moore
8dd21f0333 Fix lost promise fulfillment when a batch has an error response (#4126). 2023-06-07 20:09:29 -04:00
Richard Moore
11956aee34 admin: updated dist files 2023-06-06 22:42:28 -04:00
Richard Moore
374fbaebcd docs: fixed jsdocs typo (#4023) 2023-06-06 22:37:18 -04:00
Richard Moore
9a14709def docs: fixed jsdocs typo (#4026) 2023-06-06 22:36:09 -04:00
Richard Moore
38ee3195b0 Fix CJS browser bundling (#4033). 2023-06-06 22:33:51 -04:00
Richard Moore
51a9610fe0 docs: updated readme (#4121) 2023-06-06 22:30:17 -04:00
Richard Moore
20c3d1b109 Fixed type guard for non-Typed instances (#4087). 2023-06-06 21:24:02 -04:00
Richard Moore
bb8685b112 Add confirmations to TransactionResponse (#4094). 2023-06-06 20:56:44 -04:00
Richard Moore
3c1bad2fb7 Fix stray promises when a node returns invalid results (#4118). 2023-06-06 19:24:19 -04:00
Richard Moore
f37a52da28 Added support to detect and stop providers spinning on intitial network detection (#4015). 2023-06-06 17:58:06 -04:00
Richard Moore
7dcecfa47d docs: added jsdocs 2023-06-06 17:56:00 -04:00
Richard Moore
3235910f3b tests: remove pocket provider from tests 2023-06-05 22:41:31 -04:00
Richard Moore
8eb8cae8cd admin: updated dist files 2023-06-05 22:12:31 -04:00
Richard Moore
c1357847dc Bump ens-normalize version (#4071, #4077, #4080, #4102). 2023-06-05 22:11:25 -04:00
Richard Moore
9b0e9920c0 Fix for networks with polling with non-consistent block and filter events (#4119). 2023-06-05 22:08:43 -04:00
Richard Moore
56ed4e7380 admin: updated dist files 2023-06-01 17:52:58 -04:00
Richard Moore
15ed2f5b32 Fixed AbstractProvider lookupAddress bug (#4086). 2023-06-01 17:51:21 -04:00
Richard Moore
d8e9586044 Fix FixedNumber comparison bug (#4112). 2023-06-01 17:48:56 -04:00
Richard Moore
bbcfb5f6b8 docs: added jsdocs and general documentation 2023-06-01 17:42:48 -04:00
Richard Moore
c785c1e515 docs: explicitly specify ESM for docs config 2023-05-19 09:44:08 -04:00
Richard Moore
a6000e3c6d admin: updated dist files 2023-05-18 17:28:39 -04:00
Richard Moore
83d7f43b9c Coerce value into BigInt when checking for value. 2023-05-18 17:26:59 -04:00
Richard Moore
50ffd5950c admin: updated rollup config for explicit ESM order 2023-05-18 17:11:34 -04:00
Richard Moore
c8453577e9 admin: tweaked gitignore for misc files 2023-05-18 17:10:56 -04:00
Richard Moore
bcca632ef8 docs: fixed typo in example ABI 2023-05-18 17:07:07 -04:00
Richard Moore
219b16dc28 Better errors when junk passed as Contract target (#3947, #4053). 2023-05-18 17:05:33 -04:00
Richard Moore
f58990b80c More robust message checking in socket providers (#4051). 2023-05-18 16:56:50 -04:00
Richard Moore
984f6fa155 More robust defaultProvider start-up when a backend fails on bootstrap (#3979). 2023-05-18 16:52:47 -04:00
Richard Moore
2e5935b91c Fix Result.map when Array contains zero elements (#4036, #4048). 2023-05-15 17:18:46 -04:00
Richard Moore
6db7458cf0 Fixed error handling for contracts with receive and non-payable fallback. 2023-05-15 16:49:02 -04:00
Richard Moore
f87f6ef9a0 Remove superfluous logging in defaultProvider. 2023-05-07 15:28:07 +09:00
Richard Moore
a09f58452e tests: fixed assert ordering 2023-05-07 02:13:03 +09:00
Richard Moore
13593809bd admin: updated dist files 2023-05-06 15:16:41 +09:00
Richard Moore
1bc8b55d50 Removed superfluous logging. 2023-05-06 15:15:07 +09:00
Richard Moore
96d5e7b206 tests: added test-browser static files 2023-05-06 15:14:36 +09:00
Richard Moore
25ab579634 tests: simplified imports for browser testing 2023-05-06 15:03:58 +09:00
Richard Moore
c7b9be977c tests: added initial browser testing 2023-05-06 15:02:36 +09:00
Richard Moore
2b0fe61133 Fix receipt gas price when effectiveGasPrice is 0 on testnets (#4014). 2023-04-28 21:50:04 +09:00
Richard Moore
f2fb8b5ede tests: angular tests require recursive copy 2023-04-28 21:38:23 +09:00
Richard Moore
e14afe3994 tests: added angular to env tests 2023-04-28 21:36:23 +09:00
Richard Moore
8a71e615c2 tests: refining env tests 2023-04-28 21:10:09 +09:00
Richard Moore
d74a802907 tests: env tests should output TypeScript instead of JavaScript 2023-04-28 20:17:04 +09:00
Richard Moore
6d3639d91c tests: fix bug in prepare script 2023-04-28 20:14:46 +09:00
Richard Moore
35d0e0d976 tests: fix typo in workflow 2023-04-28 20:13:32 +09:00
Richard Moore
795d064058 tests: use matrix for env tests 2023-04-28 20:11:35 +09:00
Richard Moore
fd96d149ab admin: include lib folders in CI tests 2023-04-28 00:56:38 +09:00
Richard Moore
7f49e14c06 admin: updat dist files 2023-04-28 00:55:41 +09:00
Richard Moore
9f9d234a2d docs: added jsdocs to verifyMessage 2023-04-28 00:45:50 +09:00
Richard Moore
a47cad16a8 admin: trying more robust build output structure 2023-04-27 21:19:55 +09:00
Richard Moore
76d8fff581 admin: update dist files 2023-04-25 20:04:48 +09:00
Richard Moore
6c9b7e2a15 tests: added environment test (#3983) 2023-04-25 20:03:40 +09:00
Richard Moore
7e272a314f admin: adding better support for building on a wider variety of environments 2023-04-25 20:02:46 +09:00
Richard Moore
1d70807964 tests: added tests for ECC shared secrets 2023-04-25 20:00:12 +09:00
Richard Moore
af0291c016 Added error event to provider (#3970, #3982). 2023-04-24 20:09:45 +09:00
Richard Moore
e848978758 Removed superfluous parameters for internal transaction functions. 2023-04-24 19:37:05 +09:00
Richard Moore
076edad81e More aggresive tree-shaking. 2023-04-24 19:36:07 +09:00
Richard Moore
7c0465c5fb More flexible static network checking (#3834). 2023-04-24 19:20:39 +09:00
Richard Moore
6cfe22b7e2 docs: updated transaction.value to specify in wei 2023-04-24 18:33:25 +09:00
1334 changed files with 61043 additions and 11582 deletions

@ -21,7 +21,7 @@ jobs:
steps:
- uses: actions/setup-node@v1
with:
node-version: 18.x
node-version: 20.x
- name: Checkout repository
uses: actions/checkout@v3
@ -35,7 +35,7 @@ jobs:
run: npm install --no-save 'https://github.com/ricmoo/flatworm.git#tsdocs'
- name: Build Documentation
run: node node_modules/flatworm/lib/cli-test ./docs.wrm/config.js
run: node node_modules/flatworm/lib/cli-test ./docs.wrm/config.mjs
- name: Upload documentation to to docs.ethers.org
uses: ethers-io/sync-s3-action@main

46
.github/workflows/test-browser.yml vendored Normal file

@ -0,0 +1,46 @@
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

@ -6,6 +6,8 @@ on:
- main
paths:
- "src.ts/**"
- "lib.esm/**"
- "lib.commonjs/**"
jobs:
@ -23,7 +25,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: [ 16.x, 18.x ]
node-version: [ 18.x, 20.x ]
test-type: [ esm, commonjs ]
steps:
@ -64,7 +66,7 @@ jobs:
steps:
- uses: actions/setup-node@v1
with:
node-version: 18.x
node-version: 20.x
- name: Install and run Geth
uses: ethers-io/run-geth-action@main
@ -96,7 +98,7 @@ jobs:
name: coverage-complete
path: ./output/coverage.tar
- name: Upload coverage to to build.ethers.org
- name: Upload coverage to build.ethers.org
uses: ethers-io/sync-s3-action@main
with:
aws_access_key_id: ${{ secrets.BUILD_AWS_ACCESS_KEY_ID }}

@ -7,8 +7,8 @@ on:
jobs:
test-env:
name: Test Environments
test-tsc-env:
name: Test TypeScript Environments
runs-on: ubuntu-latest
@ -18,25 +18,32 @@ jobs:
strategy:
fail-fast: false
matrix:
test: [ "ts-import-cjs-node16", "ts-import-esm-node16", "ts-import-cjs", "ts-import-esm" ]
tsModuleResolution: [ "node", "node16", "nodenext" ]
tsModule: [ "commonjs", "es2020" ]
steps:
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: 18.x
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/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
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
run: npm install
@ -46,3 +53,34 @@ jobs:
- name: Run tests
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

@ -1,6 +1,7 @@
node_modules/**
output/**
misc/**
**/*.save
**/*.swp
**/*.tgz
dist/*.gz

@ -27,3 +27,5 @@ testcases/**
.DS_Store
node_modules/**
misc/**
**/*.tgz
dist/*.gz

1
.npmrc Normal file

@ -0,0 +1 @@
@tornado:registry=https://git.tornado.ws/api/packages/tornado-packages/npm/

@ -3,9 +3,223 @@ Change Log
This change log is maintained by `src.ts/_admin/update-changelog.ts` but may also be manually updated.
ethers/v6.3.1 (2023-04-22 18:55)
ethers/v6.12.0 (2024-04-17 01:09)
---------------------------------
- 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)).
- 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)).

7
FUNDING.json Normal file

@ -0,0 +1,7 @@
{
"drips": {
"ethereum": {
"ownedBy": "0x89EdE5cBE53473A64d6C8DF14176a0d658dAAeDC"
}
}
}

@ -21,27 +21,33 @@ in [TypeScript](https://www.typescriptlang.org).
- 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)
- **ENS names** are first-class citizens; they can be used anywhere an Ethereum addresses can be used
- **Tiny** (~120kb compressed; 400kb uncompressed)
- **Small** (~144kb compressed; 460kb uncompressed)
- **Tree-shaking** focused; include only what you need during bundling
- **Complete** functionality for all your Ethereum desires
- Extensive [documentation](https://docs.ethers.org/v6/)
- Large collection of **test cases** which are maintained and added to
- Fully written in **TypeScript**, with strict types for security
- Fully written in **TypeScript**, with strict types for security and safety
- **MIT License** (including ALL dependencies); completely open source to do with as you please
Keep Updated
------------
For the latest news and advisories, please follow the
[@ethersproject](https://twitter.com/ethersproject) on Twitter (low-traffic,
non-marketing, important information only) as well as watch this GitHub project.
For advisories and important notices, follow [@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
[CHANGELOG](https://github.com/ethers-io/ethers.js/blob/main/CHANGELOG.md).
**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)
- [June 2022](https://blog.ricmoo.com/highlights-ethers-js-june-2022-f5328932e35d)
- [March 2022](https://blog.ricmoo.com/highlights-ethers-js-march-2022-f511fe1e88a1)
@ -111,7 +117,6 @@ A special thanks to these services for providing community resources:
- [Etherscan](https://etherscan.io/)
- [INFURA](https://infura.io/)
- [Alchemy](https://dashboard.alchemyapi.io/signup?referral=55a35117-028e-4b7c-9e47-e275ad0acc6d)
- [Pocket](https://pokt.network/pocket-gateway-ethereum-mainnet/)
Extension Packages
@ -121,7 +126,11 @@ The `ethers` package only includes the most common and most core
functionality to interact with Ethereum. There are many other
packages designed to further enhance the functionality and experience.
- Hardware Wallets (@TODO)
- [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
- [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

7305
dist/ethers.js vendored

File diff suppressed because one or more lines are too long

2
dist/ethers.js.map vendored

File diff suppressed because one or more lines are too long

2
dist/ethers.min.js vendored

File diff suppressed because one or more lines are too long

7313
dist/ethers.umd.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -2,21 +2,11 @@ function number(n) {
if (!Number.isSafeInteger(n) || n < 0)
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) {
if (!(b instanceof Uint8Array))
throw new TypeError('Expected Uint8Array');
throw new Error('Expected Uint8Array');
if (lengths.length > 0 && !lengths.includes(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);
throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);
}
function exists(instance, checkFinished = true) {
if (instance.destroyed)
@ -31,34 +21,39 @@ function output(out, instance) {
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) */
// 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));
// 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.
const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;
if (!isLE)
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) {
if (typeof str !== 'string') {
throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);
}
return new TextEncoder().encode(str);
if (typeof str !== 'string')
throw new Error(`utf8ToBytes expected string, got ${typeof str}`);
return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809
}
/**
* 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) {
if (typeof data === 'string')
data = utf8ToBytes(data);
if (!(data instanceof Uint8Array))
throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);
if (!u8a(data))
throw new Error(`expected Uint8Array, got ${typeof data}`);
return data;
}
// For runtime check if class implements interface
@ -68,25 +63,17 @@ class Hash {
return this._cloneInto();
}
}
function wrapConstructor(hashConstructor) {
const hashC = (message) => hashConstructor().update(toBytes(message)).digest();
const tmp = hashConstructor();
function wrapConstructor(hashCons) {
const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
const tmp = hashCons();
hashC.outputLen = tmp.outputLen;
hashC.blockLen = tmp.blockLen;
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);
hashC.create = () => hashCons();
return hashC;
}
const U32_MASK64 = BigInt(2 ** 32 - 1);
const _32n = BigInt(32);
const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
const _32n = /* @__PURE__ */ BigInt(32);
// We are not using BigUint64Array, because they are extremely slow as per 2022
function fromBig(n, le = false) {
if (le)
@ -102,54 +89,18 @@ function split(lst, le = false) {
}
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)
const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
// Left rotate for Shift in (32, 64), NOTE: 32 is special case.
const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (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 */
/**
* The current version of Ethers.
*/
const version = "6.3.1";
const version = "6.12.0";
/**
* Property helper functions.
@ -194,7 +145,11 @@ function defineProperties(target, values, types) {
}
/**
* About Errors.
* All errors in ethers include properties to ensure they are both
* 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]
*/
@ -237,15 +192,16 @@ function stringify(value) {
}
/**
* Returns a new Error configured to the format ethers emits errors, with
* the %%message%%, [[api:ErrorCode]] %%code%% and additioanl properties
* the %%message%%, [[api:ErrorCode]] %%code%% and additional properties
* for the corresponding EthersError.
*
* Each error in ethers includes the version of ethers, a
* machine-readable [[ErrorCode]], and depneding on %%code%%, additional
* required properties. The error message will also include the %%meeage%%,
* ethers version, %%code%% and all aditional properties, serialized.
* machine-readable [[ErrorCode]], and depending on %%code%%, additional
* required properties. The error message will also include the %%message%%,
* ethers version, %%code%% and all additional properties, serialized.
*/
function makeError(message, code, info) {
let shortMessage = message;
{
const details = [];
if (info) {
@ -253,6 +209,9 @@ function makeError(message, code, info) {
throw new Error(`value will overwrite populated values: ${stringify(info)}`);
}
for (const key in info) {
if (key === "shortMessage") {
continue;
}
const value = (info[key]);
// try {
details.push(key + "=" + stringify(value));
@ -284,6 +243,9 @@ function makeError(message, code, info) {
if (info) {
Object.assign(error, info);
}
if (error.shortMessage == null) {
defineProperties(error, { shortMessage });
}
return error;
}
/**
@ -541,6 +503,7 @@ function getUtf8CodePoints(_bytes, onError) {
* If %%form%% is specified, the string is normalized.
*/
function toUtf8Bytes(str, form) {
assertArgument(typeof (str) === "string", "invalid string value", "str", str);
if (form != null) {
assertNormalize(form);
str = str.normalize(form);
@ -595,14 +558,16 @@ function toUtf8String(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
const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];
const _0n = BigInt(0);
const _1n = BigInt(1);
const _2n = BigInt(2);
const _7n = BigInt(7);
const _256n = BigInt(256);
const _0x71n = BigInt(0x71);
const _0n = /* @__PURE__ */ BigInt(0);
const _1n = /* @__PURE__ */ BigInt(1);
const _2n = /* @__PURE__ */ BigInt(2);
const _7n = /* @__PURE__ */ BigInt(7);
const _256n = /* @__PURE__ */ BigInt(256);
const _0x71n = /* @__PURE__ */ BigInt(0x71);
for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
// Pi
[x, y] = [y, (2 * x + 3 * y) % 5];
@ -614,14 +579,14 @@ for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
for (let j = 0; j < 7; j++) {
R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;
if (R & _2n)
t ^= _1n << ((_1n << BigInt(j)) - _1n);
t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);
}
_SHA3_IOTA.push(t);
}
const [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);
const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);
// Left rotation (without 0, 32, 64)
const rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);
const rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);
const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));
const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));
// Same as keccakf1600, but allows to skip some rounds
function keccakP(s, rounds = 24) {
const B = new Uint32Array(5 * 2);
@ -682,7 +647,7 @@ class Keccak extends Hash {
this.finished = false;
this.destroyed = false;
// Can be passed from user as dkLen
assert$1.number(outputLen);
number(outputLen);
// 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes
if (0 >= this.blockLen || this.blockLen >= 200)
throw new Error('Sha3 supports only keccak-f1600 function');
@ -695,7 +660,7 @@ class Keccak extends Hash {
this.pos = 0;
}
update(data) {
assert$1.exists(this);
exists(this);
const { blockLen, state } = this;
data = toBytes(data);
const len = data.length;
@ -721,8 +686,8 @@ class Keccak extends Hash {
this.keccak();
}
writeInto(out) {
assert$1.exists(this, false);
assert$1.bytes(out);
exists(this, false);
bytes(out);
this.finish();
const bufferOut = this.state;
const { blockLen } = this;
@ -743,11 +708,11 @@ class Keccak extends Hash {
return this.writeInto(out);
}
xof(bytes) {
assert$1.number(bytes);
number(bytes);
return this.xofInto(new Uint8Array(bytes));
}
digestInto(out) {
assert$1.output(out, this);
output(out, this);
if (this.finished)
throw new Error('digest() was already called');
this.writeInto(out);
@ -778,25 +743,11 @@ class Keccak extends Hash {
}
}
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.
* @param message - that would be hashed
*/
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);
const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);
/**
* Cryptographic hashing functions
@ -955,6 +906,7 @@ class Wordlist {
}
// 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
* the general locality of alphabetically sorted words to
@ -965,7 +917,7 @@ class Wordlist {
* based on ASCII-7 small.
*
* If necessary, there are tools within the ``generation/`` folder
* to create these necessary data.
* to create the necessary data.
*/
class WordlistOwl extends Wordlist {
#data;
@ -980,7 +932,13 @@ class WordlistOwl extends Wordlist {
this.#checksum = checksum;
this.#words = null;
}
/**
* The OWL-encoded data.
*/
get _data() { return this.#data; }
/**
* Decode all the words for the wordlist.
*/
_decodeWords() {
return decodeOwl(this.#data);
}
@ -1106,15 +1064,25 @@ function decodeOwlA(data, accents) {
* based on latin-1 small.
*
* If necessary, there are tools within the ``generation/`` folder
* to create these necessary data.
* to create the necessary data.
*/
class WordlistOwlA extends WordlistOwl {
#accent;
/**
* Creates a new Wordlist for %%locale%% using the OWLA %%data%%
* and %%accent%% data and validated against the %%checksum%%.
*/
constructor(locale, data, accent, checksum) {
super(locale, data, checksum);
this.#accent = accent;
}
/**
* The OWLA-encoded accent data.
*/
get _accent() { return this.#accent; }
/**
* Decode all the words for the wordlist.
*/
_decodeWords() {
return decodeOwlA(this._data, this._accent);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,26 +1,97 @@
_section: ABI
_section: Application Binary Interfaces @<docs-abi>
Explain about ABI here, what it does and does not do
When interacting with any application, whether it is on Ethereum,
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.
- encodes arbitrary (but defined) data structures to raw bytes
So every application must agree on how to encode and decode their
information as a sequence of bytes.
_subsection: Call
An **Application Binary Interface** (ABI) provides a way to describe
the encoding and decoding process, in a generic way so that a variety
of types and structures of types can be defined.
About encoding
For example, a string is often encoded as a UTF-8 sequence of bytes,
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.
_heading: selector or signature hash (sighash)
When interacting with Ethereum, a contract received a sequence of bytes
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.
_heading: Results
It is up to the contract developer to make this ABI available. Many
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: Events
_subsection: Call Data Representation
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
About initcode
When deploying a transaction, the data provided is treated as **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.
Another paragraph [[link-bip-39]].
_heading: Foo?
Bar?
The bytecode produced by Solidity is designed to have all constructor
parameters encoded normally and concatenated to the bytecode and provided
as the ``data`` to a transaction with no ``to`` address.

@ -1,7 +1,8 @@
_section: Ethereum Basics @priority<99>
_section: Ethereum Basics @<docs-basics> @priority<99>
Prelude here...
This section aims to cover some of the basics for those interested
in a deeper understanding of the inner-workings of Ethereum.
_subsection: About stuff?
_subsection: Topics
Some info
- [Application Binary Interface](docs-abi)

@ -65,7 +65,7 @@ _code: Building with the v2 Flatworm @lang<shell>
/home/ricmoo/flatworm> npm install
# Ready to build the docs; output to a folder ./output/
/home/ricmoo/flatworm> node lib/test-api-index PATH_TO_WRM_ROOT
/home/ricmoo/flatworm> node lib/cli-test PATH_TO_WRM_ROOT
Eventually the code for the v2 branch will be cleaned up, and it
will be much easier to include as a ``devDependency`` for Ethers.

66
docs.wrm/cookbook/ens.wrm Normal file

@ -0,0 +1,66 @@
_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"));
})();

@ -0,0 +1,7 @@
_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)

@ -0,0 +1,36 @@
_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();
});

@ -0,0 +1,273 @@
_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>
# Install ethers
/home/ricmoo/test-ethers> npm install ethers@beta-exports
/home/ricmoo/test-ethers> npm install ethers
_null:
@ -35,7 +35,7 @@ _code: importing in Node.js @lang<script>
_code: importing ESM in a browser @lang<script>
<script type="module">
import { ethers } from "https://cdnjs.cloudflare.com/ajax/libs/ethers/5.7.2/ethers.min.js";
import { ethers } from "https://cdnjs.cloudflare.com/ajax/libs/ethers/6.7.0/ethers.min.js";
// Your code here...
</script>
@ -129,8 +129,8 @@ _code: @lang<script>
// If MetaMask is not installed, we use the default provider,
// which is backed by a variety of third-party services (such
// as INFURA). They do not have private keys installed so are
// only have read-only access
// as INFURA). They do not have private keys installed,
// so they only have read-only access
console.log("MetaMask not installed; using read-only defaults")
provider = ethers.getDefaultProvider()
@ -156,7 +156,7 @@ you can use the [[JsonRpcProvider]] directly, which communicates
using the [[link-jsonrpc]] protocol.
When using your own Ethereum node or a developer-base blockchain,
such as Hardhat or Ganache, you can get access the accounts with
such as Hardhat or Ganache, you can get access to the accounts with
[[JsonRpcProvider-getSigner]].
_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
machine-readable purposes and maths are often very large and not
terribly human-readable.
easily human-readable.
For example, imagine dealing with dollars and cents; you would show
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>
abi = [
"function decimals() returns (string)",
"function symbol() returns (string)",
"function balanceOf(address addr) returns (uint)"
"function decimals() view returns (string)",
"function symbol() view returns (string)",
"function balanceOf(address addr) view returns (uint)"
]
// Create a contract

@ -1,6 +1,7 @@
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-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-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)

@ -2,3 +2,4 @@ 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-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-quick-crypto [Quick Crypto](https://www.npmjs.com/package/react-native-quick-crypto)

@ -1,5 +1,6 @@
link-alchemy [Alchemy](https://alchemy.com/?a=ethers)
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-ens [ENS](https://ens.domains/)
link-ethereum [Ethereum](https://ethereumorg)
@ -12,6 +13,7 @@ link-infura [INFURA](https://infura.io)
link-javascriptcore [JavaScriptCore](https://developer.apple.com/documentation/javascriptcore?language=objc)
link-ledger [Ledger](https://www.ledger.com)
link-metamask [MetaMask](https://metamask.io/)
link-node [Node.js](https://nodejs.org/)
link-otto [Otto](https://github.com/robertkrimen/otto)
link-parity [Parity](https://www.parity.io)
link-pocket [Pocket Network](https://pokt.network)
@ -44,3 +46,5 @@ 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-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,6 +31,8 @@ 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-2718 [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718)
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
link-base58 [Base58](https://en.bitcoinwiki.org/wiki/Base58)
@ -43,6 +45,7 @@ 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-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-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-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)

@ -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
those already familiar with v5 that just need a quick primer.
The biggest differnce in v6 is the use of modern ES6 features,
The biggest difference in v6 is the use of modern ES6 features,
so a lot of changes are largely internal.
- [BigNumbers](migrate-bigint)
@ -60,7 +60,7 @@ _code: simple comparison on large numbers @lang<script>
isEqual = value1.eq(value2)
// Using BigInt in v6
isEqaul = (value1 == value2)
isEqual = (value1 == value2)
_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
who wish to have finer-grained control, the ``pkg.exports`` makes
certain folders avilable directly.
certain folders available directly.
_code: importing in v5 @lang<script>
@ -225,6 +225,27 @@ _code: broadcasting transactions @lang<script>
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>
The Signature is now a class which facilitates all the parsing
@ -314,7 +335,7 @@ _code: fetching content @lang<script>
url, user: "username", password: "password"
// etc. properties have FetchRequest equivalents
};
data = await ethers.utils.detchJson(req, json, processFunc)
data = await ethers.utils.fetchJson(req, json, processFunc)
// v6
req = new ethers.FetchRequest(url)
@ -348,9 +369,13 @@ _code: hex conversion @lang<script>
_code: solidity non-standard packed @lang<script>
// v5
ethers.utils.solidityPack(types, values)
ethers.utils.solidityKeccak256(types, values)
ethers.utils.soliditySha256(types, values)
// v6
ethers.solidityPacked(types, values)
ethers.solidityPackedKeccak256(types, values)
ethers.solidityPackedSha256(types, values)
_code: property manipulation @lang<script>
// v5
@ -359,6 +384,30 @@ _code: property manipulation @lang<script>
// v6
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>

@ -1,4 +1,4 @@
export type TestBlockchainNetwork = "mainnet" | "goerli";
export type TestBlockchainNetwork = "mainnet" | "goerli" | "sepolia";
export interface TestBlockchainAddress {
test: string;
address: string;
@ -22,12 +22,18 @@ export interface TestBlockchainBlock {
extraData: string;
transactions: Array<string>;
baseFeePerGas?: bigint;
blobGasUsed?: bigint;
excessBlobGas?: bigint;
parentBeaconBlockRoot?: string;
stateRoot?: string;
receiptsRoot?: string;
}
export interface TestBlockchainTransaction {
test: string;
hash: string;
blockHash: string;
blockNumber: number;
index: number;
type: number;
from: string;
gasPrice: bigint;
@ -40,7 +46,7 @@ export interface TestBlockchainTransaction {
r: string;
s: string;
yParity: 0 | 1;
v: number;
v?: number;
networkV: null | bigint;
};
creates: null | string;
@ -48,6 +54,8 @@ export interface TestBlockchainTransaction {
accessList?: Array<Record<string, Array<string>>>;
maxPriorityFeePerGas?: bigint;
maxFeePerGas?: bigint;
maxFeePerBlobGas?: bigint;
blobVersionedHashes?: Array<string>;
}
export interface TestBlockchainReceipt {
test: string;
@ -75,6 +83,8 @@ export interface TestBlockchainReceipt {
to: string;
hash: string;
index: number;
blobGasUsed?: bigint;
blobGasPrice?: bigint;
}
export declare const testAddress: Record<TestBlockchainNetwork, Array<TestBlockchainAddress>>;
export declare const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>>;
@ -82,3 +92,4 @@ export declare const testTransaction: Record<TestBlockchainNetwork, Array<TestBl
export declare const testReceipt: Record<TestBlockchainNetwork, Array<TestBlockchainReceipt>>;
export declare const networkNames: Array<TestBlockchainNetwork>;
export declare function networkFeatureAtBlock(feature: string, block: number): boolean;
//# sourceMappingURL=blockchain-data.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"blockchain-data.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/blockchain-data.ts"],"names":[],"mappings":"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"}

@ -23,7 +23,8 @@ exports.testAddress = {
name: "ricmoo.firefly.eth"
},
],
goerli: []
goerli: [],
sepolia: []
};
exports.testBlock = {
mainnet: [
@ -39,6 +40,8 @@ exports.testBlock = {
gasUsed: BigInt("0"),
miner: "0x5088D623ba0fcf0131E0897a91734A4D83596AA0",
extraData: "0x476574682f76312e302e302d66633739643332642f6c696e75782f676f312e34",
stateRoot: '0x76ab0b899e8387436ff2658e2988f83cbf1af1590b9fe9feca3714f8d1824940',
receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
transactions: []
},
{
@ -54,6 +57,8 @@ exports.testBlock = {
miner: "0x2A20380DcA5bC24D052acfbf79ba23e988ad0050",
extraData: "0x706f6f6c696e2e636f6d21f7092f019bb92a76",
baseFeePerGas: BigInt("40911884304"),
stateRoot: '0xd08663f630cfcf2d7d8fe4d52f7685ad09798b7e6150cabea5eeceb1d89e11c2',
receiptsRoot: '0x473e83ec3df279f44c4fc6da50fe1d0c5a18f1929b90de8917bdcdb88a132750',
transactions: [
"0x1c3a398933db10634631f54b435c40c8805c13f12bbac7c3dab858ca44213fa2",
"0xd98947cbdd892cc7f679c903903e6d18a5c5afb19e94437beba79372ad71c347",
@ -86,6 +91,104 @@ exports.testBlock = {
}
],
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 = {
mainnet: [
@ -94,7 +197,7 @@ exports.testTransaction = {
hash: "0xccc90ab97a74c952fb3376c4a3efb566a58a10df62eb4d44a61e106fcf10ec61",
blockHash: "0x9653f180a5720f3634816eb945a6d722adee52cc47526f6357ac10adaf368135",
blockNumber: 4097745,
// index: 18,
index: 18,
type: 0,
from: "0x32DEF047DeFd076DB21A2D759aff2A591c972248",
gasPrice: BigInt("0x4a817c800"),
@ -118,7 +221,7 @@ exports.testTransaction = {
hash: "0x8ff41d0ba5d239acc8c123ff12451a2c15721c838f657e583d355999af4a4349",
blockHash: '0x9d4c3bef68e119841281105da96beb1c7252f357340d7a3355236b3332b197b0',
blockNumber: 12966000,
// index: 185,
index: 185,
type: 2,
from: '0x5afFBa12E9332bbc0E221c8E7BEf7CB7cfB3F281',
to: '0x2258CcD34ae29E6B199b6CD64eb2aEF157df7CdE',
@ -141,7 +244,42 @@ exports.testTransaction = {
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 = {
mainnet: [
@ -227,10 +365,33 @@ exports.testReceipt = {
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 = [
"mainnet", "goerli"
"mainnet", "goerli", "sepolia"
];
function networkFeatureAtBlock(feature, block) {
switch (feature) {

File diff suppressed because one or more lines are too long

@ -5,3 +5,4 @@ export declare function getProviderNetworks(provider: string): Array<string>;
export declare function getProvider(provider: string, network: string): null | AbstractProvider;
export declare function checkProvider(provider: string, network: string): boolean;
export declare function connect(network: string): AbstractProvider;
//# sourceMappingURL=create-provider.d.ts.map

@ -0,0 +1 @@
{"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;
const index_js_1 = require("../index.js");
;
const ethNetworks = ["default", "mainnet", "goerli"];
const ethNetworks = ["default", "mainnet", "sepolia"];
//const maticNetworks = [ "matic", "maticmum" ];
const ProviderCreators = [
{
@ -31,6 +31,13 @@ const ProviderCreators = [
}
},
*/
{
name: "ChainstackProvider",
networks: ["default", "mainnet", "arbitrum", "bnb", "matic"],
create: function (network) {
return new index_js_1.ChainstackProvider(network);
}
},
{
name: "EtherscanProvider",
networks: ethNetworks,
@ -52,13 +59,15 @@ const ProviderCreators = [
return index_js_1.InfuraProvider.getWebSocketProvider(network, "49a0efa3aaee4fd99797bfa94d8ce2f1");
}
},
{
name: "PocketProvider",
networks: ethNetworks,
create: function (network) {
return new index_js_1.PocketProvider(network);
}
},
/*
{
name: "PocketProvider",
networks: ethNetworks,
create: function(network: string) {
return new PocketProvider(network);
}
},
*/
{
name: "QuickNodeProvider",
networks: ethNetworks,
@ -135,7 +144,7 @@ function getProvider(provider, network) {
exports.getProvider = getProvider;
function checkProvider(provider, network) {
const creator = getCreator(provider);
return (creator != null);
return (creator != null && creator.networks.indexOf(network) >= 0);
}
exports.checkProvider = checkProvider;
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 Normal file

@ -0,0 +1,21 @@
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

@ -0,0 +1 @@
{"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"}

@ -0,0 +1,31 @@
"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

@ -0,0 +1 @@
{"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 +1,2 @@
export {};
//# sourceMappingURL=test-abi.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-abi.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-abi.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const utils_js_1 = require("./utils.js");
const index_js_1 = require("../index.js");
function equal(actual, expected) {
@ -68,7 +66,9 @@ describe("Test Bytes32 strings", function () {
describe("Test Interface", function () {
const iface = new index_js_1.Interface([
"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 () {
const addr = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
@ -97,6 +97,18 @@ describe("Test Interface", function () {
assert_1.default.equal(filter[0], "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
assert_1.default.equal(filter[1], "0x0000000000000000000000008ba1f109551bd432803012645ac136ddd64dba72");
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]);
assert_1.default.equal(eventLog.data, "0x00000000000000000000000000000000000000000000000000000000000000ea");
assert_1.default.deepEqual(eventLog.topics, [
@ -119,6 +131,21 @@ describe("Test Interface", function () {
assert_1.default.equal(log.args[1], "0xAC1639CF97a3A46D431e6d1216f576622894cBB5");
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 () {
// See: #3932

File diff suppressed because one or more lines are too long

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-address.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-address.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-address.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const utils_js_1 = require("./utils.js");
const index_js_1 = require("../index.js");
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 +1,2 @@
export {};
//# sourceMappingURL=test-contract-integ.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-contract-integ.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-contract-integ.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const index_js_1 = require("../index.js");
describe("Tests contract integration", function () {
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 +1,2 @@
export {};
//# sourceMappingURL=test-contract.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-contract.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":""}

@ -1,14 +1,13 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const create_provider_js_1 = require("./create-provider.js");
const index_js_1 = require("../index.js");
(0, create_provider_js_1.setupProviders)();
describe("Test Contract", function () {
const addr = "0x99417252Aad7B065940eBdF50d665Fb8879c5958";
const addr = "0x24264C81146c23bbF83Db1d3F87d2111C2935Ffa";
const networkName = "sepolia";
const abi = [
"error CustomError1(uint256 code, string message)",
"event EventUint256(uint256 indexed value)",
@ -23,20 +22,20 @@ describe("Test Contract", function () {
];
it("tests contract calls", async function () {
this.timeout(10000);
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);
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)");
});
it("tests events", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
assert_1.default.ok(provider);
const contract = new index_js_1.Contract(addr, abi, provider);
const signer = new index_js_1.Wallet((process.env.FAUCET_PRIVATEKEY), provider);
const contractSigner = contract.connect(signer);
const vUint256 = 42;
const vAddrName = "ethers.eth";
const vAddrName = "tests.eth";
const vAddr = "0x228568EA92aC5Bc281c1E30b1893735c60a139F1";
const vString = "Hello";
const vBytes = "0x12345678";
@ -217,8 +216,9 @@ describe("Test Typed Contract Interaction", function () {
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(string memory) public pure returns (string memory)`);
const addr = "0x838f41545DA5e18AA0e1ab391085d22E172B7B02";
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
const addr = "0xf20ba47c47a32fc2d9ad846ff06f2fa6e89eec74";
const networkName = "sepolia";
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
const contract = new index_js_1.Contract(addr, abi, provider);
for (const { types, valueFunc } of tests) {
for (const type of types) {
@ -298,16 +298,17 @@ describe("Test Contract Fallback", function () {
name: "receive and non-payable fallback",
address: "0x5b59d934f0d22b15e73b5d6b9ae83486b70df67e",
abi: [
"fallback() payable",
"fallback()",
"receive()"
],
sendNone: { data: "0x" },
sendData: { data: "0x" },
sendValue: { data: "0x" },
sendDataAndValue: { error: "overrides.value" },
sendDataAndValue: { error: "overrides" },
},
];
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", "goerli");
const networkName = "sepolia";
const provider = (0, create_provider_js_1.getProvider)("InfuraProvider", networkName);
const testGroups = [
{
group: "sendNone",
@ -347,7 +348,7 @@ describe("Test Contract Fallback", function () {
assert_1.default.ok(true);
}
else {
assert_1.default.rejects(func, function (error) {
await assert_1.default.rejects(func, function (error) {
if (error.message === send.error) {
return true;
}

File diff suppressed because one or more lines are too long

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-crypto-algoswap.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-crypto-algoswap.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-crypto-algoswap.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const index_js_1 = require("../index.js");
describe("test registration", function () {
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":"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"}

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-crypto.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-crypto.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-crypto.ts"],"names":[],"mappings":""}

@ -1,31 +1,30 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const utils_js_1 = require("./utils.js");
const index_js_1 = require("../index.js");
const index_js_2 = require("../index.js");
describe("test hashing", function () {
const tests = (0, utils_js_1.loadTests)("hashes");
tests.forEach((test) => {
it(`computes sha2-256: ${test.name}`, function () {
assert_1.default.equal((0, index_js_1.sha256)(test.data), test.sha256);
assert_1.default.equal((0, index_js_2.sha256)(test.data), test.sha256);
});
});
tests.forEach((test) => {
it(`computes sha2-512: ${test.name}`, function () {
assert_1.default.equal((0, index_js_1.sha512)(test.data), test.sha512);
assert_1.default.equal((0, index_js_2.sha512)(test.data), test.sha512);
});
});
tests.forEach((test) => {
it(`computes ripemd160: ${test.name}`, function () {
assert_1.default.equal((0, index_js_1.ripemd160)(test.data), test.ripemd160);
assert_1.default.equal((0, index_js_2.ripemd160)(test.data), test.ripemd160);
});
});
tests.forEach((test) => {
it(`computes keccak256: ${test.name}`, function () {
assert_1.default.equal((0, index_js_1.keccak256)(test.data), test.keccak256);
assert_1.default.equal((0, index_js_2.keccak256)(test.data), test.keccak256);
});
});
});
@ -33,31 +32,31 @@ describe("test password-based key derivation", function () {
const tests = (0, utils_js_1.loadTests)("pbkdf");
tests.forEach((test) => {
it(`computes pbkdf2: ${test.name}`, function () {
const password = Buffer.from(test.password.substring(2), "hex");
const salt = Buffer.from(test.salt.substring(2), "hex");
const password = (0, index_js_1.getBytes)(test.password);
const salt = (0, index_js_1.getBytes)(test.salt);
const { iterations, algorithm, key } = test.pbkdf2;
const result = (0, index_js_1.pbkdf2)(password, salt, iterations, test.dkLen, algorithm);
const result = (0, index_js_2.pbkdf2)(password, salt, iterations, test.dkLen, algorithm);
assert_1.default.equal(result, key);
});
});
tests.forEach((test) => {
it(`computes scrypt (sync): ${test.name}`, function () {
this.timeout(1000);
const password = Buffer.from(test.password.substring(2), "hex");
const salt = Buffer.from(test.salt.substring(2), "hex");
const password = (0, index_js_1.getBytes)(test.password);
const salt = (0, index_js_1.getBytes)(test.salt);
const { N, r, p, key } = test.scrypt;
const result = (0, index_js_1.scryptSync)(password, salt, N, r, p, test.dkLen);
const result = (0, index_js_2.scryptSync)(password, salt, N, r, p, test.dkLen);
assert_1.default.equal(result, key);
});
});
tests.forEach((test) => {
it(`computes scrypt (async): ${test.name}`, async function () {
this.timeout(1000);
const password = Buffer.from(test.password.substring(2), "hex");
const salt = Buffer.from(test.salt.substring(2), "hex");
const password = (0, index_js_1.getBytes)(test.password);
const salt = (0, index_js_1.getBytes)(test.salt);
const { N, r, p, key } = test.scrypt;
let progressCount = 0, progressOk = true, lastProgress = -1;
const result = await (0, index_js_1.scrypt)(password, salt, N, r, p, test.dkLen, (progress) => {
const result = await (0, index_js_2.scrypt)(password, salt, N, r, p, test.dkLen, (progress) => {
if (progress < lastProgress) {
progressOk = false;
}
@ -75,8 +74,405 @@ describe("test hmac", function () {
tests.forEach((test) => {
it(`computes hmac: ${test.name}`, async function () {
const { algorithm, key, data } = test;
assert_1.default.equal((0, index_js_1.computeHmac)(algorithm, key, data), test.hmac);
assert_1.default.equal((0, index_js_2.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

File diff suppressed because one or more lines are too long

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-hash-typeddata.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-hash-typeddata.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-hash-typeddata.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const utils_js_1 = require("./utils.js");
const index_js_1 = require("../index.js");
describe("Tests Typed Data (EIP-712)", function () {
@ -18,4 +16,139 @@ 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

@ -1 +1 @@
{"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"}
{"version":3,"file":"test-hash-typeddata.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash-typeddata.ts"],"names":[],"mappings":";;;AAAA,4DAA4B;AAC5B,yCAAuC;AAEvC,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;AAUH,QAAQ,CAAC,oCAAoC,EAAE;IAC3C,MAAM,KAAK,GAAqB;QAC5B;YACI,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACH,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC9B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,UAAU,EAAE;gBACR,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;oBAC3B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,IAAI,EAAE;gBACF,CAAC,EAAE,EAAE;gBACL,CAAC,EAAE,OAAO;aACb;YACD,OAAO,EAAE,oMAAoM;SAChN;QACD;YACI,IAAI,EAAE,KAAK;YACX,KAAK,EAAE;gBACH,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,UAAU,EAAE;gBACR,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;oBAC1B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,IAAI,EAAE;gBACF,CAAC,EAAE,EAAE;gBACL,CAAC,EAAE,OAAO;aACb;YACD,OAAO,EAAE,oMAAoM;SAChN;QACD;YACI,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE;gBACH,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;oBAChC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,UAAU,EAAE;gBACR,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,IAAI,EAAE;gBACF,CAAC,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE;gBACjB,CAAC,EAAE,OAAO;aACb;YACD,OAAO,EAAE,oMAAoM;SAChN;QACD;YACI,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACH,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE;oBAC/B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,UAAU,EAAE;gBACR,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC5B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,IAAI,EAAE;gBACF,CAAC,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE;gBACjB,CAAC,EAAE,OAAO;aACb;YACD,OAAO,EAAE,oMAAoM;SAChN;QACD;YACI,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE;gBACH,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;oBAClC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,UAAU,EAAE;gBACR,GAAG,EAAE;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE;oBAC/B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACJ;YACD,IAAI,EAAE;gBACF,CAAC,EAAE,CAAE,CAAE,EAAE,EAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,CAAE;gBACzB,CAAC,EAAE,OAAO;aACb;YACD,OAAO,EAAE,oMAAoM;SAChN;KACJ,CAAC;IAEF,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,KAAK,EAAE,aAAa,CAAC,CAAC;YACxD,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE5E,MAAM,YAAY,GAAG,2BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAC7D,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAEjF,MAAM,OAAO,GAAG,2BAAgB,CAAC,UAAU,CAAC,EAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,YAAY,GAAG,2BAAgB,CAAC,UAAU,CAAC,EAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAElF,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;KACN;IAED,EAAE,CAAC,qCAAqC,EAAE;QACtC,MAAM,OAAO,GAAG,2BAAgB,CAAC,IAAI,CAAC;YAClC,IAAI,EAAE;gBACF,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;aACrC;YACD,GAAG,EAAE;gBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC3B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;SACJ,CAAC,CAAC;QACH,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;YACnC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAChB,CAAC,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,oMAAoM,CAAC;QACrN,gBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-hash.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-hash.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-hash.ts"],"names":[],"mappings":""}

@ -1,12 +1,10 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const index_js_1 = require("../index.js");
const utils_js_1 = require("./utils.js");
//import { dnsEncode, isValidName, namehash } from "../index.js";
const index_js_2 = require("../index.js");
describe("Tests Namehash", function () {
const tests = (0, utils_js_1.loadTests)("namehash");
for (const test of tests) {
@ -39,94 +37,48 @@ describe("Tests Namehash", function () {
}
}
});
/*
describe("Tests Bad ENS Names", function() {
const badTests: Array<{ ensName: any, prefix: string }> = [
{ ensName: ".", prefix: "missing component" },
{ ensName:"..", prefix: "missing component" },
{ ensName:"ricmoo..eth", prefix: "missing component" },
{ ensName:"ricmoo...eth", prefix: "missing component" },
{ ensName:".foo", prefix: "missing component" },
{ ensName:"foo.", prefix: "missing component" },
{ ensName: 1234, prefix: "not a string" },
{ ensName: true, prefix: "not a string" },
describe("Test dnsEncode", function () {
const tests = [
{ name: "ricmoo.com", result: "0x067269636d6f6f03636f6d00" },
{ name: "ricmoo.com", length: 5, error: "exceeds 5 bytes" },
{
name: "a-very-long-label-without-a-length-override-foo-12345678901234567890",
error: "exceeds 63 bytes"
},
{
name: "a-very-long-label-with-a-length-override-to-255-foo-12345678901234567890",
length: 255, result: "0x48612d766572792d6c6f6e672d6c6162656c2d776974682d612d6c656e6774682d6f766572726964652d746f2d3235352d666f6f2d313233343536373839303132333435363738393000"
},
];
// The empty string is not a valid name, but has a valid namehash
// (the zero hash) as it is the base case for recursion
it("empty ENS name", function() {
assert.ok(!isValidName(""), "!isValidName");
});
for (const { ensName, prefix } of badTests) {
it(`fails on bad ENS name: ${ JSON.stringify(ensName) }`, function() {
assert.ok(!isValidName(ensName), "!isValidName");
assert.throws(() => {
const result = namehash(ensName);
console.log(result);
}, (error) => {
const errorPrefix = `invalid ENS name; ${ prefix }`;
return (error.code === "INVALID_ARGUMENT" &&
error.argument === "name" && error.value === ensName &&
error.message.substring(0, errorPrefix.length) === errorPrefix);
});
for (const test of tests) {
it(`tests dnsEncode: ${test.name}`, function () {
if (test.error) {
assert_1.default.throws(() => {
let result;
if (test.length != null) {
result = (0, index_js_2.dnsEncode)(test.name, test.length);
}
else {
result = (0, index_js_2.dnsEncode)(test.name);
}
console.log("result", result);
}, (error) => {
return ((0, index_js_1.isError)(error, "INVALID_ARGUMENT") &&
error.argument === "name" && error.value === test.name &&
error.message.indexOf(test.error || "") >= 0);
});
}
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 () {
const tests = [
{

@ -1 +1 @@
{"version":3,"file":"test-hash.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"test-hash.js","sourceRoot":"","sources":["../../src.ts/_tests/test-hash.ts"],"names":[],"mappings":"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"}

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-providers-avatar.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-providers-avatar.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":""}

@ -1,20 +1,18 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const create_provider_js_1 = require("./create-provider.js");
(0, create_provider_js_1.setupProviders)();
describe("Resolve ENS avatar", function () {
[
{ 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.ethers.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
{ title: "url", name: "url-avatar.tests.ethers.eth", value: "https:/\/ethers.org/static/logo.png" },
{ title: "data", name: "data-avatar.tests.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: "url", name: "url-avatar.tests.eth", value: "https:/\/ethers.org/static/logo.png" },
].forEach((test) => {
it(`Resolves avatar for ${test.title}`, async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)("sepolia");
const avatar = await provider.getAvatar(test.name);
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,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"}
{"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"}

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-providers-ccip.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-providers-ccip.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const index_js_1 = require("../index.js");
const create_provider_js_1 = require("./create-provider.js");
(0, create_provider_js_1.setupProviders)();
@ -17,11 +15,12 @@ describe("Test CCIP execution", function () {
]);
assert_1.default.equal(result, (0, index_js_1.keccak256)(check), "response is equal");
};
const address = "0x6C5ed35574a9b4d163f75bBf0595F7540D8FCc2d";
const address = "0xaeaa06a37e6421ac63120d6daddee0ffa04b43e8";
const networkName = "sepolia";
const calldata = "0x1234";
it("testGet passes under normal operation", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testGet(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -32,7 +31,7 @@ describe("Test CCIP execution", function () {
});
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testGet(bytes callData = "0x1234")
const tx = {
to: address,
@ -42,13 +41,17 @@ describe("Test CCIP execution", function () {
const result = await provider.call(tx);
console.log(result);
}, (error) => {
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
const offchainErrorData = (0, index_js_1.concat)([
"0x556f1830000000000000000000000000",
address,
"0x00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000"
]);
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
});
});
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
provider.disableCcipRead = true;
// testGetFail(bytes callData = "0x1234")
const tx = {
@ -59,13 +62,17 @@ describe("Test CCIP execution", function () {
const result = await provider.call(tx);
console.log(result);
}, (error) => {
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
const offchainErrorData = (0, index_js_1.concat)([
"0x556f1830000000000000000000000000",
address,
"0x00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000"
]);
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
});
});
it("testGetFail should fail if all URLs 5xx", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testGetFail(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -82,7 +89,7 @@ describe("Test CCIP execution", function () {
});
it("testGetSenderFail should fail if sender does not match", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testGetSenderFail(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -102,7 +109,7 @@ describe("Test CCIP execution", function () {
});
it("testGetMissing should fail if early URL 4xx", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testGetMissing(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -119,7 +126,7 @@ describe("Test CCIP execution", function () {
});
it("testGetFallback passes if any URL returns correctly", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testGetFallback(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -130,7 +137,7 @@ describe("Test CCIP execution", function () {
});
it("testPost passes under normal operation", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("goerli");
const provider = (0, create_provider_js_1.connect)(networkName);
// testPost(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,

File diff suppressed because one or more lines are too long

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-providers-data.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-providers-data.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-data.ts"],"names":[],"mappings":""}

@ -1,11 +1,10 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const create_provider_js_1 = require("./create-provider.js");
const utils_js_1 = require("./utils.js");
const index_js_1 = require("../index.js");
const blockchain_data_js_1 = require("./blockchain-data.js");
(0, create_provider_js_1.setupProviders)();
function forEach(prefix, tests, func) {
@ -103,11 +102,24 @@ describe("Test Provider Address operations", function () {
});
function assertObj(prefix, actual, expected) {
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) {
if (expected[key] === undefined) {
continue;
}
assert_1.default.equal(actual[key], expected[key], `${prefix}.${key}`);
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}`);
}
}
}
function assertBlock(actual, expected) {
@ -204,4 +216,34 @@ 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

File diff suppressed because one or more lines are too long

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-providers-errors.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-providers-errors.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-errors.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const index_js_1 = require("../index.js");
const create_provider_js_1 = require("./create-provider.js");
const utils_js_1 = require("./utils.js");
@ -21,8 +19,8 @@ describe("Tests Provider Call Exception", function () {
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
];
const testAddr = "0xF20Ba47c47a32fc2d9ad846fF06f2fa6e89eeC74";
const networkName = "goerli";
const testAddr = "0x86d19fF4b2EB0D451511B5B930b01DC71fD9a2Ee";
const networkName = "sepolia";
for (const { code, reason } of panics) {
for (const method of ["call", "estimateGas"]) {
for (const providerName of create_provider_js_1.providerNames) {
@ -134,7 +132,7 @@ describe("Tests Provider Call Exception", function () {
});
describe("Test Provider Blockchain Errors", function () {
const wallet = new index_js_1.Wallet((process.env.FAUCET_PRIVATEKEY));
const networkName = "goerli";
const networkName = "sepolia";
for (const providerName of create_provider_js_1.providerNames) {
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
if (provider == null) {

File diff suppressed because one or more lines are too long

@ -1 +1,2 @@
export {};
//# sourceMappingURL=test-providers-extra.d.ts.map

@ -0,0 +1 @@
{"version":3,"file":"test-providers-extra.d.ts","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-extra.ts"],"names":[],"mappings":""}

@ -1,9 +1,7 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const index_js_1 = require("../index.js");
const utils_js_1 = require("./utils.js");
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,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"}
{"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"}

@ -0,0 +1,10 @@
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

@ -0,0 +1 @@
{"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"}

@ -0,0 +1,138 @@
"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