ThirdwebSDK
The ThirdwebSDK
is the entry point to all functionality of the TypeScript SDK.
You initialize the SDK on your desired chain and use the instance to access the different methods and properties of the SDK.
Usage
The SDK can be initialized in either read-only mode or read-write mode.
- Read-only mode: Define the chain you want to use.
- Read-write mode: Define the chain you want to use, and provide a private key, wallet instance, or signer.
If you are using one of our default chains
, provide the name of the chain as a string
.
For non-default chains, see configuring chains or custom chains.
View default chains
- Ethereum:
"ethereum"
- Goerli:
"goerli"
- Polygon:
"polygon"
- Mumbai:
"mumbai"
- Arbitrum One:
"arbitrum"
- Arbitrum Goerli:
"arbitrum-goerli"
- Optimism:
"optimism"
- Optimism Goerli Testnet:
"optimism-goerli"
- Binance SmartChain:
"binance"
- Binance SmartChain Testnet:
"binance-testnet"
- Fantom Opera:
"fantom"
- Fantom Testnet:
"fantom-testnet"
- Avalanche C Chain:
"avalanche-fuji"
- Avalanche Fuji Testnet:
"avalanche-fuji-testnet"
- Localhost:
"localhost"
Using this method, you can only read data from the blockchain.
// Read-only mode
const readOnlySdk = new ThirdwebSDK("ethereum");
Configuration
Chain (required)
The chain you want your SDK instance to use.
There are 700+ chains available in the @thirdweb-dev/chains
package.
Import the chain you want to use from the package and pass it to the activeChain
prop.
If your chain is not included, see configuring custom chains.
Install the @thirdweb-dev/chains
package to use non-default chains.
- npm
- Yarn
npm install @thirdweb-dev/chains
yarn add @thirdweb-dev/chains
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
import { Gnosis } from "@thirdweb-dev/chains";
const sdk = new ThirdwebSDK(
Gnosis,
);
Custom EVM Chains
If your chain is not included in the @thirdweb-dev/chains
package,
you can provide the chain information yourself.
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
const sdk = new ThirdwebSDK({
// === Required information for connecting to the network === \\
chainId: 59140, // Chain ID of the network
// Array of RPC URLs to use
rpc: ["<your-rpc-url-here>"],
// === Information for adding the network to your wallet (how it will appear for first time users) === \\
// Information about the chains native currency (i.e. the currency that is used to pay for gas)
nativeCurrency: {
decimals: 18,
name: "Consensys ETH",
symbol: "crETH",
},
shortName: "czkevm", // Display value shown in the wallet UI
slug: "consensys", // Display value shown in the wallet UI
testnet: true, // Boolean indicating whether the chain is a testnet or mainnet
chain: "ConsenSys", // Name of the network
name: "ConsenSys zkEVM Testnet", // Name of the network
});
Override Default Values
Override the default values (such as an RPC URL) for any given chain.
By default, the SDK provides free-to-use RPCs. No configuration required!
Using the spread syntax,
you can override any properties of a chain, such as the rpc
field.
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
import { Dogechain } from "@thirdweb-dev/chains";
const sdk = new ThirdwebSDK({
...Dogechain,
rpc: ["https://<your-rpc-to-use>.com"], // Override the "rpc" field.
// ... Override any other fields you want to customize.
});
gasless (optional)
Use gasless transactions to forward all transactions to a relayer.
Currently supports either OpenZeppelin Defender or Biconomy relayers.
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
const sdk = new ThirdwebSDK("ethereum", {
gasless: {
// By specifying a gasless configuration - all transactions will get forwarded to enable gasless transactions
openzeppelin: {
relayerUrl: "<open-zeppelin-relayer-url>", // your OZ Defender relayer URL
relayerForwarderAddress: "<open-zeppelin-forwarder-address>", // the OZ defender relayer address (defaults to the standard one)
},
biconomy: {
apiId: "biconomy-api-id", // your Biconomy API Id
apiKey: "biconomy-api-key", // your Biconomy API Key
deadlineSeconds: 123, // your Biconomy timeout preference
},
},
});
gasSettings (optional)
The gas settings to use when sending transactions.
maxPriceInGwei
: Maximum gas fee to pay for a transaction. Defaults to300
.speed
: The priority level to set for a transaction. Either "standard", "fast", or "fastest". Defaults tofastest
.
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
const sdk = new ThirdwebSDK("ethereum", {
gasSettings: {
maxPriceInGwei: 300,
speed: "fastest", // standard, fast, fastest
},
});
readOnlySettings (optional)
Override the RPC URL that is used for read operations on a given chain.
import { ThirdwebSDK, ChainId } from "@thirdweb-dev/sdk";
const sdk = new ThirdwebSDK("ethereum", {
readonlySettings: {
rpcUrl: "https://my-rpc-url.com", // Use this RPC URL for read operations
chainId: ChainId.Mainnet, // On this chain ID
},
});