Files
stacks-blockchain-api/api/rosetta/rosetta-construction-parse-response.schema.json

1 line
9.0 KiB
JSON

{"$schema":"http://json-schema.org/draft-07/schema","$id":"rosetta-construction-parse-response","type":"object","title":"RosettaConstructionParseResponse","description":"RosettaConstructionParseResponse contains an array of operations that occur in a transaction blob. This should match the array of operations provided to /construction/preprocess and /construction/payloads.","required":["operations"],"properties":{"operations":{"type":"array","items":{"type":"object","title":"RosettaOperation","description":"Operations contain all balance-changing information within a transaction. They are always one-sided (only affect 1 AccountIdentifier) and can succeed or fail independently from a Transaction.","required":["operation_identifier","type"],"properties":{"operation_identifier":{"description":"The operation_identifier uniquely identifies an operation within a transaction.","type":"object","title":"RosettaOperationIdentifier","required":["index"],"properties":{"index":{"type":"integer","description":"The operation index is used to ensure each operation has a unique identifier within a transaction. This index is only relative to the transaction and NOT GLOBAL. The operations in each transaction should start from index 0. To clarify, there may not be any notion of an operation index in the blockchain being described."},"network_index":{"type":"integer","description":"Some blockchains specify an operation index that is essential for client use. For example, Bitcoin uses a network_index to identify which UTXO was used in a transaction. network_index should not be populated if there is no notion of an operation index in a blockchain (typically most account-based blockchains)."}}},"related_operations":{"type":"array","description":"Restrict referenced related_operations to identifier indexes < the current operation_identifier.index. This ensures there exists a clear DAG-structure of relations. Since operations are one-sided, one could imagine relating operations in a single transfer or linking operations in a call tree.","items":{"title":"RosettaRelatedOperation","type":"object","description":"Restrict referenced related_operations to identifier indexes < the current operation_identifier.index. This ensures there exists a clear DAG-structure of relations. Since operations are one-sided, one could imagine relating operations in a single transfer or linking operations in a call tree.","required":["index"],"properties":{"index":{"type":"integer","description":"Describes the index of related operation."},"network_index":{"type":"integer","description":"Some blockchains specify an operation index that is essential for client use. network_index should not be populated if there is no notion of an operation index in a blockchain (typically most account-based blockchains)."}}}},"type":{"type":"string","description":"The network-specific type of the operation. Ensure that any type that can be returned here is also specified in the NetworkStatus. This can be very useful to downstream consumers that parse all block data."},"status":{"type":"string","description":"The network-specific status of the operation. Status is not defined on the transaction object because blockchains with smart contracts may have transactions that partially apply. Blockchains with atomic transactions (all operations succeed or all operations fail) will have the same status for each operation."},"account":{"type":"object","title":"RosettaAccount","description":"The account_identifier uniquely identifies an account within a network. All fields in the account_identifier are utilized to determine this uniqueness (including the metadata field, if populated).","required":["address"],"properties":{"address":{"type":"string","description":"The address may be a cryptographic public key (or some encoding of it) or a provided username."},"sub_account":{"type":"object","title":"RosettaSubAccount","description":"An account may have state specific to a contract address (ERC-20 token) and/or a stake (delegated balance). The sub_account_identifier should specify which state (if applicable) an account instantiation refers to.","required":["address"],"properties":{"address":{"type":"string","description":"The address may be a cryptographic public key (or some encoding of it) or a provided username."},"metadata":{"type":"object","description":"If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.","required":[]}}},"metadata":{"type":"object","description":"Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.","required":[]}}},"amount":{"type":"object","title":"RosettaAmount","description":"Amount is some Value of a Currency. It is considered invalid to specify a Value without a Currency.","required":["value","currency"],"properties":{"value":{"type":"string","description":"Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000."},"currency":{"description":"Currency is composed of a canonical Symbol and Decimals. This Decimals value is used to convert an Amount.Value from atomic units (Satoshis) to standard units (Bitcoins).","title":"RosettaCurrency","type":"object","required":["symbol","decimals"],"properties":{"symbol":{"type":"string","description":"Canonical symbol associated with a currency."},"decimals":{"type":"integer","description":"Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10."},"metadata":{"type":"object","description":"Any additional information related to the currency itself. For example, it would be useful to populate this object with the contract address of an ERC-20 token."}}},"metadata":{"type":"object","description":"","required":[]}}},"coin_change":{"type":"object","title":"RosettaCoinChange","description":"CoinChange is used to represent a change in state of a some coin identified by a coin_identifier. This object is part of the Operation model and must be populated for UTXO-based blockchains. Coincidentally, this abstraction of UTXOs allows for supporting both account-based transfers and UTXO-based transfers on the same blockchain (when a transfer is account-based, don't populate this model).","required":["coin_identifier","coin_action"],"properties":{"coin_identifier":{"type":"object","description":"CoinIdentifier uniquely identifies a Coin.","required":["identifier"],"properties":{"identifier":{"type":"string","description":"Identifier should be populated with a globally unique identifier of a Coin. In Bitcoin, this identifier would be transaction_hash:index."}}},"coin_action":{"type":"string","description":"CoinActions are different state changes that a Coin can undergo. When a Coin is created, it is coin_created. When a Coin is spent, it is coin_spent. It is assumed that a single Coin cannot be created or spent more than once.","enum":["coin_created","coin_spent"]}}},"metadata":{"type":"object","description":"Operations Meta Data"}}}},"signers":{"type":"array","description":"[DEPRECATED by account_identifier_signers in v1.4.4] All signers (addresses) of a particular transaction. If the transaction is unsigned, it should be empty.","items":{"anyOf":[{"type":"string"}]}},"account_identifier_signers":{"type":"array","items":{"type":"object","title":"RosettaAccountIdentifier","description":"The account_identifier uniquely identifies an account within a network. All fields in the account_identifier are utilized to determine this uniqueness (including the metadata field, if populated).","required":["address"],"properties":{"address":{"type":"string","description":"The address may be a cryptographic public key (or some encoding of it) or a provided username."},"sub_account":{"type":"object","title":"RosettaSubAccount","description":"An account may have state specific to a contract address (ERC-20 token) and/or a stake (delegated balance). The sub_account_identifier should specify which state (if applicable) an account instantiation refers to.","required":["address"],"properties":{"address":{"type":"string","description":"The address may be a cryptographic public key (or some encoding of it) or a provided username."},"metadata":{"type":"object","description":"If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.","required":[]}}},"metadata":{"type":"object","description":"Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.","required":[]}}}},"metadata":{"type":"object"}}}