# EVM Chain Interactions
Source: https://docs.chain.link/cre/guides/workflow/using-evm-client/overview-go
Last Updated: 2025-11-04

> For the complete documentation index, see [llms.txt](/llms.txt).

The `evm.Client` is the Go SDK's interface for interacting with EVM-compatible blockchains. It provides a simple, powerful, and type-safe way to read data from and write data to your onchain contracts through the underlying **[EVM Read & Write Capabilities](/cre/capabilities/evm-read-write)**.

## How it works

The Go SDK uses **auto-generated contract bindings** created by the CRE CLI. These bindings provide:

- Type-safe Go structs for contract functions and events
- Automatic ABI encoding/decoding
- Promise-based async operations with `.Await()`
- Built-in helper methods for common operations

This approach gives you IDE autocompletion, compile-time type checking, and eliminates manual ABI handling.

## Guides

- **[Generating Contract Bindings](/cre/guides/workflow/using-evm-client/generating-bindings)**: Learn how to generate type-safe Go bindings from contract ABIs using the CRE CLI
- **[Onchain Read](/cre/guides/workflow/using-evm-client/onchain-read)**: Learn how to call `view` and `pure` functions on your smart contracts to read onchain state
- **[Onchain Write](/cre/guides/workflow/using-evm-client/onchain-write/overview)**: Learn how to call state-changing functions on your smart contracts to write data to the blockchain
  - **[Building Consumer Contracts](/cre/guides/workflow/using-evm-client/onchain-write/building-consumer-contracts)**: Learn how to write your own consumer contracts that can receive reports from your workflow