simulateBlocks
Simulates multiple blocks and returns their results
Import
Import the public actions package so you can call this action.
import "github.com/ChefBingbong/viem-go/actions/public"Usage
An example showing how to configure block simulations and inspect their results.
import ( "context" "log"
"github.com/ethereum/go-ethereum/common" "github.com/ChefBingbong/viem-go/actions/public" "github.com/ChefBingbong/viem-go/client" "github.com/ChefBingbong/viem-go/client/transport" "github.com/ChefBingbong/viem-go/chain/definitions")
ctx := context.Background()
publicClient, err := client.CreatePublicClient(client.PublicClientConfig{ Chain: definitions.Mainnet, Transport: transport.HTTP("https://eth.llamarpc.com"),})if err != nil { log.Fatal(err)}defer func() { _ = publicClient.Close() }()
contractAddr := common.HexToAddress("0x...")calldata := common.FromHex("0x...")
result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{ { Calls: []public.SimulateBlockCall{ { To: &contractAddr, Data: calldata, }, }, }, },})if err != nil { log.Fatal(err)}log.Printf("Simulated %d blocks", len(result))Returns
[]BlockResult
An array of block results, each containing:
Block formatters.Block- The simulated block dataCalls []CallResult- The results of each call in the block
Parameters
Configuration options accepted by this action.
Blocks
- Type:
[]SimulateBlock - Required
The blocks to simulate.
result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{ { Calls: []public.SimulateBlockCall{ { To: &contractAddr, Data: calldata, }, }, }, },})BlockNumber
- Type:
*uint64 - Optional
The block number to simulate at.
blockNum := uint64(12345)result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{...}, BlockNumber: &blockNum,})BlockTag
- Type:
BlockTag - Optional
The block tag to simulate at (e.g., "latest", "pending").
result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{...}, BlockTag: public.BlockTagSafe,})ReturnFullTransactions
- Type:
bool - Default:
false - Optional
Whether to return full transaction objects.
result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{...}, ReturnFullTransactions: true,})TraceTransfers
- Type:
bool - Default:
false - Optional
Enables transfer tracing.
result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{...}, TraceTransfers: true,})Validation
- Type:
bool - Default:
false - Optional
Enables validation mode.
result, err := public.SimulateBlocks(ctx, publicClient, public.SimulateBlocksParameters{ Blocks: []public.SimulateBlock{...}, Validation: true,})JSON-RPC Method
Underlying JSON-RPC method used by this action.
Uses eth_simulateV1 (if supported) for block simulation.