ABI Introduction
Contract ABI: using a parsed ABI for encoding and decoding contract calls, events, and errors in viem-go
Loading...
Contract ABI: using a parsed ABI for encoding and decoding contract calls, events, and errors in viem-go
This section covers contract-level ABI usage: encoding function calldata, event topics, and errors, and decoding function results and event logs using a parsed ABI. To get a parsed ABI, use abi.Parse(jsonABI) — see Parse ABI for full parsing docs.
import ( "encoding/hex" "github.com/ChefBingbong/viem-go/abi" "github.com/ethereum/go-ethereum/common")After parsing, you get an ABI struct:
| Field | Type | Description |
|---|---|---|
| Functions | map[string]Function | Function name → definition. |
| Events | map[string]Event | Event name → definition. |
| Errors | map[string]Error | Error name → definition. |
Helper methods:
Each Function has:
[]Parameter (name, type, components for tuples).[]Parameter.Pure, View, NonPayable, Payable.[4]byte (first 4 bytes of keccak256(signature))."transfer(address,uint256)".Each Event has:
[]Parameter (each may be Indexed).common.Hash (keccak256 of event signature)."Transfer(address,address,uint256)".Each Error has:
[]Parameter.[4]byte (first 4 bytes of keccak256(signature))."InsufficientBalance(uint256,uint256)".Parameter (used in function/event/error inputs/outputs):
"address", "uint256", "tuple").Constants: Pure, View, NonPayable, Payable. Use ParseStateMutability(s string) to parse a string.