module Eth::Tx

def new(params, chain_id = Chain::ETHEREUM)

Parameters:
  • chain_id (Integer) -- the EIP-155 Chain ID (legacy transactions only).
  • params (Hash) -- all necessary transaction fields.
def new(params, chain_id = Chain::ETHEREUM)
  # if we deal with max gas fee parameter, attempt EIP-1559
  unless params[:max_gas_fee].nil?
    params[:chain_id] = chain_id if params[:chain_id].nil?
    return Tx::Eip1559.new params
  end
  # if we deal with access list parameter, attempt EIP-2930
  unless params[:access_list].nil?
    params[:chain_id] = chain_id if params[:chain_id].nil?
    return Tx::Eip2930.new params
  end
  # if nothing else, go with legacy transactions
  chain_id = params[:chain_id] if !params[:chain_id].nil? and params[:chain_id] != chain_id
  return Tx::Legacy.new params, chain_id
end