github.com/codysnider/go-ethereum@v1.10.18-0.20220420071915-14f4ae99222a/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 Ethereum 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. 32 scalar Long 33 34 schema { 35 query: Query 36 mutation: Mutation 37 } 38 39 # Account is an Ethereum account at a particular block. 40 type Account { 41 # Address is the address owning the account. 42 address: Address! 43 # Balance is the balance of the account, in wei. 44 balance: BigInt! 45 # TransactionCount is the number of transactions sent from this account, 46 # or in the case of a contract, the number of contracts created. Otherwise 47 # known as the nonce. 48 transactionCount: Long! 49 # Code contains the smart contract code for this account, if the account 50 # is a (non-self-destructed) contract. 51 code: Bytes! 52 # Storage provides access to the storage of a contract account, indexed 53 # by its 32 byte slot identifier. 54 storage(slot: Bytes32!): Bytes32! 55 } 56 57 # Log is an Ethereum event log. 58 type Log { 59 # Index is the index of this log in the block. 60 index: Int! 61 # Account is the account which generated this log - this will always 62 # be a contract account. 63 account(block: Long): Account! 64 # Topics is a list of 0-4 indexed topics for the log. 65 topics: [Bytes32!]! 66 # Data is unindexed data for this log. 67 data: Bytes! 68 # Transaction is the transaction that generated this log entry. 69 transaction: Transaction! 70 } 71 72 #EIP-2718 73 type AccessTuple{ 74 address: Address! 75 storageKeys : [Bytes32!]! 76 } 77 78 # Transaction is an Ethereum transaction. 79 type Transaction { 80 # Hash is the hash of this transaction. 81 hash: Bytes32! 82 # Nonce is the nonce of the account this transaction was generated with. 83 nonce: Long! 84 # Index is the index of this transaction in the parent block. This will 85 # be null if the transaction has not yet been mined. 86 index: Int 87 # From is the account that sent this transaction - this will always be 88 # an externally owned account. 89 from(block: Long): Account! 90 # To is the account the transaction was sent to. This is null for 91 # contract-creating transactions. 92 to(block: Long): Account 93 # Value is the value, in wei, sent along with this transaction. 94 value: BigInt! 95 # GasPrice is the price offered to miners for gas, in wei per unit. 96 gasPrice: BigInt! 97 # MaxFeePerGas is the maximum fee per gas offered to include a transaction, in wei. 98 maxFeePerGas: BigInt 99 # MaxPriorityFeePerGas is the maximum miner tip per gas offered to include a transaction, in wei. 100 maxPriorityFeePerGas: BigInt 101 # EffectiveTip is the actual amount of reward going to miner after considering the max fee cap. 102 effectiveTip: BigInt 103 # Gas is the maximum amount of gas this transaction can consume. 104 gas: Long! 105 # InputData is the data supplied to the target of the transaction. 106 inputData: Bytes! 107 # Block is the block this transaction was mined in. This will be null if 108 # the transaction has not yet been mined. 109 block: Block 110 111 # Status is the return status of the transaction. This will be 1 if the 112 # transaction succeeded, or 0 if it failed (due to a revert, or due to 113 # running out of gas). If the transaction has not yet been mined, this 114 # field will be null. 115 status: Long 116 # GasUsed is the amount of gas that was used processing this transaction. 117 # If the transaction has not yet been mined, this field will be null. 118 gasUsed: Long 119 # CumulativeGasUsed is the total gas used in the block up to and including 120 # this transaction. If the transaction has not yet been mined, this field 121 # will be null. 122 cumulativeGasUsed: Long 123 # EffectiveGasPrice is actual value per gas deducted from the sender's 124 # account. Before EIP-1559, this is equal to the transaction's gas price. 125 # After EIP-1559, it is baseFeePerGas + min(maxFeePerGas - baseFeePerGas, 126 # maxPriorityFeePerGas). Legacy transactions and EIP-2930 transactions are 127 # coerced into the EIP-1559 format by setting both maxFeePerGas and 128 # maxPriorityFeePerGas as the transaction's gas price. 129 effectiveGasPrice: BigInt 130 # CreatedContract is the account that was created by a contract creation 131 # transaction. If the transaction was not a contract creation transaction, 132 # or it has not yet been mined, this field will be null. 133 createdContract(block: Long): Account 134 # Logs is a list of log entries emitted by this transaction. If the 135 # transaction has not yet been mined, this field will be null. 136 logs: [Log!] 137 r: BigInt! 138 s: BigInt! 139 v: BigInt! 140 #Envelope transaction support 141 type: Int 142 accessList: [AccessTuple!] 143 } 144 145 # BlockFilterCriteria encapsulates log filter criteria for a filter applied 146 # to a single block. 147 input BlockFilterCriteria { 148 # Addresses is list of addresses that are of interest. If this list is 149 # empty, results will not be filtered by address. 150 addresses: [Address!] 151 # Topics list restricts matches to particular event topics. Each event has a list 152 # of topics. Topics matches a prefix of that list. An empty element array matches any 153 # topic. Non-empty elements represent an alternative that matches any of the 154 # contained topics. 155 # 156 # Examples: 157 # - [] or nil matches any topic list 158 # - [[A]] matches topic A in first position 159 # - [[], [B]] matches any topic in first position, B in second position 160 # - [[A], [B]] matches topic A in first position, B in second position 161 # - [[A, B]], [C, D]] matches topic (A OR B) in first position, (C OR D) in second position 162 topics: [[Bytes32!]!] 163 } 164 165 # Block is an Ethereum block. 166 type Block { 167 # Number is the number of this block, starting at 0 for the genesis block. 168 number: Long! 169 # Hash is the block hash of this block. 170 hash: Bytes32! 171 # Parent is the parent block of this block. 172 parent: Block 173 # Nonce is the block nonce, an 8 byte sequence determined by the miner. 174 nonce: Bytes! 175 # TransactionsRoot is the keccak256 hash of the root of the trie of transactions in this block. 176 transactionsRoot: Bytes32! 177 # TransactionCount is the number of transactions in this block. if 178 # transactions are not available for this block, this field will be null. 179 transactionCount: Int 180 # StateRoot is the keccak256 hash of the state trie after this block was processed. 181 stateRoot: Bytes32! 182 # ReceiptsRoot is the keccak256 hash of the trie of transaction receipts in this block. 183 receiptsRoot: Bytes32! 184 # Miner is the account that mined this block. 185 miner(block: Long): Account! 186 # ExtraData is an arbitrary data field supplied by the miner. 187 extraData: Bytes! 188 # GasLimit is the maximum amount of gas that was available to transactions in this block. 189 gasLimit: Long! 190 # GasUsed is the amount of gas that was used executing transactions in this block. 191 gasUsed: Long! 192 # BaseFeePerGas is the fee per unit of gas burned by the protocol in this block. 193 baseFeePerGas: BigInt 194 # NextBaseFeePerGas is the fee per unit of gas which needs to be burned in the next block. 195 nextBaseFeePerGas: BigInt 196 # Timestamp is the unix timestamp at which this block was mined. 197 timestamp: Long! 198 # LogsBloom is a bloom filter that can be used to check if a block may 199 # contain log entries matching a filter. 200 logsBloom: Bytes! 201 # MixHash is the hash that was used as an input to the PoW process. 202 mixHash: Bytes32! 203 # Difficulty is a measure of the difficulty of mining this block. 204 difficulty: BigInt! 205 # TotalDifficulty is the sum of all difficulty values up to and including 206 # this block. 207 totalDifficulty: BigInt! 208 # OmmerCount is the number of ommers (AKA uncles) associated with this 209 # block. If ommers are unavailable, this field will be null. 210 ommerCount: Int 211 # Ommers is a list of ommer (AKA uncle) blocks associated with this block. 212 # If ommers are unavailable, this field will be null. Depending on your 213 # node, the transactions, transactionAt, transactionCount, ommers, 214 # ommerCount and ommerAt fields may not be available on any ommer blocks. 215 ommers: [Block] 216 # OmmerAt returns the ommer (AKA uncle) at the specified index. If ommers 217 # are unavailable, or the index is out of bounds, this field will be null. 218 ommerAt(index: Int!): Block 219 # OmmerHash is the keccak256 hash of all the ommers (AKA uncles) 220 # associated with this block. 221 ommerHash: Bytes32! 222 # Transactions is a list of transactions associated with this block. If 223 # transactions are unavailable for this block, this field will be null. 224 transactions: [Transaction!] 225 # TransactionAt returns the transaction at the specified index. If 226 # transactions are unavailable for this block, or if the index is out of 227 # bounds, this field will be null. 228 transactionAt(index: Int!): Transaction 229 # Logs returns a filtered set of logs from this block. 230 logs(filter: BlockFilterCriteria!): [Log!]! 231 # Account fetches an Ethereum account at the current block's state. 232 account(address: Address!): Account! 233 # Call executes a local call operation at the current block's state. 234 call(data: CallData!): CallResult 235 # EstimateGas estimates the amount of gas that will be required for 236 # successful execution of a transaction at the current block's state. 237 estimateGas(data: CallData!): Long! 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 # GasPrice is the price, in wei, offered for each unit of gas. 250 gasPrice: BigInt 251 # MaxFeePerGas is the maximum fee per gas offered, in wei. 252 maxFeePerGas: BigInt 253 # MaxPriorityFeePerGas is the maximum miner tip per gas offered, in wei. 254 maxPriorityFeePerGas: BigInt 255 # Value is the value, in wei, sent along with the call. 256 value: BigInt 257 # Data is the data sent to the callee. 258 data: Bytes 259 } 260 261 # CallResult is the result of a local call operation. 262 type CallResult { 263 # Data is the return data of the called contract. 264 data: Bytes! 265 # GasUsed is the amount of gas used by the call, after any refunds. 266 gasUsed: Long! 267 # Status is the result of the call - 1 for success or 0 for failure. 268 status: Long! 269 } 270 271 # FilterCriteria encapsulates log filter criteria for searching log entries. 272 input FilterCriteria { 273 # FromBlock is the block at which to start searching, inclusive. Defaults 274 # to the latest block if not supplied. 275 fromBlock: Long 276 # ToBlock is the block at which to stop searching, inclusive. Defaults 277 # to the latest block if not supplied. 278 toBlock: Long 279 # Addresses is a list of addresses that are of interest. If this list is 280 # empty, results will not be filtered by address. 281 addresses: [Address!] 282 # Topics list restricts matches to particular event topics. Each event has a list 283 # of topics. Topics matches a prefix of that list. An empty element array matches any 284 # topic. Non-empty elements represent an alternative that matches any of the 285 # contained topics. 286 # 287 # Examples: 288 # - [] or nil matches any topic list 289 # - [[A]] matches topic A in first position 290 # - [[], [B]] matches any topic in first position, B in second position 291 # - [[A], [B]] matches topic A in first position, B in second position 292 # - [[A, B]], [C, D]] matches topic (A OR B) in first position, (C OR D) in second position 293 topics: [[Bytes32!]!] 294 } 295 296 # SyncState contains the current synchronisation state of the client. 297 type SyncState{ 298 # StartingBlock is the block number at which synchronisation started. 299 startingBlock: Long! 300 # CurrentBlock is the point at which synchronisation has presently reached. 301 currentBlock: Long! 302 # HighestBlock is the latest known block number. 303 highestBlock: Long! 304 } 305 306 # Pending represents the current pending state. 307 type Pending { 308 # TransactionCount is the number of transactions in the pending state. 309 transactionCount: Int! 310 # Transactions is a list of transactions in the current pending state. 311 transactions: [Transaction!] 312 # Account fetches an Ethereum account for the pending state. 313 account(address: Address!): Account! 314 # Call executes a local call operation for the pending state. 315 call(data: CallData!): CallResult 316 # EstimateGas estimates the amount of gas that will be required for 317 # successful execution of a transaction for the pending state. 318 estimateGas(data: CallData!): Long! 319 } 320 321 type Query { 322 # Block fetches an Ethereum block by number or by hash. If neither is 323 # supplied, the most recent known block is returned. 324 block(number: Long, hash: Bytes32): Block 325 # Blocks returns all the blocks between two numbers, inclusive. If 326 # to is not supplied, it defaults to the most recent known block. 327 blocks(from: Long, to: Long): [Block!]! 328 # Pending returns the current pending state. 329 pending: Pending! 330 # Transaction returns a transaction specified by its hash. 331 transaction(hash: Bytes32!): Transaction 332 # Logs returns log entries matching the provided filter. 333 logs(filter: FilterCriteria!): [Log!]! 334 # GasPrice returns the node's estimate of a gas price sufficient to 335 # ensure a transaction is mined in a timely fashion. 336 gasPrice: BigInt! 337 # MaxPriorityFeePerGas returns the node's estimate of a gas tip sufficient 338 # to ensure a transaction is mined in a timely fashion. 339 maxPriorityFeePerGas: BigInt! 340 # Syncing returns information on the current synchronisation state. 341 syncing: SyncState 342 # ChainID returns the current chain ID for transaction replay protection. 343 chainID: BigInt! 344 } 345 346 type Mutation { 347 # SendRawTransaction sends an RLP-encoded transaction to the network. 348 sendRawTransaction(data: Bytes!): Bytes32! 349 } 350 `