2020-12-28 04:47:22 +07:00
|
|
|
import { IEsploraApi } from './api/bitcoin/esplora-api.interface';
|
2023-02-18 14:10:07 +09:00
|
|
|
import { OrphanedBlock } from './api/chain-tips';
|
2023-02-27 18:00:00 +09:00
|
|
|
import { HeapNode } from './utils/pairing-heap';
|
2020-12-28 04:47:22 +07:00
|
|
|
|
2022-01-06 19:59:33 +09:00
|
|
|
export interface PoolTag {
|
2023-02-27 18:00:00 +09:00
|
|
|
id: number;
|
|
|
|
uniqueId: number;
|
2022-02-09 19:41:05 +09:00
|
|
|
name: string;
|
|
|
|
link: string;
|
|
|
|
regexes: string; // JSON array
|
|
|
|
addresses: string; // JSON array
|
2022-03-25 14:22:22 +09:00
|
|
|
slug: string;
|
2022-01-06 19:59:33 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface PoolInfo {
|
2022-02-09 19:41:05 +09:00
|
|
|
poolId: number; // mysql row id
|
|
|
|
name: string;
|
|
|
|
link: string;
|
|
|
|
blockCount: number;
|
2022-03-25 14:22:22 +09:00
|
|
|
slug: string;
|
2023-02-20 17:47:45 +09:00
|
|
|
avgMatchRate: number | null;
|
2023-07-03 16:00:32 +02:00
|
|
|
avgFeeDelta: number | null;
|
2023-07-31 11:06:52 +09:00
|
|
|
poolUniqueId: number;
|
2022-01-06 19:59:33 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface PoolStats extends PoolInfo {
|
2022-02-09 19:41:05 +09:00
|
|
|
rank: number;
|
|
|
|
emptyBlocks: number;
|
2022-01-05 15:41:14 +09:00
|
|
|
}
|
|
|
|
|
2022-07-06 22:27:45 +02:00
|
|
|
export interface BlockAudit {
|
|
|
|
time: number,
|
|
|
|
height: number,
|
|
|
|
hash: string,
|
|
|
|
missingTxs: string[],
|
2022-11-23 19:03:28 +09:00
|
|
|
freshTxs: string[],
|
2023-05-17 11:46:50 -04:00
|
|
|
sigopTxs: string[],
|
2023-06-19 18:14:09 -04:00
|
|
|
fullrbfTxs: string[],
|
2022-07-06 22:27:45 +02:00
|
|
|
addedTxs: string[],
|
2024-04-02 02:02:17 +00:00
|
|
|
prioritizedTxs: string[],
|
2023-05-22 18:16:58 -04:00
|
|
|
acceleratedTxs: string[],
|
2022-07-06 22:27:45 +02:00
|
|
|
matchRate: number,
|
2023-06-09 13:46:14 -04:00
|
|
|
expectedFees?: number,
|
|
|
|
expectedWeight?: number,
|
2024-07-10 13:13:53 +09:00
|
|
|
template?: any[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface TransactionAudit {
|
|
|
|
seen?: boolean;
|
|
|
|
expected?: boolean;
|
|
|
|
added?: boolean;
|
|
|
|
prioritized?: boolean;
|
|
|
|
delayed?: number;
|
|
|
|
accelerated?: boolean;
|
|
|
|
conflict?: boolean;
|
|
|
|
coinbase?: boolean;
|
|
|
|
firstSeen?: number;
|
2022-07-06 22:27:45 +02:00
|
|
|
}
|
|
|
|
|
2022-11-01 14:01:50 -06:00
|
|
|
export interface AuditScore {
|
|
|
|
hash: string,
|
|
|
|
matchRate?: number,
|
2023-06-06 08:52:29 +02:00
|
|
|
expectedFees?: number
|
2023-06-09 13:46:14 -04:00
|
|
|
expectedWeight?: number
|
2022-11-01 14:01:50 -06:00
|
|
|
}
|
|
|
|
|
2020-12-28 04:47:22 +07:00
|
|
|
export interface MempoolBlock {
|
|
|
|
blockSize: number;
|
|
|
|
blockVSize: number;
|
|
|
|
nTx: number;
|
|
|
|
medianFee: number;
|
|
|
|
totalFees: number;
|
|
|
|
feeRange: number[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface MempoolBlockWithTransactions extends MempoolBlock {
|
|
|
|
transactionIds: string[];
|
2023-12-05 06:54:31 +00:00
|
|
|
transactions: TransactionClassified[];
|
2020-12-28 04:47:22 +07:00
|
|
|
}
|
|
|
|
|
2022-05-31 21:36:42 +00:00
|
|
|
export interface MempoolBlockDelta {
|
2024-02-08 22:40:22 +00:00
|
|
|
added: TransactionCompressed[];
|
2022-05-31 21:36:42 +00:00
|
|
|
removed: string[];
|
2024-02-08 22:40:22 +00:00
|
|
|
changed: MempoolDeltaChange[];
|
2022-05-31 21:36:42 +00:00
|
|
|
}
|
|
|
|
|
2024-01-21 22:47:41 +00:00
|
|
|
export interface MempoolDeltaTxids {
|
2024-05-03 16:31:56 +00:00
|
|
|
sequence: number,
|
2024-01-21 22:47:41 +00:00
|
|
|
added: string[];
|
|
|
|
removed: string[];
|
|
|
|
mined: string[];
|
|
|
|
replaced: { replaced: string, by: string }[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface MempoolDelta {
|
2024-05-03 16:31:56 +00:00
|
|
|
sequence: number,
|
2024-01-21 22:47:41 +00:00
|
|
|
added: MempoolTransactionExtended[];
|
|
|
|
removed: string[];
|
|
|
|
mined: string[];
|
|
|
|
replaced: { replaced: string, by: TransactionExtended }[];
|
|
|
|
}
|
|
|
|
|
2020-12-28 04:47:22 +07:00
|
|
|
interface VinStrippedToScriptsig {
|
|
|
|
scriptsig: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface VoutStrippedToScriptPubkey {
|
|
|
|
scriptpubkey_address: string | undefined;
|
2023-02-17 21:21:21 +09:00
|
|
|
scriptpubkey_asm: string | undefined;
|
2020-12-28 04:47:22 +07:00
|
|
|
value: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface TransactionExtended extends IEsploraApi.Transaction {
|
|
|
|
vsize: number;
|
|
|
|
feePerVsize: number;
|
|
|
|
firstSeen?: number;
|
2021-03-18 23:47:40 +07:00
|
|
|
effectiveFeePerVsize: number;
|
|
|
|
ancestors?: Ancestor[];
|
2022-11-27 17:48:25 +09:00
|
|
|
descendants?: Ancestor[];
|
2021-03-18 23:47:40 +07:00
|
|
|
bestDescendant?: BestDescendant | null;
|
|
|
|
cpfpChecked?: boolean;
|
2023-04-21 08:40:21 +09:00
|
|
|
position?: {
|
|
|
|
block: number,
|
|
|
|
vsize: number,
|
|
|
|
};
|
2023-07-18 15:05:44 +09:00
|
|
|
acceleration?: boolean;
|
2024-05-26 20:40:50 +00:00
|
|
|
acceleratedBy?: number[];
|
2024-07-04 16:52:22 +09:00
|
|
|
acceleratedAt?: number;
|
2024-07-25 11:52:55 +02:00
|
|
|
feeDelta?: number;
|
2023-12-17 10:45:26 +00:00
|
|
|
replacement?: boolean;
|
2023-05-02 17:46:48 -06:00
|
|
|
uid?: number;
|
2023-12-17 09:57:15 +00:00
|
|
|
flags?: number;
|
2021-03-18 23:47:40 +07:00
|
|
|
}
|
|
|
|
|
2023-05-29 15:56:29 -04:00
|
|
|
export interface MempoolTransactionExtended extends TransactionExtended {
|
2023-07-02 20:05:30 -04:00
|
|
|
order: number;
|
2023-05-29 15:56:29 -04:00
|
|
|
sigops: number;
|
|
|
|
adjustedVsize: number;
|
|
|
|
adjustedFeePerVsize: number;
|
2023-06-28 16:31:59 -04:00
|
|
|
inputs?: number[];
|
2023-07-16 13:49:33 +09:00
|
|
|
lastBoosted?: number;
|
2023-08-27 00:30:33 +09:00
|
|
|
cpfpDirty?: boolean;
|
2024-01-05 22:25:07 +00:00
|
|
|
cpfpUpdated?: number;
|
2023-05-29 15:56:29 -04:00
|
|
|
}
|
|
|
|
|
2022-10-27 10:21:39 -06:00
|
|
|
export interface AuditTransaction {
|
2023-05-02 17:46:48 -06:00
|
|
|
uid: number;
|
2022-10-27 10:21:39 -06:00
|
|
|
fee: number;
|
|
|
|
weight: number;
|
|
|
|
feePerVsize: number;
|
2022-12-06 05:51:44 +09:00
|
|
|
effectiveFeePerVsize: number;
|
2023-05-29 17:21:02 -04:00
|
|
|
sigops: number;
|
2023-05-02 17:46:48 -06:00
|
|
|
inputs: number[];
|
2022-10-27 10:21:39 -06:00
|
|
|
relativesSet: boolean;
|
2023-05-02 17:46:48 -06:00
|
|
|
ancestorMap: Map<number, AuditTransaction>;
|
2022-10-27 10:21:39 -06:00
|
|
|
children: Set<AuditTransaction>;
|
|
|
|
ancestorFee: number;
|
|
|
|
ancestorWeight: number;
|
2023-05-29 17:21:02 -04:00
|
|
|
ancestorSigops: number;
|
2022-10-27 10:21:39 -06:00
|
|
|
score: number;
|
|
|
|
used: boolean;
|
|
|
|
modified: boolean;
|
|
|
|
modifiedNode: HeapNode<AuditTransaction>;
|
2023-05-18 13:35:02 -04:00
|
|
|
dependencyRate?: number;
|
2022-10-27 10:21:39 -06:00
|
|
|
}
|
|
|
|
|
2023-05-02 17:46:48 -06:00
|
|
|
export interface CompactThreadTransaction {
|
|
|
|
uid: number;
|
|
|
|
fee: number;
|
|
|
|
weight: number;
|
2023-05-29 17:21:02 -04:00
|
|
|
sigops: number;
|
2023-05-02 17:46:48 -06:00
|
|
|
feePerVsize: number;
|
2023-06-28 16:31:59 -04:00
|
|
|
effectiveFeePerVsize: number;
|
2023-05-02 17:46:48 -06:00
|
|
|
inputs: number[];
|
2023-06-23 16:42:58 -04:00
|
|
|
cpfpRoot?: number;
|
2023-05-02 17:46:48 -06:00
|
|
|
cpfpChecked?: boolean;
|
2023-05-08 19:03:39 -06:00
|
|
|
dirty?: boolean;
|
2023-05-02 17:46:48 -06:00
|
|
|
}
|
|
|
|
|
2023-02-17 17:54:29 -06:00
|
|
|
export interface GbtCandidates {
|
|
|
|
txs: { [txid: string ]: boolean },
|
|
|
|
added: MempoolTransactionExtended[];
|
|
|
|
removed: MempoolTransactionExtended[];
|
|
|
|
}
|
|
|
|
|
2022-12-06 05:51:44 +09:00
|
|
|
export interface ThreadTransaction {
|
|
|
|
txid: string;
|
|
|
|
fee: number;
|
|
|
|
weight: number;
|
|
|
|
feePerVsize: number;
|
|
|
|
effectiveFeePerVsize?: number;
|
2023-05-02 17:46:48 -06:00
|
|
|
inputs: number[];
|
2022-12-06 05:51:44 +09:00
|
|
|
cpfpRoot?: string;
|
|
|
|
cpfpChecked?: boolean;
|
|
|
|
}
|
|
|
|
|
2022-10-10 22:13:04 +00:00
|
|
|
export interface Ancestor {
|
2021-03-18 23:47:40 +07:00
|
|
|
txid: string;
|
|
|
|
weight: number;
|
|
|
|
fee: number;
|
|
|
|
}
|
|
|
|
|
2022-10-10 22:13:04 +00:00
|
|
|
export interface TransactionSet {
|
|
|
|
fee: number;
|
|
|
|
weight: number;
|
|
|
|
score: number;
|
2022-10-27 10:21:39 -06:00
|
|
|
children?: Set<string>;
|
2022-10-10 22:13:04 +00:00
|
|
|
available?: boolean;
|
|
|
|
modified?: boolean;
|
2022-10-27 10:21:39 -06:00
|
|
|
modifiedNode?: HeapNode<string>;
|
2022-10-10 22:13:04 +00:00
|
|
|
}
|
|
|
|
|
2021-03-18 23:47:40 +07:00
|
|
|
interface BestDescendant {
|
|
|
|
txid: string;
|
|
|
|
weight: number;
|
|
|
|
fee: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface CpfpInfo {
|
|
|
|
ancestors: Ancestor[];
|
2022-11-27 13:46:23 +09:00
|
|
|
bestDescendant?: BestDescendant | null;
|
|
|
|
descendants?: Ancestor[];
|
|
|
|
effectiveFeePerVsize?: number;
|
2024-01-05 22:25:07 +00:00
|
|
|
sigops?: number;
|
|
|
|
adjustedVsize?: number,
|
|
|
|
acceleration?: boolean,
|
2024-07-18 16:44:00 +08:00
|
|
|
fee?: number;
|
2020-12-28 04:47:22 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface TransactionStripped {
|
|
|
|
txid: string;
|
|
|
|
fee: number;
|
2021-01-25 01:09:42 +07:00
|
|
|
vsize: number;
|
2020-12-28 04:47:22 +07:00
|
|
|
value: number;
|
2023-07-18 15:05:44 +09:00
|
|
|
acc?: boolean;
|
2023-03-14 15:39:55 +09:00
|
|
|
rate?: number; // effective fee rate
|
2024-03-31 03:45:48 +00:00
|
|
|
time?: number;
|
2020-12-28 04:47:22 +07:00
|
|
|
}
|
2022-02-04 12:51:45 +09:00
|
|
|
|
2023-12-05 06:54:31 +00:00
|
|
|
export interface TransactionClassified extends TransactionStripped {
|
|
|
|
flags: number;
|
|
|
|
}
|
|
|
|
|
2024-02-08 22:40:22 +00:00
|
|
|
// [txid, fee, vsize, value, rate, flags, acceleration?]
|
2024-03-31 03:45:48 +00:00
|
|
|
export type TransactionCompressed = [string, number, number, number, number, number, number, 1?];
|
2024-02-08 22:40:22 +00:00
|
|
|
// [txid, rate, flags, acceleration?]
|
|
|
|
export type MempoolDeltaChange = [string, number, number, (1|0)];
|
|
|
|
|
2023-12-05 06:54:31 +00:00
|
|
|
// binary flags for transaction classification
|
|
|
|
export const TransactionFlags = {
|
|
|
|
// features
|
|
|
|
rbf: 0b00000001n,
|
|
|
|
no_rbf: 0b00000010n,
|
|
|
|
v1: 0b00000100n,
|
|
|
|
v2: 0b00001000n,
|
2024-02-12 20:00:57 +00:00
|
|
|
v3: 0b00010000n,
|
2024-02-24 22:47:50 +00:00
|
|
|
nonstandard: 0b00100000n,
|
2023-12-05 06:54:31 +00:00
|
|
|
// address types
|
|
|
|
p2pk: 0b00000001_00000000n,
|
|
|
|
p2ms: 0b00000010_00000000n,
|
|
|
|
p2pkh: 0b00000100_00000000n,
|
|
|
|
p2sh: 0b00001000_00000000n,
|
|
|
|
p2wpkh: 0b00010000_00000000n,
|
|
|
|
p2wsh: 0b00100000_00000000n,
|
|
|
|
p2tr: 0b01000000_00000000n,
|
|
|
|
// behavior
|
|
|
|
cpfp_parent: 0b00000001_00000000_00000000n,
|
|
|
|
cpfp_child: 0b00000010_00000000_00000000n,
|
|
|
|
replacement: 0b00000100_00000000_00000000n,
|
|
|
|
// data
|
|
|
|
op_return: 0b00000001_00000000_00000000_00000000n,
|
2023-12-14 11:26:17 +00:00
|
|
|
fake_pubkey: 0b00000010_00000000_00000000_00000000n,
|
2023-12-05 06:54:31 +00:00
|
|
|
inscription: 0b00000100_00000000_00000000_00000000n,
|
2024-03-08 00:48:36 +00:00
|
|
|
fake_scripthash: 0b00001000_00000000_00000000_00000000n,
|
2023-12-05 06:54:31 +00:00
|
|
|
// heuristics
|
|
|
|
coinjoin: 0b00000001_00000000_00000000_00000000_00000000n,
|
|
|
|
consolidation: 0b00000010_00000000_00000000_00000000_00000000n,
|
|
|
|
batch_payout: 0b00000100_00000000_00000000_00000000_00000000n,
|
|
|
|
// sighash
|
|
|
|
sighash_all: 0b00000001_00000000_00000000_00000000_00000000_00000000n,
|
|
|
|
sighash_none: 0b00000010_00000000_00000000_00000000_00000000_00000000n,
|
|
|
|
sighash_single: 0b00000100_00000000_00000000_00000000_00000000_00000000n,
|
|
|
|
sighash_default:0b00001000_00000000_00000000_00000000_00000000_00000000n,
|
|
|
|
sighash_acp: 0b00010000_00000000_00000000_00000000_00000000_00000000n,
|
|
|
|
};
|
|
|
|
|
2022-02-04 12:51:45 +09:00
|
|
|
export interface BlockExtension {
|
2023-02-27 18:00:00 +09:00
|
|
|
totalFees: number;
|
|
|
|
medianFee: number; // median fee rate
|
|
|
|
feeRange: number[]; // fee rate percentiles
|
|
|
|
reward: number;
|
|
|
|
matchRate: number | null;
|
2023-06-06 08:52:29 +02:00
|
|
|
expectedFees: number | null;
|
2023-06-09 13:46:14 -04:00
|
|
|
expectedWeight: number | null;
|
2023-03-14 10:19:32 +09:00
|
|
|
similarity?: number;
|
2023-02-27 18:00:00 +09:00
|
|
|
pool: {
|
|
|
|
id: number; // Note - This is the `unique_id`, not to mix with the auto increment `id`
|
2022-02-10 10:25:14 +09:00
|
|
|
name: string;
|
2022-03-25 14:22:22 +09:00
|
|
|
slug: string;
|
2022-03-09 19:18:51 +01:00
|
|
|
};
|
2023-02-27 18:00:00 +09:00
|
|
|
avgFee: number;
|
|
|
|
avgFeeRate: number;
|
|
|
|
coinbaseRaw: string;
|
|
|
|
orphans: OrphanedBlock[] | null;
|
|
|
|
coinbaseAddress: string | null;
|
2024-06-24 06:15:01 +00:00
|
|
|
coinbaseAddresses: string[] | null;
|
2023-02-27 18:00:00 +09:00
|
|
|
coinbaseSignature: string | null;
|
|
|
|
coinbaseSignatureAscii: string | null;
|
|
|
|
virtualSize: number;
|
|
|
|
avgTxSize: number;
|
|
|
|
totalInputs: number;
|
|
|
|
totalOutputs: number;
|
|
|
|
totalOutputAmt: number;
|
|
|
|
medianFeeAmt: number | null; // median fee in sats
|
|
|
|
feePercentiles: number[] | null, // fee percentiles in sats
|
|
|
|
segwitTotalTxs: number;
|
|
|
|
segwitTotalSize: number;
|
|
|
|
segwitTotalWeight: number;
|
|
|
|
header: string;
|
|
|
|
utxoSetChange: number;
|
2023-02-17 21:21:21 +09:00
|
|
|
// Requires coinstatsindex, will be set to NULL otherwise
|
2023-02-27 18:00:00 +09:00
|
|
|
utxoSetSize: number | null;
|
|
|
|
totalInputAmt: number | null;
|
2020-12-28 04:47:22 +07:00
|
|
|
}
|
|
|
|
|
2023-02-27 18:00:00 +09:00
|
|
|
/**
|
|
|
|
* Note: Everything that is added in here will be automatically returned through
|
|
|
|
* /api/v1/block and /api/v1/blocks APIs
|
|
|
|
*/
|
2022-02-04 12:51:45 +09:00
|
|
|
export interface BlockExtended extends IEsploraApi.Block {
|
2022-02-08 15:47:43 +09:00
|
|
|
extras: BlockExtension;
|
2023-07-08 00:34:57 -04:00
|
|
|
canonical?: string;
|
2022-02-04 12:51:45 +09:00
|
|
|
}
|
|
|
|
|
2022-06-15 19:53:37 +00:00
|
|
|
export interface BlockSummary {
|
|
|
|
id: string;
|
2023-12-21 16:20:31 +00:00
|
|
|
transactions: TransactionClassified[];
|
2024-01-23 17:18:47 +00:00
|
|
|
version?: number;
|
2022-06-15 19:53:37 +00:00
|
|
|
}
|
|
|
|
|
2023-06-20 16:21:54 -04:00
|
|
|
export interface AuditSummary extends BlockAudit {
|
|
|
|
timestamp?: number,
|
|
|
|
size?: number,
|
|
|
|
weight?: number,
|
|
|
|
tx_count?: number,
|
2023-12-21 16:20:31 +00:00
|
|
|
transactions: TransactionClassified[];
|
|
|
|
template?: TransactionClassified[];
|
2023-06-20 16:21:54 -04:00
|
|
|
}
|
|
|
|
|
2022-07-09 16:53:29 +02:00
|
|
|
export interface BlockPrice {
|
|
|
|
height: number;
|
|
|
|
priceId: number;
|
|
|
|
}
|
|
|
|
|
2020-12-28 04:47:22 +07:00
|
|
|
export interface TransactionMinerInfo {
|
|
|
|
vin: VinStrippedToScriptsig[];
|
|
|
|
vout: VoutStrippedToScriptPubkey[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface MempoolStats {
|
|
|
|
funded_txo_count: number;
|
|
|
|
funded_txo_sum: number;
|
|
|
|
spent_txo_count: number;
|
|
|
|
spent_txo_sum: number;
|
|
|
|
tx_count: number;
|
|
|
|
}
|
|
|
|
|
2023-03-12 11:09:11 +09:00
|
|
|
export interface EffectiveFeeStats {
|
|
|
|
medianFee: number; // median effective fee rate
|
|
|
|
feeRange: number[]; // 2nd, 10th, 25th, 50th, 75th, 90th, 98th percentiles
|
|
|
|
}
|
|
|
|
|
2023-05-10 12:59:05 -06:00
|
|
|
export interface WorkingEffectiveFeeStats extends EffectiveFeeStats {
|
|
|
|
minFee: number;
|
|
|
|
maxFee: number;
|
|
|
|
}
|
|
|
|
|
2023-06-06 14:42:41 -04:00
|
|
|
export interface CpfpCluster {
|
|
|
|
root: string,
|
|
|
|
height: number,
|
|
|
|
txs: Ancestor[],
|
|
|
|
effectiveFeePerVsize: number,
|
|
|
|
}
|
|
|
|
|
2023-03-12 11:09:11 +09:00
|
|
|
export interface CpfpSummary {
|
|
|
|
transactions: TransactionExtended[];
|
2023-06-06 14:42:41 -04:00
|
|
|
clusters: CpfpCluster[];
|
2023-03-12 11:09:11 +09:00
|
|
|
}
|
|
|
|
|
2020-12-28 04:47:22 +07:00
|
|
|
export interface Statistic {
|
|
|
|
id?: number;
|
|
|
|
added: string;
|
|
|
|
unconfirmed_transactions: number;
|
|
|
|
tx_per_second: number;
|
|
|
|
vbytes_per_second: number;
|
|
|
|
total_fee: number;
|
|
|
|
mempool_byte_weight: number;
|
|
|
|
fee_data: string;
|
2023-08-15 20:54:03 +09:00
|
|
|
min_fee: number;
|
2020-12-28 04:47:22 +07:00
|
|
|
|
|
|
|
vsize_1: number;
|
|
|
|
vsize_2: number;
|
|
|
|
vsize_3: number;
|
|
|
|
vsize_4: number;
|
|
|
|
vsize_5: number;
|
|
|
|
vsize_6: number;
|
|
|
|
vsize_8: number;
|
|
|
|
vsize_10: number;
|
|
|
|
vsize_12: number;
|
|
|
|
vsize_15: number;
|
|
|
|
vsize_20: number;
|
|
|
|
vsize_30: number;
|
|
|
|
vsize_40: number;
|
|
|
|
vsize_50: number;
|
|
|
|
vsize_60: number;
|
|
|
|
vsize_70: number;
|
|
|
|
vsize_80: number;
|
|
|
|
vsize_90: number;
|
|
|
|
vsize_100: number;
|
|
|
|
vsize_125: number;
|
|
|
|
vsize_150: number;
|
|
|
|
vsize_175: number;
|
|
|
|
vsize_200: number;
|
|
|
|
vsize_250: number;
|
|
|
|
vsize_300: number;
|
|
|
|
vsize_350: number;
|
|
|
|
vsize_400: number;
|
|
|
|
vsize_500: number;
|
|
|
|
vsize_600: number;
|
|
|
|
vsize_700: number;
|
|
|
|
vsize_800: number;
|
|
|
|
vsize_900: number;
|
|
|
|
vsize_1000: number;
|
|
|
|
vsize_1200: number;
|
|
|
|
vsize_1400: number;
|
|
|
|
vsize_1600: number;
|
|
|
|
vsize_1800: number;
|
|
|
|
vsize_2000: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface OptimizedStatistic {
|
|
|
|
added: string;
|
2024-05-06 20:52:44 +02:00
|
|
|
count: number;
|
2020-12-28 04:47:22 +07:00
|
|
|
vbytes_per_second: number;
|
|
|
|
total_fee: number;
|
|
|
|
mempool_byte_weight: number;
|
2023-08-15 20:54:03 +09:00
|
|
|
min_fee: number;
|
2020-12-28 04:47:22 +07:00
|
|
|
vsizes: number[];
|
|
|
|
}
|
|
|
|
|
2024-03-31 07:55:43 +00:00
|
|
|
export interface TxTrackingInfo {
|
|
|
|
replacedBy?: string,
|
2024-07-25 11:52:55 +02:00
|
|
|
position?: { block: number, vsize: number, accelerated?: boolean, acceleratedBy?: number[], acceleratedAt?: number, feeDelta?: number },
|
2024-03-31 07:55:43 +00:00
|
|
|
cpfp?: {
|
|
|
|
ancestors?: Ancestor[],
|
|
|
|
bestDescendant?: Ancestor | null,
|
|
|
|
descendants?: Ancestor[] | null,
|
|
|
|
effectiveFeePerVsize?: number | null,
|
|
|
|
sigops: number,
|
|
|
|
adjustedVsize: number,
|
|
|
|
},
|
|
|
|
utxoSpent?: { [vout: number]: { vin: number, txid: string } },
|
|
|
|
accelerated?: boolean,
|
2024-05-26 20:40:50 +00:00
|
|
|
acceleratedBy?: number[],
|
2024-07-04 16:52:22 +09:00
|
|
|
acceleratedAt?: number,
|
2024-07-25 11:52:55 +02:00
|
|
|
feeDelta?: number,
|
2024-03-31 07:55:43 +00:00
|
|
|
confirmed?: boolean
|
|
|
|
}
|
|
|
|
|
2020-12-28 04:47:22 +07:00
|
|
|
export interface WebsocketResponse {
|
|
|
|
action: string;
|
|
|
|
data: string[];
|
|
|
|
'track-tx': string;
|
|
|
|
'track-address': string;
|
|
|
|
'watch-mempool': boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface VbytesPerSecond {
|
|
|
|
unixTime: number;
|
|
|
|
vSize: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface RequiredSpec { [name: string]: RequiredParams; }
|
|
|
|
|
|
|
|
interface RequiredParams {
|
|
|
|
required: boolean;
|
|
|
|
types: ('@string' | '@number' | '@boolean' | string)[];
|
|
|
|
}
|
|
|
|
|
2021-01-05 18:57:06 +07:00
|
|
|
export interface ILoadingIndicators { [name: string]: number; }
|
2021-04-12 22:17:13 +04:00
|
|
|
|
|
|
|
export interface IBackendInfo {
|
|
|
|
hostname: string;
|
|
|
|
gitCommit: string;
|
|
|
|
version: string;
|
2023-01-10 21:54:34 -08:00
|
|
|
lightning: boolean;
|
2024-04-01 04:00:29 +00:00
|
|
|
backend: 'esplora' | 'electrum' | 'none';
|
2021-04-12 22:17:13 +04:00
|
|
|
}
|
2022-03-12 14:55:42 +01:00
|
|
|
|
|
|
|
export interface IDifficultyAdjustment {
|
|
|
|
progressPercent: number;
|
|
|
|
difficultyChange: number;
|
|
|
|
estimatedRetargetDate: number;
|
|
|
|
remainingBlocks: number;
|
|
|
|
remainingTime: number;
|
|
|
|
previousRetarget: number;
|
2023-03-26 09:05:41 +09:00
|
|
|
previousTime: number;
|
2022-03-12 14:55:42 +01:00
|
|
|
nextRetargetHeight: number;
|
|
|
|
timeAvg: number;
|
|
|
|
timeOffset: number;
|
2023-03-26 09:05:41 +09:00
|
|
|
expectedBlocks: number;
|
2022-03-12 14:55:42 +01:00
|
|
|
}
|
2022-03-22 12:34:29 +09:00
|
|
|
|
2022-06-25 12:14:32 +02:00
|
|
|
export interface IndexedDifficultyAdjustment {
|
|
|
|
time: number; // UNIX timestamp
|
|
|
|
height: number; // Block height
|
|
|
|
difficulty: number;
|
|
|
|
adjustment: number;
|
|
|
|
}
|
|
|
|
|
2022-03-22 12:34:29 +09:00
|
|
|
export interface RewardStats {
|
|
|
|
totalReward: number;
|
|
|
|
totalFee: number;
|
|
|
|
totalTx: number;
|
|
|
|
}
|
2022-08-17 12:53:26 +02:00
|
|
|
|
2022-08-17 16:19:01 +02:00
|
|
|
export interface ITopNodesPerChannels {
|
|
|
|
publicKey: string,
|
2022-08-17 12:53:26 +02:00
|
|
|
alias: string,
|
2022-08-17 16:19:01 +02:00
|
|
|
channels?: number,
|
|
|
|
capacity: number,
|
|
|
|
firstSeen?: number,
|
|
|
|
updatedAt?: number,
|
|
|
|
city?: any,
|
|
|
|
country?: any,
|
2022-08-17 12:53:26 +02:00
|
|
|
}
|
|
|
|
|
2022-08-17 16:19:01 +02:00
|
|
|
export interface ITopNodesPerCapacity {
|
2022-08-17 16:00:30 +02:00
|
|
|
publicKey: string,
|
2022-08-17 12:53:26 +02:00
|
|
|
alias: string,
|
|
|
|
capacity: number,
|
2022-08-17 16:00:30 +02:00
|
|
|
channels?: number,
|
|
|
|
firstSeen?: number,
|
|
|
|
updatedAt?: number,
|
|
|
|
city?: any,
|
|
|
|
country?: any,
|
2022-08-17 12:53:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface INodesRanking {
|
2022-08-17 16:19:01 +02:00
|
|
|
topByCapacity: ITopNodesPerCapacity[];
|
|
|
|
topByChannels: ITopNodesPerChannels[];
|
2022-08-17 21:20:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IOldestNodes {
|
|
|
|
publicKey: string,
|
|
|
|
alias: string,
|
|
|
|
firstSeen: number,
|
|
|
|
channels?: number,
|
|
|
|
capacity: number,
|
|
|
|
updatedAt?: number,
|
|
|
|
city?: any,
|
|
|
|
country?: any,
|
2023-01-10 21:54:34 -08:00
|
|
|
}
|