github.com/theQRL/go-zond@v0.2.1/graphql/schema.go (about)

     1  // Copyright 2019 The go-ethereum Authors
     2  // This file is part of the go-ethereum library.
     3  //
     4  // The go-ethereum library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-ethereum library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package graphql
    18  
    19  const schema string = `
    20      # Bytes32 is a 32 byte binary string, represented as 0x-prefixed hexadecimal.
    21      scalar Bytes32
    22      # Address is a 20 byte Zond address, represented as 0x-prefixed hexadecimal.
    23      scalar Address
    24      # Bytes is an arbitrary length binary string, represented as 0x-prefixed hexadecimal.
    25      # An empty byte string is represented as '0x'. Byte strings must have an even number of hexadecimal nybbles.
    26      scalar Bytes
    27      # BigInt is a large integer. Input is accepted as either a JSON number or as a string.
    28      # Strings may be either decimal or 0x-prefixed hexadecimal. Output values are all
    29      # 0x-prefixed hexadecimal.
    30      scalar BigInt
    31      # Long is a 64 bit unsigned integer. Input is accepted as either a JSON number or as a string.
    32      # Strings may be either decimal or 0x-prefixed hexadecimal. Output values are all
    33      # 0x-prefixed hexadecimal.
    34      scalar Long
    35  
    36      schema {
    37          query: Query
    38          mutation: Mutation
    39      }
    40  
    41      # Account is a Zond account at a particular block.
    42      type Account {
    43          # Address is the address owning the account.
    44          address: Address!
    45          # Balance is the balance of the account, in wei.
    46          balance: BigInt!
    47          # TransactionCount is the number of transactions sent from this account,
    48          # or in the case of a contract, the number of contracts created. Otherwise
    49          # known as the nonce.
    50          transactionCount: Long!
    51          # Code contains the smart contract code for this account, if the account
    52          # is a (non-self-destructed) contract.
    53          code: Bytes!
    54          # Storage provides access to the storage of a contract account, indexed
    55          # by its 32 byte slot identifier.
    56          storage(slot: Bytes32!): Bytes32!
    57      }
    58  
    59      # Log is a Zond event log.
    60      type Log {
    61          # Index is the index of this log in the block.
    62          index: Long!
    63          # Account is the account which generated this log - this will always
    64          # be a contract account.
    65          account(block: Long): Account!
    66          # Topics is a list of 0-4 indexed topics for the log.
    67          topics: [Bytes32!]!
    68          # Data is unindexed data for this log.
    69          data: Bytes!
    70          # Transaction is the transaction that generated this log entry.
    71          transaction: Transaction!
    72      }
    73  
    74      type AccessTuple {
    75          address: Address!
    76          storageKeys : [Bytes32!]!
    77      }
    78  
    79      type Withdrawal {
    80          # Index is a monotonically increasing identifier issued by consensus layer.
    81          index: Long!
    82          # Validator is index of the validator associated with withdrawal.
    83          validator: Long!
    84          # Recipient address of the withdrawn amount.
    85          address: Address!
    86          # Amount is the withdrawal value in Gwei.
    87          amount: Long!
    88      }
    89  
    90      # Transaction is a Zond transaction.
    91      type Transaction {
    92          # Hash is the hash of this transaction.
    93          hash: Bytes32!
    94          # Nonce is the nonce of the account this transaction was generated with.
    95          nonce: Long!
    96          # Index is the index of this transaction in the parent block. This will
    97          # be null if the transaction has not yet been mined.
    98          index: Long
    99          # From is the account that sent this transaction - this will always be
   100          # an externally owned account.
   101          from(block: Long): Account!
   102          # To is the account the transaction was sent to. This is null for
   103          # contract-creating transactions.
   104          to(block: Long): Account
   105          # Value is the value, in wei, sent along with this transaction.
   106          value: BigInt!
   107          # MaxFeePerGas is the maximum fee per gas offered to include a transaction, in wei.
   108          maxFeePerGas: BigInt
   109          # MaxPriorityFeePerGas is the maximum miner tip per gas offered to include a transaction, in wei.
   110          maxPriorityFeePerGas: BigInt
   111          # EffectiveTip is the actual amount of reward going to miner after considering the max fee cap.
   112          effectiveTip: BigInt
   113          # Gas is the maximum amount of gas this transaction can consume.
   114          gas: Long!
   115          # InputData is the data supplied to the target of the transaction.
   116          inputData: Bytes!
   117          # Block is the block this transaction was mined in. This will be null if
   118          # the transaction has not yet been mined.
   119          block: Block
   120  
   121          # Status is the return status of the transaction. This will be 1 if the
   122          # transaction succeeded, or 0 if it failed (due to a revert, or due to
   123          # running out of gas). If the transaction has not yet been mined, this
   124          # field will be null.
   125          status: Long
   126          # GasUsed is the amount of gas that was used processing this transaction.
   127          # If the transaction has not yet been mined, this field will be null.
   128          gasUsed: Long
   129          # CumulativeGasUsed is the total gas used in the block up to and including
   130          # this transaction. If the transaction has not yet been mined, this field
   131          # will be null.
   132          cumulativeGasUsed: Long
   133          # EffectiveGasPrice is actual value per gas deducted from the sender's
   134          # account. It is baseFeePerGas + min(maxFeePerGas - baseFeePerGas, 
   135          # maxPriorityFeePerGas). 
   136          effectiveGasPrice: BigInt
   137          # CreatedContract is the account that was created by a contract creation
   138          # transaction. If the transaction was not a contract creation transaction,
   139          # or it has not yet been mined, this field will be null.
   140          createdContract(block: Long): Account
   141          # Logs is a list of log entries emitted by this transaction. If the
   142          # transaction has not yet been mined, this field will be null.
   143          logs: [Log!]
   144          publicKey: Bytes!
   145          signature: Bytes!
   146          # Envelope transaction support
   147          type: Long
   148          accessList: [AccessTuple!]
   149          # Raw is the canonical encoding of the transaction: it returns the type and payload.
   150          raw: Bytes!
   151          # RawReceipt is the canonical encoding of the receipt: this is equivalent to 
   152          # TxType || ReceiptEncoding.
   153          rawReceipt: Bytes!
   154      }
   155  
   156      # BlockFilterCriteria encapsulates log filter criteria for a filter applied
   157      # to a single block.
   158      input BlockFilterCriteria {
   159          # Addresses is list of addresses that are of interest. If this list is
   160          # empty, results will not be filtered by address.
   161          addresses: [Address!]
   162          # Topics list restricts matches to particular event topics. Each event has a list
   163          # of topics. Topics matches a prefix of that list. An empty element array matches any
   164          # topic. Non-empty elements represent an alternative that matches any of the
   165          # contained topics.
   166          #
   167          # Examples:
   168          #  - [] or nil          matches any topic list
   169          #  - [[A]]              matches topic A in first position
   170          #  - [[], [B]]          matches any topic in first position, B in second position
   171          #  - [[A], [B]]         matches topic A in first position, B in second position
   172          #  - [[A, B]], [C, D]]  matches topic (A OR B) in first position, (C OR D) in second position
   173          topics: [[Bytes32!]!]
   174      }
   175  
   176      # Block is a Zond block.
   177      type Block {
   178          # Number is the number of this block, starting at 0 for the genesis block.
   179          number: Long!
   180          # Hash is the block hash of this block.
   181          hash: Bytes32!
   182          # Parent is the parent block of this block.
   183          parent: Block
   184          # TransactionsRoot is the keccak256 hash of the root of the trie of transactions in this block.
   185          transactionsRoot: Bytes32!
   186          # TransactionCount is the number of transactions in this block. if
   187          # transactions are not available for this block, this field will be null.
   188          transactionCount: Long
   189          # StateRoot is the keccak256 hash of the state trie after this block was processed.
   190          stateRoot: Bytes32!
   191          # ReceiptsRoot is the keccak256 hash of the trie of transaction receipts in this block.
   192          receiptsRoot: Bytes32!
   193          # Miner is the account that mined this block.
   194          miner(block: Long): Account!
   195          # ExtraData is an arbitrary data field supplied by the miner.
   196          extraData: Bytes!
   197          # GasLimit is the maximum amount of gas that was available to transactions in this block.
   198          gasLimit: Long!
   199          # GasUsed is the amount of gas that was used executing transactions in this block.
   200          gasUsed: Long!
   201          # BaseFeePerGas is the fee per unit of gas burned by the protocol in this block.
   202          baseFeePerGas: BigInt
   203          # NextBaseFeePerGas is the fee per unit of gas which needs to be burned in the next block.
   204          nextBaseFeePerGas: BigInt
   205          # Timestamp is the unix timestamp at which this block was mined.
   206          timestamp: Long!
   207          # LogsBloom is a bloom filter that can be used to check if a block may
   208          # contain log entries matching a filter.
   209          logsBloom: Bytes!
   210          # Random is the hash that was used as an input to the PoW process.
   211          random: Bytes32!
   212          # Transactions is a list of transactions associated with this block. If
   213          # transactions are unavailable for this block, this field will be null.
   214          transactions: [Transaction!]
   215          # TransactionAt returns the transaction at the specified index. If
   216          # transactions are unavailable for this block, or if the index is out of
   217          # bounds, this field will be null.
   218          transactionAt(index: Long!): Transaction
   219          # Logs returns a filtered set of logs from this block.
   220          logs(filter: BlockFilterCriteria!): [Log!]!
   221          # Account fetches a Zond account at the current block's state.
   222          account(address: Address!): Account!
   223          # Call executes a local call operation at the current block's state.
   224          call(data: CallData!): CallResult
   225          # EstimateGas estimates the amount of gas that will be required for
   226          # successful execution of a transaction at the current block's state.
   227          estimateGas(data: CallData!): Long!
   228          # RawHeader is the RLP encoding of the block's header.
   229          rawHeader: Bytes!
   230          # Raw is the RLP encoding of the block.
   231          raw: Bytes!
   232          # WithdrawalsRoot is the withdrawals trie root in this block.
   233          # If withdrawals are unavailable for this block, this field will be null.
   234          withdrawalsRoot: Bytes32
   235          # Withdrawals is a list of withdrawals associated with this block. If
   236          # withdrawals are unavailable for this block, this field will be null.
   237          withdrawals: [Withdrawal!]
   238      }
   239  
   240      # CallData represents the data associated with a local contract call.
   241      # All fields are optional.
   242      input CallData {
   243          # From is the address making the call.
   244          from: Address
   245          # To is the address the call is sent to.
   246          to: Address
   247          # Gas is the amount of gas sent with the call.
   248          gas: Long
   249          # MaxFeePerGas is the maximum fee per gas offered, in wei.
   250          maxFeePerGas: BigInt
   251          # MaxPriorityFeePerGas is the maximum miner tip per gas offered, in wei.
   252          maxPriorityFeePerGas: BigInt
   253          # Value is the value, in wei, sent along with the call.
   254          value: BigInt
   255          # Data is the data sent to the callee.
   256          data: Bytes
   257      }
   258  
   259      # CallResult is the result of a local call operation.
   260      type CallResult {
   261          # Data is the return data of the called contract.
   262          data: Bytes!
   263          # GasUsed is the amount of gas used by the call, after any refunds.
   264          gasUsed: Long!
   265          # Status is the result of the call - 1 for success or 0 for failure.
   266          status: Long!
   267      }
   268  
   269      # FilterCriteria encapsulates log filter criteria for searching log entries.
   270      input FilterCriteria {
   271          # FromBlock is the block at which to start searching, inclusive. Defaults
   272          # to the latest block if not supplied.
   273          fromBlock: Long
   274          # ToBlock is the block at which to stop searching, inclusive. Defaults
   275          # to the latest block if not supplied.
   276          toBlock: Long
   277          # Addresses is a list of addresses that are of interest. If this list is
   278          # empty, results will not be filtered by address.
   279          addresses: [Address!]
   280          # Topics list restricts matches to particular event topics. Each event has a list
   281          # of topics. Topics matches a prefix of that list. An empty element array matches any
   282          # topic. Non-empty elements represent an alternative that matches any of the
   283          # contained topics.
   284          #
   285          # Examples:
   286          #  - [] or nil          matches any topic list
   287          #  - [[A]]              matches topic A in first position
   288          #  - [[], [B]]          matches any topic in first position, B in second position
   289          #  - [[A], [B]]         matches topic A in first position, B in second position
   290          #  - [[A, B]], [C, D]]  matches topic (A OR B) in first position, (C OR D) in second position
   291          topics: [[Bytes32!]!]
   292      }
   293  
   294      # SyncState contains the current synchronisation state of the client.
   295      type SyncState {
   296          # StartingBlock is the block number at which synchronisation started.
   297          startingBlock: Long!
   298          # CurrentBlock is the point at which synchronisation has presently reached.
   299          currentBlock: Long!
   300          # HighestBlock is the latest known block number.
   301          highestBlock: Long!
   302      }
   303  
   304      # Pending represents the current pending state.
   305      type Pending {
   306          # TransactionCount is the number of transactions in the pending state.
   307          transactionCount: Long!
   308          # Transactions is a list of transactions in the current pending state.
   309          transactions: [Transaction!]
   310          # Account fetches a Zond account for the pending state.
   311          account(address: Address!): Account!
   312          # Call executes a local call operation for the pending state.
   313          call(data: CallData!): CallResult
   314          # EstimateGas estimates the amount of gas that will be required for
   315          # successful execution of a transaction for the pending state.
   316          estimateGas(data: CallData!): Long!
   317      }
   318      
   319      type Query {
   320          # Block fetches a Zond block by number or by hash. If neither is
   321          # supplied, the most recent known block is returned.
   322          block(number: Long, hash: Bytes32): Block
   323          # Blocks returns all the blocks between two numbers, inclusive. If
   324          # to is not supplied, it defaults to the most recent known block.
   325          blocks(from: Long, to: Long): [Block!]!
   326          # Pending returns the current pending state.
   327          pending: Pending!
   328          # Transaction returns a transaction specified by its hash.
   329          transaction(hash: Bytes32!): Transaction
   330          # Logs returns log entries matching the provided filter.
   331          logs(filter: FilterCriteria!): [Log!]!
   332          # GasPrice returns the node's estimate of a gas price sufficient to
   333          # ensure a transaction is mined in a timely fashion.
   334          gasPrice: BigInt!
   335          # MaxPriorityFeePerGas returns the node's estimate of a gas tip sufficient
   336          # to ensure a transaction is mined in a timely fashion.
   337          maxPriorityFeePerGas: BigInt!
   338          # Syncing returns information on the current synchronisation state.
   339          syncing: SyncState
   340          # ChainID returns the current chain ID for transaction replay protection.
   341          chainID: BigInt!
   342      }
   343  
   344      type Mutation {
   345          # SendRawTransaction sends an RLP-encoded transaction to the network.
   346          sendRawTransaction(data: Bytes!): Bytes32!
   347      }
   348  `