UNPKG

@nextrope/xrpl

Version:

A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser

279 lines (270 loc) 9.49 kB
import { BaseRequest, BaseResponse } from './baseMethod' /** * The `server_info` command asks the server for a human-readable version of * various information about the rippled server being queried. Expects a * response in the form of a {@link ServerInfoResponse}. * * @category Requests */ export interface ServerInfoRequest extends BaseRequest { command: 'server_info' } export type ServerState = | 'disconnected' | 'connected' | 'syncing' | 'tracking' | 'full' | 'validating' | 'proposing' export interface StateAccounting { duration_us: string transitions: string } export interface JobType { job_type: string per_second: number peak_time?: number avg_time?: number in_progress?: number } export type protocol = | 'http' | 'https' | 'grpc' | 'peer' | 'ws' | 'ws2' | 'wss' | 'wss2' export interface ServerPort { port: string /** The values in protocol are sorted in alphabetical order */ protocol: protocol[] } // The states for validating and proposing do not exist in the field state_accounting // See https://github.com/XRPLF/rippled/blob/develop/src/ripple/app/misc/NetworkOPs.cpp#L4545 // https://github.com/XRPLF/rippled/blob/develop/src/ripple/app/misc/NetworkOPs.h#L66 export type StateAccountingFinal = Record< Exclude<ServerState, 'validating' | 'proposing'>, StateAccounting > /** * Response expected from a {@link ServerInfoRequest}. * * @category Responses */ export interface ServerInfoResponse extends BaseResponse { result: { info: { /** * If true, this server is amendment blocked. If the server is not * amendment blocked, the response omits this field. */ amendment_blocked?: boolean /** The version number of the running rippled version. */ build_version: string /** * Information on the most recently closed ledger that has not been * validated by consensus. If the most recently validated ledger is * available, the response omits this field and includes * `validated_ledger` instead. The member fields are the same as the. * `validated_ledger` field. */ closed_ledger?: { age: number base_fee_xrp: number hash: string reserve_base_xrp: number reserve_inc_xrp: number seq: number } /** * Range expression indicating the sequence numbers of the ledger * versions the local rippled has in its database. */ complete_ledgers: string /** * On an admin request, returns the hostname of the server running the * rippled instance; otherwise, returns a single RFC-1751 word based on * the node public key. */ hostid: string /** * Amount of time spent waiting for I/O operations, in milliseconds. If * this number is not very, very low, then the rippled server is probably * having serious load issues. */ io_latency_ms: number /** * The number of times (since starting up) that this server has had over * 250 transactions waiting to be processed at once. A large number here * may mean that your server is unable to handle the transaction load of * the XRP Ledger network. */ jq_trans_overflow: string /** * Information about the last time the server closed a ledger, including * the amount of time it took to reach a consensus and the number of * trusted validators participating. */ last_close: { /** * The amount of time it took to reach a consensus on the most recently * validated ledger version, in seconds. */ converge_time_s: number /** * How many trusted validators the server considered (including itself, * if configured as a validator) in the consensus process for the most * recently validated ledger version. */ proposers: number } /** * (Admin only) Detailed information about the current load state of the * server. */ load?: { /** * (Admin only) Information about the rate of different types of jobs * the server is doing and how much time it spends on each. */ job_types: JobType[] /** (Admin only) The number of threads in the server's main job pool. */ threads: number } /** * The load-scaled open ledger transaction cost the server is currently * enforcing, as a multiplier on the base transaction cost. For example, * at 1000 load factor and a reference transaction cost of 10 drops of * XRP, the load-scaled transaction cost is 10,000 drops (0.01 XRP). The * load factor is determined by the highest of the individual server's * load factor, the cluster's load factor, the open ledger cost and the * overall network's load factor. */ load_factor?: number /** * The network id of the server. */ network_id?: number /** * Current multiplier to the transaction cost based on * load to this server. */ load_factor_local?: number /** * Current multiplier to the transaction cost being used by the rest of * the network. */ load_factor_net?: number /** * Current multiplier to the transaction cost based on load to servers * in this cluster. */ load_factor_cluster?: number /** * The current multiplier to the transaction cost that a transaction must * pay to get into the open ledger. */ load_factor_fee_escalation?: number /** * The current multiplier to the transaction cost that a transaction must * pay to get into the queue, if the queue is full. */ load_factor_fee_queue?: number /** * The load factor the server is enforcing, not including the open ledger * cost. */ load_factor_server?: number /** * The number of peer connections which were severed. */ peer_disconnects?: string /** * The number of peer connections which were severed due to excess resource consumption. */ peer_disconnects_resources?: string network_ledger?: 'waiting' /** How many other rippled servers this one is currently connected to. */ peers: number /** * What Websocket/RPC ports rippled is listening on. This allows crawlers to build a richer topology without needing to * port-scan nodes. For non-admin users (including peers), info about admin ports is excluded. */ ports: ServerPort[] /** * Public key used to verify this server for peer-to-peer communications. * This node key pair is automatically generated by the server the first * time it starts up. (If deleted, the server can create a new pair of * Keys.). */ pubkey_node: string /** Public key used by this node to sign ledger validations. */ pubkey_validator?: string /** * A string indicating to what extent the server is participating in the * network. */ server_state: ServerState /** * The number of consecutive microseconds the server has been in the * current state. */ server_state_duration_us: string /** * A map of various server states with information about the time the * server spends in each. This can be useful for tracking the long-term * health of your server's connectivity to the network. */ state_accounting: StateAccountingFinal /** The current time in UTC, according to the server's clock. */ time: string /** Number of consecutive seconds that the server has been operational. */ uptime: number /** Information about the most recent fully-validated ledger. */ validated_ledger?: { /** The time since the ledger was closed, in seconds. */ age: number /** * Base fee, in XRP. This may be represented in scientific notation. * Such as 1e-05 for 0.00005. */ base_fee_xrp: number /** Unique hash for the ledger, as hexadecimal. */ hash: string /** * Minimum amount of XRP (not drops) necessary for every account to. * Keep in reserve . */ reserve_base_xrp: number /** * Amount of XRP (not drops) added to the account reserve for each * object an account owns in the ledger. */ reserve_inc_xrp: number /** The ledger index of the latest validated ledger. */ seq: number } /** * Minimum number of trusted validations required to validate a ledger * version. Some circumstances may cause the server to require more * validations. */ validation_quorum: number /** * Either the human readable time, in UTC, when the current validator * list will expire, the string unknown if the server has yet to load a * published validator list or the string never if the server uses a * static validator list. */ validator_list_expires?: string validator_list?: { count: number expiration: 'never' | 'unknown' | string status: 'active' | 'expired' | 'unknown' } } } }