class Eth::Client
def call_raw(contract, func, *args, **kwargs)
- See: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call -
def call_raw(contract, func, *args, **kwargs) params = { data: call_payload(func, args), to: kwargs[:address] || contract.address, from: kwargs[:from], }.compact raw_result = eth_call(params)["result"] types = func.outputs.map { |i| i.type } return nil if raw_result == "0x" Eth::Abi.decode(types, raw_result) end