--- tags: ideas --- # ethVM graphql endpoints ## Address Overview ```plain query getEthBalance($hash: String!) { getEthBalance(owner: $hash) { balance } } query getContractMeta($hash: String!) { getContractMeta(contract: $hash) { block, codeHash, creator, transactionHash } } query getContractTimestamp($hash: String!) { getTransactionByHash(hash: $hash) { timestamp } } ``` Address pending tx ```plain query getPendingTransactions($hash: String!) { getPendingTransactions(owner: $hash) { from to timestamp value gas gasPrice hash } } subscription pendingTransaction($owner: String!) { pendingTransaction(owner: $owner) { transactionHash txFee from to timestamp value } } subscription pendingMined($hash: String!) { transactionEvent(hash: $hash) } ``` Address rewards ```plain fragment BalanceFragment on BalanceDiff { before after } fragment RewardSummary on ETHTransfers { transfers { transfer { block timestamp txFee } stateDiff { to { ...BalanceFragment } from { ...BalanceFragment } } value } nextKey } query getAddrRewardsBlock($hash: String!, $_limit: Int, $_nextKey: String) { getBlockRewards(owner: $hash, limit: $_limit, nextKey: $_nextKey) { ...RewardSummary } } query getAddrRewardsUncle($hash: String!, $_limit: Int, $_nextKey: String) { getUncleRewards(owner: $hash, limit: $_limit, nextKey: $_nextKey) { ...RewardSummary } } query getAddrRewardsGenesis($hash: String!, $_limit: Int, $_nextKey: String) { getGenesisRewards(owner: $hash, limit: $_limit, nextKey: $_nextKey) { ...RewardSummary } } query getBlockUncleRewards($blockRef: Int!) { getBlockByNumber(number: $blockRef) { summary { rewards { uncles } } } } ``` Address tokens ```plain fragment TokenFragment on EthTokenInfo { name symbol decimals } query getOwnersERC20Tokens($hash: String!, $_nextKey: String) { getOwnersERC20Tokens(owner: $hash, nextKey: $_nextKey) { owners { tokenInfo { ...TokenFragment contract } balance } nextKey } } query getOwnersERC721Balances($hash: String!) { getOwnersERC721Balances(owner: $hash) { balance tokenInfo { name symbol contract } } } query getOwnersERC721Tokens($hash: String!, $tokenContract: String, $_nextKey: String) { getOwnersERC721Tokens(owner: $hash, contract: $tokenContract, nextKey: $_nextKey) { tokens { token } nextKey } } query getNFTcontractsMeta($address: String!) { ``` ```undefined getNFTcontractsMeta(address: $address) @rest(type: "AddressNFTcontracts", path: "/nft?{args}") { tokenContracts @type(name: "NFTContract") { contractIdAddress owned_asset_count name contractImage primary_asset_contracts @type(name: "PrimaryAssetContract") { address name symbol total_supply description external_link image_url } ``` ```plain } ``` ```undefined } } ``` Address transfers ```plain fragment TransferSummary on Transfer { transactionHash timestamp from to txFee } fragment TokenFragment on EthTokenInfo { name symbol decimals } fragment BalanceFragment on BalanceDiff { before after } query getAddressEthTransfers($hash: String, $filter: TransferFilter, $_limit: Int, $_nextKey: String) { getEthTransfersV2(owner: $hash, filter: $filter, limit: $_limit, nextKey: $_nextKey) { transfers { transfer { ...TransferSummary block status } stateDiff { to { ...BalanceFragment } from { ...BalanceFragment } } value } nextKey } } query getAddressERC20Transfers($hash: String!, $_limit: Int, $_nextKey: String) { getERC20Transfers(owner: $hash, limit: $_limit, nextKey: $_nextKey) { transfers { transfer { ...TransferSummary } stateDiff { to { ...BalanceFragment } from { ...BalanceFragment } } value contract tokenInfo { ...TokenFragment } } nextKey } } query getAddressERC721Transfers($hash: String!, $_limit: Int, $_nextKey: String) { getERC721Transfers(owner: $hash, limit: $_limit, nextKey: $_nextKey) { transfers { transfer { ...TransferSummary } token contract tokenInfo { name } } nextKey } } query getTransactionStateDiff($hash: String!){ getTransactionStateDiff(hash: $hash) { owner from to } } ``` Address update event ```plain subscription addressEvent($owner: String!, $event: AddressEventType) { addressEvent(owner: $owner, event: $event) { blockNumber event timestamp owner } } ``` Blocks ------ Block details ```plain fragment BlockDetails on Block { summary { number miner txCount timestamp uncles rewards { txFees total uncles } txFail } hash parentHash nonce sha3Uncles logsBloom transactionsRoot stateRoot receiptsRoot difficulty totalDifficulty extraData size gasLimit gasUsed transactions } query getBlockByNumber($blockRef: Int!) { getBlockByNumber(number: $blockRef) { ...BlockDetails } } query getBlockByHash($blockRef: String!) { getBlockByHash(hash: $blockRef) { ...BlockDetails } } query getLastBlockNumber { getLatestBlockInfo { number } } ``` Block stats ```plain query getLatestBlockInfo { getLatestBlockInfo { number avgBlockTime hashRate difficulty } } ``` Recent blocks ```plain query getBlocksArrayByNumber($fromBlock: Int, $limit: Int) { getBlocksArrayByNumber(fromBlock: $fromBlock, limit: $limit) { number miner txCount timestamp rewards { total } txFail } } subscription newBlockTable { newBlockFeed { number miner txCount timestamp rewards { total } } } ``` Tokens ------ Token details ```plain fragment TokenDetails on EthTokenInfo { name symbol decimals totalSupply contract } fragment ERC20TokenOwnerDetails on ERC20TokenBalance { tokenInfo { ...TokenDetails } owner balance } query getTokenInfoByContract($contract: String!) { getTokenInfoByContract(contract: $contract) { ...TokenDetails } } query getERC20TokenBalance($contract: String!, $owner: String!) { getERC20TokenBalance(contract: $contract, owner: $owner) { ...ERC20TokenOwnerDetails } } ``` Token holders ```plain fragment TokenDetails on EthTokenInfo { name symbol decimals totalSupply contract } fragment ERC20TokenOwnerDetails on ERC20TokenBalance { tokenInfo { ...TokenDetails } owner balance } fragment ERC20TokenOwners on ERC20TokenOwners { owners { ...ERC20TokenOwnerDetails } nextKey } fragment ERC721TokenOwnerDetails on ERC721TokenOwner { tokenInfo { ...TokenDetails } owner token } fragment ERC721TokenOwners on ERC721TokenOwners { owners { ...ERC721TokenOwnerDetails } nextKey } query getERC20TokenOwners($contract: String!, $_limit: Int, $_nextKey: String) { getERC20TokenOwners(contract: $contract, limit: $_limit, nextKey: $_nextKey) { ...ERC20TokenOwners } } query getERC721TokenOwners($contract: String!, $_limit: Int, $_nextKey: String) { getERC721TokenOwners(contract: $contract, limit: $_limit, nextKey: $_nextKey) { ...ERC721TokenOwners } } ``` Token transfers ```plain fragment TransferSummary on Transfer { transactionHash timestamp from to txFee } fragment TokenInfo on EthTokenInfo { name symbol decimals totalSupply contract } query getERC20TokenTransfers($hash: String!, $_limit: Int, $_nextKey: String) { getERC20TokenTransfers(contract: $hash, limit: $_limit, nextKey: $_nextKey) { transfers { transfer { ...TransferSummary } value } nextKey } } query getERC721TokenTransfers($hash: String!, $_limit: Int, $_nextKey: String) { getERC721TokenTransfers(contract: $hash, limit: $_limit, nextKey: $_nextKey) { transfers { transfer { ...TransferSummary } token contract tokenInfo { ...TokenInfo } } nextKey } } ``` Transactions ------------ Block transactions ```plain fragment TxSummary on ETHTransfers { transfers { transfer { transactionHash to block timestamp from txFee status } value } } query getBlockTransfers($_number: Int) { getBlockTransfers(number: $_number) { ...TxSummary } } query getAllTxs($_limit: Int, $_nextKey: String) { getAllEthTransfers(limit: $_limit, nextKey: $_nextKey) { ...TxSummary nextKey } } subscription newTransfersCompleteFeed { newTransfersCompleteFeed { block type } } ``` Pending transactions ```plain subscription pendingTx($owner: String) { pendingTransaction(owner: $owner) { transactionHash from to txFee value timestamp } } subscription txMined($hash: String!) { transactionEvent(hash: $hash) } ``` Transaction details ```plain fragment TxDetails on Tx { blockNumber from gas gasPrice gasUsed timestamp hash input status nonce to transactionIndex value replacedBy contractAddress } query getTransactionByHash($hash: String!) { getTransactionByHash(hash: $hash) { ...TxDetails } } subscription transactionEvent($hash: String!) { transactionEvent(hash: $hash) } ``` Uncles ------ Uncle details ```plain fragment UncleDetails on Uncle { block { summary { number miner txCount timestamp uncles rewards { txFees total uncles } txFail } hash parentHash nonce sha3Uncles logsBloom transactionsRoot stateRoot receiptsRoot difficulty totalDifficulty extraData size gasLimit gasUsed transactions } parentHash parentBlockNumber unclePosition } query getUncleByHash($hash: String!) { getUncleByHash(hash: $hash) { ...UncleDetails } } ``` Search ------ Search details ```plain query getHashType($hash: String!) { getHashType(hash: $hash) } query getTokensBeginsWith($keyword: String!) { getTokensBeginsWith(keyword: $keyword) { contract keyword } } ```