CreateEvmOptions
CreateEvmOptions:
object
Type declaration
allowUnlimitedContractSize?
optionalallowUnlimitedContractSize:boolean
Enable/disable unlimited contract size. Defaults to false.
blockchain
blockchain:
Chain
common
common:
Common
Ethereumjs common object
customPrecompiles?
optionalcustomPrecompiles:CustomPrecompile[]
Custom precompiles allow you to run arbitrary JavaScript code in the EVM.
See the Precompile guide documentation for a deeper dive
An ever growing standard library of precompiles is provided at tevm/precompiles
Notice
Not implemented yet Implementation pr
Below example shows how to make a precompile so you can call fs.writeFile and fs.readFile in your contracts.
Note: this specific precompile is also provided in the standard library
For security precompiles can only be added statically when the vm is created.
Example
import { createMemoryClient, defineCall, definePrecompile } from 'tevm'import { createScript } from '@tevm/contract'import fs from 'fs/promises'
const Fs = createScript({  name: 'Fs',  humanReadableAbi: [    'function readFile(string path) returns (string)',    'function writeFile(string path, string data) returns (bool)',  ]})
const fsPrecompile = definePrecompile({  contract: Fs,  address: '0xf2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2',  call: defineCall(Fs.abi, {    readFile: async ({ args }) => {      return {        returnValue: await fs.readFile(...args, 'utf8'),        executionGasUsed: 0n,      }    },    writeFile: async ({ args }) => {      await fs.writeFile(...args)      return { returnValue: true, executionGasUsed: 0n }    },  }),})
const tevm = createMemoryClient({ customPrecompiles: [fsPrecompile] })
### customPredeploys?
> `optional` **customPredeploys**: `ReadonlyArray`\<[`CustomPredeploy`](/reference/tevm/predeploys/type-aliases/custompredeploy/)\<`any`, `any`\>\>
Custom predeploys allow you to deploy arbitrary EVM bytecode to an address.This is a convenience method and equivalent to calling tevm.setAccount() manuallyto set the contract code.```typescriptconst tevm = createMemoryClient({  customPredeploys: [    // can pass a `tevm Script` here as well    {       address: '0x420420...',       abi: [...],       deployedBytecode: '0x420420...',    }  ],})loggingLevel?
optionalloggingLevel:LogOptions["level"]
The logging level to run the evm at. Defaults to ‘warn’
profiler?
optionalprofiler:boolean
Enable profiler. Defaults to false.
stateManager
stateManager:
StateManager
A custom Tevm state manager
Source
packages/evm/src/CreateEvmOptions.ts:8