Documentation
¶
Overview ¶
Package contract provides generic smart contract interaction for EVM chains.
Index ¶
Constants ¶
const DefaultTimeout = 30 * time.Second
DefaultTimeout is the default context timeout for contract calls.
const MaxRetries = 3
MaxRetries is the default number of retry attempts for transaction submission.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ABICache ¶
type ABICache struct {
// contains filtered or unexported fields
}
ABICache is a thread-safe cache for parsed contract ABIs.
type Caller ¶
type Caller struct {
// contains filtered or unexported fields
}
Caller provides read and write access to smart contracts.
func NewCaller ¶
func NewCaller(rpc *ethclient.Client, wp wallet.WalletProvider, chainID int64, cache *ABICache) *Caller
NewCaller creates a contract caller.
func (*Caller) Read ¶
func (c *Caller) Read(ctx context.Context, req ContractCallRequest) (*ContractCallResult, error)
Read calls a view/pure function on a contract (no tx, no gas).
func (*Caller) Write ¶
func (c *Caller) Write(ctx context.Context, req ContractCallRequest) (*ContractCallResult, error)
Write sends a state-changing transaction to a contract.
type ContractCallRequest ¶
type ContractCallRequest struct {
ChainID int64 `json:"chainId"`
Address common.Address `json:"address"`
ABI string `json:"abi"` // JSON ABI string
Method string `json:"method"`
Args []interface{} `json:"args"`
Value *big.Int `json:"value,omitempty"` // ETH value for payable functions
}
ContractCallRequest holds parameters for a contract call.
type ContractCallResult ¶
type ContractCallResult struct {
Data []interface{} `json:"data"`
TxHash string `json:"txHash,omitempty"`
GasUsed uint64 `json:"gasUsed,omitempty"`
}
ContractCallResult holds the result of a contract call.
type ContractCaller ¶
type ContractCaller interface {
Read(ctx context.Context, req ContractCallRequest) (*ContractCallResult, error)
Write(ctx context.Context, req ContractCallRequest) (*ContractCallResult, error)
}
ContractCaller abstracts read and write access to smart contracts.