Compare commits

...
Author SHA1 Message Date
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
2e21b52b97 Version Packages (#2495)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-19 19:56:45 -07:00
Jonas DanielsandGitHub e3f44905ca chore: update dependencies and add new ABI file (#2517) 2024-03-20 01:40:10 +00:00
Jonas DanielsandGitHub c47927708a refactor(any-evm-constants): Simplify matchError function (#2514) 2024-03-20 00:17:22 +00:00
4c511f0310 chore(chains): update chains (#2507)
Co-authored-by: GitHub Action <[email protected]>
2024-03-19 17:14:05 -07:00
YashandGitHub b2728ec6f2 Update contracts version (#2509) 2024-03-19 21:47:59 +00:00
Jonas DanielsandGitHub 663759975d chore: update test utils with new RPC endpoints (#2503) 2024-03-19 18:12:00 +00:00
f1971ffe36 chore(chains): update chains (#2506)
Co-authored-by: GitHub Action <[email protected]>
2024-03-19 10:01:37 -07:00
8b134bbb55 chore(chains): update chains (#2500)
Co-authored-by: GitHub Action <[email protected]>
2024-03-19 10:00:21 -07:00
8a20aa5825 chore(chains): update chains (#2427)
Co-authored-by: GitHub Action <[email protected]>
2024-03-18 12:54:41 -07:00
FirekeeperandGitHub 112863ecce Unity 4.7.10 (#2498) 2024-03-18 14:48:47 +00:00
Jonas DanielsandGitHub 863049dc0c fix(sdk): dev deployments and bundleId=undefined query params (#2496) 2024-03-16 03:14:21 +00:00
Nacho IacovinoandGitHub 802ba8c5a9 Smart Wallet -> Smart Account (#2493) 2024-03-15 21:38:50 +00:00
FirekeeperandGitHub e36ebe2243 [Unity] Resolve & Reverse Resolve ENS WebGL (#2494) 2024-03-15 21:31:53 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
c52e3beac1 Version Packages (#2486)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-14 23:04:16 -07:00
Joaquim VergesandGitHub f0250a77cd [SDK] Revert min maxPriorityFeePerGas (#2490) 2024-03-15 05:08:55 +00:00
d4be6479db Added Domain Separator as an input for gasless (#2332)
Co-authored-by: Jonas Daniels <[email protected]>
2024-03-15 05:03:17 +00:00
YashandGitHub c67b287764 Contract verification on zksync (#2481) 2024-03-15 02:47:29 +00:00
7ac4e6ba4e Contracts version 3.11.1 (#2459)
Co-authored-by: Joaquim Verges <[email protected]>
2024-03-14 18:57:34 +00:00
Joaquim VergesandGitHub c494db87cb sync chains (#2484) 2024-03-14 08:01:38 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
1932d601c1 Version Packages (#2474)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-14 01:09:17 -07:00
Joaquim VergesandGitHub 846a3503fe [SDK] Enforce minimum for maxPriorityFeePerGas (#2483) 2024-03-14 07:44:14 +00:00
Jonas DanielsandGitHub 3e7f9cb946 feat(sdk): add support for overriding default admin (#2479) 2024-03-14 01:14:21 +00:00
iketwandGitHub 83526c519a Only pass bundleId if defined (#2472) 2024-03-13 20:13:11 +00:00
Joaquim VergesandGitHub 2e01627c99 [Chains] sync chains (#2464) 2024-03-13 19:11:06 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
7b52c6bba0 Version Packages (#2467)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-13 11:56:41 -07:00
Edward SunandGitHub e024d78ed0 Add pay to usageEventSchema (#2465) 2024-03-13 05:02:40 +00:00
Joaquim VergesandGitHub a2002d1637 [SDK] Better return type for getProofsForAllowListEntry (#2469) 2024-03-13 01:20:22 +00:00
FirekeeperandGitHub 607ab7e860 [Unity] Expose SW isDeployed (#2466) 2024-03-12 22:37:02 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
f27989741a Version Packages (#2461)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-12 12:55:05 -07:00
Joaquim VergesandGitHub b2be63ada4 handle l2 estimations when forcing gasLimit (#2457) 2024-03-12 19:37:02 +00:00
Winston YeoandGitHub eee200f8d4 chore: whitelist embedded-wallet.thirdweb.com in service utils (#2453) 2024-03-12 15:45:09 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
817ab2249f Version Packages (#2446)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-11 17:22:24 -07:00
Joaquim VergesandGitHub 173777ade4 [SDK] update OP SDK to fix pnpm preinstall script issue (#2455) 2024-03-11 23:53:16 +00:00
Manan TankandGitHub 838233075a [react] Fix onConnect called multiple times in EmbeddedWalletSocialLogin (#2447) 2024-03-11 19:03:32 +00:00
FirekeeperandGitHub cabfc29119 [Smart Wallet] Use bundler eth_getUserOperationReceipt instead of rpc eth_getLogs (#2443) 2024-03-11 17:12:35 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f02570db88 Version Packages (#2442)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-08 16:56:41 -08:00
Joaquim VergesandGitHub c6b025e844 [SDK] handle estimateGasCost for OP chains (#2441) 2024-03-08 16:49:28 -08:00
Joaquim VergesandGitHub 332a14552b [Wallets] make accountInfo/factoryInfo internal props optional in SmartWalletConfig (#2439) 2024-03-09 00:45:04 +00:00
FirekeeperandGitHub c894270401 [Smart Wallet] try fetch sw abi if deployed (#2440) 2024-03-09 00:02:46 +00:00
Joaquim VergesandGitHub 595815dc3e Update README.md (#2438)
Signed-off-by: Joaquim Verges <[email protected]>
2024-03-08 12:42:35 -08:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
b959cafccc Version Packages (#2435)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-08 09:21:46 -08:00
Edward SunandGitHub 4cf0aede0e Update service-utils change to patch (#2434) 2024-03-08 01:53:20 +00:00
Edward SunandGitHub 6cf298a29a Add pay to Services list (#2431) 2024-03-08 01:15:42 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
62b2508a6c Version Packages (#2420)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-07 13:57:31 -08:00
c3967b798e chore(chains): update chains (#2426)
Co-authored-by: GitHub Action <[email protected]>
2024-03-07 13:21:11 -08:00
588897d1b0 chore(chains): update chains (#2416)
Co-authored-by: GitHub Action <[email protected]>
2024-03-07 11:59:05 -08:00
862905e161 refactor: Move checkContractWalletSignature function to a separate file (#2417)
Co-authored-by: 0xFirekeeper <[email protected]>
2024-03-07 06:09:48 +00:00
saminaandGitHub 5f81e246f2 Update README.md (#2418)
Signed-off-by: samina <[email protected]>
2024-03-07 02:43:38 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
1b052d63e9 Version Packages (#2409)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-03-06 15:23:29 -08:00
FirekeeperandGitHub a3f6878649 [Unity] Remove unnecessary logs, add getEmail check (#2415) 2024-03-06 22:44:51 +00:00
Jonas DanielsandGitHub 74a92dcb7d feat(wallets): pass clientId and secretKey to verifySignature functions (#2414) 2024-03-06 22:20:10 +00:00
38fc0b796a chore(chains): update chains (#2412)
Co-authored-by: GitHub Action <[email protected]>
2024-03-06 13:07:04 -08:00
YashandGitHub ef76a96c2d [CLI] Option to link external libraries (#2400) 2024-03-06 18:45:04 +00:00
2667706d8d chore(chains): update chains (#2408)
Co-authored-by: GitHub Action <[email protected]>
2024-03-06 00:03:24 -08:00
047fbe2918 chore(chains): update chains (#2406)
Co-authored-by: GitHub Action <[email protected]>
2024-03-05 23:58:43 -08:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
af01c63b45 Version Packages (#2384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-05 20:54:31 -08:00
3796204372 chore(chains): update chains (#2402)
Co-authored-by: GitHub Action <[email protected]>
2024-03-05 20:48:29 -08:00
Joaquim VergesandGitHub 9c7fbc1603 [SDK] update NFT drop metadata (#2404) 2024-03-06 04:41:47 +00:00
iketwandGitHub 156950423b [RN] cap expo-app version for automatic installation (#2405) 2024-03-06 04:13:01 +00:00
FirekeeperandGitHub f80f6307a3 [Smart Wallet] ERC20Paymaster Generic Support (#2388) 2024-03-05 21:38:43 +00:00
5f243bba0d chore(chains): update chains (#2378)
Co-authored-by: GitHub Action <[email protected]>
2024-03-05 10:16:45 -08:00
Joaquim VergesandGitHub 7d8697ec3f [React] expose useUpdateNFTMetadata hook (#2382) 2024-03-04 19:41:31 +00:00
FirekeeperandGitHub ab44b8f0ae [Smart Wallet] Do not deploy to sign typed data, allow presigned deploy+session key (#2379) 2024-03-02 15:13:56 +00:00
ad135b67b9 add factory v2 unit test (#2357)
Co-authored-by: Jonas Daniels <[email protected]>
2024-03-01 12:52:31 +00:00
305 changed files with 7102 additions and 1498 deletions
+57 -23
View File
@@ -5,7 +5,7 @@
<br />
</p>
<h1 align="center"><a href='https://thirdweb.com/'>thirdweb</a> JavaScript/TypeScript monorepo</h1>
<h1 align="center"><a href='https://thirdweb.com/'>thirdweb</a> TypeScript SDK</h1>
<p align="center">
<a href="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml">
@@ -16,38 +16,72 @@
</a>
</p>
<p align="center"><strong>Best in class web3 SDKs for Browser, Node and Mobile apps</strong></p>
<p align="center"><strong>All-in-one web3 SDK for Browser, Node and Mobile apps</strong></p>
> [!IMPORTANT]
> We rewrote the thirdweb SDK from scratch for performance! Head over to the [Beta version unified SDK](https://github.com/thirdweb-dev/js/tree/beta/packages/thirdweb).
## Features
- Support for React & React-Native
- First party support for [Embedded Wallets](https://portal.thirdweb.com/connect/embedded-wallet/overview) (social/email login)
- First party support for [Account Abstraction](https://portal.thirdweb.com/connect/account-abstraction)
- Instant connection to any chain with RPC Edge integration
- Integrated IPFS upload/download
- UI Components for connection, transactions, nft rendering
- High level contract extensions for interacting with common standards
- Automatic ABI resolution
## Library Comparison
| | thirdweb | Wagmi | Viem | Ethers@6 |
| ----------------------------------------- | -------- | ------------------ | ------------------ | -------- |
| Type safe contract API | ✅ | ✅ | ✅ | ✅ |
| Type safe wallet API | ✅ | ✅ | ✅ | ✅ |
| EVM utils | ✅ | ❌ | ✅ | ✅ |
| RPC for any EVM | ✅  | ⚠️ public RPC only | ⚠️ public RPC only | ❌ |
| Automatic ABI Resolution | ✅ | ❌ | ❌ | ❌ |
| IPFS Upload/Download | ✅ | ❌ | ❌ | ❌ |
| Embedded wallet (email/ social login) | ✅ | ⚠️ via 3rd party | ❌ | ❌ |
| Account abstraction (ERC4337) support | ✅ | ⚠️ via 3rd party | ⚠️ via 3rd party | ❌ |
| Web3 wallet connectors | ✅ | ✅ | ❌ | ❌ |
| Local wallet creation | ✅ | ❌ | ✅ | ✅ |
| Auth (SIWE) | ✅ | ⚠️ via 3rd party | ❌ | ❌ |
| Extensions functions for common standards | ✅ | ❌ | ❌ | ❌ |
| React Hooks | ✅ | ✅ | ❌ | ❌ |
| React UI components | ✅ | ❌ | ❌ | ❌ |
| React Native Hooks | ✅ | ❌ | ❌ | ❌ |
| React Native UI Components | ✅ | ❌ | ❌ | ❌ |
## Packages
| Package | Description | Latest Version |
| ---------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [/sdk](./packages/sdk) | Best in class web3 SDK for Browser, Node and Mobile apps | <a href="https://www.npmjs.com/package/@thirdweb-dev/sdk"><img src="https://img.shields.io/npm/v/@thirdweb-dev/sdk?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/wallets](./packages/wallets) | Unified web3 Wallet library to integrate any wallet into your applications. | <a href="https://www.npmjs.com/package/@thirdweb-dev/wallets"><img src="https://img.shields.io/npm/v/@thirdweb-dev/wallets?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/react](./packages/react) | Ultimate collection of React hooks for your web3 apps | <a href="https://www.npmjs.com/package/@thirdweb-dev/react"><img src="https://img.shields.io/npm/v/@thirdweb-dev/react?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/react-native](./packages/react-native) | Ultimate collection of React hooks for your native mobile web3 apps | <a href="https://www.npmjs.com/package/@thirdweb-dev/react-native"><img src="https://img.shields.io/npm/v/@thirdweb-dev/react-native?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/auth](./packages/auth) | Best in class wallet authentication for Node backends | <a href="https://www.npmjs.com/package/@thirdweb-dev/auth"><img src="https://img.shields.io/npm/v/@thirdweb-dev/auth?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/storage](./packages/storage) | Best in class decentralized storage SDK for Browser and Node | <a href="https://www.npmjs.com/package/@thirdweb-dev/storage"><img src="https://img.shields.io/npm/v/@thirdweb-dev/storage?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/cli](./packages/cli) | Publish and deploy smart contracts without dealing with private keys | <a href="https://www.npmjs.com/package/thirdweb"><img src="https://img.shields.io/npm/v/thirdweb?color=red&label=npm&logo=npm" alt="npm version"/></a> |
| [/chains](./packages/chains) | All EVM chain information as JS objects for easy handling | <a href="https://www.npmjs.com/package/@thirdweb-dev/chains"><img src="https://img.shields.io/npm/v/@thirdweb-dev/chains?color=red&label=npm&logo=npm" alt="npm version"/></a> |
## Documentation
Visit [https://portal.thirdweb.com/](https://portal.thirdweb.com/) to view the full documentation.
<br />
| Package | Description
| -----------------------------------------|-----------------------------------------------------------------------------|
| [/sdk](./packages/sdk) | Best in class web3 SDK for Browser, Node and Mobile apps |
| [/wallets](./packages/wallets) | Unified web3 Wallet library to integrate any wallet into your applications. |
| [/react](./packages/react) | Ultimate collection of React hooks for your web3 apps |
| [/react-native](./packages/react-native) | Ultimate collection of React hooks for your native mobile web3 apps |
| [/auth](./packages/auth) | Best in class wallet authentication for Node backends |
| [/storage](./packages/storage) | Best in class decentralized storage SDK for Browser and Node |
| [/cli](./packages/cli) | Publish and deploy smart contracts without dealing with private keys |
| [/chains](./packages/chains) | All EVM chain information as JS objects for easy handling |
## Contributing
We welcome contributions from all developers, regardless of experience level. If you are interested in contributing, please read our [Contributing Guide](.github/contributing.md) where you'll learn how the repo works, how to test your changes, and how to submit a pull request.
We welcome contributions from all developers regardless of experience level. If you are interested in contributing, please read our [Contributing Guide](.github/contributing.md) to learn how the repo works, how to test your changes, and how to submit a pull request.
<br />
See our [open source page](https://thirdweb.com/open-source) for more information on our open-source bounties and program.
## Community
## Additional Resources
The best place to discuss your ideas, ask questions, and troubleshoot issues is our [Discord server](https://discord.gg/thirdweb).
- [SDK Documentation](https://portal.thirdweb.com/typescript/v5)
- [Templates](https://thirdweb.com/templates)
- [YouTube](https://www.youtube.com/c/thirdweb_)
<br/>
## Support
For help or feedback, please [visit our support site](https://thirdweb.com/support)
## Security
+72
View File
@@ -1,5 +1,77 @@
# @thirdweb-dev/auth
## 4.1.45
### Patch Changes
- Updated dependencies [[`802ba8c`](https://github.com/thirdweb-dev/js/commit/802ba8c5a980d3bddd308f9b3d14cc9cbb5453d5)]:
- @thirdweb-dev/wallets@2.4.23
## 4.1.44
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.22
## 4.1.43
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.21
## 4.1.42
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.20
## 4.1.41
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.19
## 4.1.40
### Patch Changes
- Updated dependencies [[`cabfc29`](https://github.com/thirdweb-dev/js/commit/cabfc29119f25a78010f59f766bdcb8c392afa2d)]:
- @thirdweb-dev/wallets@2.4.18
## 4.1.39
### Patch Changes
- Updated dependencies [[`c894270`](https://github.com/thirdweb-dev/js/commit/c894270401850575d1a4df73e16198177b46477a), [`332a145`](https://github.com/thirdweb-dev/js/commit/332a14552bf95e13e5220b1bd73414f000088568)]:
- @thirdweb-dev/wallets@2.4.17
## 4.1.38
### Patch Changes
- [#2417](https://github.com/thirdweb-dev/js/pull/2417) [`862905e`](https://github.com/thirdweb-dev/js/commit/862905e161a091c15eb9b054cfcca0e5d2879fd6) Thanks [@jnsdls](https://github.com/jnsdls)! - make verify login payload be self-sufficient
- Updated dependencies [[`862905e`](https://github.com/thirdweb-dev/js/commit/862905e161a091c15eb9b054cfcca0e5d2879fd6)]:
- @thirdweb-dev/wallets@2.4.16
## 4.1.37
### Patch Changes
- Updated dependencies [[`74a92dc`](https://github.com/thirdweb-dev/js/commit/74a92dcb7dc4be7d03bcb8b7211e87016f52a81f)]:
- @thirdweb-dev/wallets@2.4.15
## 4.1.36
### Patch Changes
- Updated dependencies [[`ab44b8f`](https://github.com/thirdweb-dev/js/commit/ab44b8f0ae760065f400f76d69703e26bcbcc022), [`f80f630`](https://github.com/thirdweb-dev/js/commit/f80f6307a3ebe1adaaf072dd2e02aecf83bfa43f)]:
- @thirdweb-dev/wallets@2.4.14
## 4.1.35
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/auth",
"version": "4.1.35",
"version": "4.1.45",
"main": "dist/thirdweb-dev-auth.cjs.js",
"module": "dist/thirdweb-dev-auth.esm.js",
"browser": {
@@ -61,7 +61,7 @@
"lint": "eslint src/ && bunx publint --strict --level warning",
"fix": "eslint src/ --fix",
"clean": "rm -rf dist/ && rm -rf node_modules/",
"test": "mocha --config './test/.mocharc.json' --timeout 30000 --parallel './test/**/*.test.ts'",
"test": "mocha --config './test/.mocharc.json' --timeout 240000 --parallel './test/**/*.test.ts'",
"push": "yalc push"
},
"preconstruct": {
+11 -2
View File
@@ -23,14 +23,21 @@ import {
AuthenticateOptionsWithOptionalDomain,
AuthenticationPayload,
} from "./schema/authenticate";
import { ThirdwebAuthOptions } from "./types";
export class ThirdwebAuth {
private domain: string;
private wallet: GenericAuthWallet;
private options: ThirdwebAuthOptions;
constructor(wallet: GenericAuthWallet, domain: string) {
constructor(
wallet: GenericAuthWallet,
domain: string,
options: ThirdwebAuthOptions = {},
) {
this.wallet = wallet;
this.domain = domain;
this.options = options;
}
public updateWallet(wallet: GenericAuthWallet) {
@@ -66,9 +73,9 @@ export class ThirdwebAuth {
options?: VerifyOptionsWithOptionalDomain,
): Promise<string> {
return verifyLoginPayload({
wallet: this.wallet,
payload,
options: this.formatOptions(options),
clientOptions: this.options,
});
}
@@ -80,6 +87,7 @@ export class ThirdwebAuth {
wallet: this.wallet,
payload,
options: this.formatOptions(options),
clientOptions: this.options,
});
}
@@ -99,6 +107,7 @@ export class ThirdwebAuth {
wallet: this.wallet,
jwt,
options: this.formatOptions(options),
clientOptions: this.options,
});
}
+7 -2
View File
@@ -14,6 +14,7 @@ import {
import { GenerateOptionsSchema } from "../schema/generate";
import { RefreshOptionsSchema } from "../schema/refresh";
import { verifyLoginPayload } from "./login";
import { verifySignature } from "./verify-signature";
function isBrowser() {
return typeof window !== "undefined";
@@ -71,15 +72,16 @@ export async function generateJWT({
wallet,
payload,
options,
clientOptions,
}: GenerateJwtParams): Promise<string> {
const parsedOptions = GenerateOptionsSchema.parse(options);
const userAddress = await verifyLoginPayload({
wallet,
payload,
options: {
domain: parsedOptions.domain,
...parsedOptions.verifyOptions,
},
clientOptions,
});
let session: Json | undefined = undefined;
@@ -156,6 +158,7 @@ export async function authenticateJWT<TSession extends Json = Json>({
wallet,
jwt,
options,
clientOptions,
}: AuthenticateJwtParams): Promise<User<TSession>> {
const parsedOptions = AuthenticateOptionsSchema.parse(options);
const { payload, signature } = parseJWT(jwt);
@@ -210,11 +213,13 @@ export async function authenticateJWT<TSession extends Json = Json>({
}
}
const verified = await wallet.verifySignature(
const verified = await verifySignature(
JSON.stringify(payload),
signature,
issuerAddress,
chainId,
clientOptions.clientId,
clientOptions.secretKey,
);
if (!verified) {
throw new Error(
+10 -12
View File
@@ -10,6 +10,7 @@ import {
LoginPayloadDataSchema,
} from "../schema/login";
import { VerifyOptionsSchema } from "../schema/verify";
import { verifySignature } from "./verify-signature";
/**
* Create an EIP-4361 & CAIP-122 compliant message to sign based on the login payload
@@ -113,18 +114,12 @@ export async function buildAndSignLoginPayload({
}
export async function verifyLoginPayload({
wallet,
payload,
options,
clientOptions,
}: VerifyLoginPayloadParams): Promise<string> {
const parsedOptions = VerifyOptionsSchema.parse(options);
if (payload.payload.type !== wallet.type) {
throw new Error(
`Expected chain type '${wallet.type}' does not match chain type on payload '${payload.payload.type}'`,
);
}
// Check that the intended domain matches the domain of the payload
if (payload.payload.domain !== parsedOptions.domain) {
throw new Error(
@@ -204,16 +199,19 @@ export async function verifyLoginPayload({
// Check that the signing address is the claimed wallet address
const message = createLoginMessage(payload.payload);
const chainId =
wallet.type === "evm" && payload.payload.chain_id
? parseInt(payload.payload.chain_id)
: undefined;
const verified = await wallet.verifySignature(
const chainId = payload.payload.chain_id
? parseInt(payload.payload.chain_id)
: undefined;
const verified = await verifySignature(
message,
payload.signature,
payload.payload.address,
chainId,
clientOptions?.clientId,
clientOptions?.secretKey,
);
if (!verified) {
throw new Error(
`Signer address does not match payload address '${payload.payload.address.toLowerCase()}'`,
@@ -0,0 +1,35 @@
import { checkContractWalletSignature } from "@thirdweb-dev/wallets";
import { utils } from "ethers";
export async function verifySignature(
message: string,
signature: string,
address: string,
chainId?: number,
clientId?: string,
secretKey?: string,
): Promise<boolean> {
try {
const messageHash = utils.hashMessage(message);
const messageHashBytes = utils.arrayify(messageHash);
const recoveredAddress = utils.recoverAddress(messageHashBytes, signature);
if (recoveredAddress === address) {
return true;
}
} catch {
// no-op
}
if (!chainId) {
return false;
}
return checkContractWalletSignature(
message,
signature,
address,
chainId,
clientId,
secretKey,
);
}
+4 -1
View File
@@ -7,6 +7,7 @@ import {
} from "./authenticate";
import { RefreshOptions } from "./refresh";
import { GenerateOptions } from "./generate";
import { ThirdwebAuthOptions } from "../types";
export type BuildLoginPayloadParams = {
wallet: GenericAuthWallet;
@@ -19,9 +20,9 @@ export type SignLoginPayloadParams = {
};
export type VerifyLoginPayloadParams = {
wallet: GenericAuthWallet;
payload: LoginPayload;
options: VerifyOptions;
clientOptions: ThirdwebAuthOptions;
};
export type BuildJwtParams = {
@@ -33,6 +34,7 @@ export type GenerateJwtParams = {
wallet: GenericAuthWallet;
payload: LoginPayload;
options: GenerateOptions;
clientOptions: ThirdwebAuthOptions;
};
export type RefreshJwtParams = {
@@ -45,4 +47,5 @@ export type AuthenticateJwtParams = {
wallet: GenericAuthWallet;
jwt: string;
options: AuthenticateOptions;
clientOptions: ThirdwebAuthOptions;
};
+4
View File
@@ -0,0 +1,4 @@
export type ThirdwebAuthOptions = {
clientId?: string;
secretKey?: string;
};
+1 -1
View File
@@ -41,7 +41,7 @@ export function ThirdwebAuth<
): ThirdwebAuthReturnType<TData, TSession> {
const ctx = {
...cfg,
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain, cfg.thirdwebAuthOptions),
};
const router = express.Router();
+2
View File
@@ -1,4 +1,5 @@
import { ThirdwebAuth } from "../../core";
import { ThirdwebAuthOptions } from "../../core/types";
import { Json, LoginPayloadOutputSchema, User } from "../../core";
import type { GenericAuthWallet } from "@thirdweb-dev/wallets";
import { Request } from "express";
@@ -68,6 +69,7 @@ export type ThirdwebAuthConfig<
| ((user: User, req: Request) => void)
| ((user: User, req: Request) => Promise<void>);
};
thirdwebAuthOptions?: ThirdwebAuthOptions;
};
export type ThirdwebAuthContext<
+1 -1
View File
@@ -44,7 +44,7 @@ export function ThirdwebAuth<
): ThirdwebAuthReturnType<TData, TSession> {
const ctx = {
...cfg,
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain, cfg.thirdwebAuthOptions),
};
const authRouter = async (
+2
View File
@@ -9,6 +9,7 @@ import {
import { z } from "zod";
import { IncomingMessage, ServerResponse } from "http";
import { ZodTypeProvider } from "fastify-type-provider-zod";
import { ThirdwebAuthOptions } from "../../core/types";
export const PayloadBodySchema = z.object({
address: z.string(),
@@ -76,6 +77,7 @@ export type ThirdwebAuthConfig<
| ((user: User, req: FastifyRequest) => void)
| ((user: User, req: FastifyRequest) => Promise<void>);
};
thirdwebAuthOptions?: ThirdwebAuthOptions;
};
export type ThirdwebAuthContext<
+3 -1
View File
@@ -2,6 +2,7 @@ import type { GenericAuthWallet } from "@thirdweb-dev/wallets";
import { z } from "zod";
import { Json, LoginPayloadOutputSchema, User } from "../../core";
import { ThirdwebAuthOptions } from "../../core/types";
export const PayloadBodySchema = z.object({
address: z.string(),
@@ -55,8 +56,9 @@ export type ThirdwebAuthConfigShared = {
sameSite?: "lax" | "strict" | "none";
secure?: boolean;
};
thirdwebAuthOptions?: ThirdwebAuthOptions;
};
export type ThirdwebNextContext = {
params?: Record<string, string | string[]>
params?: Record<string, string | string[]>;
};
+9 -15
View File
@@ -8,19 +8,10 @@ import loginHandler from "./routes/login";
import logoutHandler from "./routes/logout";
import userHandler from "./routes/user";
import switchAccountHandler from "./routes/switch-account";
import type {
ThirdwebAuthConfig,
ThirdwebAuthContext,
} from "./types";
import type {
ThirdwebAuthRoute,
ThirdwebNextContext,
} from "../common/types";
import type { ThirdwebAuthConfig, ThirdwebAuthContext } from "./types";
import type { ThirdwebAuthRoute, ThirdwebNextContext } from "../common/types";
export type {
ThirdwebAuthConfig,
ThirdwebAuthContext,
} from "./types";
export type { ThirdwebAuthConfig, ThirdwebAuthContext } from "./types";
export async function ThirdwebAuthRouter(
req: NextRequest,
@@ -44,7 +35,7 @@ export async function ThirdwebAuthRouter(
default:
return Response.json(
{ message: "Invalid route for authentication." },
{ status: 400},
{ status: 400 },
);
}
}
@@ -55,10 +46,13 @@ export function ThirdwebAuth<
>(cfg: ThirdwebAuthConfig<TData, TSession>) {
const authCtx = {
...cfg,
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain, cfg.thirdwebAuthOptions),
};
async function ThirdwebAuthHandler(req: NextRequest, ctx: ThirdwebNextContext) {
async function ThirdwebAuthHandler(
req: NextRequest,
ctx: ThirdwebNextContext,
) {
return await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
}
+1 -1
View File
@@ -52,7 +52,7 @@ export function ThirdwebAuth<
>(cfg: ThirdwebAuthConfig<TData, TSession>) {
const ctx = {
...cfg,
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain, cfg.thirdwebAuthOptions),
};
function ThirdwebAuthHandler(
+5 -1
View File
@@ -3,6 +3,8 @@ import { EthersWallet } from "@thirdweb-dev/wallets/evm/wallets/ethers";
import { expect } from "chai";
import { Wallet } from "ethers";
require("dotenv-mono").load();
describe("Wallet Authentication - EVM", async () => {
let adminWallet: any, signerWallet: any, attackerWallet: any;
let auth: ThirdwebAuth;
@@ -18,7 +20,9 @@ describe("Wallet Authentication - EVM", async () => {
signerWallet = new EthersWallet(signerSigner);
attackerWallet = new EthersWallet(attackerSigner);
auth = new ThirdwebAuth(signerWallet, "thirdweb.com");
auth = new ThirdwebAuth(signerWallet, "thirdweb.com", {
secretKey: process.env.TW_SECRET_KEY,
});
});
beforeEach(async () => {
+384
View File
@@ -0,0 +1,384 @@
import { LocalWallet, SmartWallet } from "@thirdweb-dev/wallets";
import { ThirdwebAuth } from "../src/core";
import { EthersWallet } from "@thirdweb-dev/wallets/evm/wallets/ethers";
import { expect } from "chai";
import { Wallet } from "ethers";
require("dotenv-mono").load();
describe("Wallet Authentication - EVM - Smart Wallet", async () => {
let adminWallet: any, signerWallet: any, attackerWallet: any;
let auth: ThirdwebAuth;
before(async () => {
const factoryAddress = "0x13947435c2fe6BE51ED82F6f59C38617a323dB9B";
const chain = 80001;
const localWallet = new LocalWallet();
await localWallet.generate();
const smartWallet = new SmartWallet({
chain: chain,
factoryAddress: factoryAddress,
gasless: true,
secretKey: process.env.TW_SECRET_KEY,
});
await smartWallet.connect({ personalWallet: localWallet });
adminWallet = new EthersWallet(Wallet.createRandom());
signerWallet = smartWallet;
attackerWallet = new EthersWallet(Wallet.createRandom());
auth = new ThirdwebAuth(signerWallet, "thirdweb.com", {
secretKey: process.env.TW_SECRET_KEY,
});
});
beforeEach(async () => {
auth.updateWallet(signerWallet);
});
it("Should verify logged in wallet", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const address = await auth.verify(payload);
expect(address).to.equal(await signerWallet.getAddress());
});
it("Should verify logged in wallet with chain ID and expiration", async () => {
const payload = await auth.login({
expirationTime: new Date(Date.now() + 1000 * 60 * 5),
chainId: "80001",
});
auth.updateWallet(adminWallet);
const address = await auth.verify(payload, {
chainId: "80001",
});
expect(address).to.equal(await signerWallet.getAddress());
});
it("Should verify payload with resources", async () => {
const payload = await auth.login({
resources: ["https://example.com", "https://test.com"],
});
auth.updateWallet(adminWallet);
const address = await auth.verify(payload, {
resources: ["https://example.com", "https://test.com"],
});
expect(address).to.equal(await signerWallet.getAddress());
});
it("Should reject payload without necessary resources", async () => {
const payload = await auth.login({
resources: ["https://example.com"],
});
auth.updateWallet(adminWallet);
try {
await auth.verify(payload, {
resources: ["https://example.com", "https://test.com"],
});
expect.fail();
} catch (err: any) {
expect(err.message).to.equal(
"Login request is missing required resources: https://test.com",
);
}
});
it("Should verify payload with customized statement", async () => {
const payload = await auth.login({
statement: "Please sign!",
});
auth.updateWallet(adminWallet);
const address = await auth.verify(payload, {
statement: "Please sign!",
});
expect(address).to.equal(await signerWallet.getAddress());
});
it("Should reject payload with incorrect statement", async () => {
const payload = await auth.login({
statement: "Please sign!",
});
auth.updateWallet(adminWallet);
try {
await auth.verify(payload, {
statement: "Please sign again!",
});
expect.fail();
} catch (err: any) {
expect(err.message).to.include(
"Expected statement 'Please sign again!' does not match statement on payload",
);
}
});
it("Should reject invalid nonce", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
try {
await auth.verify(payload, {
validateNonce: (nonce: string) => {
if (nonce === payload.payload.nonce) {
throw new Error();
}
},
});
expect.fail();
} catch (err: any) {
expect(err.message).to.equal("Login request nonce is invalid");
}
});
it("Should accept valid nonce", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const address = await auth.verify(payload, {
validateNonce: (nonce: string) => {
if (nonce !== payload.payload.nonce) {
throw new Error();
}
},
});
expect(address).to.equal(await signerWallet.getAddress());
});
it("Should reject payload with incorrect domain", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
try {
await auth.verify(payload, { domain: "test.thirdweb.com" });
expect.fail();
} catch (err: any) {
expect(err.message).to.equal(
"Expected domain 'test.thirdweb.com' does not match domain on payload 'thirdweb.com'",
);
}
});
it("Should reject expired login payload", async () => {
const payload = await auth.login({
expirationTime: new Date(Date.now() - 1000 * 60 * 5),
});
auth.updateWallet(adminWallet);
try {
await auth.verify(payload);
expect.fail();
} catch (err: any) {
expect(err.message).to.equal("Login request has expired");
}
});
it("Should reject payload with incorrect chain ID", async () => {
const payload = await auth.login({
chainId: "1",
});
auth.updateWallet(adminWallet);
try {
await auth.verify(payload, {
chainId: "137",
});
expect.fail();
} catch (err: any) {
expect(err.message).to.equal(
"Expected chain ID '137' does not match chain ID on payload '1'",
);
}
});
it("Should reject payload with incorrect signer", async () => {
const payload = await auth.login();
payload.payload.address = await attackerWallet.getAddress();
auth.updateWallet(adminWallet);
try {
await auth.verify(payload);
expect.fail();
} catch (err: any) {
expect(err.message).to.contain("does not match payload address");
}
});
it("Should generate valid authentication token", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload);
const user = await auth.authenticate(token);
expect(user.address).to.equal(await signerWallet.getAddress());
});
it("Should reject token with incorrect domain", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload);
try {
await auth.authenticate(token, { domain: "test.thirdweb.com" });
expect.fail();
} catch (err: any) {
expect(err.message).to.contain(
"Expected token to be for the domain 'test.thirdweb.com', but found token with domain 'thirdweb.com'",
);
}
});
it("Should reject token before invalid before", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload, {
invalidBefore: new Date(Date.now() + 1000 * 60 * 5),
});
try {
await auth.authenticate(token);
expect.fail();
} catch (err: any) {
expect(err.message).to.contain("This token is invalid before");
}
});
it("Should reject expired authentication token", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload, {
expirationTime: new Date(Date.now() - 1000 * 60 * 5),
});
try {
await auth.authenticate(token);
expect.fail();
} catch (err: any) {
expect(err.message).to.contain("This token expired");
}
});
it("Should reject if admin address is not connected wallet address", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload);
auth.updateWallet(signerWallet);
try {
await auth.authenticate(token);
expect.fail();
} catch (err: any) {
expect(err.message).to.contain(
`The expected issuer address '${await signerWallet.getAddress()}' did not match the token issuer address '${await adminWallet.getAddress()}'`,
);
}
});
it("Should accept token with valid token ID", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload, {
tokenId: "test",
});
const user = await auth.authenticate(token, {
validateTokenId: (tokenId: string) => {
if (tokenId !== "test") {
throw new Error();
}
},
});
expect(user.address).to.equal(await signerWallet.getAddress());
});
it("Should reject token with invalid token ID", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload, {
tokenId: "test",
});
try {
await auth.authenticate(token, {
validateTokenId: (tokenId: string) => {
if (tokenId !== "invalid") {
throw new Error();
}
},
});
expect.fail();
} catch (err: any) {
expect(err.message).to.contain("Token ID is invalid");
}
});
it("Should propagate session on token", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload, {
session: { role: "admin" },
});
const user = await auth.authenticate(token);
expect(user.address).to.equal(await signerWallet.getAddress());
expect(user.session).to.deep.equal({ role: "admin" });
});
it("Should call session callback function", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload, {
session: (address: string) => {
return { address, role: "admin" };
},
});
const user = await auth.authenticate(token);
expect(user.address).to.equal(await signerWallet.getAddress());
expect(user.session).to.deep.equal({
address: await signerWallet.getAddress(),
role: "admin",
});
});
it("Should authenticate with issuer address", async () => {
const payload = await auth.login();
auth.updateWallet(adminWallet);
const token = await auth.generate(payload);
auth.updateWallet(attackerWallet);
try {
await auth.authenticate(token);
expect.fail();
} catch (err: any) {
expect(err.message).to.contain("The expected issuer address");
}
const user = await auth.authenticate(token, {
issuerAddress: await adminWallet.getAddress(),
});
expect(user.address).to.equal(await signerWallet.getAddress());
});
});
+38
View File
@@ -1,5 +1,43 @@
# @thirdweb-dev/chains
## 0.1.81
### Patch Changes
- [#2496](https://github.com/thirdweb-dev/js/pull/2496) [`863049d`](https://github.com/thirdweb-dev/js/commit/863049dc0ca989d2654b4aacba811263931a33fe) Thanks [@jnsdls](https://github.com/jnsdls)! - do not append `?bundleId` query param to rpc url if the bundle id is undefined
- [#2427](https://github.com/thirdweb-dev/js/pull/2427) [`8a20aa5`](https://github.com/thirdweb-dev/js/commit/8a20aa58259edc5bac578dc5e4f4d971ed7adf36) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.80
### Patch Changes
- [#2484](https://github.com/thirdweb-dev/js/pull/2484) [`c494db8`](https://github.com/thirdweb-dev/js/commit/c494db87cbfa4b6fc4013abb01936e86a4350ea8) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Update chains
## 0.1.79
### Patch Changes
- [#2464](https://github.com/thirdweb-dev/js/pull/2464) [`2e01627`](https://github.com/thirdweb-dev/js/commit/2e01627c998a49a1dd41041f3743a28488c92697) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Sync chains
## 0.1.78
### Patch Changes
- [#2416](https://github.com/thirdweb-dev/js/pull/2416) [`588897d`](https://github.com/thirdweb-dev/js/commit/588897d1b04e6c63da13639aeb47ca701308e1b2) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.77
### Patch Changes
- [#2406](https://github.com/thirdweb-dev/js/pull/2406) [`047fbe2`](https://github.com/thirdweb-dev/js/commit/047fbe2918808cbc8fded90104458b6e38d1207d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.76
### Patch Changes
- [#2378](https://github.com/thirdweb-dev/js/pull/2378) [`5f243bb`](https://github.com/thirdweb-dev/js/commit/5f243bba0ded5dace9344c79e8904a4a342d16af) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.75
### Patch Changes
+3 -1
View File
@@ -71,7 +71,9 @@ export default {
"wss://mainnet.gateway.tenderly.co",
"https://rpc.blocknative.com/boost",
"https://rpc.flashbots.net/fast",
"https://rpc.mevblocker.io/fullprivacy"
"https://rpc.mevblocker.io/fullprivacy",
"https://eth.drpc.org",
"wss://eth.drpc.org"
],
"shortName": "eth",
"slip44": 60,
+3 -1
View File
@@ -57,7 +57,9 @@ export default {
"https://optimism.gateway.tenderly.co",
"wss://optimism.gateway.tenderly.co",
"https://optimism-rpc.publicnode.com",
"wss://optimism-rpc.publicnode.com"
"wss://optimism-rpc.publicnode.com",
"https://optimism.drpc.org",
"wss://optimism.drpc.org"
],
"shortName": "oeth",
"slug": "optimism",
+4 -3
View File
@@ -24,11 +24,12 @@ export default {
"redFlags": [],
"rpc": [
"https://1001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://klaytn-baobab.blockpi.network/v1/rpc/public",
"https://api.baobab.klaytn.net:8651"
"https://api.baobab.klaytn.net:8651",
"https://klaytn-baobab.drpc.org",
"wss://klaytn-baobab.drpc.org"
],
"shortName": "Baobab",
"slip44": 1,
"slug": "klaytn-testnet-baobab",
"testnet": false
"testnet": true
} as const satisfies Chain;
+18 -18
View File
@@ -1,37 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "SVRN",
"chain": "GTN",
"chainId": 101010,
"explorers": [
{
"name": "Soverun",
"url": "https://testnet.soverun.com",
"name": "blockscout",
"url": "https://stability.blockscout.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.soverun.com"
],
"faucets": [],
"icon": {
"url": "ipfs://QmTYazUzgY9Nn2mCjWwFUSLy3dG6i2PvALpwCNQvx1zXyi",
"width": 1154,
"height": 1154,
"url": "ipfs://bafkreid3wd6ouu53r677q2z24a4eq5un5tlwbc4izfapcvvtrlhkmz43au",
"width": 133,
"height": 144,
"format": "png"
},
"infoURL": "https://soverun.com",
"name": "Soverun Testnet",
"infoURL": "https://stabilityprotocol.com",
"name": "Global Trust Network",
"nativeCurrency": {
"name": "Soverun",
"symbol": "SVRN",
"name": "FREE",
"symbol": "FREE",
"decimals": 18
},
"networkId": 101010,
"redFlags": [
"reusedChainId"
],
"rpc": [
"https://101010.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.soverun.com"
"https://gtn.stabilityprotocol.com"
],
"shortName": "SVRNt",
"slip44": 1,
"slug": "soverun-testnet",
"testnet": true
"shortName": "stabilityprotocol",
"slug": "global-trust-network",
"testnet": false
} as const satisfies Chain;
+3 -1
View File
@@ -38,7 +38,9 @@ export default {
"https://rpc.chiado.gnosis.gateway.fm",
"wss://rpc.chiadochain.net/wss",
"https://gnosis-chiado-rpc.publicnode.com",
"wss://gnosis-chiado-rpc.publicnode.com"
"wss://gnosis-chiado-rpc.publicnode.com",
"https://gnosis-chiado.drpc.org",
"wss://gnosis-chiado.drpc.org"
],
"shortName": "chi",
"slip44": 1,
+34
View File
@@ -0,0 +1,34 @@
import type { Chain } from "../src/types";
export default {
"chain": "Stratis",
"chainId": 105105,
"explorers": [
{
"name": "Stratis Explorer",
"url": "https://explorer.stratisevm.com",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmWiRBqfzoZ3GC7oCbYFqbwLyF4uDHM4eYdKUUJ7LHf2EA",
"width": 59,
"height": 55,
"format": "svg"
},
"infoURL": "https://www.stratisplatform.com",
"name": "Stratis Mainnet",
"nativeCurrency": {
"name": "Stratis",
"symbol": "STRAX",
"decimals": 18
},
"networkId": 105105,
"rpc": [
"https://105105.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.stratisevm.com"
],
"shortName": "stratis",
"slug": "stratis",
"testnet": false
} as const satisfies Chain;
+3 -1
View File
@@ -37,7 +37,9 @@ export default {
"redFlags": [],
"rpc": [
"https://1088.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://andromeda.metis.io/?owner=1088"
"https://andromeda.metis.io/?owner=1088",
"https://metis.drpc.org",
"wss://metis.drpc.org"
],
"shortName": "metis-andromeda",
"slug": "metis-andromeda",
+3 -1
View File
@@ -41,7 +41,9 @@ export default {
},
"rpc": [
"https://1101.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://zkevm-rpc.com"
"https://zkevm-rpc.com",
"https://polygon-zkevm.drpc.org",
"wss://polygon-zkevm.drpc.org"
],
"shortName": "zkevm",
"slug": "polygon-zkevm",
+3 -1
View File
@@ -44,7 +44,9 @@ export default {
"https://sepolia.gateway.tenderly.co",
"wss://sepolia.gateway.tenderly.co",
"https://ethereum-sepolia-rpc.publicnode.com",
"wss://ethereum-sepolia-rpc.publicnode.com"
"wss://ethereum-sepolia-rpc.publicnode.com",
"https://sepolia.drpc.org",
"wss://sepolia.drpc.org"
],
"shortName": "sep",
"slip44": 1,
+3 -1
View File
@@ -36,7 +36,9 @@ export default {
"redFlags": [],
"rpc": [
"https://11155420.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://sepolia.optimism.io"
"https://sepolia.optimism.io",
"https://optimism-sepolia.drpc.org",
"wss://optimism-sepolia.drpc.org"
],
"shortName": "opsep",
"slip44": 1,
+3 -1
View File
@@ -33,7 +33,9 @@ export default {
"rpc": [
"https://1116.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.coredao.org/",
"https://rpc-core.icecreamswap.com"
"https://rpc-core.icecreamswap.com",
"https://core.drpc.org",
"wss://core.drpc.org"
],
"shortName": "core",
"slug": "core-blockchain",
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 11198,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI0304I2 Testnet",
"nativeCurrency": {
"name": "QI0304I2 Testnet Token",
"symbol": "LOD",
"decimals": 18
},
"networkId": 11198,
"redFlags": [],
"rpc": [
"https://11198.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QI0304I2 Testnet",
"slug": "qi0304i2-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -22,7 +22,9 @@ export default {
"https://11235.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.eth.haqq.network",
"https://haqq-evm-rpc.publicnode.com",
"wss://haqq-evm-rpc.publicnode.com"
"wss://haqq-evm-rpc.publicnode.com",
"https://haqq.drpc.org",
"wss://haqq.drpc.org"
],
"shortName": "ISLM",
"slug": "haqq-network",
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "BEVM",
"chainId": 11501,
"explorers": [
{
"name": "bevm mainnet scan",
"url": "https://scan-mainnet.bevm.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmfMXiYn4xF9JwdjaqM5YKhqoByox51XvnL68VvKJS6yyu",
"width": 1000,
"height": 1000,
"format": "png"
},
"infoURL": "https://bevm.io",
"name": "BEVM Mainnet",
"nativeCurrency": {
"name": "BTC",
"symbol": "BTC",
"decimals": 18
},
"networkId": 11501,
"rpc": [
"https://11501.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-mainnet-1.bevm.io/",
"https://rpc-mainnet-2.bevm.io/"
],
"shortName": "bevm",
"slug": "bevm",
"testnet": false
} as const satisfies Chain;
+1 -1
View File
@@ -28,7 +28,7 @@ export default {
"https://11503.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.bevm.io/"
],
"shortName": "bevm",
"shortName": "bevm-test",
"slug": "bevm-testnet",
"testnet": true
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 11516,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Tenzro",
"nativeCurrency": {
"name": "Tenzro Token",
"symbol": "TNZO",
"decimals": 18
},
"networkId": 11516,
"redFlags": [],
"rpc": [
"https://11516.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/tenzro/testnet/rpc"
],
"shortName": "Tenzro",
"slug": "tenzro",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -34,7 +34,9 @@ export default {
"redFlags": [],
"rpc": [
"https://122.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.fuse.io"
"https://rpc.fuse.io",
"https://fuse.drpc.org",
"wss://fuse.drpc.org"
],
"shortName": "fuse",
"slug": "fuse",
+3 -1
View File
@@ -44,7 +44,9 @@ export default {
"rpc": [
"https://1261120.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.zkatana.gelato.digital",
"https://rpc.startale.com/zkatana"
"https://rpc.startale.com/zkatana",
"https://astar-zkatana.drpc.org",
"wss://astar-zkatana.drpc.org"
],
"shortName": "azktn",
"slug": "zkatana",
+3 -1
View File
@@ -23,7 +23,9 @@ export default {
"https://rpc.api.moonbeam.network",
"wss://wss.api.moonbeam.network",
"https://moonbeam-rpc.publicnode.com",
"wss://moonbeam-rpc.publicnode.com"
"wss://moonbeam-rpc.publicnode.com",
"https://moonbeam.drpc.org",
"wss://moonbeam.drpc.org"
],
"shortName": "mbeam",
"slug": "moonbeam",
+3 -1
View File
@@ -23,7 +23,9 @@ export default {
"https://rpc.api.moonriver.moonbeam.network",
"wss://wss.api.moonriver.moonbeam.network",
"https://moonriver-rpc.publicnode.com",
"wss://moonriver-rpc.publicnode.com"
"wss://moonriver-rpc.publicnode.com",
"https://moonriver.drpc.org",
"wss://moonriver.drpc.org"
],
"shortName": "mriver",
"slug": "moonriver",
+3 -1
View File
@@ -21,7 +21,9 @@ export default {
"rpc": [
"https://1287.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.api.moonbase.moonbeam.network",
"wss://wss.api.moonbase.moonbeam.network"
"wss://wss.api.moonbase.moonbeam.network",
"https://moonbase-alpha.drpc.org",
"wss://moonbase-alpha.drpc.org"
],
"shortName": "mbase",
"slip44": 1,
+3 -1
View File
@@ -20,7 +20,9 @@ export default {
"networkId": 1313161554,
"rpc": [
"https://1313161554.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.aurora.dev"
"https://mainnet.aurora.dev",
"https://aurora.drpc.org",
"wss://aurora.drpc.org"
],
"shortName": "aurora",
"slug": "aurora",
+3 -1
View File
@@ -20,7 +20,9 @@ export default {
"networkId": 1313161555,
"rpc": [
"https://1313161555.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.aurora.dev/"
"https://testnet.aurora.dev/",
"https://aurora-testnet.drpc.org",
"wss://aurora-testnet.drpc.org"
],
"shortName": "aurora-testnet",
"slip44": 1,
+3 -1
View File
@@ -34,7 +34,9 @@ export default {
"networkId": 13371,
"rpc": [
"https://13371.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.immutable.com"
"https://rpc.immutable.com",
"https://immutable-zkevm.drpc.org",
"wss://immutable-zkevm.drpc.org"
],
"shortName": "imx",
"slug": "immutable-zkevm",
+3 -1
View File
@@ -34,7 +34,9 @@ export default {
"networkId": 13473,
"rpc": [
"https://13473.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.testnet.immutable.com"
"https://rpc.testnet.immutable.com",
"https://immutable-zkevm-testnet.drpc.org",
"wss://immutable-zkevm-testnet.drpc.org"
],
"shortName": "imx-testnet",
"slip44": 1,
+3 -1
View File
@@ -50,7 +50,9 @@ export default {
"https://polygon-bor-rpc.publicnode.com",
"wss://polygon-bor-rpc.publicnode.com",
"https://polygon.gateway.tenderly.co",
"wss://polygon.gateway.tenderly.co"
"wss://polygon.gateway.tenderly.co",
"https://polygon.drpc.org",
"wss://polygon.drpc.org"
],
"shortName": "matic",
"slip44": 966,
+3 -1
View File
@@ -28,7 +28,9 @@ export default {
"redFlags": [],
"rpc": [
"https://1442.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.public.zkevm-test.net"
"https://rpc.public.zkevm-test.net",
"https://polygon-zkevm-testnet.drpc.org",
"wss://polygon-zkevm-testnet.drpc.org"
],
"shortName": "testnet-zkEVM-mango",
"slip44": 1,
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 1614,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI0305I1 Testnet",
"nativeCurrency": {
"name": "QI0305I1 Testnet Token",
"symbol": "PDC",
"decimals": 18
},
"networkId": 1614,
"redFlags": [],
"rpc": [
"https://1614.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QI0305I1 Testnet",
"slug": "qi0305i1-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -28,7 +28,9 @@ export default {
"https://api.s0.t.hmny.io",
"https://rpc.ankr.com/harmony",
"https://harmony.api.onfinality.io/public",
"https://1rpc.io/one"
"https://1rpc.io/one",
"https://harmony-0.drpc.org",
"wss://harmony-0.drpc.org"
],
"shortName": "hmy-s0",
"slip44": 1023,
+3 -1
View File
@@ -20,7 +20,9 @@ export default {
"networkId": 1666600001,
"rpc": [
"https://1666600001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api.s1.t.hmny.io"
"https://api.s1.t.hmny.io",
"https://harmony-1.drpc.org",
"wss://harmony-1.drpc.org"
],
"shortName": "hmy-s1",
"slip44": 1023,
+3 -1
View File
@@ -29,7 +29,9 @@ export default {
"rpc": [
"https://167008.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.katla.taiko.xyz",
"wss://rpc.katla.taiko.xyz"
"wss://rpc.katla.taiko.xyz",
"https://taiko-katla.drpc.org",
"wss://taiko-katla.drpc.org"
],
"shortName": "tko-katla",
"slug": "taiko-katla-l2",
+3 -1
View File
@@ -38,7 +38,9 @@ export default {
},
"rpc": [
"https://168587773.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://sepolia.blast.io"
"https://sepolia.blast.io",
"https://blast-sepolia.drpc.org",
"wss://blast-sepolia.drpc.org"
],
"shortName": "blastsepolia",
"slug": "blast-sepolia-testnet",
+3 -1
View File
@@ -34,7 +34,9 @@ export default {
"networkId": 169,
"rpc": [
"https://169.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://pacific-rpc.manta.network/http"
"https://pacific-rpc.manta.network/http",
"https://manta-pacific.drpc.org",
"wss://manta-pacific.drpc.org"
],
"shortName": "manta",
"slug": "manta-pacific",
+3 -1
View File
@@ -61,7 +61,9 @@ export default {
"https://17000.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.holesky.ethpandaops.io",
"https://ethereum-holesky-rpc.publicnode.com",
"wss://ethereum-holesky-rpc.publicnode.com"
"wss://ethereum-holesky-rpc.publicnode.com",
"https://holesky.drpc.org",
"wss://holesky.drpc.org"
],
"shortName": "holesky",
"slip44": 1,
+34
View File
@@ -0,0 +1,34 @@
import type { Chain } from "../src/types";
export default {
"chain": "DRC",
"chainId": 1717,
"explorers": [
{
"name": "Doric Explorer",
"url": "https://explorer.doric.network",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmdFEozqneC8abhpfgtGpvfKpWVEbL8eMZjJKtUPuBTanK",
"width": 988,
"height": 901,
"format": "png"
},
"infoURL": "https://doric.network",
"name": "Doric Network",
"nativeCurrency": {
"name": "Doric Native Token",
"symbol": "DRC",
"decimals": 18
},
"networkId": 1717,
"rpc": [
"https://1717.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.doric.network"
],
"shortName": "DRC",
"slug": "doric-network",
"testnet": false
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 17186,
"explorers": [
{
"name": "lazy crimson coral explorer",
"url": "https://explorerl2new-lazy-crimson-coral-cotlv0ftqf.t.conduit.xyz",
"standard": "standard"
}
],
"faucets": [],
"features": [],
"name": "lazy-crimson-coral",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 17186,
"parent": {
"type": "L3",
"chain": "Base",
"bridges": [
{
"url": "https://lazy-crimson-coral-cotlv0ftqf.testnets.superbridge.app"
}
]
},
"redFlags": [],
"rpc": [],
"shortName": "lazy-crimson-coral",
"slug": "lazy-crimson-coral",
"testnet": true
} as const satisfies Chain;
+29
View File
@@ -0,0 +1,29 @@
import type { Chain } from "../src/types";
export default {
"chain": "Reya",
"chainId": 1729,
"explorers": [
{
"name": "Reya Network Explorer",
"url": "https://explorer.reya.network",
"standard": "EIP3091"
}
],
"faucets": [],
"infoURL": "https://reya.network",
"name": "Reya Network",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 1729,
"rpc": [
"https://1729.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.reya.network",
"wss://ws.reya.network"
],
"shortName": "reya",
"slug": "reya-network",
"testnet": false
} as const satisfies Chain;
+3 -1
View File
@@ -22,7 +22,9 @@ export default {
"networkId": 18,
"rpc": [
"https://18.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.thundercore.com"
"https://testnet-rpc.thundercore.com",
"https://thundercore-testnet.drpc.org",
"wss://thundercore-testnet.drpc.org"
],
"shortName": "TST",
"slip44": 1,
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 18898,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QaUser4 Testnet",
"nativeCurrency": {
"name": "QaUser4 Testnet Token",
"symbol": "NLD",
"decimals": 18
},
"networkId": 18898,
"redFlags": [],
"rpc": [
"https://18898.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QaUser4 Testnet",
"slug": "qauser4-testnet",
"testnet": true
} as const satisfies Chain;
+36
View File
@@ -0,0 +1,36 @@
import type { Chain } from "../src/types";
export default {
"chain": "FFG",
"chainId": 191,
"explorers": [],
"faucets": [],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://bafkreihsas2rwakc7lllmtb4pcgwutlel2woibmqmhd4aiin342zgtpmwy",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://filefilego.com",
"name": "FileFileGo",
"nativeCurrency": {
"name": "FFG",
"symbol": "FFG",
"decimals": 18
},
"networkId": 191,
"rpc": [
"https://191.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.filefilego.com/rpc"
],
"shortName": "ffg",
"slug": "filefilego",
"testnet": false
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 19112,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI0304s1 Testnet",
"nativeCurrency": {
"name": "QI0304s1 Testnet Token",
"symbol": "LKG",
"decimals": 18
},
"networkId": 19112,
"redFlags": [],
"rpc": [
"https://19112.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QI0304s1 Testnet",
"slug": "qi0304s1-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -20,7 +20,9 @@ export default {
"networkId": 199,
"rpc": [
"https://199.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.bt.io"
"https://rpc.bt.io",
"https://bittorrent.drpc.org",
"wss://bittorrent.drpc.org"
],
"shortName": "BTT",
"slug": "bittorrent-chain",
+44
View File
@@ -0,0 +1,44 @@
import type { Chain } from "../src/types";
export default {
"chain": "Hubblenet",
"chainId": 1992,
"explorers": [
{
"name": "routescan",
"url": "https://explorer.hubble.exchange",
"standard": "EIP3091"
}
],
"faucets": [],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://QmU9t9fZaWiqpAZ9dw2ojTpJycnB8BxekLWVSCJikJVgjW",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://www.hubble.exchange",
"name": "Hubble Exchange",
"nativeCurrency": {
"name": "USD Coin",
"symbol": "USDC",
"decimals": 18
},
"networkId": 1992,
"rpc": [
"https://1992.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.hubble.exchange",
"wss://ws-rpc.hubble.exchange"
],
"shortName": "hubblenet",
"slip44": 60,
"slug": "hubble-exchange",
"testnet": false
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "stabilityTestnet",
"chainId": 20180427,
"explorers": [
{
"name": "blockscout",
"url": "https://stability-testnet.blockscout.com",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreid3wd6ouu53r677q2z24a4eq5un5tlwbc4izfapcvvtrlhkmz43au",
"width": 133,
"height": 144,
"format": "png"
},
"infoURL": "https://stabilityprotocol.com",
"name": "Stability Testnet",
"nativeCurrency": {
"name": "FREE",
"symbol": "FREE",
"decimals": 18
},
"networkId": 20180427,
"rpc": [
"https://20180427.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://free.testnet.stabilityprotocol.com"
],
"shortName": "stabilitytestnet",
"slip44": 1,
"slug": "stability-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -32,7 +32,9 @@ export default {
"https://opbnb-mainnet.nodereal.io/v1/e9a36765eb8a40b9bd12e680a1fd2bc5",
"wss://opbnb-mainnet.nodereal.io/ws/v1/e9a36765eb8a40b9bd12e680a1fd2bc5",
"https://opbnb-rpc.publicnode.com",
"wss://opbnb-rpc.publicnode.com"
"wss://opbnb-rpc.publicnode.com",
"https://opbnb.drpc.org",
"wss://opbnb.drpc.org"
],
"shortName": "obnb",
"slip44": 714,
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 20519,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QaUser4113 Testnet",
"nativeCurrency": {
"name": "QaUser4113 Testnet Token",
"symbol": "FYP",
"decimals": 18
},
"networkId": 20519,
"redFlags": [],
"rpc": [
"https://20519.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QaUser4113 Testnet",
"slug": "qauser4113-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -35,7 +35,9 @@ export default {
"rpc": [
"https://2221.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm.testnet.kava.io",
"wss://wevm.testnet.kava.io"
"wss://wevm.testnet.kava.io",
"https://kava-testnet.drpc.org",
"wss://kava-testnet.drpc.org"
],
"shortName": "tkava",
"slug": "kava-testnet",
+3 -1
View File
@@ -41,7 +41,9 @@ export default {
"https://kava-rpc.gateway.pokt.network",
"https://evm.kava-rpc.com",
"wss://wevm.kava-rpc.com",
"https://rpc.ankr.com/kava_evm"
"https://rpc.ankr.com/kava_evm",
"https://kava.drpc.org",
"wss://kava.drpc.org"
],
"shortName": "kava",
"slug": "kava",
+48
View File
@@ -0,0 +1,48 @@
import type { Chain } from "../src/types";
export default {
"chain": "DEEPL",
"chainId": 222555,
"explorers": [
{
"name": "DeepL Mainnet Explorer",
"url": "https://scan.deeplnetwork.org",
"standard": "EIP3091",
"icon": {
"url": "ipfs://bafybeihjwgy4qja5cee452malk5hpb25pzpipfaka7hjcyb437ldodxzaq",
"width": 512,
"height": 512,
"format": "png"
}
}
],
"faucets": [],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://bafybeihjwgy4qja5cee452malk5hpb25pzpipfaka7hjcyb437ldodxzaq",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://deeplnetwork.org",
"name": "DeepL Mainnet",
"nativeCurrency": {
"name": "DeepL",
"symbol": "DEEPL",
"decimals": 18
},
"networkId": 222555,
"rpc": [
"https://222555.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.deeplnetwork.org"
],
"shortName": "deepl",
"slug": "deepl",
"testnet": false
} as const satisfies Chain;
+50
View File
@@ -0,0 +1,50 @@
import type { Chain } from "../src/types";
export default {
"chain": "DEEPL",
"chainId": 222666,
"explorers": [
{
"name": "DeepL Testnet Explorer",
"url": "https://testnet-scan.deeplnetwork.org",
"standard": "EIP3091",
"icon": {
"url": "ipfs://bafybeihjwgy4qja5cee452malk5hpb25pzpipfaka7hjcyb437ldodxzaq",
"width": 512,
"height": 512,
"format": "png"
}
}
],
"faucets": [
"https://faucet.deeplnetwork.org"
],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://bafybeihjwgy4qja5cee452malk5hpb25pzpipfaka7hjcyb437ldodxzaq",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://deeplnetwork.org",
"name": "DeepL Testnet",
"nativeCurrency": {
"name": "DeepL",
"symbol": "DEEPL",
"decimals": 18
},
"networkId": 222666,
"rpc": [
"https://222666.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.deeplnetwork.org"
],
"shortName": "tdeepl",
"slug": "deepl-testnet",
"testnet": true
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 22662,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QA5-03-07 Testnet",
"nativeCurrency": {
"name": "QA5-03-07 Testnet Token",
"symbol": "TYP",
"decimals": 18
},
"networkId": 22662,
"redFlags": [],
"rpc": [
"https://22662.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QA5-03-07 Testnet",
"slug": "qa5-03-07-testnet",
"testnet": true
} as const satisfies Chain;
+42
View File
@@ -0,0 +1,42 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 22985,
"explorers": [
{
"name": "beyond-sepolia-3wng1zu3j3 explorer",
"url": "https://explorerl2new-beyond-sepolia-3wng1zu3j3.t.conduit.xyz",
"standard": "standard",
"icon": {
"url": "ipfs://QmbLxRVZ27Yy6RE9xAdYgSxGPB1TjPtcxahy6uNnp2Pt6T/Beyond.jpg",
"width": 512,
"height": 512,
"format": "jpg"
}
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmbLxRVZ27Yy6RE9xAdYgSxGPB1TjPtcxahy6uNnp2Pt6T/Beyond.jpg",
"width": 512,
"height": 512,
"format": "jpg"
},
"infoURL": "https://explorerl2new-beyond-sepolia-3wng1zu3j3.t.conduit.xyz",
"name": "Beyond Sepolia",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 22985,
"redFlags": [],
"rpc": [
"https://22985.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-beyond-sepolia-3wng1zu3j3.t.conduit.xyz"
],
"shortName": "beyond-sepolia",
"slug": "beyond-sepolia",
"testnet": true
} as const satisfies Chain;
+1 -1
View File
@@ -5,7 +5,7 @@ export default {
"explorers": [
{
"name": "Oasis Sapphire Explorer",
"url": "https://explorer.sapphire.oasis.io",
"url": "https://explorer.oasis.io/mainnet/sapphire",
"standard": "EIP3091"
}
],
+3 -3
View File
@@ -5,7 +5,7 @@ export default {
"explorers": [
{
"name": "Oasis Sapphire Testnet Explorer",
"url": "https://testnet.explorer.sapphire.oasis.dev",
"url": "https://explorer.oasis.io/testnet/sapphire",
"standard": "EIP3091"
}
],
@@ -26,8 +26,8 @@ export default {
"networkId": 23295,
"rpc": [
"https://23295.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.sapphire.oasis.dev",
"wss://testnet.sapphire.oasis.dev/ws"
"https://testnet.sapphire.oasis.io",
"wss://testnet.sapphire.oasis.io/ws"
],
"shortName": "sapphire-testnet",
"slip44": 1,
+43
View File
@@ -0,0 +1,43 @@
import type { Chain } from "../src/types";
export default {
"chain": "Atleta",
"chainId": 2340,
"explorers": [
{
"name": "Atleta Testnet Explorer",
"url": "http://185.234.69.18/?rpc=wss%3A%2F%2Fatleta-testnet-rpc.quark.blue%3A9944#/explorer",
"standard": "none",
"icon": {
"url": "ipfs://QmV2JVr4FCcb6aRiUoA3wS5erLoxtLBLonQ1Nvz8fNuEcR",
"width": 128,
"height": 128,
"format": "png"
}
}
],
"faucets": [
"https://faucet.atleta.network"
],
"icon": {
"url": "ipfs://QmV2JVr4FCcb6aRiUoA3wS5erLoxtLBLonQ1Nvz8fNuEcR",
"width": 128,
"height": 128,
"format": "png"
},
"infoURL": "https://atleta.network",
"name": "Atleta Testnet",
"nativeCurrency": {
"name": "Atla",
"symbol": "ATLA",
"decimals": 18
},
"networkId": 2340,
"rpc": [
"https://2340.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://atleta-testnet-rpc.quark.blue:9944"
],
"shortName": "atla",
"slip44": 1,
"slug": "atleta-testnet",
"testnet": true
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 24070,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI0315I2 Testnet",
"nativeCurrency": {
"name": "QI0315I2 Testnet Token",
"symbol": "GAW",
"decimals": 18
},
"networkId": 24070,
"redFlags": [],
"rpc": [
"https://24070.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QI0315I2 Testnet",
"slug": "qi0315i2-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -39,7 +39,9 @@ export default {
"networkId": 245022926,
"rpc": [
"https://245022926.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://devnet.neonevm.org"
"https://devnet.neonevm.org",
"https://neon-evm-devnet.drpc.org",
"wss://neon-evm-devnet.drpc.org"
],
"shortName": "neonevm-devnet",
"slug": "neon-evm-devnet",
+3 -1
View File
@@ -31,7 +31,9 @@ export default {
"networkId": 245022934,
"rpc": [
"https://245022934.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://neon-proxy-mainnet.solana.p2p.org"
"https://neon-proxy-mainnet.solana.p2p.org",
"https://neon-evm.drpc.org",
"wss://neon-evm.drpc.org"
],
"shortName": "neonevm-mainnet",
"slug": "neon-evm",
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 24867,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QaUser45 Testnet",
"nativeCurrency": {
"name": "QaUser45 Testnet Token",
"symbol": "ZAG",
"decimals": 18
},
"networkId": 24867,
"redFlags": [],
"rpc": [
"https://24867.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QaUser45 Testnet",
"slug": "qauser45-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -27,7 +27,9 @@ export default {
"https://25.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm.cronos.org",
"https://cronos-evm-rpc.publicnode.com",
"wss://cronos-evm-rpc.publicnode.com"
"wss://cronos-evm-rpc.publicnode.com",
"https://cronos.drpc.org",
"wss://cronos.drpc.org"
],
"shortName": "cro",
"slug": "cronos",
+3 -1
View File
@@ -47,7 +47,9 @@ export default {
"https://250.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.ftm.tools",
"https://fantom-rpc.publicnode.com",
"wss://fantom-rpc.publicnode.com"
"wss://fantom-rpc.publicnode.com",
"https://fantom.drpc.org",
"wss://fantom.drpc.org"
],
"shortName": "ftm",
"slug": "fantom",
+29
View File
@@ -0,0 +1,29 @@
import type { Chain } from "../src/types";
export default {
"chain": "inEVM",
"chainId": 2525,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmU9KU1qgReJR7vyVxN5zwWB3nkhSs658ViArUjT7GCh4r",
"width": 2000,
"height": 2000,
"format": "png"
},
"infoURL": "https://inevm.com",
"name": "inEVM Mainnet",
"nativeCurrency": {
"name": "Injective",
"symbol": "INJ",
"decimals": 18
},
"networkId": 2525,
"rpc": [
"https://2525.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.rpc.inevm.com/http"
],
"shortName": "inevm",
"slug": "inevm",
"status": "active",
"testnet": false
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 27827,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "zeroone Mainnet",
"nativeCurrency": {
"name": "zeroone Mainnet Token",
"symbol": "ZERO",
"decimals": 18
},
"networkId": 27827,
"redFlags": [],
"rpc": [
"https://27827.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/zeroonemai/mainnet/rpc"
],
"shortName": "zeroone Mainnet",
"slug": "zeroone",
"testnet": false
} as const satisfies Chain;
+2
View File
@@ -16,6 +16,7 @@ export default {
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmRkhUD6J3B9WhT4hEWLrcFVTrBhx3CQgNC783aJsrwxSN",
"width": 512,
@@ -39,6 +40,7 @@ export default {
}
]
},
"redFlags": [],
"rpc": [
"https://280.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.era.zksync.dev"
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 28106,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Mezzanine Testnet",
"nativeCurrency": {
"name": "Mezzanine Testnet Token",
"symbol": "OWQ",
"decimals": 18
},
"networkId": 28106,
"redFlags": [],
"rpc": [
"https://28106.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/mezzaninet/testnet/rpc"
],
"shortName": "Mezzanine Testnet",
"slug": "mezzanine-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -10,6 +10,7 @@ export default {
}
],
"faucets": [],
"features": [],
"infoURL": "https://community.optimism.io/docs/developers/bedrock",
"name": "Optimism Bedrock (Goerli Alpha Testnet)",
"nativeCurrency": {
@@ -18,15 +19,16 @@ export default {
"decimals": 18
},
"networkId": 28528,
"redFlags": [],
"rpc": [
"https://28528.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://alpha-1-replica-0.bedrock-goerli.optimism.io",
"https://alpha-1-replica-1.bedrock-goerli.optimism.io",
"https://alpha-1-replica-2.bedrock-goerli.optimism.io",
"https://alpha-1-replica-2.bedrock-goerli.optimism.io"
],
"shortName": "obgor",
"slip44": 1,
"slug": "optimism-bedrock-goerli-alpha-testnet",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -39,7 +39,9 @@ export default {
"https://boba-ethereum.gateway.tenderly.co",
"https://gateway.tenderly.co/public/boba-ethereum",
"wss://boba-ethereum.gateway.tenderly.co/",
"wss://gateway.tenderly.co/public/boba-ethereum"
"wss://gateway.tenderly.co/public/boba-ethereum",
"https://boba-eth.drpc.org",
"wss://boba-eth.drpc.org"
],
"shortName": "Boba",
"slug": "boba-network",
+3
View File
@@ -10,6 +10,7 @@ export default {
}
],
"faucets": [],
"features": [],
"infoURL": "https://boba.network",
"name": "Boba Network Goerli Testnet",
"nativeCurrency": {
@@ -27,6 +28,7 @@ export default {
}
]
},
"redFlags": [],
"rpc": [
"https://2888.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://goerli.boba.network/",
@@ -35,5 +37,6 @@ export default {
"shortName": "BobaGoerli",
"slip44": 1,
"slug": "boba-network-goerli-testnet",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
+51
View File
@@ -0,0 +1,51 @@
import type { Chain } from "../src/types";
export default {
"chain": "2911",
"chainId": 2911,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.hychain.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmcSJmAfk3iay6uCGJxgUPd9pTsRxbtF4BrNnC5txE9cg8",
"width": 400,
"height": 400,
"format": "jpg"
}
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmcSJmAfk3iay6uCGJxgUPd9pTsRxbtF4BrNnC5txE9cg8",
"width": 400,
"height": 400,
"format": "jpg"
},
"infoURL": "https://www.hychain.com",
"name": "HYCHAIN",
"nativeCurrency": {
"name": "TOPIA",
"symbol": "TOPIA",
"decimals": 18
},
"networkId": 2911,
"parent": {
"type": "L2",
"chain": "eip155-1",
"bridges": [
{
"url": "https://bridge.hychain.com"
}
]
},
"redFlags": [],
"rpc": [
"https://2911.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.hychain.com/http"
],
"shortName": "hychain",
"slug": "hychain",
"testnet": true
} as const satisfies Chain;
+47
View File
@@ -0,0 +1,47 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 29112,
"explorers": [
{
"name": "blockscout",
"url": "https://testnet.explorer.hychain.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmcSJmAfk3iay6uCGJxgUPd9pTsRxbtF4BrNnC5txE9cg8",
"width": 400,
"height": 400,
"format": "jpg"
}
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmcSJmAfk3iay6uCGJxgUPd9pTsRxbtF4BrNnC5txE9cg8",
"width": 400,
"height": 400,
"format": "jpg"
},
"infoURL": "https://www.hychain.com",
"name": "HYCHAIN Testnet",
"nativeCurrency": {
"name": "TOPIA",
"symbol": "TOPIA",
"decimals": 18
},
"networkId": 29112,
"parent": {
"type": "L2",
"chain": "eip155-58008",
"bridges": []
},
"redFlags": [],
"rpc": [
"https://29112.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.hychain.com/http"
],
"shortName": "hychain-testnet",
"slug": "hychain-testnet",
"testnet": true
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 29645,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QaUser6355 Testnet",
"nativeCurrency": {
"name": "QaUser6355 Testnet Token",
"symbol": "MQO",
"decimals": 18
},
"networkId": 29645,
"redFlags": [],
"rpc": [
"https://29645.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QaUser6355 Testnet",
"slug": "qauser6355-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -44,7 +44,9 @@ export default {
],
"rpc": [
"https://300.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://sepolia.era.zksync.dev"
"https://sepolia.era.zksync.dev",
"https://zksync-sepolia.drpc.org",
"wss://zksync-sepolia.drpc.org"
],
"shortName": "zksync-sepolia",
"slip44": 1,
+4 -4
View File
@@ -5,7 +5,7 @@ export default {
"explorers": [
{
"name": "explorer-thebifrost",
"url": "https://explorer.mainnet.thebifrost.io",
"url": "https://explorer.mainnet.bifrostnetwork.com",
"standard": "EIP3091"
}
],
@@ -16,7 +16,7 @@ export default {
"height": 480,
"format": "png"
},
"infoURL": "https://thebifrost.io",
"infoURL": "https://bifrostnetwork.com",
"name": "Bifrost Mainnet",
"nativeCurrency": {
"name": "Bifrost",
@@ -26,8 +26,8 @@ export default {
"networkId": 3068,
"rpc": [
"https://3068.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://public-01.mainnet.thebifrost.io/rpc",
"https://public-02.mainnet.thebifrost.io/rpc"
"https://public-01.mainnet.bifrostnetwork.com/rpc",
"https://public-02.mainnet.bifrostnetwork.com/rpc"
],
"shortName": "bfc",
"slug": "bifrost",
+3 -1
View File
@@ -54,7 +54,9 @@ export default {
"https://api.node.glif.io/",
"https://rpc.ankr.com/filecoin",
"https://filecoin-mainnet.chainstacklabs.com/rpc/v1",
"https://filfox.info/rpc/v1"
"https://filfox.info/rpc/v1",
"https://filecoin.drpc.org",
"wss://filecoin.drpc.org"
],
"shortName": "filecoin",
"slip44": 461,
+3 -1
View File
@@ -52,7 +52,9 @@ export default {
"https://rpc.ankr.com/filecoin_testnet",
"https://filecoin-calibration.chainstacklabs.com/rpc/v1",
"https://filecoin-calibration.chainup.net/rpc/v1",
"https://calibration.filfox.info/rpc/v1"
"https://calibration.filfox.info/rpc/v1",
"https://filecoin-calibration.drpc.org",
"wss://filecoin-calibration.drpc.org"
],
"shortName": "filecoin-calibration",
"slip44": 1,
+3 -1
View File
@@ -41,7 +41,9 @@ export default {
},
"rpc": [
"https://324.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.era.zksync.io"
"https://mainnet.era.zksync.io",
"https://zksync.drpc.org",
"wss://zksync.drpc.org"
],
"shortName": "zksync",
"slug": "zksync",
+3 -1
View File
@@ -22,7 +22,9 @@ export default {
"networkId": 338,
"rpc": [
"https://338.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm-t3.cronos.org"
"https://evm-t3.cronos.org",
"https://cronos-testnet.drpc.org",
"wss://cronos-testnet.drpc.org"
],
"shortName": "tcro",
"slip44": 1,
+3 -1
View File
@@ -34,7 +34,9 @@ export default {
"networkId": 3441005,
"rpc": [
"https://3441005.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://manta-testnet.calderachain.xyz/http"
"https://manta-testnet.calderachain.xyz/http",
"https://manta-pacific-testnet.drpc.org",
"wss://manta-pacific-testnet.drpc.org"
],
"shortName": "mantaTestnet",
"slip44": 1,
+43
View File
@@ -0,0 +1,43 @@
import type { Chain } from "../src/types";
export default {
"chain": "Manta Pacific",
"chainId": 3441006,
"explorers": [
{
"name": "manta-testnet Explorer",
"url": "https://pacific-explorer.sepolia-testnet.manta.network",
"standard": "EIP3091"
}
],
"faucets": [],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://QmTckcVTViRZ3NqT36MTt8AvgBSmudrbgU3pi8AaNtthoV",
"width": 834,
"height": 834,
"format": "png"
},
"infoURL": "https://manta-testnet.caldera.dev/",
"name": "Manta Pacific Sepolia Testnet",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 3441006,
"rpc": [
"https://3441006.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://pacific-rpc.sepolia-testnet.manta.network/http"
],
"shortName": "mantaSepoliaTestnet",
"slip44": 1,
"slug": "manta-pacific-sepolia-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -26,7 +26,9 @@ export default {
"networkId": 34443,
"rpc": [
"https://34443.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.mode.network"
"https://mainnet.mode.network",
"https://mode.drpc.org",
"wss://mode.drpc.org"
],
"shortName": "mode",
"slug": "mode",
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 3454,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Masa",
"nativeCurrency": {
"name": "Masa Token",
"symbol": "MASA",
"decimals": 18
},
"networkId": 3454,
"redFlags": [],
"rpc": [
"https://3454.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/masa/mainnet/rpc"
],
"shortName": "Masa",
"slug": "masa",
"testnet": false
} as const satisfies Chain;

Some files were not shown because too many files have changed in this diff Show More