@valve-tech/gas-oracle 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/README.md +115 -16
- package/dist/block-position.d.ts +3 -3
- package/dist/block-position.d.ts.map +1 -1
- package/dist/block-position.js +27 -19
- package/dist/block-position.js.map +1 -1
- package/dist/classify-tip.d.ts +33 -0
- package/dist/classify-tip.d.ts.map +1 -0
- package/dist/classify-tip.js +52 -0
- package/dist/classify-tip.js.map +1 -0
- package/dist/inclusion-labels.d.ts +30 -0
- package/dist/inclusion-labels.d.ts.map +1 -0
- package/dist/inclusion-labels.js +35 -0
- package/dist/inclusion-labels.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/math.d.ts +1 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +17 -17
- package/dist/math.js.map +1 -1
- package/dist/oracle.d.ts +2 -2
- package/dist/oracle.d.ts.map +1 -1
- package/dist/oracle.js +7 -6
- package/dist/oracle.js.map +1 -1
- package/dist/presets.d.ts +36 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +27 -0
- package/dist/presets.js.map +1 -0
- package/dist/replacement.d.ts +80 -0
- package/dist/replacement.d.ts.map +1 -0
- package/dist/replacement.js +114 -0
- package/dist/replacement.js.map +1 -0
- package/dist/types.d.ts +49 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +57 -1
- package/dist/types.js.map +1 -1
- package/dist/viem-transport.d.ts +1 -1
- package/dist/viem-transport.d.ts.map +1 -1
- package/dist/viem-transport.js +11 -5
- package/dist/viem-transport.js.map +1 -1
- package/package.json +2 -2
- package/skills/gas-oracle-integration/SKILL.md +105 -12
package/dist/math.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* (legacy txs, EIP-1559 with zero headroom, cold-start cap, post-EIP-4844
|
|
8
8
|
* blob fee) is handled here rather than at higher layers.
|
|
9
9
|
*/
|
|
10
|
+
import { PriorityModel, TierName, Trend, TxType, } from './types.js';
|
|
10
11
|
const TREND_RISING_THRESHOLD_PCT = 10n;
|
|
11
12
|
const TREND_FALLING_THRESHOLD_PCT = -10n;
|
|
12
13
|
/**
|
|
@@ -75,17 +76,17 @@ export const sortedTips = (txs, baseFee) => txs
|
|
|
75
76
|
*/
|
|
76
77
|
export const detectTrend = (history) => {
|
|
77
78
|
if (history.length < 2)
|
|
78
|
-
return
|
|
79
|
+
return Trend.stable;
|
|
79
80
|
const first = history[0];
|
|
80
81
|
const last = history[history.length - 1];
|
|
81
82
|
if (first === 0n)
|
|
82
|
-
return last > 0n ?
|
|
83
|
+
return last > 0n ? Trend.rising : Trend.stable;
|
|
83
84
|
const change = ((last - first) * 100n) / first;
|
|
84
85
|
if (change > TREND_RISING_THRESHOLD_PCT)
|
|
85
|
-
return
|
|
86
|
+
return Trend.rising;
|
|
86
87
|
if (change < TREND_FALLING_THRESHOLD_PCT)
|
|
87
|
-
return
|
|
88
|
-
return
|
|
88
|
+
return Trend.falling;
|
|
89
|
+
return Trend.stable;
|
|
89
90
|
};
|
|
90
91
|
/**
|
|
91
92
|
* Clamp a tip from below by the previously-published tip, decayed at
|
|
@@ -130,10 +131,10 @@ export const cappedTip = (rawTip, nowBlockNumber, lastPublished, lastPublishedBl
|
|
|
130
131
|
* than chasing the spam lane at p25.
|
|
131
132
|
*/
|
|
132
133
|
const TIER_PERCENTILE = [
|
|
133
|
-
[
|
|
134
|
-
[
|
|
135
|
-
[
|
|
136
|
-
[
|
|
134
|
+
[TierName.slow, 10],
|
|
135
|
+
[TierName.standard, 50],
|
|
136
|
+
[TierName.fast, 75],
|
|
137
|
+
[TierName.instant, 90],
|
|
137
138
|
];
|
|
138
139
|
/**
|
|
139
140
|
* Gas-weighted percentile of a tip distribution. Each sample is one
|
|
@@ -211,7 +212,7 @@ export const DEFAULT_BASE_FEE_LIVENESS_BLOCKS = 1;
|
|
|
211
212
|
* At `N=1` this matches the pre-v0.2 hardcoded values (1.25 / 1.125 / 1).
|
|
212
213
|
*/
|
|
213
214
|
const baseFeeBufferMultiplier = (trend, livenessBlocks) => {
|
|
214
|
-
if (trend ===
|
|
215
|
+
if (trend === Trend.falling)
|
|
215
216
|
return { num: 1n, den: 1n };
|
|
216
217
|
let num = 1n;
|
|
217
218
|
let den = 1n;
|
|
@@ -219,7 +220,7 @@ const baseFeeBufferMultiplier = (trend, livenessBlocks) => {
|
|
|
219
220
|
num *= 9n;
|
|
220
221
|
den *= 8n;
|
|
221
222
|
}
|
|
222
|
-
if (trend ===
|
|
223
|
+
if (trend === Trend.rising) {
|
|
223
224
|
num *= 10n;
|
|
224
225
|
den *= 9n;
|
|
225
226
|
}
|
|
@@ -228,13 +229,12 @@ const baseFeeBufferMultiplier = (trend, livenessBlocks) => {
|
|
|
228
229
|
/**
|
|
229
230
|
* `priorityModel` cutoff: which tx types count as "paying lane."
|
|
230
231
|
*
|
|
231
|
-
* A sample is in the paying lane iff its `txType >=
|
|
232
|
+
* A sample is in the paying lane iff its `txType >= TxType.eip1559`
|
|
232
233
|
* (≥ 2). Samples without a captured `txType` are excluded from the
|
|
233
234
|
* paying-lane filter — better to under-count than to mis-bucket a
|
|
234
235
|
* legacy tx into the priority lane and pull the recommendation up.
|
|
235
236
|
*/
|
|
236
|
-
const
|
|
237
|
-
const isPayingLaneSample = (sample) => sample.txType !== undefined && sample.txType >= EIP1559_TYPE_CUTOFF;
|
|
237
|
+
const isPayingLaneSample = (sample) => sample.txType !== undefined && sample.txType >= TxType.eip1559;
|
|
238
238
|
/**
|
|
239
239
|
* Concatenate ring + mempool samples into one gas-weighted distribution
|
|
240
240
|
* and read the four tier percentiles from it. Each tier's raw tip is
|
|
@@ -276,7 +276,7 @@ export const computeTiers = (input) => {
|
|
|
276
276
|
const decayCap = input.priorityFeeDecayCap === undefined
|
|
277
277
|
? DEFAULT_PRIORITY_FEE_DECAY_CAP
|
|
278
278
|
: input.priorityFeeDecayCap;
|
|
279
|
-
const priorityModel = input.priorityModel ??
|
|
279
|
+
const priorityModel = input.priorityModel ?? PriorityModel.eip1559;
|
|
280
280
|
const combined = [...input.ringSamples, ...input.mempoolSamples];
|
|
281
281
|
const targets = TIER_PERCENTILE.map(([, p]) => p);
|
|
282
282
|
// Full-distribution percentiles always exist — `slow` reads from them
|
|
@@ -284,13 +284,13 @@ export const computeTiers = (input) => {
|
|
|
284
284
|
const fullPercentiles = gasWeightedPercentiles(combined, targets);
|
|
285
285
|
// Paying-lane percentiles only computed when the model demands them;
|
|
286
286
|
// saves one pass on the much-more-common 'flat' path.
|
|
287
|
-
const payingLanePercentiles = priorityModel ===
|
|
287
|
+
const payingLanePercentiles = priorityModel === PriorityModel.eip1559
|
|
288
288
|
? gasWeightedPercentiles(combined.filter(isPayingLaneSample), targets)
|
|
289
289
|
: null;
|
|
290
290
|
const tiers = {};
|
|
291
291
|
const publishedTips = {};
|
|
292
292
|
for (const [name, percentileTarget] of TIER_PERCENTILE) {
|
|
293
|
-
const useFiltered = payingLanePercentiles !== null && name !==
|
|
293
|
+
const useFiltered = payingLanePercentiles !== null && name !== TierName.slow;
|
|
294
294
|
const source = useFiltered ? payingLanePercentiles : fullPercentiles;
|
|
295
295
|
const rawTip = source[percentileTarget];
|
|
296
296
|
const tip = cappedTip(rawTip, input.blockNumber, input.lastPublishedTips?.[name], input.lastPublishedBlockNumber, decayCap);
|
package/dist/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"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"}
|
package/dist/oracle.d.ts
CHANGED
|
@@ -40,12 +40,12 @@ export interface CreateGasOracleOptions {
|
|
|
40
40
|
/** EVM chain ID. Echoed back in `state.chainId`; not validated. */
|
|
41
41
|
chainId: number;
|
|
42
42
|
/**
|
|
43
|
-
* Polling interval in ms. Default
|
|
43
|
+
* Polling interval in ms. Default 10_000n. Only consulted when the
|
|
44
44
|
* oracle is constructing its own private `ChainSource` (i.e. when
|
|
45
45
|
* `client` is provided). When a `source` is provided, the source's
|
|
46
46
|
* own poll interval governs.
|
|
47
47
|
*/
|
|
48
|
-
pollIntervalMs?:
|
|
48
|
+
pollIntervalMs?: bigint;
|
|
49
49
|
/**
|
|
50
50
|
* Optional error sink. Called for each sub-RPC that fails inside a
|
|
51
51
|
* poll cycle. Default behavior is to swallow — the oracle keeps running
|
package/dist/oracle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAQzE,OAAO,KAAK,EAEV,cAAc,EAEd,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAA;AAMnB,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAChD;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,cAAc,GAAG,IAAI,CAAA;IACrC;;;;;;;OAOG;IACH,kBAAkB,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAA;IAClD;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC9C;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;CAC/D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO;IACtC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,cAAc,GAAG,IAAI,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B,KAAG,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
package/dist/oracle.js
CHANGED
|
@@ -14,7 +14,7 @@ import { createChainSource, } from '@valve-tech/chain-source';
|
|
|
14
14
|
import { fetchOracleInputs } from './transport.js';
|
|
15
15
|
import { computeBlobBaseFee, computeTiers, detectTrend, flattenTxPool, } from './math.js';
|
|
16
16
|
import { blockToSample, mempoolToSamples } from './samples.js';
|
|
17
|
-
const DEFAULT_POLL_INTERVAL_MS =
|
|
17
|
+
const DEFAULT_POLL_INTERVAL_MS = 10000n;
|
|
18
18
|
const TREND_WINDOW = 5;
|
|
19
19
|
const WAD = 1000000000000000000n;
|
|
20
20
|
/**
|
|
@@ -48,8 +48,8 @@ export const reducePollInputs = (input) => {
|
|
|
48
48
|
const ringSamples = blockSample.tips;
|
|
49
49
|
// Mempool — best-effort signal.
|
|
50
50
|
let mempool = {
|
|
51
|
-
pendingCount:
|
|
52
|
-
queuedCount:
|
|
51
|
+
pendingCount: 0n,
|
|
52
|
+
queuedCount: 0n,
|
|
53
53
|
pendingGasDemand: 0n,
|
|
54
54
|
blockGasLimit,
|
|
55
55
|
};
|
|
@@ -58,8 +58,8 @@ export const reducePollInputs = (input) => {
|
|
|
58
58
|
const pendingTxs = flattenTxPool(txPool.pending);
|
|
59
59
|
const queuedTxs = flattenTxPool(txPool.queued);
|
|
60
60
|
mempool = {
|
|
61
|
-
pendingCount: pendingTxs.length,
|
|
62
|
-
queuedCount: queuedTxs.length,
|
|
61
|
+
pendingCount: BigInt(pendingTxs.length),
|
|
62
|
+
queuedCount: BigInt(queuedTxs.length),
|
|
63
63
|
pendingGasDemand: pendingTxs.reduce((sum, tx) => sum + (tx.gas ? BigInt(tx.gas) : 0n), 0n),
|
|
64
64
|
blockGasLimit,
|
|
65
65
|
};
|
|
@@ -106,6 +106,7 @@ export const reducePollInputs = (input) => {
|
|
|
106
106
|
blob,
|
|
107
107
|
tiers,
|
|
108
108
|
ring,
|
|
109
|
+
mempoolSamples,
|
|
109
110
|
lastPublishedTips: publishedTips,
|
|
110
111
|
lastPublishedBlockNumber: blockNumber,
|
|
111
112
|
};
|
|
@@ -182,7 +183,7 @@ export const createGasOracle = (options) => {
|
|
|
182
183
|
createChainSource({
|
|
183
184
|
// hasClient is true when hasSource is false, by the validation above.
|
|
184
185
|
client: options.client,
|
|
185
|
-
pollIntervalMs,
|
|
186
|
+
pollIntervalMs: Number(pollIntervalMs),
|
|
186
187
|
poll: options.poll,
|
|
187
188
|
onError: options.onError,
|
|
188
189
|
});
|
package/dist/oracle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-chain configuration presets for `createGasOracle`. Most chains
|
|
3
|
+
* need NO entry — the package default (PriorityModel.eip1559, no
|
|
4
|
+
* decay-cap override, default polling cadence) is correct. Add an entry
|
|
5
|
+
* only after verifying the chain's actual validator behavior against
|
|
6
|
+
* block-level data; the cost of being wrong is silent under-pricing
|
|
7
|
+
* and stuck transactions.
|
|
8
|
+
*
|
|
9
|
+
* PulseChain (chain 369) is the canonical exception: extractive
|
|
10
|
+
* validators ignore the EIP-2718 type byte and maximize fee/gas
|
|
11
|
+
* regardless of tx envelope, so percentile math has to draw from the
|
|
12
|
+
* full distribution (PriorityModel.flat).
|
|
13
|
+
*/
|
|
14
|
+
import type { CreateGasOracleOptions } from './oracle.js';
|
|
15
|
+
/**
|
|
16
|
+
* Chain-specific configuration overrides. Includes the fields whose
|
|
17
|
+
* correct value varies by chain — transport (`client`/`source`),
|
|
18
|
+
* error handling (`onError`), and other non-chain-specific options
|
|
19
|
+
* are NOT here (those are caller-supplied, never preset).
|
|
20
|
+
*/
|
|
21
|
+
export type ChainPreset = {
|
|
22
|
+
chainId: number;
|
|
23
|
+
} & Pick<CreateGasOracleOptions, 'priorityModel' | 'priorityFeeDecayCap' | 'pollIntervalMs'>;
|
|
24
|
+
export declare const chainPresets: {
|
|
25
|
+
readonly pulsechain: {
|
|
26
|
+
readonly chainId: 369;
|
|
27
|
+
readonly priorityModel: "flat";
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Look up a preset by chainId. Returns `undefined` when no preset is
|
|
32
|
+
* registered — caller should treat that as "default behavior is correct"
|
|
33
|
+
* and call `createGasOracle` without spreading any preset.
|
|
34
|
+
*/
|
|
35
|
+
export declare const presetForChainId: (chainId: number) => ChainPreset | undefined;
|
|
36
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAGzD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,IAAI,CACN,sBAAsB,EACtB,eAAe,GAAG,qBAAqB,GAAG,gBAAgB,CAC3D,CAAA;AAED,eAAO,MAAM,YAAY;;;;;CAKuB,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,KACd,WAAW,GAAG,SACyD,CAAA"}
|
package/dist/presets.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-chain configuration presets for `createGasOracle`. Most chains
|
|
3
|
+
* need NO entry — the package default (PriorityModel.eip1559, no
|
|
4
|
+
* decay-cap override, default polling cadence) is correct. Add an entry
|
|
5
|
+
* only after verifying the chain's actual validator behavior against
|
|
6
|
+
* block-level data; the cost of being wrong is silent under-pricing
|
|
7
|
+
* and stuck transactions.
|
|
8
|
+
*
|
|
9
|
+
* PulseChain (chain 369) is the canonical exception: extractive
|
|
10
|
+
* validators ignore the EIP-2718 type byte and maximize fee/gas
|
|
11
|
+
* regardless of tx envelope, so percentile math has to draw from the
|
|
12
|
+
* full distribution (PriorityModel.flat).
|
|
13
|
+
*/
|
|
14
|
+
import { PriorityModel } from './types.js';
|
|
15
|
+
export const chainPresets = {
|
|
16
|
+
pulsechain: {
|
|
17
|
+
chainId: 369,
|
|
18
|
+
priorityModel: PriorityModel.flat,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Look up a preset by chainId. Returns `undefined` when no preset is
|
|
23
|
+
* registered — caller should treat that as "default behavior is correct"
|
|
24
|
+
* and call `createGasOracle` without spreading any preset.
|
|
25
|
+
*/
|
|
26
|
+
export const presetForChainId = (chainId) => Object.values(chainPresets).find((preset) => preset.chainId === chainId);
|
|
27
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAe1C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE;QACV,OAAO,EAAE,GAAG;QACZ,aAAa,EAAE,aAAa,CAAC,IAAI;KAClC;CAC6C,CAAA;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAe,EACU,EAAE,CAC3B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Same-nonce EIP-1559 replacement helpers. Pure functions; no I/O.
|
|
3
|
+
*
|
|
4
|
+
* The protocol-replacement-floor math is verified against geth
|
|
5
|
+
* `core/txpool/legacypool/list.go:Add()`, geth `core/txpool/blobpool/
|
|
6
|
+
* config.go`, reth `crates/transaction-pool/src/config.rs`, and PulseChain
|
|
7
|
+
* `gitlab.com/pulsechaincom/go-pulse/master/core/txpool/legacypool/
|
|
8
|
+
* legacypool.go`. The `+1n` term in `minimumReplacementFee` is load-
|
|
9
|
+
* bearing for small `current` values where geth's integer-floor threshold
|
|
10
|
+
* collapses below the strict `old < tx` check.
|
|
11
|
+
*/
|
|
12
|
+
import { TierName, type GasOracleState } from './types.js';
|
|
13
|
+
import type { TxIdentifier } from './mempool.js';
|
|
14
|
+
export declare const ReplacementBumpPercent: {
|
|
15
|
+
/** geth `legacypool.DefaultConfig.PriceBump` — legacy / EIP-2930 / EIP-1559 / EIP-7702. */
|
|
16
|
+
readonly default: 10n;
|
|
17
|
+
/** geth `blobpool.DefaultConfig.PriceBump` — EIP-4844 blob txs. */
|
|
18
|
+
readonly blob: 100n;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Minimum fee required to replace a tx at a given current fee. Per-field
|
|
22
|
+
* primitive — apply once to `maxFeePerGas` and once to
|
|
23
|
+
* `maxPriorityFeePerGas` for an EIP-1559 replacement.
|
|
24
|
+
*
|
|
25
|
+
* Returns `(current * (100 + bump)) / 100 + 1`, where `bump` is `100n`
|
|
26
|
+
* for blob txs and `10n` otherwise. The `+1` clears geth's strict
|
|
27
|
+
* `old < tx` check at small `current` values where the integer-floor
|
|
28
|
+
* threshold collapses (e.g. `current=1`, `floor(1.1)=1`).
|
|
29
|
+
*
|
|
30
|
+
* Unknown future tx-type bytes default to the legacy/1559 +10% bump —
|
|
31
|
+
* the +100% rule is blob-specific.
|
|
32
|
+
*/
|
|
33
|
+
export declare const minimumReplacementFee: (current: bigint, txType: number) => bigint;
|
|
34
|
+
export interface ReplacementGas {
|
|
35
|
+
maxFeePerGas: bigint;
|
|
36
|
+
maxPriorityFeePerGas: bigint;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Compute (maxFeePerGas, maxPriorityFeePerGas) for replacing a 1559 tx.
|
|
40
|
+
* Per-field rule: max(target, protocolFloor). Final guard ensures
|
|
41
|
+
* `result.maxFeePerGas >= result.maxPriorityFeePerGas` so the result is
|
|
42
|
+
* a well-formed tx even on degenerate target inputs.
|
|
43
|
+
*
|
|
44
|
+
* 1559-scoped — for blob replacement use `minimumReplacementFee(_,
|
|
45
|
+
* TxType.blob)` directly per fee field.
|
|
46
|
+
*/
|
|
47
|
+
export declare const bumpForReplacement: (currentGas: ReplacementGas, targetGas: ReplacementGas) => ReplacementGas;
|
|
48
|
+
export declare const BumpStrategy: {
|
|
49
|
+
readonly cheapestThatLands: "cheapestThatLands";
|
|
50
|
+
readonly oneStepFasterThanRecommended: "oneStepFasterThanRecommended";
|
|
51
|
+
readonly instant: "instant";
|
|
52
|
+
};
|
|
53
|
+
export type BumpStrategy = (typeof BumpStrategy)[keyof typeof BumpStrategy];
|
|
54
|
+
export interface RecommendBumpTierOptions {
|
|
55
|
+
/** Default: `BumpStrategy.cheapestThatLands`. */
|
|
56
|
+
strategy?: BumpStrategy;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Pick a tier to bump to for a same-nonce EIP-1559 replacement. The
|
|
60
|
+
* effective floor is `max(protocolFloor, outpaceFloor)`:
|
|
61
|
+
* - protocolFloor = `minimumReplacementFee(stuckTx.priorityTip,
|
|
62
|
+
* TxType.eip1559)` — the geth +10% rule.
|
|
63
|
+
* - outpaceFloor = the tip required to be ranked strictly above every
|
|
64
|
+
* tx currently ahead of `stuckTx.identifier` in
|
|
65
|
+
* `snapshot.mempoolSamples`. Computed by locating stuck's rank via
|
|
66
|
+
* `tipForBlockPosition({ kind: 'aheadOf', tx: identifier })` then
|
|
67
|
+
* querying `{ kind: 'rank', rank: stuckRank - 1n }` to outbid the
|
|
68
|
+
* tx currently just above stuck. When stuck is already at the top
|
|
69
|
+
* of the distribution (or not present), this is `0n` and only the
|
|
70
|
+
* protocol floor applies.
|
|
71
|
+
*
|
|
72
|
+
* Returns `null` when no tier clears the effective floor — the original
|
|
73
|
+
* was already paying above the top of the ladder, or the snapshot has
|
|
74
|
+
* no tip data.
|
|
75
|
+
*/
|
|
76
|
+
export declare const recommendBumpTier: (snapshot: GasOracleState, stuckTx: {
|
|
77
|
+
priorityTip: bigint;
|
|
78
|
+
identifier?: TxIdentifier;
|
|
79
|
+
}, options?: RecommendBumpTierOptions) => TierName | null;
|
|
80
|
+
//# sourceMappingURL=replacement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replacement.d.ts","sourceRoot":"","sources":["../src/replacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAe,QAAQ,EAAU,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,eAAO,MAAM,sBAAsB;IACjC,2FAA2F;;IAE3F,mEAAmE;;CAE3D,CAAA;AAEV;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,MAMF,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,cAAc,EAC1B,WAAW,cAAc,KACxB,cAiBF,CAAA;AAED,eAAO,MAAM,YAAY;;;;CAIf,CAAA;AACV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAA;AAE3E,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,cAAc,EACxB,SAAS;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,YAAY,CAAA;CAAE,EAC3D,UAAS,wBAA6B,KACrC,QAAQ,GAAG,IAmCb,CAAA"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Same-nonce EIP-1559 replacement helpers. Pure functions; no I/O.
|
|
3
|
+
*
|
|
4
|
+
* The protocol-replacement-floor math is verified against geth
|
|
5
|
+
* `core/txpool/legacypool/list.go:Add()`, geth `core/txpool/blobpool/
|
|
6
|
+
* config.go`, reth `crates/transaction-pool/src/config.rs`, and PulseChain
|
|
7
|
+
* `gitlab.com/pulsechaincom/go-pulse/master/core/txpool/legacypool/
|
|
8
|
+
* legacypool.go`. The `+1n` term in `minimumReplacementFee` is load-
|
|
9
|
+
* bearing for small `current` values where geth's integer-floor threshold
|
|
10
|
+
* collapses below the strict `old < tx` check.
|
|
11
|
+
*/
|
|
12
|
+
import { TIER_LADDER, TierName, TxType } from './types.js';
|
|
13
|
+
import { tipForBlockPosition } from './block-position.js';
|
|
14
|
+
export const ReplacementBumpPercent = {
|
|
15
|
+
/** geth `legacypool.DefaultConfig.PriceBump` — legacy / EIP-2930 / EIP-1559 / EIP-7702. */
|
|
16
|
+
default: 10n,
|
|
17
|
+
/** geth `blobpool.DefaultConfig.PriceBump` — EIP-4844 blob txs. */
|
|
18
|
+
blob: 100n,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Minimum fee required to replace a tx at a given current fee. Per-field
|
|
22
|
+
* primitive — apply once to `maxFeePerGas` and once to
|
|
23
|
+
* `maxPriorityFeePerGas` for an EIP-1559 replacement.
|
|
24
|
+
*
|
|
25
|
+
* Returns `(current * (100 + bump)) / 100 + 1`, where `bump` is `100n`
|
|
26
|
+
* for blob txs and `10n` otherwise. The `+1` clears geth's strict
|
|
27
|
+
* `old < tx` check at small `current` values where the integer-floor
|
|
28
|
+
* threshold collapses (e.g. `current=1`, `floor(1.1)=1`).
|
|
29
|
+
*
|
|
30
|
+
* Unknown future tx-type bytes default to the legacy/1559 +10% bump —
|
|
31
|
+
* the +100% rule is blob-specific.
|
|
32
|
+
*/
|
|
33
|
+
export const minimumReplacementFee = (current, txType) => {
|
|
34
|
+
const bump = txType === TxType.blob
|
|
35
|
+
? ReplacementBumpPercent.blob
|
|
36
|
+
: ReplacementBumpPercent.default;
|
|
37
|
+
return (current * (100n + bump)) / 100n + 1n;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Compute (maxFeePerGas, maxPriorityFeePerGas) for replacing a 1559 tx.
|
|
41
|
+
* Per-field rule: max(target, protocolFloor). Final guard ensures
|
|
42
|
+
* `result.maxFeePerGas >= result.maxPriorityFeePerGas` so the result is
|
|
43
|
+
* a well-formed tx even on degenerate target inputs.
|
|
44
|
+
*
|
|
45
|
+
* 1559-scoped — for blob replacement use `minimumReplacementFee(_,
|
|
46
|
+
* TxType.blob)` directly per fee field.
|
|
47
|
+
*/
|
|
48
|
+
export const bumpForReplacement = (currentGas, targetGas) => {
|
|
49
|
+
const maxFeeFloor = minimumReplacementFee(currentGas.maxFeePerGas, TxType.eip1559);
|
|
50
|
+
const priorityFloor = minimumReplacementFee(currentGas.maxPriorityFeePerGas, TxType.eip1559);
|
|
51
|
+
const maxPriorityFeePerGas = targetGas.maxPriorityFeePerGas > priorityFloor
|
|
52
|
+
? targetGas.maxPriorityFeePerGas
|
|
53
|
+
: priorityFloor;
|
|
54
|
+
let maxFeePerGas = targetGas.maxFeePerGas > maxFeeFloor ? targetGas.maxFeePerGas : maxFeeFloor;
|
|
55
|
+
if (maxFeePerGas < maxPriorityFeePerGas)
|
|
56
|
+
maxFeePerGas = maxPriorityFeePerGas;
|
|
57
|
+
return { maxFeePerGas, maxPriorityFeePerGas };
|
|
58
|
+
};
|
|
59
|
+
export const BumpStrategy = {
|
|
60
|
+
cheapestThatLands: 'cheapestThatLands',
|
|
61
|
+
oneStepFasterThanRecommended: 'oneStepFasterThanRecommended',
|
|
62
|
+
instant: 'instant',
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Pick a tier to bump to for a same-nonce EIP-1559 replacement. The
|
|
66
|
+
* effective floor is `max(protocolFloor, outpaceFloor)`:
|
|
67
|
+
* - protocolFloor = `minimumReplacementFee(stuckTx.priorityTip,
|
|
68
|
+
* TxType.eip1559)` — the geth +10% rule.
|
|
69
|
+
* - outpaceFloor = the tip required to be ranked strictly above every
|
|
70
|
+
* tx currently ahead of `stuckTx.identifier` in
|
|
71
|
+
* `snapshot.mempoolSamples`. Computed by locating stuck's rank via
|
|
72
|
+
* `tipForBlockPosition({ kind: 'aheadOf', tx: identifier })` then
|
|
73
|
+
* querying `{ kind: 'rank', rank: stuckRank - 1n }` to outbid the
|
|
74
|
+
* tx currently just above stuck. When stuck is already at the top
|
|
75
|
+
* of the distribution (or not present), this is `0n` and only the
|
|
76
|
+
* protocol floor applies.
|
|
77
|
+
*
|
|
78
|
+
* Returns `null` when no tier clears the effective floor — the original
|
|
79
|
+
* was already paying above the top of the ladder, or the snapshot has
|
|
80
|
+
* no tip data.
|
|
81
|
+
*/
|
|
82
|
+
export const recommendBumpTier = (snapshot, stuckTx, options = {}) => {
|
|
83
|
+
const strategy = options.strategy ?? BumpStrategy.cheapestThatLands;
|
|
84
|
+
const protocolFloor = minimumReplacementFee(stuckTx.priorityTip, TxType.eip1559);
|
|
85
|
+
const outpaceFloor = stuckTx.identifier
|
|
86
|
+
? (() => {
|
|
87
|
+
const stuckPosition = tipForBlockPosition(snapshot.mempoolSamples, {
|
|
88
|
+
kind: 'aheadOf',
|
|
89
|
+
tx: stuckTx.identifier,
|
|
90
|
+
});
|
|
91
|
+
// Stuck not in mempool, or stuck already at rank 0 (no one above).
|
|
92
|
+
if (stuckPosition.pivot === null || stuckPosition.rank === 0n)
|
|
93
|
+
return 0n;
|
|
94
|
+
// Outbid the tx at rank `stuckRank - 1` (the cheapest tx
|
|
95
|
+
// currently ahead of stuck) — landing here is sufficient to
|
|
96
|
+
// outpace every tx currently above stuck.
|
|
97
|
+
return tipForBlockPosition(snapshot.mempoolSamples, {
|
|
98
|
+
kind: 'rank',
|
|
99
|
+
rank: stuckPosition.rank - 1n,
|
|
100
|
+
}).requiredTip;
|
|
101
|
+
})()
|
|
102
|
+
: 0n;
|
|
103
|
+
const floor = protocolFloor > outpaceFloor ? protocolFloor : outpaceFloor;
|
|
104
|
+
const cheapestIndex = TIER_LADDER.findIndex((tier) => snapshot.tiers[tier].maxPriorityFeePerGas > floor);
|
|
105
|
+
if (cheapestIndex === -1)
|
|
106
|
+
return null;
|
|
107
|
+
if (strategy === BumpStrategy.cheapestThatLands)
|
|
108
|
+
return TIER_LADDER[cheapestIndex];
|
|
109
|
+
if (strategy === BumpStrategy.instant)
|
|
110
|
+
return TierName.instant;
|
|
111
|
+
// oneStepFasterThanRecommended
|
|
112
|
+
return TIER_LADDER[Math.min(cheapestIndex + 1, TIER_LADDER.length - 1)];
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=replacement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replacement.js","sourceRoot":"","sources":["../src/replacement.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -46,11 +46,29 @@ export interface TierRecommendation {
|
|
|
46
46
|
gasPrice: bigint;
|
|
47
47
|
maxFeePerBlobGas: bigint | null;
|
|
48
48
|
}
|
|
49
|
-
export
|
|
50
|
-
|
|
49
|
+
export declare const Trend: {
|
|
50
|
+
readonly rising: "rising";
|
|
51
|
+
readonly falling: "falling";
|
|
52
|
+
readonly stable: "stable";
|
|
53
|
+
};
|
|
54
|
+
export type Trend = (typeof Trend)[keyof typeof Trend];
|
|
55
|
+
export declare const TierName: {
|
|
56
|
+
readonly slow: "slow";
|
|
57
|
+
readonly standard: "standard";
|
|
58
|
+
readonly fast: "fast";
|
|
59
|
+
readonly instant: "instant";
|
|
60
|
+
};
|
|
61
|
+
export type TierName = (typeof TierName)[keyof typeof TierName];
|
|
62
|
+
/**
|
|
63
|
+
* Canonical tier ordering, slow → instant. Used by helpers that walk the
|
|
64
|
+
* tier ladder (e.g., `classifyTip` finds the highest tier whose floor a
|
|
65
|
+
* tip clears; `recommendBumpTier` finds the cheapest tier that clears
|
|
66
|
+
* the protocol floor + outpace floor). Ordering is load-bearing.
|
|
67
|
+
*/
|
|
68
|
+
export declare const TIER_LADDER: readonly TierName[];
|
|
51
69
|
export interface MempoolStats {
|
|
52
|
-
pendingCount:
|
|
53
|
-
queuedCount:
|
|
70
|
+
pendingCount: bigint;
|
|
71
|
+
queuedCount: bigint;
|
|
54
72
|
/** Sum of `tx.gas` across all pending txs — congestion proxy. */
|
|
55
73
|
pendingGasDemand: bigint;
|
|
56
74
|
/** Latest block's gas limit, useful for "pending demand vs. block capacity". */
|
|
@@ -104,7 +122,24 @@ export interface TipSample {
|
|
|
104
122
|
* Future cutoffs can be added (e.g. `'eip4844'` for blob-only priority)
|
|
105
123
|
* without re-interpreting existing values.
|
|
106
124
|
*/
|
|
107
|
-
export
|
|
125
|
+
export declare const PriorityModel: {
|
|
126
|
+
readonly flat: "flat";
|
|
127
|
+
readonly eip1559: "eip1559";
|
|
128
|
+
};
|
|
129
|
+
export type PriorityModel = (typeof PriorityModel)[keyof typeof PriorityModel];
|
|
130
|
+
/**
|
|
131
|
+
* EIP-2718 transaction type bytes. Identifier values — never participate
|
|
132
|
+
* in arithmetic, so they stay `number` per the package-wide bigint
|
|
133
|
+
* carve-out.
|
|
134
|
+
*/
|
|
135
|
+
export declare const TxType: {
|
|
136
|
+
readonly legacy: 0;
|
|
137
|
+
readonly eip2930: 1;
|
|
138
|
+
readonly eip1559: 2;
|
|
139
|
+
readonly blob: 3;
|
|
140
|
+
readonly setCodeAuthorization: 4;
|
|
141
|
+
};
|
|
142
|
+
export type TxType = (typeof TxType)[keyof typeof TxType];
|
|
108
143
|
/**
|
|
109
144
|
* Producer-side toggles: which RPCs the oracle calls upstream each cycle.
|
|
110
145
|
*
|
|
@@ -162,6 +197,15 @@ export interface GasOracleState {
|
|
|
162
197
|
* §7-§9.
|
|
163
198
|
*/
|
|
164
199
|
ring: BlockSample[];
|
|
200
|
+
/**
|
|
201
|
+
* Live mempool samples used to compute this snapshot's tiers.
|
|
202
|
+
* Producer-local — wire publishers should strip before serializing
|
|
203
|
+
* (same convention as `ring`). Consumed by replacement / classification
|
|
204
|
+
* helpers (e.g., `recommendBumpTier`'s outpace correction) for live-
|
|
205
|
+
* distribution analysis without re-fetching mempool data. Each poll
|
|
206
|
+
* replaces this field; no cumulative growth.
|
|
207
|
+
*/
|
|
208
|
+
mempoolSamples: TipSample[];
|
|
165
209
|
lastPublishedTips?: Record<TierName, bigint>;
|
|
166
210
|
lastPublishedBlockNumber?: bigint;
|
|
167
211
|
}
|