FAQ
Engine supports reads and writes to any contract verified on the blockchain explorer, including any contract deployed via thirdweb. Note: Some endpoints allow providing the contract ABI to support any unverified contract.
Engine also supports deploys for thirdweb prebuilt contracts including NFTs, tokens, marketplaces, and smart accounts.
If you have a question about a particular contract type, contact us.
Engine is a server that manages your backend wallets and how they interact with contracts. This difference unlocks capabilities that thirdweb and other web3 SDKs, including:
- Management of KMS backend wallets
- Fine-grained access control with access tokens
- Transaction parallelization to handle higher throughput per wallet
- Observability and retries on stuck transactions
- Webhooks on completed transactions to sync onchain and off-chain activity
Additionally, Engine is built on top of the thirdweb SDK and has the same capabilities.
Write calls to contracts do not block until they are mined. Instead they enqueue an async job and immediately return a reference to the job called queueId
.
Here are three ways to determine when the job is mined:
-
Use webhooks to notify your backend when a transaction event occurs.
-
Poll the
/transaction/status/<queue_id>
endpoint. -
Use websockets:
To send native tokens (e.g. ETH on Ethereum), set txOverrides.value
.
This may be required when calling a payable
contract method.
Here's an example of sending 0.2 ETH:
To override the gas settings, set relevant txOverrides
gas fields.
Each field is optional and will be estimated by Engine if omitted.
Here's an example of setting a gas limit of 210,000 gas units, 1 gwei max fee, and 1 gwei max priority fee:
To specify a transaction timeout, set txOverrides.timeoutSeconds
.
Engine flags transactions as errored
if they are not sent before the timeout. An errored
webhook will be sent.
Note: A transaction sent before the timeout may be mined after the timeout.
Here's an example of a 2-hour timeout:
Use Update Chain Configuration to override a chain's settings.
Example
POST /configuration/chains
Headers
Body