Documentation ¶
Index ¶
- Constants
- Variables
- func CreateOrAppendToJsonArray(filePath string, newItem any) error
- func DoesPragmaSupportCustomRevert(pragma Pragma) bool
- func EtherToWei(eth *big.Float) *big.Int
- func LoadDeployedContracts(filename string) (map[string]string, error)
- func NewAddress() (string, string, error)
- func NewEphemeralKeys(addrs int64) ([]string, error)
- func NewLoggingTransport() http.RoundTripper
- func OpenJsonFileAsStruct(path string, v any) error
- func ReturnFunds(c *Client, toAddr string) error
- func SaveDeployedContract(filename, contractName, address string) error
- func ValidateConfig(cfg *Config) error
- func WeiToEther(wei *big.Int) *big.Float
- type ABIFinder
- type ABIFinderResult
- type ABIStore
- type BlockStats
- type BlockStatsConfig
- type Call
- type CallOpt
- type Client
- func (m *Client) AnySyncedKey() int
- func (m *Client) CalculateGasEstimations(request GasEstimationRequest) GasEstimations
- func (m *Client) CalculateNetworkCongestionMetric(blocksNumber uint64, strategy string) (float64, error)
- func (m *Client) CalculateSubKeyFunding(addrs, gasPrice, rooKeyBuffer int64) (*FundingDetails, error)
- func (m *Client) CallMsgFromTx(tx *types.Transaction) (ethereum.CallMsg, error)
- func (m *Client) Decode(tx *types.Transaction, txErr error) (*DecodedTransaction, error)
- func (m *Client) DecodeCustomABIErr(txErr error) (string, error)
- func (m *Client) DeployContract(auth *bind.TransactOpts, name string, abi abi.ABI, bytecode []byte, ...) (DeploymentData, error)
- func (m *Client) DeployContractFromContractStore(auth *bind.TransactOpts, name string, params ...interface{}) (DeploymentData, error)
- func (m *Client) DeployDebugContract(subDbgAddr common.Address) (*network_debug_contract.NetworkDebugContract, common.Address, error)
- func (m *Client) DeployDebugSubContract() (*network_sub_debug_contract.NetworkDebugSubContract, common.Address, error)
- func (m *Client) DownloadContractAndGetPragma(address common.Address, block *big.Int) (Pragma, error)
- func (m *Client) EstimateGasLimitForFundTransfer(from, to common.Address, amount *big.Int) (uint64, error)
- func (m *Client) GetRootKeyAddress() (common.Address, error)
- func (m *Client) GetRootPrivateKey() (*ecdsa.PrivateKey, error)
- func (m *Client) GetSuggestedEIP1559Fees(ctx context.Context, priority string) (maxFeeCap *big.Int, adjustedTipCap *big.Int, err error)
- func (m *Client) GetSuggestedLegacyFees(ctx context.Context, priority string) (adjustedGasPrice *big.Int, err error)
- func (m *Client) HistoricalFeeData(priority string) (baseFee float64, historicalGasTipCap float64, err error)
- func (m *Client) MustGetRootKeyAddress() common.Address
- func (m *Client) MustGetRootPrivateKey() *ecdsa.PrivateKey
- func (m *Client) NewCallKeyOpts(keyNum int, o ...CallOpt) *bind.CallOpts
- func (m *Client) NewCallOpts(o ...CallOpt) *bind.CallOpts
- func (m *Client) NewDefaultGasEstimationRequest() GasEstimationRequest
- func (m *Client) NewTXKeyOpts(keyNum int, o ...TransactOpt) *bind.TransactOpts
- func (m *Client) NewTXOpts(o ...TransactOpt) *bind.TransactOpts
- func (m *Client) RetryTxAndDecode(f func() (*types.Transaction, error)) (*DecodedTransaction, error)
- func (m *Client) SaveDecodedCallsAsJson(dirname string) error
- func (m *Client) TransferETHFromKey(ctx context.Context, fromKeyNum int, to string, value *big.Int, ...) error
- func (m *Client) WaitMined(ctx context.Context, l zerolog.Logger, b bind.DeployBackend, ...) (*types.Receipt, error)
- func (m *Client) WaitUntilNoPendingTx(address common.Address, timeout time.Duration) error
- func (m *Client) WaitUntilNoPendingTxFoKeyNum(keyNum int, timeout time.Duration) error
- func (m *Client) WaitUntilNoPendingTxForRootKey(timeout time.Duration) error
- type ClientBuilder
- func (c *ClientBuilder) Build() (*Client, error)
- func (c *ClientBuilder) WithArtifactsFolder(folder string) *ClientBuilder
- func (c *ClientBuilder) WithDynamicGasPrices(gasFeeCap, gasTipCap int64) *ClientBuilder
- func (c *ClientBuilder) WithEIP1559DynamicFees(enabled bool) *ClientBuilder
- func (c *ClientBuilder) WithEphemeralAddresses(ephemeralAddressCount, rootKeyBufferAmount int64) *ClientBuilder
- func (c *ClientBuilder) WithGasBumping(retries uint, maxGasPrice int64, customBumpingStrategy GasBumpStrategyFn) *ClientBuilder
- func (c *ClientBuilder) WithGasPriceEstimations(enabled bool, estimationBlocks uint64, txPriority string) *ClientBuilder
- func (c *ClientBuilder) WithLegacyGasPrice(gasPrice int64) *ClientBuilder
- func (c *ClientBuilder) WithNetworkName(name string) *ClientBuilder
- func (c *ClientBuilder) WithNonceManager(rateLimitSec int, retries uint, timeout, retryDelay time.Duration) *ClientBuilder
- func (c *ClientBuilder) WithPrivateKeys(pks []string) *ClientBuilder
- func (c *ClientBuilder) WithProtections(pendingNonceProtectionEnabled, nodeHealthStartupCheck bool) *ClientBuilder
- func (c *ClientBuilder) WithRpcDialTimeout(timeout time.Duration) *ClientBuilder
- func (c *ClientBuilder) WithRpcUrl(url string) *ClientBuilder
- func (c *ClientBuilder) WithTracing(level string, outputs []string) *ClientBuilder
- func (c *ClientBuilder) WithTransactionTimeout(timeout time.Duration) *ClientBuilder
- func (c *ClientBuilder) WithTransferGasFee(gasFee int64) *ClientBuilder
- type ClientOpt
- type CommonData
- type Config
- func (c *Config) AppendPksToNetwork(pks []string, name string) bool
- func (c *Config) FirstNetworkURL() string
- func (c *Config) GasBumpRetries() uint
- func (c *Config) GenerateContractMapFileName() string
- func (c *Config) GetMaxConcurrency() int
- func (c *Config) HasMaxBumpGasPrice() bool
- func (c *Config) IsExperimentEnabled(experiment string) bool
- func (c *Config) IsSimulatedNetwork() bool
- func (c *Config) ParseKeys() ([]common.Address, []*ecdsa.PrivateKey, error)
- func (c *Config) ShouldSaveDeployedContractMap() bool
- type ContextErrorKey
- type ContractLoader
- type ContractMap
- func (c ContractMap) AddContract(addr, name string)
- func (c ContractMap) GetContractAddress(addr string) string
- func (c ContractMap) GetContractMap() map[string]string
- func (c ContractMap) GetContractName(addr string) string
- func (c ContractMap) IsKnownAddress(addr string) bool
- func (c ContractMap) Size() int
- type ContractStore
- type DecodableLog
- type DecodedCall
- type DecodedCommonLog
- type DecodedTransaction
- type DecodedTransactionLog
- type DeploymentData
- type Duration
- func (d Duration) Before(t time.Time) time.Time
- func (d Duration) Duration() time.Duration
- func (d Duration) IsInstant() bool
- func (d Duration) MarshalJSON() ([]byte, error)
- func (d Duration) MarshalText() ([]byte, error)
- func (d *Duration) Scan(v interface{}) (err error)
- func (d Duration) Shorter(od Duration) bool
- func (d Duration) String() string
- func (d *Duration) UnmarshalJSON(input []byte) error
- func (d *Duration) UnmarshalText(input []byte) error
- func (d Duration) Value() (driver.Value, error)
- type FundingDetails
- type GasBumpConfig
- type GasBumpStrategyFn
- type GasEstimationRequest
- type GasEstimations
- type GasEstimator
- type GasPercentiles
- type GasSuggestions
- type KeyNonce
- type LFUHeaderCache
- type LogWithEventData
- type LoggingTransport
- type Network
- type NonceManager
- type NonceManagerCfg
- type NonceStatus
- type Pragma
- type TXCallTraceOutput
- type TXFourByteMetadataOutput
- type Trace
- type TraceLog
- type Tracer
- func (t *Tracer) AddDecodedCalls(txHash string, calls []*DecodedCall)
- func (t *Tracer) DecodeTrace(l zerolog.Logger, trace Trace) ([]*DecodedCall, error)
- func (t *Tracer) GetAllDecodedCalls() map[string][]*DecodedCall
- func (t *Tracer) GetDecodedCalls(txHash string) []*DecodedCall
- func (t *Tracer) PrintTXTrace(txHash string) error
- func (t *Tracer) SaveDecodedCallsAsJson(dirname string) error
- func (t *Tracer) TraceGethTX(txHash string, revertErr error) error
- type TransactOpt
- func WithGasFeeCap(gasFeeCap *big.Int) TransactOpt
- func WithGasLimit(gasLimit uint64) TransactOpt
- func WithGasPrice(gasPrice *big.Int) TransactOpt
- func WithGasTipCap(gasTipCap *big.Int) TransactOpt
- func WithNoSend(noSend bool) TransactOpt
- func WithNonce(nonce *big.Int) TransactOpt
- func WithValue(value *big.Int) TransactOpt
- type TransactionLog
Constants ¶
const ( ErrEmptyConfigPath = "toml config path is empty, set SETH_CONFIG_PATH" ErrCreateABIStore = "failed to create ABI store" ErrReadingKeys = "failed to read keys" ErrCreateNonceManager = "failed to create nonce manager" ErrCreateTracer = "failed to create tracer" ErrReadContractMap = "failed to read deployed contract map" ErrNoKeyLoaded = "failed to load private key" ErrRpcHealthCheckFailed = "RPC health check failed ¯\\_(ツ)_/¯" ErrContractDeploymentFailed = "contract deployment failed" ContractMapFilePattern = "deployed_contracts_%s_%s.toml" RevertedTransactionsFilePattern = "reverted_transactions_%s_%s.json" )
const ( ErrReadSethConfig = "failed to read TOML config for seth" ErrUnmarshalSethConfig = "failed to unmarshal TOML config for seth" ErrEmptyRootPrivateKey = "no root private key were set, set %s=..." GETH = "Geth" ANVIL = "Anvil" CONFIG_FILE_ENV_VAR = "SETH_CONFIG_PATH" ROOT_PRIVATE_KEY_ENV_VAR = "SETH_ROOT_PRIVATE_KEY" NETWORK_ENV_VAR = "SETH_NETWORK" URL_ENV_VAR = "SETH_URL" DefaultNetworkName = "Default" DefaultDialTimeout = 1 * time.Minute DefaultTransferGasFee = 21_000 DefaultGasPrice = 1_000_000_000 // 1 Gwei DefaultGasFeeCap = 100_000_000_000 // 100 Gwei DefaultGasTipCap = 50_000_000_000 // 50 Gwei )
const ( Experiment_SlowFundsReturn = "slow_funds_return" Experiment_Eip1559FeeEqualier = "eip_1559_fee_equalizer" )
const ( ErrOpenABIFile = "failed to open ABI file" ErrParseABI = "failed to parse ABI file" ErrOpenBINFile = "failed to open BIN file" )
const ( ErrDecodeInput = "failed to decode transaction input" ErrDecodeOutput = "failed to decode transaction output" ErrDecodeLog = "failed to decode log" ErrDecodedLogNonIndexed = "failed to decode non-indexed log data" ErrDecodeILogIndexed = "failed to decode indexed log data" ErrNoTxData = "no tx data or it's less than 4 bytes" ErrRPCJSONCastError = "failed to cast CallMsg error as rpc.DataError" WarnNoContractStore = "ContractStore is nil, use seth.NewContractStore(...) to decode transactions" )
const ( Priority_Degen = "degen" //this is undocumented option, which we left for cases, when we need to set the highest gas price Priority_Fast = "fast" Priority_Standard = "standard" Priority_Slow = "slow" Congestion_Low = "low" Congestion_Medium = "medium" Congestion_High = "high" Congestion_VeryHigh = "extreme" )
const ( // each block has the same weight in the computation CongestionStrategy_Simple = "simple" // newer blocks have more weight in the computation CongestionStrategy_NewestFirst = "newest_first" )
const ( ErrKeySyncTimeout = "key sync timeout, consider increasing key_sync_timeout in seth.toml, or increasing the number of keys" ErrKeySync = "failed to sync the key" ErrNonce = "failed to get nonce" TimeoutKeyNum = -80001 )
const ( ErrNoTrace = "no trace found" ErrNoABIMethod = "no ABI method found" ErrNoAbiFound = "no ABI found in Contract Store" ErrNoFourByteFound = "no method signatures found in tracing data" ErrInvalidMethodSignature = "no method signature found or it's not 4 bytes long" WrnMissingCallTrace = "" /* 135-byte string literal not displayed */ FAILED_TO_DECODE = "failed to decode" UNKNOWN = "unknown" NO_DATA = "no data" CommentMissingABI = "Call not decoded due to missing ABI instance" )
const ( MetadataNotFoundErr = "metadata section not found" InvalidMetadataLengthErr = "invalid metadata length" FailedToDecodeMetadataErr = "failed to decode metadata" NotCompiledWithSolcErr = "not compiled with solc" )
const (
ErrInsufficientRootKeyBalance = "insufficient root key balance: %s"
)
const (
ErrRPCConnectionRefused = "connection refused"
)
const (
ErrRetryTimeout = "retry timeout"
)
const (
LogLevelEnvVar = "SETH_LOG_LEVEL"
)
Variables ¶
var ( // Amount of funds that will be left on the root key, when splitting funds between ephemeral addresses ZeroInt64 int64 = 0 TracingLevel_None = "NONE" TracingLevel_Reverted = "REVERTED" TracingLevel_All = "ALL" TraceOutput_Console = "console" TraceOutput_JSON = "json" TraceOutput_DOT = "dot" )
var ( ZeroGasSuggestedErr = "either base fee or suggested tip is 0" BlockFetchingErr = "failed to fetch enough block headers for congestion calculation" )
var (
L zerolog.Logger
)
var NoOpGasBumpStrategyFn = func(previousGasPrice *big.Int) *big.Int {
return previousGasPrice
}
NoOpGasBumpStrategyFn is a default gas bump strategy that does nothing
var PriorityBasedGasBumpingStrategyFn = func(priority string) GasBumpStrategyFn { switch priority { case Priority_Degen: return func(gasPrice *big.Int) *big.Int { return gasPrice.Mul(gasPrice, big.NewInt(2)) } case Priority_Fast: return func(gasPrice *big.Int) *big.Int { gasPriceFloat, _ := gasPrice.Float64() newGasPriceFloat := big.NewFloat(0.0).Mul(big.NewFloat(gasPriceFloat), big.NewFloat(1.3)) newGasPrice, _ := newGasPriceFloat.Int64() return big.NewInt(newGasPrice) } case Priority_Standard: return func(gasPrice *big.Int) *big.Int { gasPriceFloat, _ := gasPrice.Float64() newGasPriceFloat := big.NewFloat(0.0).Mul(big.NewFloat(gasPriceFloat), big.NewFloat(1.15)) newGasPrice, _ := newGasPriceFloat.Int64() return big.NewInt(newGasPrice) } case Priority_Slow: return func(gasPrice *big.Int) *big.Int { gasPriceFloat, _ := gasPrice.Float64() newGasPriceFloat := big.NewFloat(0.0).Mul(big.NewFloat(gasPriceFloat), big.NewFloat(1.05)) newGasPrice, _ := newGasPriceFloat.Int64() return big.NewInt(newGasPrice) } default: return func(gasPrice *big.Int) *big.Int { return gasPrice } } }
PriorityBasedGasBumpingStrategyFn is a function that returns a gas bump strategy based on the priority. For Fast priority it bumps gas price by 30%, for Standard by 15%, for Slow by 5% and for the rest it does nothing.
Functions ¶
func CreateOrAppendToJsonArray ¶ added in v0.1.2
CreateOrAppendToJsonArray appends to a JSON array in a file or creates a new JSON array if the file is empty or doesn't exist
func DoesPragmaSupportCustomRevert ¶ added in v1.0.10
DoesPragmaSupportCustomRevert checks if the pragma version supports custom revert messages (must be >= 0.8.4)
func EtherToWei ¶ added in v0.1.3
EtherToWei converts an ETH float amount to wei
func NewEphemeralKeys ¶
NewEphemeralKeys creates desired number of ephemeral keys, should be used only with ephemeral networks. Remember that they are not persisted anywhere, so you shouldn't use that option with live networks.
func NewLoggingTransport ¶ added in v1.1.1
func NewLoggingTransport() http.RoundTripper
NewLoggingTransport creates a new logging transport for GAP or default transport controlled by SETH_LOG_LEVEL
func OpenJsonFileAsStruct ¶ added in v0.1.2
func ReturnFunds ¶
ReturnFunds returns funds to the root key from all other keys
func SaveDeployedContract ¶
func ValidateConfig ¶ added in v1.0.10
Types ¶
type ABIFinder ¶
type ABIFinder struct { ContractMap ContractMap ContractStore *ContractStore }
func NewABIFinder ¶
func NewABIFinder(contractMap ContractMap, contractStore *ContractStore) ABIFinder
func (*ABIFinder) FindABIByMethod ¶
func (a *ABIFinder) FindABIByMethod(address string, signature []byte) (ABIFinderResult, error)
FindABIByMethod finds the ABI method and instance for the given contract address and signature If the contract address is known, it will use the ABI instance that is known to be at the address. If the contract address is not known, it will iterate over all known ABIs and check if any of them has a method with the given signature. If there are duplicates we will use the first ABI that matched.
type ABIFinderResult ¶
type ABIFinderResult struct { ABI abi.ABI Method *abi.Method DuplicateCount int // contains filtered or unexported fields }
func (*ABIFinderResult) ContractName ¶
func (a *ABIFinderResult) ContractName() string
type BlockStats ¶ added in v1.0.10
BlockStats is a block stats calculator
func NewBlockStats ¶ added in v1.0.10
func NewBlockStats(c *Client) (*BlockStats, error)
NewBlockStats creates a new instance of BlockStats
func (*BlockStats) CalculateBlockDurations ¶ added in v1.0.10
func (cs *BlockStats) CalculateBlockDurations(blocks []*types.Block) error
CalculateBlockDurations calculates and logs the duration, TPS, gas used, and gas limit between each consecutive block
type BlockStatsConfig ¶ added in v1.0.10
type BlockStatsConfig struct {
RPCRateLimit int `toml:"rpc_requests_per_second_limit"`
}
func (*BlockStatsConfig) Validate ¶ added in v1.0.10
func (cfg *BlockStatsConfig) Validate() error
type Call ¶
type Call struct { From string `json:"from"` Gas string `json:"gas"` GasUsed string `json:"gasUsed"` Input string `json:"input"` Logs []TraceLog `json:"logs"` Output string `json:"output"` To string `json:"to"` Type string `json:"type"` Value string `json:"value"` Error string `json:"error"` Calls []Call `json:"calls"` }
type CallOpt ¶
CallOpt is a functional option for bind.CallOpts
func WithBlockNumber ¶
WithBlockNumber sets blockNumber option for bind.CallOpts
func WithPending ¶
WithPending sets pending option for bind.CallOpts
type Client ¶
type Client struct { Cfg *Config Client *ethclient.Client Addresses []common.Address PrivateKeys []*ecdsa.PrivateKey ChainID int64 URL string Context context.Context CancelFunc context.CancelFunc Errors []error ContractStore *ContractStore NonceManager *NonceManager Tracer *Tracer ContractAddressToNameMap ContractMap ABIFinder *ABIFinder HeaderCache *LFUHeaderCache }
Client is a vanilla go-ethereum client with enhanced debug logging
func DefaultClient ¶ added in v1.2.0
DefaultClient returns a Client with reasonable default config with the specified RPC URL and private keys. You should pass at least 1 private key. It assumes that network is EIP-1559 compatible (if it's not, the client will later automatically update its configuration to reflect it).
func NewClientRaw ¶
func NewClientRaw( cfg *Config, addrs []common.Address, pkeys []*ecdsa.PrivateKey, opts ...ClientOpt, ) (*Client, error)
NewClientRaw creates a new raw seth client without dependencies
func NewClientWithConfig ¶
NewClientWithConfig creates a new seth client with all deps setup from config
func (*Client) AnySyncedKey ¶
AnySyncedKey returns the first synced key
func (*Client) CalculateGasEstimations ¶ added in v0.1.3
func (m *Client) CalculateGasEstimations(request GasEstimationRequest) GasEstimations
CalculateGasEstimations calculates gas estimations (price, tip/cap) or uses hardcoded values if estimation is disabled, estimation errors or network is a simulated one.
func (*Client) CalculateNetworkCongestionMetric ¶ added in v0.1.3
func (m *Client) CalculateNetworkCongestionMetric(blocksNumber uint64, strategy string) (float64, error)
CalculateNetworkCongestionMetric calculates a simple congestion metric based on the last N blocks according to selected strategy.
func (*Client) CalculateSubKeyFunding ¶
func (m *Client) CalculateSubKeyFunding(addrs, gasPrice, rooKeyBuffer int64) (*FundingDetails, error)
CalculateSubKeyFunding calculates all required params to split funds from the root key to N test keys
func (*Client) CallMsgFromTx ¶
func (m *Client) CallMsgFromTx(tx *types.Transaction) (ethereum.CallMsg, error)
CallMsgFromTx creates ethereum.CallMsg from tx, used in simulated calls
func (*Client) Decode ¶
func (m *Client) Decode(tx *types.Transaction, txErr error) (*DecodedTransaction, error)
Decode waits for transaction to be minted, then decodes transaction inputs, outputs, logs and events and depending on 'tracing_level' it either returns immediately or if the level matches it traces all calls. Where tracing results go depends on the 'trace_outputs' field in the config. If transaction was reverted the error returned will be revert error, not decoding error (that one, if any, will be logged). At the same time we also return decoded transaction, so contrary to go convention you might get both error and result. Last, but not least, if gas bumps are enabled, we will try to bump gas on transaction timeout and resubmit it with higher gas.
func (*Client) DecodeCustomABIErr ¶
DecodeCustomABIErr decodes typed Solidity errors
func (*Client) DeployContract ¶
func (m *Client) DeployContract(auth *bind.TransactOpts, name string, abi abi.ABI, bytecode []byte, params ...interface{}) (DeploymentData, error)
DeployContract deploys contract using ABI and bytecode passed to it, waits for transaction to be minted and contract really available at the address, so that when the method returns it's safe to interact with it. It also saves the contract address and ABI name to the contract map, so that we can use that, when tracing transactions. It is suggested to use name identical to the name of the contract Solidity file.
func (*Client) DeployContractFromContractStore ¶
func (m *Client) DeployContractFromContractStore(auth *bind.TransactOpts, name string, params ...interface{}) (DeploymentData, error)
DeployContractFromContractStore deploys contract from Seth's Contract Store, waits for transaction to be minted and contract really available at the address, so that when the method returns it's safe to interact with it. It also saves the contract address and ABI name to the contract map, so that we can use that, when tracing transactions. Name by which you refer the contract should be the same as the name of ABI file (you can omit the .abi suffix).
func (*Client) DeployDebugContract ¶
func (m *Client) DeployDebugContract(subDbgAddr common.Address) (*network_debug_contract.NetworkDebugContract, common.Address, error)
func (*Client) DeployDebugSubContract ¶
func (m *Client) DeployDebugSubContract() (*network_sub_debug_contract.NetworkDebugSubContract, common.Address, error)
func (*Client) DownloadContractAndGetPragma ¶ added in v1.0.10
func (*Client) EstimateGasLimitForFundTransfer ¶ added in v1.0.7
func (m *Client) EstimateGasLimitForFundTransfer(from, to common.Address, amount *big.Int) (uint64, error)
EstimateGasLimitForFundTransfer estimates gas limit for fund transfer
func (*Client) GetRootKeyAddress ¶ added in v1.0.9
GetRootKeyAddress returns the root key address from the client configuration. If no addresses are found, it returns an error. Root key address is the first address in the list of addresses.
func (*Client) GetRootPrivateKey ¶ added in v1.0.10
func (m *Client) GetRootPrivateKey() (*ecdsa.PrivateKey, error)
GetRootPrivateKey returns the private key of root key/address from the client configuration. If no private keys are found, it returns an error. Root private key is the first private key in the list of private keys.
func (*Client) GetSuggestedEIP1559Fees ¶ added in v0.1.3
func (m *Client) GetSuggestedEIP1559Fees(ctx context.Context, priority string) (maxFeeCap *big.Int, adjustedTipCap *big.Int, err error)
GetSuggestedEIP1559Fees returns suggested tip/fee cap calculated based on historical data, current congestion, and priority.
func (*Client) GetSuggestedLegacyFees ¶ added in v0.1.3
func (m *Client) GetSuggestedLegacyFees(ctx context.Context, priority string) (adjustedGasPrice *big.Int, err error)
GetSuggestedLegacyFees calculates the suggested gas price based on historical data, current congestion, and priority.
func (*Client) HistoricalFeeData ¶ added in v0.1.3
func (*Client) MustGetRootKeyAddress ¶ added in v1.0.9
MustGetRootKeyAddress returns the root key address from the client configuration. If no addresses are found, it panics. Root key address is the first address in the list of addresses.
func (*Client) MustGetRootPrivateKey ¶ added in v1.0.10
func (m *Client) MustGetRootPrivateKey() *ecdsa.PrivateKey
MustGetRootPrivateKey returns the private key of root key/address from the client configuration. If no private keys are found, it panics. Root private key is the first private key in the list of private keys.
func (*Client) NewCallKeyOpts ¶
NewCallKeyOpts returns a new sequential call options wrapper from the key N
func (*Client) NewCallOpts ¶
NewCallOpts returns a new sequential call options wrapper
func (*Client) NewDefaultGasEstimationRequest ¶ added in v1.0.7
func (m *Client) NewDefaultGasEstimationRequest() GasEstimationRequest
NewDefaultGasEstimationRequest creates a new default gas estimation request based on current network configuration
func (*Client) NewTXKeyOpts ¶
func (m *Client) NewTXKeyOpts(keyNum int, o ...TransactOpt) *bind.TransactOpts
NewTXKeyOpts returns a new transaction options wrapper, sets opts.GasPrice and opts.GasLimit from seth.toml or override with options
func (*Client) NewTXOpts ¶
func (m *Client) NewTXOpts(o ...TransactOpt) *bind.TransactOpts
NewTXOpts returns a new transaction options wrapper, Sets gas price/fee tip/cap and gas limit either based on TOML config or estimations.
func (*Client) RetryTxAndDecode ¶
func (m *Client) RetryTxAndDecode(f func() (*types.Transaction, error)) (*DecodedTransaction, error)
RetryTxAndDecode executes transaction several times, retries if connection is lost and decodes all the data
func (*Client) SaveDecodedCallsAsJson ¶
func (*Client) TransferETHFromKey ¶
func (*Client) WaitMined ¶
func (m *Client) WaitMined(ctx context.Context, l zerolog.Logger, b bind.DeployBackend, tx *types.Transaction) (*types.Receipt, error)
WaitMined the same as bind.WaitMined, awaits transaction receipt until timeout
func (*Client) WaitUntilNoPendingTx ¶ added in v1.2.0
WaitUntilNoPendingTx waits until there's no pending transaction for address. If after timeout there are still pending transactions, it returns error.
func (*Client) WaitUntilNoPendingTxFoKeyNum ¶ added in v1.2.0
WaitUntilNoPendingTxFoKeyNum waits until there's no pending transaction for key at index `keyNum`. If index is out of range or if after timeout there are still pending transactions, it returns error.
func (*Client) WaitUntilNoPendingTxForRootKey ¶ added in v1.2.0
WaitUntilNoPendingTxForRootKey waits until there's no pending transaction for root key. If after timeout there are still pending transactions, it returns error.
type ClientBuilder ¶ added in v1.2.0
type ClientBuilder struct {
// contains filtered or unexported fields
}
func NewClientBuilder ¶ added in v1.2.0
func NewClientBuilder() *ClientBuilder
NewClientBuilder creates a new ClientBuilder with reasonable default values. You only need to pass private key(s) and RPC URL to build a usable config.
func (*ClientBuilder) Build ¶ added in v1.2.0
func (c *ClientBuilder) Build() (*Client, error)
Build creates a new Client from the builder.
func (*ClientBuilder) WithArtifactsFolder ¶ added in v1.2.0
func (c *ClientBuilder) WithArtifactsFolder(folder string) *ClientBuilder
WithArtifactsFolder sets the folder where the Seth artifacts such as DOT graphs or JSON will be saved. Default value is "seth_artifacts".
func (*ClientBuilder) WithDynamicGasPrices ¶ added in v1.2.0
func (c *ClientBuilder) WithDynamicGasPrices(gasFeeCap, gasTipCap int64) *ClientBuilder
WithDynamicGasPrices sets the gas fee cap and gas tip cap for EIP-1559 dynamic fees. These values will be used only if EIP-1559 dynamic fees are enabled. Default values are 150 gwei for gas fee cap and 50 gwei for gas tip cap.
func (*ClientBuilder) WithEIP1559DynamicFees ¶ added in v1.2.0
func (c *ClientBuilder) WithEIP1559DynamicFees(enabled bool) *ClientBuilder
WithEIP1559DynamicFees enables or disables EIP-1559 dynamic fees. If enabled, you should set gas fee cap and gas tip cap with `WithDynamicGasPrices()` Default value is true.
func (*ClientBuilder) WithEphemeralAddresses ¶ added in v1.2.0
func (c *ClientBuilder) WithEphemeralAddresses(ephemeralAddressCount, rootKeyBufferAmount int64) *ClientBuilder
WithEphemeralAddresses sets the number of ephemeral addresses to generate and the amount of funds to keep in the root private key. Default values are 0 for ephemeral addresses and 0 for root key funds buffer.
func (*ClientBuilder) WithGasBumping ¶ added in v1.2.0
func (c *ClientBuilder) WithGasBumping(retries uint, maxGasPrice int64, customBumpingStrategy GasBumpStrategyFn) *ClientBuilder
WithGasBumping sets the number of retries for gas bumping and max gas price. You can also provide a custom bumping strategy. If the transaction is not mined within this number of retries, it will be considered failed. If the gas price is bumped to a value higher than max gas price, no more gas bumping will be attempted and previous gas price will be used by all subsequent attempts. If set to 0 max price is not checked. Default value is 10 retries, no max gas price and a default bumping strategy (with gas increase % based on gas_price_estimation_tx_priority)
func (*ClientBuilder) WithGasPriceEstimations ¶ added in v1.2.0
func (c *ClientBuilder) WithGasPriceEstimations(enabled bool, estimationBlocks uint64, txPriority string) *ClientBuilder
WithGasPriceEstimations enables or disables gas price estimations, sets the number of blocks to use for estimation or transaction priority. Even with estimations enabled you should still either set legacy gas price with `WithLegacyGasPrice()` or EIP-1559 dynamic fees with `WithDynamicGasPrices()` ss they will be used as fallback values, if the estimations fail. Following priorities are supported: "slow", "standard" and "fast" Default values are true for enabled, 200 blocks for estimation and "standard" for priority.
func (*ClientBuilder) WithLegacyGasPrice ¶ added in v1.2.0
func (c *ClientBuilder) WithLegacyGasPrice(gasPrice int64) *ClientBuilder
WithLegacyGasPrice sets the gas price for legacy transactions that will be used only if EIP-1559 dynamic fees are disabled. Default value is 1 gwei.
func (*ClientBuilder) WithNetworkName ¶ added in v1.2.0
func (c *ClientBuilder) WithNetworkName(name string) *ClientBuilder
WithNetworkName sets the network name, useful mostly for debugging and logging. Default value is "default".
func (*ClientBuilder) WithNonceManager ¶ added in v1.2.0
func (c *ClientBuilder) WithNonceManager(rateLimitSec int, retries uint, timeout, retryDelay time.Duration) *ClientBuilder
WithNonceManager sets the rate limit for key sync, number of retries, timeout and retry delay. Default values are 10 calls per second, 3 retires, 60s timeout and 5s retry delay.
func (*ClientBuilder) WithPrivateKeys ¶ added in v1.2.0
func (c *ClientBuilder) WithPrivateKeys(pks []string) *ClientBuilder
WithPrivateKeys sets the private keys for the config. At least one is required to build a valid config. Default value is an empty slice (which is an incorrect value).
func (*ClientBuilder) WithProtections ¶ added in v1.2.0
func (c *ClientBuilder) WithProtections(pendingNonceProtectionEnabled, nodeHealthStartupCheck bool) *ClientBuilder
WithProtections enables or disables nonce protection (fails, when key has a pending transaction and you try to submit another one) and node health check on startup. Default values are false for nonce protection and true for node health check.
func (*ClientBuilder) WithRpcDialTimeout ¶ added in v1.2.0
func (c *ClientBuilder) WithRpcDialTimeout(timeout time.Duration) *ClientBuilder
WithRpcDialTimeout sets the timeout for dialing the RPC server. If the connection is not established within this time, it will be considered failed. Default value is 1 minute.
func (*ClientBuilder) WithRpcUrl ¶ added in v1.2.0
func (c *ClientBuilder) WithRpcUrl(url string) *ClientBuilder
WithRpcUrl sets the RPC URL for the config. Default value is an empty string (which is an incorrect value).
func (*ClientBuilder) WithTracing ¶ added in v1.2.0
func (c *ClientBuilder) WithTracing(level string, outputs []string) *ClientBuilder
WithTracing sets the tracing level and outputs. Tracing level can be one of: "all", "reverted", "none". Outputs can be one or more of: "console", "dot" or "json". Default values are "reverted" and ["console", "dot"].
func (*ClientBuilder) WithTransactionTimeout ¶ added in v1.2.0
func (c *ClientBuilder) WithTransactionTimeout(timeout time.Duration) *ClientBuilder
WithTransactionTimeout sets the timeout for transactions. If the transaction is not mined within this time, it will be considered failed. Default value is 5 minutes.
func (*ClientBuilder) WithTransferGasFee ¶ added in v1.2.0
func (c *ClientBuilder) WithTransferGasFee(gasFee int64) *ClientBuilder
WithTransferGasFee sets the gas fee for transfer transactions. This value is used, when sending funds to ephemeral keys or returning funds to root private key. Default value is 21_000 wei.
type ClientOpt ¶
type ClientOpt func(c *Client)
ClientOpt is a client functional option
func WithABIFinder ¶
WithABIFinder ABIFinder functional option
func WithContractMap ¶
func WithContractMap(contractAddressToNameMap ContractMap) ClientOpt
WithContractMap contractAddressToNameMap functional option
func WithContractStore ¶
func WithContractStore(as *ContractStore) ClientOpt
WithContractStore ContractStore functional option
func WithNonceManager ¶
func WithNonceManager(nm *NonceManager) ClientOpt
WithNonceManager NonceManager functional option
type CommonData ¶
type CommonData struct { CallType string `json:"call_type,omitempty"` Signature string `json:"signature"` Method string `json:"method"` Input map[string]interface{} `json:"input,omitempty"` Output map[string]interface{} `json:"output,omitempty"` NestingLevel int `json:"nesting_level,omitempty"` ParentSignature string `json:"parent_signature,omitempty"` Error string `json:"error,omitempty"` }
type Config ¶
type Config struct { RPCHeaders http.Header // external fields // ArtifactDir is the directory where all artifacts generated by seth are stored (e.g. transaction traces) ArtifactsDir string `toml:"artifacts_dir"` EphemeralAddrs *int64 `toml:"ephemeral_addresses_number"` RootKeyFundsBuffer *int64 `toml:"root_key_funds_buffer"` ABIDir string `toml:"abi_dir"` BINDir string `toml:"bin_dir"` ContractMapFile string `toml:"contract_map_file"` SaveDeployedContractsMap bool `toml:"save_deployed_contracts_map"` Network *Network `toml:"network"` Networks []*Network `toml:"networks"` NonceManager *NonceManagerCfg `toml:"nonce_manager"` TracingLevel string `toml:"tracing_level"` TraceOutputs []string `toml:"trace_outputs"` PendingNonceProtectionEnabled bool `toml:"pending_nonce_protection_enabled"` ConfigDir string `toml:"abs_path"` ExperimentsEnabled []string `toml:"experiments_enabled"` CheckRpcHealthOnStart bool `toml:"check_rpc_health_on_start"` BlockStatsConfig *BlockStatsConfig `toml:"block_stats"` GasBump *GasBumpConfig `toml:"gas_bump"` // contains filtered or unexported fields }
func ReadConfig ¶
ReadConfig reads the TOML config file from location specified by env var "SETH_CONFIG_PATH" and returns a Config struct
func (*Config) AppendPksToNetwork ¶ added in v1.2.0
AppendPksToNetwork appends private keys to the network with the specified name and returns "true" if the network was updated.
func (*Config) FirstNetworkURL ¶ added in v1.1.1
FirstNetworkURL returns first network URL
func (*Config) GasBumpRetries ¶ added in v1.2.0
GasBumpRetries returns the number of retries for gas bumping
func (*Config) GenerateContractMapFileName ¶
GenerateContractMapFileName generates a file name for the contract map
func (*Config) GetMaxConcurrency ¶ added in v1.0.7
GetMaxConcurrency returns the maximum number of concurrent transactions. Root key is excluded from the count.
func (*Config) HasMaxBumpGasPrice ¶ added in v1.2.0
HasMaxBumpGasPrice returns true if the max gas price for gas bumping is set
func (*Config) IsExperimentEnabled ¶ added in v0.1.3
IsExperimentEnabled returns true if the experiment is enabled
func (*Config) IsSimulatedNetwork ¶
IsSimulatedNetwork returns true if the network is simulated (i.e. Geth or Anvil)
func (*Config) ShouldSaveDeployedContractMap ¶ added in v1.1.2
ShouldSaveDeployedContractMap returns true if the contract map should be saved (i.e. not a simulated network and functionality is enabled)
type ContextErrorKey ¶ added in v1.0.7
type ContextErrorKey struct{}
type ContractLoader ¶ added in v1.0.10
ContractLoader is a helper struct for loading contracts
func NewContractLoader ¶ added in v1.0.10
func NewContractLoader[T any](client *Client) *ContractLoader[T]
NewContractLoader creates a new contract loader
func (*ContractLoader[T]) LoadContract ¶ added in v1.0.10
func (cl *ContractLoader[T]) LoadContract(name string, address common.Address, abiLoadFn func() (*abi.ABI, error), wrapperInitFn func(common.Address, bind.ContractBackend) (*T, error)) (*T, error)
LoadContract loads contract by name, address, ABI loader and wrapper init function, it adds contract ABI to Seth Contract Store and address to Contract Map. Thanks to that we can easily trace and debug interactions with the contract. Signatures of functions passed to this method were chosen to conform to Geth wrappers' GetAbi() and NewXXXContract() functions.
type ContractMap ¶
type ContractMap struct {
// contains filtered or unexported fields
}
func NewContractMap ¶ added in v1.0.7
func NewContractMap(contracts map[string]string) ContractMap
func NewEmptyContractMap ¶ added in v1.0.7
func NewEmptyContractMap() ContractMap
func (ContractMap) AddContract ¶
func (c ContractMap) AddContract(addr, name string)
func (ContractMap) GetContractAddress ¶
func (c ContractMap) GetContractAddress(addr string) string
func (ContractMap) GetContractMap ¶ added in v1.0.7
func (c ContractMap) GetContractMap() map[string]string
func (ContractMap) GetContractName ¶
func (c ContractMap) GetContractName(addr string) string
func (ContractMap) IsKnownAddress ¶
func (c ContractMap) IsKnownAddress(addr string) bool
func (ContractMap) Size ¶ added in v1.0.7
func (c ContractMap) Size() int
type ContractStore ¶
type ContractStore struct { ABIs ABIStore BINs map[string][]byte // contains filtered or unexported fields }
ContractStore contains all ABIs that are used in decoding. It might also contain contract bytecode for deployment
func NewContractStore ¶
func NewContractStore(abiPath, binPath string) (*ContractStore, error)
NewContractStore creates a new Contract store
func (*ContractStore) AddBIN ¶
func (c *ContractStore) AddBIN(name string, bin []byte)
type DecodableLog ¶
type DecodedCall ¶
type DecodedCall struct { CommonData FromAddress string `json:"from_address,omitempty"` ToAddress string `json:"to_address,omitempty"` From string `json:"from,omitempty"` To string `json:"to,omitempty"` Events []DecodedCommonLog `json:"events,omitempty"` Comment string `json:"comment,omitempty"` Value int64 `json:"value,omitempty"` GasLimit uint64 `json:"gas_limit,omitempty"` GasUsed uint64 `json:"gas_used,omitempty"` }
DecodedCall decoded call
type DecodedCommonLog ¶
type DecodedCommonLog struct { Signature string `json:"signature"` Address common.Address `json:"address"` EventData map[string]interface{} `json:"event_data"` Topics []string `json:"topics,omitempty"` }
func (*DecodedCommonLog) MergeEventData ¶
func (d *DecodedCommonLog) MergeEventData(newEventData map[string]interface{})
type DecodedTransaction ¶
type DecodedTransaction struct { CommonData Index uint `json:"index"` Hash string `json:"hash,omitempty"` Protected bool `json:"protected,omitempty"` Transaction *types.Transaction `json:"transaction,omitempty"` Receipt *types.Receipt `json:"receipt,omitempty"` Events []DecodedTransactionLog `json:"events,omitempty"` }
DecodedTransaction decoded transaction
type DecodedTransactionLog ¶
type DecodedTransactionLog struct { DecodedCommonLog BlockNumber uint64 `json:"block_number"` Index uint `json:"index"` TXHash string `json:"hash"` TXIndex uint `json:"tx_index"` Removed bool `json:"removed"` FileTag string `json:"file_tag,omitempty"` }
DecodedTransactionLog decoded Solidity log(event)
func (*DecodedTransactionLog) MergeEventData ¶
func (d *DecodedTransactionLog) MergeEventData(newEventData map[string]interface{})
type DeploymentData ¶
type DeploymentData struct { Address common.Address Transaction *types.Transaction BoundContract *bind.BoundContract }
type Duration ¶
Duration is a non-negative time duration.
func MustMakeDuration ¶
func ParseDuration ¶
func (Duration) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (Duration) MarshalText ¶
MarshalText implements the text.Marshaler interface.
func (Duration) String ¶
String returns a string representing the duration in the form "72h3m0.5s". Leading zero units are omitted. As a special case, durations less than one second format use a smaller unit (milli-, micro-, or nanoseconds) to ensure that the leading digit is non-zero. The zero duration formats as 0s.
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface.
func (*Duration) UnmarshalText ¶
UnmarshalText implements the text.Unmarshaler interface.
type FundingDetails ¶
type FundingDetails struct { RootBalance *big.Int TotalFee *big.Int FreeBalance *big.Int AddrFunding *big.Int NetworkTransferFee int64 }
FundingDetails funding details about shares we put into test keys
type GasBumpConfig ¶ added in v1.2.0
type GasBumpConfig struct { Retries uint `toml:"retries"` MaxGasPrice int64 `toml:"max_gas_price"` StrategyFn GasBumpStrategyFn `toml:"-"` }
type GasBumpStrategyFn ¶ added in v1.2.0
GasBumpStrategyFn is a function that returns a new gas price based on the previous one
type GasEstimationRequest ¶ added in v0.1.3
type GasEstimations ¶ added in v0.1.3
type GasEstimator ¶
GasEstimator estimates gas prices
func NewGasEstimator ¶
func NewGasEstimator(c *Client) *GasEstimator
NewGasEstimator creates a new gas estimator
func (*GasEstimator) Stats ¶
func (m *GasEstimator) Stats(fromNumber uint64, priorityPerc float64) (GasSuggestions, error)
Stats prints gas stats
type GasPercentiles ¶
type GasPercentiles struct { Max float64 Perc99 float64 Perc75 float64 Perc50 float64 Perc25 float64 }
GasPercentiles contains gas percentiles
type GasSuggestions ¶
type GasSuggestions struct { GasPrice *GasPercentiles TipCap *GasPercentiles SuggestedGasPrice *big.Int SuggestedGasTipCap *big.Int }
type LFUHeaderCache ¶ added in v0.1.3
type LFUHeaderCache struct {
// contains filtered or unexported fields
}
LFUHeaderCache is a Least Frequently Used header cache
func NewLFUBlockCache ¶ added in v0.1.3
func NewLFUBlockCache(capacity uint64) *LFUHeaderCache
NewLFUBlockCache creates a new LFU cache with the given capacity.
type LogWithEventData ¶
type LogWithEventData interface {
MergeEventData(map[string]interface{})
}
type LoggingTransport ¶ added in v1.1.1
type LoggingTransport struct {
Transport http.RoundTripper
}
LoggingTransport is a custom transport to log requests and responses
type Network ¶
type Network struct { Name string `toml:"name"` URLs []string `toml:"urls_secret"` EIP1559DynamicFees bool `toml:"eip_1559_dynamic_fees"` GasPrice int64 `toml:"gas_price"` GasFeeCap int64 `toml:"gas_fee_cap"` GasTipCap int64 `toml:"gas_tip_cap"` GasLimit uint64 `toml:"gas_limit"` TxnTimeout *Duration `toml:"transaction_timeout"` DialTimeout *Duration `toml:"dial_timeout"` TransferGasFee int64 `toml:"transfer_gas_fee"` PrivateKeys []string `toml:"private_keys_secret"` GasPriceEstimationEnabled bool `toml:"gas_price_estimation_enabled"` GasPriceEstimationBlocks uint64 `toml:"gas_price_estimation_blocks"` GasPriceEstimationTxPriority string `toml:"gas_price_estimation_tx_priority"` // derivative vars ChainID string }
type NonceManager ¶
type NonceManager struct { *sync.Mutex Client *Client SyncTimeout time.Duration SyncedKeys chan *KeyNonce Addresses []common.Address PrivateKeys []*ecdsa.PrivateKey Nonces map[common.Address]int64 // contains filtered or unexported fields }
NonceManager tracks nonce for each address
func NewNonceManager ¶
func NewNonceManager(cfg *Config, addrs []common.Address, privKeys []*ecdsa.PrivateKey) (*NonceManager, error)
NewNonceManager creates a new nonce manager that tracks nonce for each address
func (*NonceManager) NextNonce ¶
func (m *NonceManager) NextNonce(addr common.Address) *big.Int
NextNonce returns new nonce for addr this method is external for module testing, but you should not use it since handling nonces on the client is unpredictable
func (*NonceManager) UpdateNonces ¶
func (m *NonceManager) UpdateNonces() error
UpdateNonces syncs nonces for addresses
type NonceManagerCfg ¶
type NonceStatus ¶ added in v0.1.3
type Pragma ¶ added in v1.0.10
Pragma represents the version of the Solidity compiler used to compile the contract
func DecodePragmaVersion ¶ added in v1.0.10
DecodePragmaVersion extracts the pragma version from the bytecode or returns an error if it's not found or can't be decoded. Based on https://www.rareskills.io/post/solidity-metadata
type TXCallTraceOutput ¶
func (*TXCallTraceOutput) AsCall ¶
func (t *TXCallTraceOutput) AsCall() Call
type Trace ¶
type Trace struct { TxHash string FourByte map[string]*TXFourByteMetadataOutput CallTrace *TXCallTraceOutput OpCodesTrace map[string]interface{} }
type TraceLog ¶
type Tracer ¶
type Tracer struct { Cfg *Config Addresses []common.Address ContractStore *ContractStore ContractAddressToNameMap ContractMap ABIFinder *ABIFinder // contains filtered or unexported fields }
func NewTracer ¶
func NewTracer(cs *ContractStore, abiFinder *ABIFinder, cfg *Config, contractAddressToNameMap ContractMap, addresses []common.Address) (*Tracer, error)
func (*Tracer) AddDecodedCalls ¶ added in v1.2.0
func (t *Tracer) AddDecodedCalls(txHash string, calls []*DecodedCall)
func (*Tracer) DecodeTrace ¶
DecodeTrace decodes the trace of a transaction including all subcalls. It returns a list of decoded calls. Depending on the config it also saves the decoded calls as JSON files.
func (*Tracer) GetAllDecodedCalls ¶ added in v1.2.0
func (t *Tracer) GetAllDecodedCalls() map[string][]*DecodedCall
func (*Tracer) GetDecodedCalls ¶ added in v1.2.0
func (t *Tracer) GetDecodedCalls(txHash string) []*DecodedCall
func (*Tracer) PrintTXTrace ¶
func (*Tracer) SaveDecodedCallsAsJson ¶
type TransactOpt ¶
type TransactOpt func(o *bind.TransactOpts)
TransactOpt is a wrapper for bind.TransactOpts
func WithGasFeeCap ¶
func WithGasFeeCap(gasFeeCap *big.Int) TransactOpt
WithGasFeeCap sets gasFeeCap option for bind.TransactOpts
func WithGasLimit ¶
func WithGasLimit(gasLimit uint64) TransactOpt
WithGasLimit sets gasLimit option for bind.TransactOpts
func WithGasPrice ¶
func WithGasPrice(gasPrice *big.Int) TransactOpt
WithGasPrice sets gasPrice option for bind.TransactOpts
func WithGasTipCap ¶
func WithGasTipCap(gasTipCap *big.Int) TransactOpt
WithGasTipCap sets gasTipCap option for bind.TransactOpts
func WithNoSend ¶
func WithNoSend(noSend bool) TransactOpt
WithNoSend sets noSend option for bind.TransactOpts
func WithNonce ¶
func WithNonce(nonce *big.Int) TransactOpt
WithNonce sets nonce option for bind.TransactOpts
func WithValue ¶
func WithValue(value *big.Int) TransactOpt
WithValue sets value option for bind.TransactOpts
type TransactionLog ¶
func (TransactionLog) GetData ¶
func (t TransactionLog) GetData() []byte
func (TransactionLog) GetTopics ¶
func (t TransactionLog) GetTopics() []common.Hash