@antseed/ants 0.1.4 → 0.1.6
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/dist/ants-web/assets/Arc-VDBY7LNS-BChRXCXW.js +1 -0
- package/dist/ants-web/assets/Brave-BRAKJXDS-mq-Xo37j.js +1 -0
- package/dist/ants-web/assets/Browser-76IHF3Y2-BMhRaC5Z.js +1 -0
- package/dist/ants-web/assets/Chrome-65Q5P54Y-DR9MQEVr.js +1 -0
- package/dist/ants-web/assets/Edge-XSPUTORV-DEoZslQE.js +1 -0
- package/dist/ants-web/assets/Firefox-AAHGJQIP-Bp_Hm04m.js +1 -0
- package/dist/ants-web/assets/Linux-OO4TNCLJ-B0aw93n9.js +1 -0
- package/dist/ants-web/assets/Macos-MW4AE7LN-Vvm8Drw3.js +1 -0
- package/dist/ants-web/assets/Opera-KQZLSACL-Cwv5MDFy.js +1 -0
- package/dist/ants-web/assets/Safari-ZPL37GXR-C4Ggg6rz.js +1 -0
- package/dist/ants-web/assets/Windows-PPTHQER6-BlyV2p7Y.js +1 -0
- package/dist/ants-web/assets/add-1qQ_SVL6.js +15 -0
- package/dist/ants-web/assets/all-wallets-D0QF065k.js +6 -0
- package/dist/ants-web/assets/apechain-SX5YFU6N-q5qBv-mp.js +1 -0
- package/dist/ants-web/assets/app-store-j-2thKGl.js +17 -0
- package/dist/ants-web/assets/apple-CCcInWVX.js +18 -0
- package/dist/ants-web/assets/ar_AR-44JUQ6EW-BMX-am0v.js +1487 -0
- package/dist/ants-web/assets/arbitrum-WURIBY6W-CqVkHBr5.js +1 -0
- package/dist/ants-web/assets/arrow-bottom-DVZa97G2.js +8 -0
- package/dist/ants-web/assets/arrow-bottom-circle-tt2k5BWG.js +11 -0
- package/dist/ants-web/assets/arrow-left-DnjqXMe0.js +8 -0
- package/dist/ants-web/assets/arrow-right-De8QMymS.js +8 -0
- package/dist/ants-web/assets/arrow-top-BS2oLt_x.js +8 -0
- package/dist/ants-web/assets/assets-Q6ZU7ZJ5-P8HioiAD.js +1 -0
- package/dist/ants-web/assets/avalanche-KOMJD3XY-Dsn_JPR4.js +1 -0
- package/dist/ants-web/assets/bank-DIxCskFM.js +14 -0
- package/dist/ants-web/assets/base-OAXLRA4F-CoYTVIiL.js +1 -0
- package/dist/ants-web/assets/baseAccount-44UITRK7-CsjdbWCf.js +1 -0
- package/dist/ants-web/assets/basic-D0Dg7j2v.js +2128 -0
- package/dist/ants-web/assets/berachain-NJECWIVC-DumxnFvf.js +1 -0
- package/dist/ants-web/assets/blast-V555OVXZ-BbhJh1tj.js +1 -0
- package/dist/ants-web/assets/browser-n9VVPree.js +14 -0
- package/dist/ants-web/assets/bsc-N647EYR2-B2nLKXWV.js +1 -0
- package/dist/ants-web/assets/card-Bl7AHEuE.js +14 -0
- package/dist/ants-web/assets/ccip-C_ifxkiT.js +1 -0
- package/dist/ants-web/assets/celo-GEP4TUHG-CenIBYLU.js +1 -0
- package/dist/ants-web/assets/checkmark-DXB1SsFx.js +11 -0
- package/dist/ants-web/assets/checkmark-bold-CIMnw7st.js +8 -0
- package/dist/ants-web/assets/chevron-bottom-DGkVb8CY.js +8 -0
- package/dist/ants-web/assets/chevron-left-D8vC6sW_.js +8 -0
- package/dist/ants-web/assets/chevron-right-CP8tyhU4.js +8 -0
- package/dist/ants-web/assets/chevron-top-DUqp6O8b.js +8 -0
- package/dist/ants-web/assets/chrome-store-CDk6Jfiv.js +61 -0
- package/dist/ants-web/assets/clock-t0Dwo5ck.js +8 -0
- package/dist/ants-web/assets/close-BiTlv6FX.js +8 -0
- package/dist/ants-web/assets/coinPlaceholder-PJZCh_De.js +8 -0
- package/dist/ants-web/assets/compass-CctP2ZVM.js +8 -0
- package/dist/ants-web/assets/connect-UA7M4XW6-IY3X6Bmr.js +1 -0
- package/dist/ants-web/assets/copy-b1i5dSZT.js +15 -0
- package/dist/ants-web/assets/core-4w9H32as.js +908 -0
- package/dist/ants-web/assets/create-FASO7PVG-D_rvSpre.js +1 -0
- package/dist/ants-web/assets/cronos-HJPAQTAE-BEOvlOC4.js +1 -0
- package/dist/ants-web/assets/cursor-kLCZuRWK.js +3 -0
- package/dist/ants-web/assets/cursor-transparent-C1IxvCBs.js +12 -0
- package/dist/ants-web/assets/de_DE-PYAO5YD6-BWlqPWgO.js +1487 -0
- package/dist/ants-web/assets/degen-FQQ4XGHB-CeHTs88l.js +1 -0
- package/dist/ants-web/assets/desktop-Qa_41eha.js +9 -0
- package/dist/ants-web/assets/disconnect-7QBZVVG8.js +8 -0
- package/dist/ants-web/assets/discord-DuRr0OMy.js +17 -0
- package/dist/ants-web/assets/es_419-HRGOJ6VT-D-qzxUM-.js +1487 -0
- package/dist/ants-web/assets/ethereum-RGGVA4PY-SWGOlkuk.js +1 -0
- package/dist/ants-web/assets/etherscan-BOImzSgC.js +6 -0
- package/dist/ants-web/assets/events-DQ172AOg.js +1 -0
- package/dist/ants-web/assets/exclamation-triangle-evZ54TSt.js +4 -0
- package/dist/ants-web/assets/extension-YSvzNEgu.js +8 -0
- package/dist/ants-web/assets/external-link-BukU3aK3.js +8 -0
- package/dist/ants-web/assets/facebook-WJZQGI9M.js +26 -0
- package/dist/ants-web/assets/farcaster-Dt0XRvlP.js +12 -0
- package/dist/ants-web/assets/filters-CFC5g--u.js +8 -0
- package/dist/ants-web/assets/flow-5FQJFCTK-CUie2reO.js +1 -0
- package/dist/ants-web/assets/fr_FR-IGGVC6RM-D8LpUM75.js +1487 -0
- package/dist/ants-web/assets/github-Bhz0AnGj.js +18 -0
- package/dist/ants-web/assets/gnosis-37ZC4RBL-B137OtHZ.js +1 -0
- package/dist/ants-web/assets/google-CGzSUXjP.js +18 -0
- package/dist/ants-web/assets/gravity-J5YQHTYH-Bj6B0uod.js +1 -0
- package/dist/ants-web/assets/hardhat-TX56IT5N-CV1FY-wE.js +1 -0
- package/dist/ants-web/assets/help-circle-BoGPtVJY.js +12 -0
- package/dist/ants-web/assets/hi_IN-XSKAA3MF-C3QUpWyP.js +1487 -0
- package/dist/ants-web/assets/hyperevm-VKPAA4SA-CHwraEsx.js +1 -0
- package/dist/ants-web/assets/id-ir8rS0J_.js +12 -0
- package/dist/ants-web/assets/id_ID-KUOB4UAL-K9y-nRWm.js +1487 -0
- package/dist/ants-web/assets/image-DXBUHwz_.js +4 -0
- package/dist/ants-web/assets/index-9ALlRD6p.css +1 -0
- package/dist/ants-web/assets/index-B7p3jPAJ.js +1 -0
- package/dist/ants-web/assets/index-BqWNkBzB.js +395 -0
- package/dist/ants-web/assets/index-C-I4ROfT.js +16 -0
- package/dist/ants-web/assets/index-Chq8yV_g.js +47 -0
- package/dist/ants-web/assets/index-Ci5bF__2.js +1729 -0
- package/dist/ants-web/assets/index-kzlEvkEN.js +1 -0
- package/dist/ants-web/assets/index.es-D1GdDJUC.js +39 -0
- package/dist/ants-web/assets/info-DzGq_QPQ.js +3 -0
- package/dist/ants-web/assets/info-circle-z91TqQxH.js +12 -0
- package/dist/ants-web/assets/ink-FZMYZWHG-62p-5IK5.js +1 -0
- package/dist/ants-web/assets/ja_JP-4WRQ63RX-Ct5pF4ug.js +1487 -0
- package/dist/ants-web/assets/kaia-65D2U3PU-JmuLQ4gC.js +1 -0
- package/dist/ants-web/assets/ko_KR-I2K7AIEP-B5gw8Mwb.js +1487 -0
- package/dist/ants-web/assets/lightbulb-CgYwiQYs.js +3 -0
- package/dist/ants-web/assets/linea-QRMVQ5DY-DuI3vv0d.js +1 -0
- package/dist/ants-web/assets/login-UP3DZBGS-Db_wM5oQ.js +1 -0
- package/dist/ants-web/assets/mail-FLPFIbqi.js +8 -0
- package/dist/ants-web/assets/manta-SI27YFEJ-CpVOKa06.js +1 -0
- package/dist/ants-web/assets/mantle-CKIUT334-DR2WgqzU.js +1 -0
- package/dist/ants-web/assets/metaMaskWallet-SITXT2FV-BlemcphV.js +1 -0
- package/dist/ants-web/assets/metamask-sdk-QG4PtQco.js +542 -0
- package/dist/ants-web/assets/mobile--kHpa5NK.js +9 -0
- package/dist/ants-web/assets/monad-4KWC6TSS-DVXSkpiz.js +1 -0
- package/dist/ants-web/assets/more-CJbReLy0.js +11 -0
- package/dist/ants-web/assets/ms_MY-6VZW6Q3Z-BtFD07hR.js +1487 -0
- package/dist/ants-web/assets/network-placeholder-BfSizFBN.js +14 -0
- package/dist/ants-web/assets/nftPlaceholder-BTfly2G8.js +8 -0
- package/dist/ants-web/assets/off-DCMXa6Y2.js +8 -0
- package/dist/ants-web/assets/optimism-HAF2GUT7-ec6Nqxs9.js +1 -0
- package/dist/ants-web/assets/play-store-CbbevixE.js +32 -0
- package/dist/ants-web/assets/plus-BxINT2r_.js +13 -0
- package/dist/ants-web/assets/polygon-WW6ZI7PM-DXlmm4L1.js +1 -0
- package/dist/ants-web/assets/pt_BR-N3XOZ4SV-CvVpfsHb.js +1487 -0
- package/dist/ants-web/assets/qr-code-CMEsvGrE.js +6 -0
- package/dist/ants-web/assets/rainbowWallet-O26YNBMX-DUhYus-9.js +1 -0
- package/dist/ants-web/assets/recycle-horizontal-BldRTXPT.js +9 -0
- package/dist/ants-web/assets/refresh-82vLCcdB.js +8 -0
- package/dist/ants-web/assets/refresh-S4T5V5GX-CwqIaaxK.js +1 -0
- package/dist/ants-web/assets/reown-logo-BPGalyzg.js +12 -0
- package/dist/ants-web/assets/ronin-EMCPYXZT-N-QBHZdV.js +1 -0
- package/dist/ants-web/assets/ru_RU-IITAPRET-DOj6Jzj7.js +1487 -0
- package/dist/ants-web/assets/safeWallet-5MNKTR5Z-D-5imDLD.js +1 -0
- package/dist/ants-web/assets/sanko-RHQYXGM5-OX010CbN.js +1 -0
- package/dist/ants-web/assets/scan-4UYSQ56Q-CjMz6-XC.js +1 -0
- package/dist/ants-web/assets/scroll-5OBGQVOV-DJFECiai.js +1 -0
- package/dist/ants-web/assets/search-CADsyV1c.js +8 -0
- package/dist/ants-web/assets/secp256k1-B5byVYSZ.js +1 -0
- package/dist/ants-web/assets/secp256k1-Cb4vPU9D.js +1 -0
- package/dist/ants-web/assets/send-DyAisqGO.js +15 -0
- package/dist/ants-web/assets/sign-A7IJEUT5-CGsRnPrd.js +1 -0
- package/dist/ants-web/assets/superposition-HG6MMR2Y-bRkgatRO.js +1 -0
- package/dist/ants-web/assets/swapHorizontal-BfHwXZPT.js +8 -0
- package/dist/ants-web/assets/swapHorizontalBold-FIoCjqnp.js +8 -0
- package/dist/ants-web/assets/swapHorizontalMedium-CzDDCY_G.js +16 -0
- package/dist/ants-web/assets/swapHorizontalRoundedBold-CvMRJeWj.js +8 -0
- package/dist/ants-web/assets/swapVertical-BgSezaow.js +8 -0
- package/dist/ants-web/assets/telegram-CsMNhXCs.js +16 -0
- package/dist/ants-web/assets/th_TH-3ZQCKCQE-BcHUN2Q4.js +1487 -0
- package/dist/ants-web/assets/three-dots-DYf4gmVW.js +5 -0
- package/dist/ants-web/assets/tr_TR-QUPUGMUF-CwpF6ZFn.js +1487 -0
- package/dist/ants-web/assets/twitch-BtBr-NTg.js +18 -0
- package/dist/ants-web/assets/twitterIcon-BmRf6M77.js +6 -0
- package/dist/ants-web/assets/uk_UA-SSN6SV5E-IlYYyRC6.js +1487 -0
- package/dist/ants-web/assets/unichain-C5BWO2ZY-BfguYsnu.js +1 -0
- package/dist/ants-web/assets/verify-cxA8gdP6.js +8 -0
- package/dist/ants-web/assets/verify-filled-DHnnW8EE.js +8 -0
- package/dist/ants-web/assets/vi_VN-7BUVRNYY-CZ9S75qZ.js +1487 -0
- package/dist/ants-web/assets/w3m-modal-D1ucMOAa.js +642 -0
- package/dist/ants-web/assets/wallet-BT4Fue1R.js +8 -0
- package/dist/ants-web/assets/wallet-placeholder-C2J5s6Yp.js +14 -0
- package/dist/ants-web/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js +1 -0
- package/dist/ants-web/assets/walletconnect-B5k8iJl-.js +30 -0
- package/dist/ants-web/assets/warning-circle-9rNSUSsX.js +12 -0
- package/dist/ants-web/assets/x-CpRc85jR.js +12 -0
- package/dist/ants-web/assets/xdc-KJ3TDBYO-DNV6zchh.js +1 -0
- package/dist/ants-web/assets/zetachain-TLDS5IPW-Udhyw16T.js +1 -0
- package/dist/ants-web/assets/zh_CN-HJBN674C-Baf0GEeT.js +1487 -0
- package/dist/ants-web/assets/zh_HK-JW3WLRKE-VztJKXL5.js +1487 -0
- package/dist/ants-web/assets/zh_TW-VNNRNXY7-aWfg7Qp4.js +1487 -0
- package/dist/ants-web/assets/zksync-DH7HK5U4-Dt4usFw6.js +1 -0
- package/dist/ants-web/assets/zora-FYL5H3IO-iB4wygST.js +1 -0
- package/dist/ants-web/index.html +2 -2
- package/dist/api-types.d.ts +168 -6
- package/dist/browser-signer.d.ts +30 -0
- package/dist/browser-signer.js +189 -0
- package/dist/browser-signer.js.map +1 -0
- package/dist/jobs.d.ts +10 -3
- package/dist/jobs.js +97 -20
- package/dist/jobs.js.map +1 -1
- package/dist/position-actions.d.ts +13 -0
- package/dist/position-actions.js +25 -0
- package/dist/position-actions.js.map +1 -0
- package/dist/routes.d.ts +7 -0
- package/dist/routes.js +63 -5
- package/dist/routes.js.map +1 -1
- package/dist/server.d.ts +8 -0
- package/dist/server.js +157 -12
- package/dist/server.js.map +1 -1
- package/dist/service/context.d.ts +13 -2
- package/dist/service/context.js +35 -4
- package/dist/service/context.js.map +1 -1
- package/dist/service/display-snapshot.d.ts +28 -0
- package/dist/service/display-snapshot.js +144 -0
- package/dist/service/display-snapshot.js.map +1 -0
- package/dist/service/emissions.js +11 -19
- package/dist/service/emissions.js.map +1 -1
- package/dist/service/explorer.js +2 -1
- package/dist/service/explorer.js.map +1 -1
- package/dist/service/format.d.ts +1 -1
- package/dist/service/format.js +2 -0
- package/dist/service/format.js.map +1 -1
- package/dist/service/indexed-wallet.d.ts +7 -0
- package/dist/service/indexed-wallet.js +58 -0
- package/dist/service/indexed-wallet.js.map +1 -0
- package/dist/service/indexer.d.ts +32 -3
- package/dist/service/indexer.js +64 -8
- package/dist/service/indexer.js.map +1 -1
- package/dist/service/legacy-payout.d.ts +3 -0
- package/dist/service/legacy-payout.js +32 -0
- package/dist/service/legacy-payout.js.map +1 -0
- package/dist/service/network.d.ts +5 -0
- package/dist/service/network.js +185 -0
- package/dist/service/network.js.map +1 -0
- package/dist/service/overview-reads.d.ts +30 -0
- package/dist/service/overview-reads.js +69 -0
- package/dist/service/overview-reads.js.map +1 -0
- package/dist/service/overview.js +14 -36
- package/dist/service/overview.js.map +1 -1
- package/dist/service/pool-merge.d.ts +2 -1
- package/dist/service/pool-merge.js +11 -4
- package/dist/service/pool-merge.js.map +1 -1
- package/dist/service/pools.d.ts +22 -1
- package/dist/service/pools.js +257 -98
- package/dist/service/pools.js.map +1 -1
- package/dist/service/position-feed.d.ts +73 -0
- package/dist/service/position-feed.js +173 -0
- package/dist/service/position-feed.js.map +1 -0
- package/dist/service/positions.d.ts +3 -5
- package/dist/service/positions.js +155 -93
- package/dist/service/positions.js.map +1 -1
- package/dist/service/rewards.d.ts +1 -0
- package/dist/service/rewards.js +117 -56
- package/dist/service/rewards.js.map +1 -1
- package/dist/service/rpc-provider.d.ts +3 -0
- package/dist/service/rpc-provider.js +32 -3
- package/dist/service/rpc-provider.js.map +1 -1
- package/dist/service/seller-models.d.ts +2 -0
- package/dist/service/seller-models.js +94 -0
- package/dist/service/seller-models.js.map +1 -0
- package/dist/service/seller.js +33 -30
- package/dist/service/seller.js.map +1 -1
- package/dist/service/stake-eligibility.d.ts +6 -0
- package/dist/service/stake-eligibility.js +50 -0
- package/dist/service/stake-eligibility.js.map +1 -0
- package/dist/service/usage.js +5 -13
- package/dist/service/usage.js.map +1 -1
- package/dist/service/yield.d.ts +3 -0
- package/dist/service/yield.js +12 -0
- package/dist/service/yield.js.map +1 -0
- package/dist/view-cache.d.ts +5 -10
- package/dist/view-cache.js +12 -14
- package/dist/view-cache.js.map +1 -1
- package/dist/wallet-errors.d.ts +9 -0
- package/dist/wallet-errors.js +32 -0
- package/dist/wallet-errors.js.map +1 -0
- package/package.json +8 -3
- package/dist/ants-web/assets/index-BunPfgXh.css +0 -1
- package/dist/ants-web/assets/index-zCPoF694.js +0 -40
package/dist/service/rewards.js
CHANGED
|
@@ -1,39 +1,38 @@
|
|
|
1
1
|
import { ZeroAddress } from 'ethers';
|
|
2
2
|
import { claimEpochRewards, pendingEpochRewards, previewPoolRewards } from '@antseed/node/payments';
|
|
3
|
+
import { indexedWalletRewards } from './indexed-wallet.js';
|
|
3
4
|
import { closedPositionIds } from './positions.js';
|
|
5
|
+
import { legacySellerPayout } from './legacy-payout.js';
|
|
4
6
|
import { IndexerError } from './indexer.js';
|
|
5
7
|
import { formatAnts } from './format.js';
|
|
6
8
|
import { toJson } from './json.js';
|
|
7
9
|
import { assertAgentId, assertEpochs, assertPositiveIds, silentReporter } from './steps.js';
|
|
8
10
|
const MAX_EPOCH_BREAKDOWN = 64;
|
|
9
|
-
async function safe(read, fallback) {
|
|
10
|
-
try {
|
|
11
|
-
return await read();
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return fallback;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
11
|
function sameAddress(a, b) {
|
|
18
12
|
return !!a && !!b && a.toLowerCase() === b.toLowerCase();
|
|
19
13
|
}
|
|
20
14
|
async function agentIdOf(ctx) {
|
|
21
15
|
const stack = await ctx.stack();
|
|
22
16
|
const registry = ctx.sellerRegistry();
|
|
23
|
-
const fromRegistry = registry ? await
|
|
17
|
+
const fromRegistry = registry ? await registry.getAgentId(ctx.address) : 0;
|
|
24
18
|
if (fromRegistry)
|
|
25
19
|
return fromRegistry;
|
|
26
20
|
const legacy = ctx.legacyStakingAt(stack.legacyStaking);
|
|
27
|
-
return legacy ?
|
|
21
|
+
return legacy ? legacy.getAgentId(ctx.address) : 0;
|
|
28
22
|
}
|
|
29
23
|
/** Recognized epochs in which this wallet has indexed buyer or seller points; all of them without an indexer. */
|
|
30
|
-
async function usageEpochsOf(ctx, recognized) {
|
|
24
|
+
async function usageEpochsOf(ctx, recognized, currentEpoch) {
|
|
31
25
|
const indexer = ctx.indexer();
|
|
32
26
|
if (!indexer || recognized.length === 0)
|
|
33
27
|
return recognized;
|
|
28
|
+
// The indexer counts epochs back from the current one, so the window must reach the earliest recognized epoch.
|
|
29
|
+
const window = currentEpoch - Math.min(...recognized) + 1;
|
|
34
30
|
try {
|
|
35
|
-
const participant =
|
|
36
|
-
|
|
31
|
+
const participant = sameAddress(ctx.address, ZeroAddress)
|
|
32
|
+
? { seller: [], buyer: [] }
|
|
33
|
+
: await indexer.participant(ctx.address, window);
|
|
34
|
+
const buyer = ctx.address.toLowerCase() === ctx.buyerAddress.toLowerCase() ? participant : await indexer.participant(ctx.buyerAddress, window);
|
|
35
|
+
const active = new Set([...participant.seller.map((row) => row.epoch), ...buyer.buyer.map((row) => row.epoch)]);
|
|
37
36
|
return recognized.filter((epoch) => active.has(epoch));
|
|
38
37
|
}
|
|
39
38
|
catch (error) {
|
|
@@ -46,7 +45,7 @@ async function buyerOperator(ctx) {
|
|
|
46
45
|
const deposits = ctx.deposits();
|
|
47
46
|
if (!deposits)
|
|
48
47
|
return null;
|
|
49
|
-
const operator = await
|
|
48
|
+
const operator = await deposits.getOperator(ctx.buyerAddress);
|
|
50
49
|
return sameAddress(operator, ZeroAddress) ? null : operator;
|
|
51
50
|
}
|
|
52
51
|
export async function rewards(ctx) {
|
|
@@ -58,31 +57,56 @@ export async function rewards(ctx) {
|
|
|
58
57
|
const usageRewards = ctx.usageRewards();
|
|
59
58
|
const legacy = ctx.legacyEmissionsAt(stack.legacyEmissions);
|
|
60
59
|
const locked = ctx.lockedPoolAt(stack.lockedRewardsPool);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
// A browser session knows its originating buyer before a signing wallet connects.
|
|
61
|
+
// Read that buyer only; do not query positions or rewards for the zero address.
|
|
62
|
+
const walletConnected = !sameAddress(ctx.address, ZeroAddress);
|
|
63
|
+
const agentId = walletConnected ? await agentIdOf(ctx) : 0;
|
|
64
|
+
// Indexed reward failures stay unavailable; the no-indexer path retains live previews.
|
|
65
|
+
let historySource;
|
|
66
|
+
let stakerSource;
|
|
67
|
+
let stakerPositions = [];
|
|
68
|
+
let stakerAvailable = true;
|
|
69
|
+
if (walletConnected && pools && poolRewards) {
|
|
70
|
+
if (ctx.indexer()?.rewardPositions) {
|
|
71
|
+
try {
|
|
72
|
+
const snapshot = await indexedWalletRewards(ctx, stack.currentEpoch);
|
|
73
|
+
historySource = 'indexer';
|
|
74
|
+
stakerSource = { indexedBlock: snapshot.source.indexedBlock, indexedAt: snapshot.source.indexedAt };
|
|
75
|
+
stakerPositions = snapshot.positions.map(row => ({ id: row.id, agentId: row.agentId, amount: BigInt(row.rewards.pending), closedAtEpoch: row.closedAtEpoch }));
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
stakerAvailable = false;
|
|
79
|
+
stakerSource = { error: error instanceof Error ? error.message : String(error) };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const closed = await closedPositionIds(ctx);
|
|
84
|
+
historySource = closed.source;
|
|
85
|
+
stakerPositions = await previewPoolRewards(pools, poolRewards, ctx.address, undefined, { includeIds: closed.ids });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
66
88
|
const stakerTotal = stakerPositions.reduce((sum, position) => sum + position.amount, 0n);
|
|
67
89
|
const sellerEpochs = [];
|
|
68
90
|
let sellerTotal = 0n;
|
|
69
91
|
const buyerEpochs = [];
|
|
70
92
|
let buyerTotal = 0n;
|
|
71
93
|
if (stack.phase === 'active' && usageAccounting && epochs.recognized.length > 0) {
|
|
72
|
-
const pending =
|
|
94
|
+
const pending = walletConnected
|
|
95
|
+
? await pendingEpochRewards(epochs.recognized, async (batch) => (await usageAccounting.pendingEmissions(ctx.address, batch)).seller)
|
|
96
|
+
: 0n;
|
|
73
97
|
sellerTotal = pending;
|
|
74
98
|
// Only epochs where this wallet actually earned points are checked per
|
|
75
99
|
// epoch; the indexer knows which, so the loop stays bounded.
|
|
76
|
-
const candidates = await usageEpochsOf(ctx, epochs.recognized);
|
|
100
|
+
const candidates = await usageEpochsOf(ctx, epochs.recognized, stack.currentEpoch);
|
|
77
101
|
if (usageRewards && candidates.length <= MAX_EPOCH_BREAKDOWN) {
|
|
78
102
|
const breakdown = await Promise.all(candidates.map(async (epoch) => {
|
|
79
103
|
const [sellerClaimed, buyerClaimed] = await Promise.all([
|
|
80
|
-
agentId ?
|
|
81
|
-
|
|
104
|
+
agentId ? usageRewards.agentEpochClaimed(agentId, epoch) : Promise.resolve(false),
|
|
105
|
+
usageRewards.buyerEpochClaimed(ctx.buyerAddress, epoch),
|
|
82
106
|
]);
|
|
83
107
|
const [sellerAmount, buyerAmount] = await Promise.all([
|
|
84
|
-
agentId && !sellerClaimed ?
|
|
85
|
-
buyerClaimed ? Promise.resolve(0n) :
|
|
108
|
+
agentId && !sellerClaimed ? usageRewards.pendingAgentReward(agentId, epoch) : Promise.resolve(0n),
|
|
109
|
+
buyerClaimed ? Promise.resolve(0n) : usageRewards.pendingBuyerReward(ctx.buyerAddress, epoch),
|
|
86
110
|
]);
|
|
87
111
|
return { epoch, sellerAmount, sellerClaimed, buyerAmount, buyerClaimed };
|
|
88
112
|
}));
|
|
@@ -96,45 +120,65 @@ export async function rewards(ctx) {
|
|
|
96
120
|
}
|
|
97
121
|
else if (usageRewards) {
|
|
98
122
|
for (const epoch of candidates) {
|
|
99
|
-
if (await
|
|
123
|
+
if (await usageRewards.buyerEpochClaimed(ctx.buyerAddress, epoch))
|
|
100
124
|
continue;
|
|
101
|
-
buyerTotal += await
|
|
125
|
+
buyerTotal += await usageRewards.pendingBuyerReward(ctx.buyerAddress, epoch);
|
|
102
126
|
}
|
|
103
127
|
}
|
|
104
128
|
}
|
|
105
129
|
const operator = await buyerOperator(ctx);
|
|
130
|
+
const walletAddress = ctx.signer ? await ctx.signer.getAddress() : ctx.address;
|
|
106
131
|
let legacySeller = 0n;
|
|
107
132
|
let legacyBuyer = 0n;
|
|
108
133
|
if (legacy && epochs.legacy.length > 0) {
|
|
109
|
-
const pending = await
|
|
134
|
+
const pending = await pendingEpochRewards(epochs.legacy, async (batch) => {
|
|
135
|
+
if (!walletConnected) {
|
|
136
|
+
legacyBuyer += (await legacy.pendingEmissions(ctx.buyerAddress, batch)).buyer;
|
|
137
|
+
return 0n;
|
|
138
|
+
}
|
|
110
139
|
const result = await legacy.pendingEmissions(ctx.address, batch);
|
|
111
|
-
legacyBuyer += result.buyer;
|
|
140
|
+
legacyBuyer += ctx.buyerAddress.toLowerCase() === ctx.address.toLowerCase() ? result.buyer : (await legacy.pendingEmissions(ctx.buyerAddress, batch)).buyer;
|
|
112
141
|
return result.seller;
|
|
113
|
-
})
|
|
142
|
+
});
|
|
114
143
|
legacySeller = pending;
|
|
115
144
|
}
|
|
116
|
-
const lockedInfo = locked ? await
|
|
145
|
+
const lockedInfo = walletConnected && locked ? await locked.claimable(ctx.address) : { locked: 0n, claimable: 0n, policy: ZeroAddress };
|
|
146
|
+
const sellerPayout = legacySeller > 0n ? await legacySellerPayout(ctx, stack.legacyEmissions) : undefined;
|
|
117
147
|
const total = stakerTotal + sellerTotal + buyerTotal + legacySeller + legacyBuyer + lockedInfo.claimable;
|
|
118
148
|
return toJson({
|
|
149
|
+
scope: walletConnected ? 'all' : 'buyer',
|
|
119
150
|
currentEpoch: stack.currentEpoch,
|
|
151
|
+
historySource,
|
|
120
152
|
firstRewardedEpoch: stack.effectiveEpoch,
|
|
121
153
|
staker: {
|
|
122
|
-
total: stakerTotal.toString(),
|
|
154
|
+
total: stakerAvailable ? stakerTotal.toString() : null,
|
|
155
|
+
...(stakerSource ? { source: stakerSource } : {}),
|
|
123
156
|
positions: stakerPositions.filter((position) => position.amount > 0n).map((position) => ({ id: position.id, agentId: position.agentId, amount: position.amount.toString(), closed: position.closedAtEpoch !== 0 })),
|
|
124
157
|
},
|
|
125
158
|
sellerUsage: { total: sellerTotal.toString(), agentId, epochs: sellerEpochs, claimable: stack.phase === 'active' && agentId !== 0 },
|
|
126
159
|
buyerUsage: {
|
|
127
160
|
total: buyerTotal.toString(), epochs: buyerEpochs, operator,
|
|
128
|
-
claimable: stack.phase === 'active' && sameAddress(operator,
|
|
161
|
+
claimable: stack.phase === 'active' && sameAddress(operator, walletAddress), recipient: operator,
|
|
129
162
|
},
|
|
130
|
-
legacy: { seller: legacySeller.toString(), buyer: legacyBuyer.toString(), contract: stack.legacyEmissions, buyerClaimable: sameAddress(operator,
|
|
163
|
+
legacy: { seller: legacySeller.toString(), buyer: legacyBuyer.toString(), contract: stack.legacyEmissions, buyerClaimable: sameAddress(operator, walletAddress), sellerPayout },
|
|
131
164
|
locked: {
|
|
132
165
|
locked: lockedInfo.locked.toString(), claimable: lockedInfo.claimable.toString(),
|
|
133
166
|
policy: sameAddress(lockedInfo.policy, ZeroAddress) ? null : lockedInfo.policy, pool: stack.lockedRewardsPool,
|
|
134
167
|
},
|
|
135
|
-
total: total.toString(),
|
|
168
|
+
total: stakerAvailable ? total.toString() : null,
|
|
136
169
|
});
|
|
137
170
|
}
|
|
171
|
+
async function rewardCandidateIds(ctx) {
|
|
172
|
+
if (ctx.indexer()?.rewardPositions) {
|
|
173
|
+
try {
|
|
174
|
+
const snapshot = await indexedWalletRewards(ctx, (await ctx.stack()).currentEpoch, true);
|
|
175
|
+
const local = [...ctx.localPositionIds].filter(([, owner]) => owner.toLowerCase() === ctx.address.toLowerCase()).map(([id]) => id);
|
|
176
|
+
return [...new Set([...snapshot.positions.map(row => row.id), ...local])];
|
|
177
|
+
}
|
|
178
|
+
catch { }
|
|
179
|
+
}
|
|
180
|
+
return (await closedPositionIds(ctx)).ids;
|
|
181
|
+
}
|
|
138
182
|
/** Bring every pool's reward index up to the epoch the given positions need before claiming or restaking. */
|
|
139
183
|
async function preparePoolIndexes(pools, poolRewards, signer, targets, report) {
|
|
140
184
|
const currentEpoch = await pools.currentEpoch();
|
|
@@ -155,27 +199,40 @@ async function preparePoolIndexes(pools, poolRewards, signer, targets, report) {
|
|
|
155
199
|
}
|
|
156
200
|
export async function claim(ctx, request, report = silentReporter) {
|
|
157
201
|
const signer = ctx.requireSigner();
|
|
202
|
+
const walletAddress = ctx.signer ? await ctx.signer.getAddress() : ctx.address;
|
|
158
203
|
const stack = await ctx.stack();
|
|
159
204
|
const epochs = await ctx.claimableEpochs();
|
|
160
|
-
const recipient = request.recipient ?? ctx.address;
|
|
205
|
+
const recipient = request.recipient ?? (request.scope === 'buyer' ? walletAddress : ctx.address);
|
|
161
206
|
if (!/^0x[0-9a-fA-F]{40}$/.test(recipient))
|
|
162
207
|
throw new Error('Recipient must be an address.');
|
|
163
|
-
|
|
208
|
+
if (request.scope !== undefined && request.scope !== 'buyer' && request.scope !== 'wallet')
|
|
209
|
+
throw new Error('Unknown reward scope.');
|
|
210
|
+
if (request.scope === 'buyer' && !sameAddress(await buyerOperator(ctx), walletAddress)) {
|
|
211
|
+
throw new Error(`Connect the authorized wallet for buyer ${ctx.buyerAddress}.`);
|
|
212
|
+
}
|
|
213
|
+
const requested = request.buckets.length > 0 ? request.buckets : ['staker', 'seller', 'buyer', 'legacy', 'locked'];
|
|
214
|
+
const buckets = request.scope === 'buyer' ? requested.filter(bucket => bucket === 'buyer' || bucket === 'legacy') : request.scope === 'wallet' ? requested.filter(bucket => bucket !== 'buyer') : requested;
|
|
215
|
+
if (request.expectedLegacySellerRecipient !== undefined && buckets.includes('legacy') && request.scope !== 'buyer') {
|
|
216
|
+
const payout = await legacySellerPayout(ctx, stack.legacyEmissions);
|
|
217
|
+
if (payout.destination === 'unknown' || !sameAddress(payout.recipient, request.expectedLegacySellerRecipient)) {
|
|
218
|
+
throw new Error('Legacy seller payout destination changed or could not be verified. Refresh rewards and review the claim again.');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
164
221
|
const token = ctx.antsToken();
|
|
165
222
|
const transactions = [];
|
|
166
223
|
let claimed = 0n;
|
|
167
224
|
const record = async (hash, label, credit = true) => {
|
|
168
225
|
transactions.push(hash);
|
|
169
226
|
if (credit)
|
|
170
|
-
claimed += await
|
|
227
|
+
claimed += await token.receivedInTransaction(hash, recipient);
|
|
171
228
|
await report(label, hash);
|
|
172
229
|
};
|
|
173
230
|
if (buckets.includes('staker')) {
|
|
174
231
|
const pools = ctx.pools();
|
|
175
232
|
const poolRewards = ctx.poolRewards();
|
|
176
233
|
if (pools && poolRewards) {
|
|
177
|
-
const
|
|
178
|
-
const pending = (await previewPoolRewards(pools, poolRewards, ctx.address, undefined, { includeIds
|
|
234
|
+
const includeIds = await rewardCandidateIds(ctx);
|
|
235
|
+
const pending = (await previewPoolRewards(pools, poolRewards, ctx.address, undefined, { includeIds })).filter((position) => position.amount > 0n);
|
|
179
236
|
if (pending.length > 0) {
|
|
180
237
|
await preparePoolIndexes(pools, poolRewards, signer, pending, report);
|
|
181
238
|
const ids = [];
|
|
@@ -200,17 +257,19 @@ export async function claim(ctx, request, report = silentReporter) {
|
|
|
200
257
|
const usageRewards = ctx.usageRewards();
|
|
201
258
|
if (usageRewards) {
|
|
202
259
|
const operator = await buyerOperator(ctx);
|
|
203
|
-
if (
|
|
260
|
+
if (!sameAddress(operator, walletAddress)) {
|
|
261
|
+
if (buckets.length === 1)
|
|
262
|
+
throw new Error(`Connect the authorized wallet for buyer ${ctx.buyerAddress}. Current operator: ${operator ?? 'not configured'}.`);
|
|
204
263
|
await report(`Buyer usage rewards are paid to the deposits operator ${operator}; claim them from that wallet.`);
|
|
205
264
|
}
|
|
206
265
|
else {
|
|
207
266
|
for (const epoch of epochs.recognized) {
|
|
208
|
-
if (await
|
|
267
|
+
if (await usageRewards.buyerEpochClaimed(ctx.buyerAddress, epoch))
|
|
209
268
|
continue;
|
|
210
|
-
if (await
|
|
269
|
+
if (await usageRewards.pendingBuyerReward(ctx.buyerAddress, epoch) === 0n)
|
|
211
270
|
continue;
|
|
212
271
|
await report(`Claiming buyer usage reward for epoch ${epoch}`);
|
|
213
|
-
await record(await usageRewards.claimBuyerReward(signer, ctx.
|
|
272
|
+
await record(await usageRewards.claimBuyerReward(signer, ctx.buyerAddress, epoch), 'Buyer usage reward claimed');
|
|
214
273
|
}
|
|
215
274
|
}
|
|
216
275
|
}
|
|
@@ -218,14 +277,16 @@ export async function claim(ctx, request, report = silentReporter) {
|
|
|
218
277
|
if (buckets.includes('legacy')) {
|
|
219
278
|
const legacy = ctx.legacyEmissionsAt(stack.legacyEmissions);
|
|
220
279
|
if (legacy && epochs.legacy.length > 0) {
|
|
221
|
-
|
|
222
|
-
|
|
280
|
+
if (request.scope !== 'buyer')
|
|
281
|
+
await claimEpochRewards(epochs.legacy, async (batch) => (await legacy.pendingEmissions(ctx.address, batch)).seller, async (batch) => { await report(`Claiming legacy seller emissions for epochs ${batch[0]}…${batch[batch.length - 1]}`); return legacy.claimSellerEmissions(signer, batch); }, async (hash) => record(hash, 'Legacy seller emissions claimed'));
|
|
282
|
+
if (request.scope !== 'wallet' && sameAddress(await buyerOperator(ctx), walletAddress))
|
|
283
|
+
await claimEpochRewards(epochs.legacy, async (batch) => (await legacy.pendingEmissions(ctx.buyerAddress, batch)).buyer, async (batch) => { await report(`Claiming legacy buyer emissions for epochs ${batch[0]}…${batch[batch.length - 1]}`); return legacy.claimBuyerEmissions(signer, ctx.buyerAddress, batch); }, async (hash) => record(hash, 'Legacy buyer emissions claimed'));
|
|
223
284
|
}
|
|
224
285
|
}
|
|
225
286
|
if (buckets.includes('locked')) {
|
|
226
287
|
const locked = ctx.lockedPoolAt(stack.lockedRewardsPool);
|
|
227
288
|
if (locked) {
|
|
228
|
-
const info = await
|
|
289
|
+
const info = await locked.claimable(ctx.address);
|
|
229
290
|
if (info.claimable > 0n) {
|
|
230
291
|
await report(`Releasing ${formatAnts(info.claimable)} ANTS from the locked legacy rewards pool`);
|
|
231
292
|
await record(await locked.claim(signer, recipient), 'Locked rewards released');
|
|
@@ -242,7 +303,7 @@ export async function restake(ctx, request, report = silentReporter) {
|
|
|
242
303
|
const config = await pools.poolConfig();
|
|
243
304
|
const epochs = assertEpochs(request.epochs, config.minStakeEpochs, config.maxStakeEpochs);
|
|
244
305
|
const requested = request.positionIds && request.positionIds.length > 0 ? assertPositiveIds(request.positionIds) : null;
|
|
245
|
-
const includeIds = requested ??
|
|
306
|
+
const includeIds = requested ?? await rewardCandidateIds(ctx);
|
|
246
307
|
const pending = (await previewPoolRewards(pools, poolRewards, ctx.address, undefined, { includeIds }))
|
|
247
308
|
.filter((position) => position.amount > 0n && (!requested || requested.includes(position.id)));
|
|
248
309
|
if (pending.length === 0)
|
|
@@ -284,9 +345,9 @@ export async function stakeUsageRewards(ctx, request, report = silentReporter) {
|
|
|
284
345
|
if (!agentId)
|
|
285
346
|
throw new Error('This wallet has no seller agent.');
|
|
286
347
|
for (const epoch of claimable.recognized) {
|
|
287
|
-
if (await
|
|
348
|
+
if (await usageRewards.agentEpochClaimed(agentId, epoch))
|
|
288
349
|
continue;
|
|
289
|
-
if (await
|
|
350
|
+
if (await usageRewards.pendingAgentReward(agentId, epoch) === 0n)
|
|
290
351
|
continue;
|
|
291
352
|
await report(`Staking seller usage reward for epoch ${epoch} into agent ${agentId}`);
|
|
292
353
|
const hash = await usageRewards.stakeAgentReward(signer, agentId, epoch, epochs);
|
|
@@ -298,15 +359,15 @@ export async function stakeUsageRewards(ctx, request, report = silentReporter) {
|
|
|
298
359
|
else {
|
|
299
360
|
const stakeAgentId = assertAgentId(request.stakeAgentId);
|
|
300
361
|
const operator = await buyerOperator(ctx);
|
|
301
|
-
if (
|
|
362
|
+
if (!sameAddress(operator, ctx.signer ? await ctx.signer.getAddress() : ctx.address))
|
|
302
363
|
throw new Error(`Buyer usage rewards belong to the deposits operator ${operator}; stake them from that wallet.`);
|
|
303
364
|
for (const epoch of claimable.recognized) {
|
|
304
|
-
if (await
|
|
365
|
+
if (await usageRewards.buyerEpochClaimed(ctx.buyerAddress, epoch))
|
|
305
366
|
continue;
|
|
306
|
-
if (await
|
|
367
|
+
if (await usageRewards.pendingBuyerReward(ctx.buyerAddress, epoch) === 0n)
|
|
307
368
|
continue;
|
|
308
369
|
await report(`Staking buyer usage reward for epoch ${epoch} into agent ${stakeAgentId}`);
|
|
309
|
-
const hash = await usageRewards.stakeBuyerReward(signer, ctx.
|
|
370
|
+
const hash = await usageRewards.stakeBuyerReward(signer, ctx.buyerAddress, epoch, stakeAgentId, epochs);
|
|
310
371
|
transactions.push(hash);
|
|
311
372
|
epochsStaked.push(epoch);
|
|
312
373
|
await report('Reward staked', hash);
|
|
@@ -332,7 +393,7 @@ export async function compound(ctx, request, report = silentReporter) {
|
|
|
332
393
|
const targetAgentId = request.targetAgentId === undefined ? null : assertAgentId(request.targetAgentId);
|
|
333
394
|
if (targetAgentId !== null) {
|
|
334
395
|
const registry = ctx.sellerRegistry();
|
|
335
|
-
const seller = registry ? await
|
|
396
|
+
const seller = registry ? await registry.agentSeller(targetAgentId) : ZeroAddress;
|
|
336
397
|
if (sameAddress(seller, ZeroAddress))
|
|
337
398
|
throw new Error(`Agent ${targetAgentId} has no seller bound in the seller registry, so it has no stakeable pool.`);
|
|
338
399
|
}
|
|
@@ -363,7 +424,7 @@ export async function compound(ctx, request, report = silentReporter) {
|
|
|
363
424
|
}
|
|
364
425
|
}
|
|
365
426
|
const operator = await buyerOperator(ctx);
|
|
366
|
-
if (sameAddress(operator, ctx.address)) {
|
|
427
|
+
if (request.includeBuyer !== false && sameAddress(operator, ctx.signer ? await ctx.signer.getAddress() : ctx.address)) {
|
|
367
428
|
const stakeAgentId = request.stakeAgentId ?? targetAgentId ?? agentId;
|
|
368
429
|
if (stakeAgentId) {
|
|
369
430
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../src/service/rewards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../src/service/rewards.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export declare class RotatingJsonRpcProvider extends JsonRpcProvider {
|
|
|
18
18
|
private readonly endpoints;
|
|
19
19
|
private readonly transport;
|
|
20
20
|
private readonly now;
|
|
21
|
+
private readonly inflightReads;
|
|
21
22
|
constructor(urls: string[], evmChainId?: number, options?: {
|
|
22
23
|
transport?: RpcTransport;
|
|
23
24
|
now?: () => number;
|
|
@@ -25,7 +26,9 @@ export declare class RotatingJsonRpcProvider extends JsonRpcProvider {
|
|
|
25
26
|
/** Endpoint the next call would go to (the first one once everything is cooling down). */
|
|
26
27
|
get activeUrl(): string;
|
|
27
28
|
get urls(): string[];
|
|
29
|
+
invalidateReads(): void;
|
|
28
30
|
_send(payload: JsonRpcPayload | JsonRpcPayload[]): Promise<JsonRpcResult[]>;
|
|
31
|
+
private sendPayload;
|
|
29
32
|
private pick;
|
|
30
33
|
private cool;
|
|
31
34
|
}
|
|
@@ -2,8 +2,8 @@ import { FetchRequest, JsonRpcProvider } from 'ethers';
|
|
|
2
2
|
import { TokenBucket } from './rate-limit.js';
|
|
3
3
|
const REQUEST_TIMEOUT_MS = 10_000;
|
|
4
4
|
const THROTTLE_COOLDOWN_MS = 20_000;
|
|
5
|
-
/**
|
|
6
|
-
const PACED_CALLS_PER_SECOND =
|
|
5
|
+
/** Pace calls before an endpoint throttles to limit bursts against public gateways. */
|
|
6
|
+
const PACED_CALLS_PER_SECOND = 8;
|
|
7
7
|
const RATE_LIMIT_CODE = -32005;
|
|
8
8
|
/**
|
|
9
9
|
* JSON-RPC provider over several endpoints that sends each call to the first
|
|
@@ -18,11 +18,12 @@ export class RotatingJsonRpcProvider extends JsonRpcProvider {
|
|
|
18
18
|
endpoints;
|
|
19
19
|
transport;
|
|
20
20
|
now;
|
|
21
|
+
inflightReads = new Map();
|
|
21
22
|
constructor(urls, evmChainId, options = {}) {
|
|
22
23
|
if (urls.length === 0)
|
|
23
24
|
throw new Error('At least one RPC endpoint is required.');
|
|
24
25
|
super(urls[0], evmChainId, { staticNetwork: !!evmChainId, batchMaxCount: 1 });
|
|
25
|
-
this.endpoints = urls.map((url) => ({ url, coolingUntil: 0, bucket:
|
|
26
|
+
this.endpoints = urls.map((url) => ({ url, coolingUntil: 0, bucket: new TokenBucket(PACED_CALLS_PER_SECOND, 4) }));
|
|
26
27
|
this.transport = options.transport ?? fetchTransport;
|
|
27
28
|
this.now = options.now ?? Date.now;
|
|
28
29
|
}
|
|
@@ -33,7 +34,28 @@ export class RotatingJsonRpcProvider extends JsonRpcProvider {
|
|
|
33
34
|
get urls() {
|
|
34
35
|
return this.endpoints.map((endpoint) => endpoint.url);
|
|
35
36
|
}
|
|
37
|
+
invalidateReads() {
|
|
38
|
+
this.inflightReads.clear();
|
|
39
|
+
}
|
|
36
40
|
async _send(payload) {
|
|
41
|
+
if (Array.isArray(payload) || !['eth_call', 'eth_getCode', 'eth_getBalance'].includes(payload.method)) {
|
|
42
|
+
return this.sendPayload(payload);
|
|
43
|
+
}
|
|
44
|
+
const key = JSON.stringify([payload.method, payload.params]);
|
|
45
|
+
let pending = this.inflightReads.get(key);
|
|
46
|
+
if (!pending) {
|
|
47
|
+
pending = this.sendPayload(payload);
|
|
48
|
+
this.inflightReads.set(key, pending);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
return (await pending).map(result => ({ ...result, id: payload.id }));
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
if (this.inflightReads.get(key) === pending)
|
|
55
|
+
this.inflightReads.delete(key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async sendPayload(payload) {
|
|
37
59
|
const calls = Array.isArray(payload) ? payload.length : 1;
|
|
38
60
|
const body = JSON.stringify(payload);
|
|
39
61
|
let lastError = null;
|
|
@@ -43,6 +65,8 @@ export class RotatingJsonRpcProvider extends JsonRpcProvider {
|
|
|
43
65
|
break;
|
|
44
66
|
if (endpoint.bucket)
|
|
45
67
|
await endpoint.bucket.take(calls);
|
|
68
|
+
if (endpoint.coolingUntil > this.now())
|
|
69
|
+
continue;
|
|
46
70
|
let response;
|
|
47
71
|
try {
|
|
48
72
|
response = await this.transport(endpoint.url, body);
|
|
@@ -58,6 +82,11 @@ export class RotatingJsonRpcProvider extends JsonRpcProvider {
|
|
|
58
82
|
continue;
|
|
59
83
|
}
|
|
60
84
|
if (response.status < 200 || response.status >= 300) {
|
|
85
|
+
if (response.status >= 500) {
|
|
86
|
+
lastError = new Error(`${endpoint.url} responded with HTTP ${response.status}`);
|
|
87
|
+
this.cool(endpoint);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
61
90
|
throw new Error(`${endpoint.url} responded with HTTP ${response.status}`);
|
|
62
91
|
}
|
|
63
92
|
return (Array.isArray(response.body) ? response.body : [response.body]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-provider.js","sourceRoot":"","sources":["../../src/service/rpc-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAA2C,MAAM,QAAQ,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAS9C,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,
|
|
1
|
+
{"version":3,"file":"rpc-provider.js","sourceRoot":"","sources":["../../src/service/rpc-provider.ts"],"names":[],"mappings":"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"}
|