Documentation ¶
Index ¶
- func AccountString(account *AccountIdentifier) string
- func AddValues(a string, b string) (string, error)
- func CurrencyString(currency *Currency) string
- func Hash(i interface{}) string
- func MarshalMap(input interface{}) (map[string]interface{}, error)
- func NegateValue(val string) (string, error)
- func PrettyPrintStruct(val interface{}) string
- func SubtractValues(a string, b string) (string, error)
- func UnmarshalMap(metadata map[string]interface{}, output interface{}) error
- type AccountBalanceRequest
- type AccountBalanceResponse
- type AccountIdentifier
- type Allow
- type Amount
- type Block
- type BlockIdentifier
- type BlockRequest
- type BlockResponse
- type BlockTransactionRequest
- type BlockTransactionResponse
- type ConstructionMetadataRequest
- type ConstructionMetadataResponse
- type ConstructionSubmitRequest
- type ConstructionSubmitResponse
- type Currency
- type Error
- type MempoolRequest
- type MempoolResponse
- type MempoolTransactionRequest
- type MempoolTransactionResponse
- type MetadataRequest
- type NetworkIdentifier
- type NetworkListResponse
- type NetworkOptionsResponse
- type NetworkRequest
- type NetworkStatusResponse
- type Operation
- type OperationIdentifier
- type OperationStatus
- type PartialBlockIdentifier
- type Peer
- type SubAccountIdentifier
- type SubNetworkIdentifier
- type Transaction
- type TransactionIdentifier
- type Version
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AccountString ¶ added in v0.1.7
func AccountString(account *AccountIdentifier) string
AccountString returns a human-readable representation of a *types.AccountIdentifier.
func CurrencyString ¶ added in v0.1.7
CurrencyString returns a human-readable representation of a *types.Currency.
func Hash ¶ added in v0.1.7
func Hash(i interface{}) string
Hash returns a deterministic hash for any interface. This works because Golang's JSON marshaler sorts all map keys, recursively. Source: https://golang.org/pkg/encoding/json/#Marshal Inspiration: https://github.com/onsi/gomega/blob/c0be49994280db30b6b68390f67126d773bc5558/matchers/match_json_matcher.go#L16
It is important to note that any interface that is a slice or contains slices will not be equal if the slice ordering is different.
func MarshalMap ¶ added in v0.1.8
MarshalMap attempts to marshal an interface into a map[string]interface{}. This function is used similarly to json.Marshal.
func NegateValue ¶ added in v0.1.9
NegateValue flips the sign of a value.
func PrettyPrintStruct ¶ added in v0.1.7
func PrettyPrintStruct(val interface{}) string
PrettyPrintStruct marshals a struct to JSON and returns it as a string.
func SubtractValues ¶ added in v0.1.7
SubtractValues subtracts a-b using big.Int.
func UnmarshalMap ¶ added in v0.1.8
UnmarshalMap attempts to unmarshal a map[string]interface{} into an interface. This function is used similarly to json.Unmarshal.
Types ¶
type AccountBalanceRequest ¶
type AccountBalanceRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` AccountIdentifier *AccountIdentifier `json:"account_identifier"` BlockIdentifier *PartialBlockIdentifier `json:"block_identifier,omitempty"` }
AccountBalanceRequest An AccountBalanceRequest is utilized to make a balance request on the /account/balance endpoint. If the block_identifier is populated, a historical balance query should be performed.
type AccountBalanceResponse ¶
type AccountBalanceResponse struct { BlockIdentifier *BlockIdentifier `json:"block_identifier"` // A single account may have a balance in multiple currencies. Balances []*Amount `json:"balances"` // Account-based blockchains that utilize a nonce or sequence number should include that number // in the metadata. This number could be unique to the identifier or global across the account // address. Metadata map[string]interface{} `json:"metadata,omitempty"` }
AccountBalanceResponse An AccountBalanceResponse is returned on the /account/balance endpoint. If an account has a balance for each AccountIdentifier describing it (ex: an ERC-20 token balance on a few smart contracts), an account balance request must be made with each AccountIdentifier.
type AccountIdentifier ¶
type AccountIdentifier struct { // The address may be a cryptographic public key (or some encoding of it) or a provided // username. Address string `json:"address"` SubAccount *SubAccountIdentifier `json:"sub_account,omitempty"` // 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. Metadata map[string]interface{} `json:"metadata,omitempty"` }
AccountIdentifier 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).
type Allow ¶ added in v0.1.2
type Allow struct { // All Operation.Status this implementation supports. Any status that is returned during parsing // that is not listed here will cause client validation to error. OperationStatuses []*OperationStatus `json:"operation_statuses"` // All Operation.Type this implementation supports. Any type that is returned during parsing // that is not listed here will cause client validation to error. OperationTypes []string `json:"operation_types"` // All Errors that this implementation could return. Any error that is returned during parsing // that is not listed here will cause client validation to error. Errors []*Error `json:"errors"` }
Allow Allow specifies supported Operation status, Operation types, and all possible error statuses. This Allow object is used by clients to validate the correctness of a Rosetta Server implementation. It is expected that these clients will error if they receive some response that contains any of the above information that is not specified here.
type Amount ¶
type Amount struct { // 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. Value string `json:"value"` Currency *Currency `json:"currency"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
Amount Amount is some Value of a Currency. It is considered invalid to specify a Value without a Currency.
type Block ¶
type Block struct { BlockIdentifier *BlockIdentifier `json:"block_identifier"` ParentBlockIdentifier *BlockIdentifier `json:"parent_block_identifier"` // The timestamp of the block in milliseconds since the Unix Epoch. The timestamp is stored in // milliseconds because some blockchains produce blocks more often than once a second. Timestamp int64 `json:"timestamp"` Transactions []*Transaction `json:"transactions"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
Block Blocks contain an array of Transactions that occurred at a particular BlockIdentifier.
type BlockIdentifier ¶
type BlockIdentifier struct { // This is also known as the block height. Index int64 `json:"index"` Hash string `json:"hash"` }
BlockIdentifier The block_identifier uniquely identifies a block in a particular network.
type BlockRequest ¶
type BlockRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` BlockIdentifier *PartialBlockIdentifier `json:"block_identifier"` }
BlockRequest A BlockRequest is utilized to make a block request on the /block endpoint.
type BlockResponse ¶
type BlockResponse struct { Block *Block `json:"block"` // Some blockchains may require additional transactions to be fetched that weren't returned in // the block response (ex: block only returns transaction hashes). For blockchains with a lot of // transactions in each block, this can be very useful as consumers can concurrently fetch all // transactions returned. OtherTransactions []*TransactionIdentifier `json:"other_transactions,omitempty"` }
BlockResponse A BlockResponse includes a fully-populated block or a partially-populated block with a list of other transactions to fetch (other_transactions).
type BlockTransactionRequest ¶
type BlockTransactionRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` BlockIdentifier *BlockIdentifier `json:"block_identifier"` TransactionIdentifier *TransactionIdentifier `json:"transaction_identifier"` }
BlockTransactionRequest A BlockTransactionRequest is used to fetch a Transaction included in a block that is not returned in a BlockResponse.
type BlockTransactionResponse ¶
type BlockTransactionResponse struct {
Transaction *Transaction `json:"transaction"`
}
BlockTransactionResponse A BlockTransactionResponse contains information about a block transaction.
type ConstructionMetadataRequest ¶ added in v0.1.2
type ConstructionMetadataRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` // Some blockchains require different metadata for different types of transaction construction // (ex: delegation versus a transfer). Instead of requiring a blockchain node to return all // possible types of metadata for construction (which may require multiple node fetches), the // client can populate an options object to limit the metadata returned to only the subset // required. Options map[string]interface{} `json:"options"` }
ConstructionMetadataRequest A ConstructionMetadataRequest is utilized to get information required to construct a transaction. The Options object used to specify which metadata to return is left purposely unstructured to allow flexibility for implementers.
type ConstructionMetadataResponse ¶ added in v0.1.2
type ConstructionMetadataResponse struct {
Metadata map[string]interface{} `json:"metadata"`
}
ConstructionMetadataResponse The ConstructionMetadataResponse returns network-specific metadata used for transaction construction. It is likely that the client will not inspect this metadata before passing it to a client SDK that uses it for construction.
type ConstructionSubmitRequest ¶ added in v0.1.2
type ConstructionSubmitRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` SignedTransaction string `json:"signed_transaction"` }
ConstructionSubmitRequest The transaction submission request includes a signed transaction.
type ConstructionSubmitResponse ¶ added in v0.1.2
type ConstructionSubmitResponse struct { TransactionIdentifier *TransactionIdentifier `json:"transaction_identifier"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
ConstructionSubmitResponse A TransactionSubmitResponse contains the transaction_identifier of a submitted transaction that was accepted into the mempool.
type Currency ¶
type Currency struct { // Canonical symbol associated with a currency. Symbol string `json:"symbol"` // 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. Decimals int32 `json:"decimals"` // 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 map[string]interface{} `json:"metadata,omitempty"` }
Currency 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).
type Error ¶
type Error struct { // Code is a network-specific error code. If desired, this code can be equivalent to an HTTP // status code. Code int32 `json:"code"` // Message is a network-specific error message. Message string `json:"message"` // An error is retriable if the same request may succeed if submitted again. Retriable bool `json:"retriable"` }
Error Instead of utilizing HTTP status codes to describe node errors (which often do not have a good analog), rich errors are returned using this object.
type MempoolRequest ¶
type MempoolRequest struct {
NetworkIdentifier *NetworkIdentifier `json:"network_identifier"`
}
MempoolRequest A MempoolRequest is utilized to retrieve all transaction identifiers in the mempool for a particular network_identifier.
type MempoolResponse ¶
type MempoolResponse struct {
TransactionIdentifiers []*TransactionIdentifier `json:"transaction_identifiers"`
}
MempoolResponse A MempoolResponse contains all transaction identifiers in the mempool for a particular network_identifier.
type MempoolTransactionRequest ¶
type MempoolTransactionRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` TransactionIdentifier *TransactionIdentifier `json:"transaction_identifier"` }
MempoolTransactionRequest A MempoolTransactionRequest is utilized to retrieve a transaction from the mempool.
type MempoolTransactionResponse ¶
type MempoolTransactionResponse struct { Transaction *Transaction `json:"transaction"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
MempoolTransactionResponse A MempoolTransactionResponse contains an estimate of a mempool transaction. It may not be possible to know the full impact of a transaction in the mempool (ex: fee paid).
type MetadataRequest ¶ added in v0.1.2
type MetadataRequest struct {
Metadata map[string]interface{} `json:"metadata,omitempty"`
}
MetadataRequest A MetadataRequest is utilized in any request where the only argument is optional metadata.
type NetworkIdentifier ¶
type NetworkIdentifier struct { Blockchain string `json:"blockchain"` // If a blockchain has a specific chain-id or network identifier, it should go in this field. It // is up to the client to determine which network-specific identifier is mainnet or testnet. Network string `json:"network"` SubNetworkIdentifier *SubNetworkIdentifier `json:"sub_network_identifier,omitempty"` }
NetworkIdentifier The network_identifier specifies which network a particular object is associated with.
type NetworkListResponse ¶ added in v0.1.2
type NetworkListResponse struct {
NetworkIdentifiers []*NetworkIdentifier `json:"network_identifiers"`
}
NetworkListResponse A NetworkListResponse contains all NetworkIdentifiers that the node can serve information for.
type NetworkOptionsResponse ¶ added in v0.1.2
type NetworkOptionsResponse struct { Version *Version `json:"version"` Allow *Allow `json:"allow"` }
NetworkOptionsResponse NetworkOptionsResponse contains information about the versioning of the node and the allowed operation statuses, operation types, and errors.
type NetworkRequest ¶ added in v0.1.2
type NetworkRequest struct { NetworkIdentifier *NetworkIdentifier `json:"network_identifier"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
NetworkRequest A NetworkRequest is utilized to retrieve some data specific exclusively to a NetworkIdentifier.
type NetworkStatusResponse ¶
type NetworkStatusResponse struct { CurrentBlockIdentifier *BlockIdentifier `json:"current_block_identifier"` // The timestamp of the block in milliseconds since the Unix Epoch. The timestamp is stored in // milliseconds because some blockchains produce blocks more often than once a second. CurrentBlockTimestamp int64 `json:"current_block_timestamp"` GenesisBlockIdentifier *BlockIdentifier `json:"genesis_block_identifier"` Peers []*Peer `json:"peers"` }
NetworkStatusResponse NetworkStatusResponse contains basic information about the node's view of a blockchain network.
type Operation ¶
type Operation struct { OperationIdentifier *OperationIdentifier `json:"operation_identifier"` // 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. RelatedOperations []*OperationIdentifier `json:"related_operations,omitempty"` // The network-specific type of the operation. Ensure that any type that can be returned here is // also specified in the NetowrkStatus. This can be very useful to downstream consumers that // parse all block data. Type string `json:"type"` // 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. Status string `json:"status"` Account *AccountIdentifier `json:"account,omitempty"` Amount *Amount `json:"amount,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
Operation 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.
type OperationIdentifier ¶
type OperationIdentifier struct { // The operation index is used to ensure each operation has a unique identifier within a // transaction. To clarify, there may not be any notion of an operation index in the blockchain // being described. Index int64 `json:"index"` // 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). NetworkIndex *int64 `json:"network_index,omitempty"` }
OperationIdentifier The operation_identifier uniquely identifies an operation within a transaction.
type OperationStatus ¶
type OperationStatus struct { // The status is the network-specific status of the operation. Status string `json:"status"` // An Operation is considered successful if the Operation.Amount should affect the // Operation.Account. Some blockchains (like Bitcoin) only include successful operations in // blocks but other blockchains (like Ethereum) include unsuccessful operations that incur a // fee. To reconcile the computed balance from the stream of Operations, it is critical to // understand which Operation.Status indicate an Operation is successful and should affect an // Account. Successful bool `json:"successful"` }
OperationStatus OperationStatus is utilized to indicate which Operation status are considered successful.
type PartialBlockIdentifier ¶
type PartialBlockIdentifier struct { Index *int64 `json:"index,omitempty"` Hash *string `json:"hash,omitempty"` }
PartialBlockIdentifier When fetching data by BlockIdentifier, it may be possible to only specify the index or hash. If neither property is specified, it is assumed that the client is making a request at the current block.
func ConstructPartialBlockIdentifier ¶ added in v0.1.2
func ConstructPartialBlockIdentifier( blockIdentifier *BlockIdentifier, ) *PartialBlockIdentifier
ConstructPartialBlockIdentifier constructs a *PartialBlockIdentifier from a *BlockIdentifier.
It is useful to have this helper when making block requests with the fetcher.
type Peer ¶
type Peer struct { PeerID string `json:"peer_id"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
Peer A Peer is a representation of a node's peer.
type SubAccountIdentifier ¶
type SubAccountIdentifier struct { // The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) // that uniquely specifies a SubAccount. Address string `json:"address"` // 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. Metadata map[string]interface{} `json:"metadata,omitempty"` }
SubAccountIdentifier 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.
type SubNetworkIdentifier ¶
type SubNetworkIdentifier struct { Network string `json:"network"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
SubNetworkIdentifier In blockchains with sharded state, the SubNetworkIdentifier is required to query some object on a specific shard. This identifier is optional for all non-sharded blockchains.
type Transaction ¶
type Transaction struct { TransactionIdentifier *TransactionIdentifier `json:"transaction_identifier"` Operations []*Operation `json:"operations"` // Transactions that are related to other transactions (like a cross-shard transactioin) should // include the tranaction_identifier of these transactions in the metadata. Metadata map[string]interface{} `json:"metadata,omitempty"` }
Transaction Transactions contain an array of Operations that are attributable to the same TransactionIdentifier.
type TransactionIdentifier ¶
type TransactionIdentifier struct { // Any transactions that are attributable only to a block (ex: a block event) should use the // hash of the block as the identifier. Hash string `json:"hash"` }
TransactionIdentifier The transaction_identifier uniquely identifies a transaction in a particular network and block or in the mempool.
type Version ¶
type Version struct { // The rosetta_version is the version of the Rosetta interface the implementation adheres to. // This can be useful for clients looking to reliably parse responses. RosettaVersion string `json:"rosetta_version"` // The node_version is the canonical version of the node runtime. This can help clients manage // deployments. NodeVersion string `json:"node_version"` // When a middleware server is used to adhere to the Rosetta interface, it should return its // version here. This can help clients manage deployments. MiddlewareVersion *string `json:"middleware_version,omitempty"` // Any other information that may be useful about versioning of dependent services should be // returned here. Metadata map[string]interface{} `json:"metadata,omitempty"` }
Version The Version object is utilized to inform the client of the versions of different components of the Rosetta implementation.
Source Files ¶
- account_balance_request.go
- account_balance_response.go
- account_identifier.go
- allow.go
- amount.go
- block.go
- block_identifier.go
- block_request.go
- block_response.go
- block_transaction_request.go
- block_transaction_response.go
- construction_metadata_request.go
- construction_metadata_response.go
- construction_submit_request.go
- construction_submit_response.go
- currency.go
- error.go
- mempool_request.go
- mempool_response.go
- mempool_transaction_request.go
- mempool_transaction_response.go
- metadata_request.go
- network_identifier.go
- network_list_response.go
- network_options_response.go
- network_request.go
- network_status_response.go
- operation.go
- operation_identifier.go
- operation_status.go
- partial_block_identifier.go
- peer.go
- sub_account_identifier.go
- sub_network_identifier.go
- transaction.go
- transaction_identifier.go
- utils.go
- version.go