@across-protocol/sdk 3.1.27 → 3.1.28
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/cjs/clients/BundleDataClient/BundleDataClient.d.ts +60 -0
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +929 -0
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/index.d.ts +2 -0
- package/dist/cjs/clients/BundleDataClient/index.js +6 -0
- package/dist/cjs/clients/BundleDataClient/index.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.d.ts +15 -0
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +131 -0
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.d.ts +6 -0
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +19 -0
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.d.ts +3 -0
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +23 -0
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +24 -0
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +129 -0
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +302 -0
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +77 -0
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/index.d.ts +6 -0
- package/dist/cjs/clients/BundleDataClient/utils/index.js +10 -0
- package/dist/cjs/clients/BundleDataClient/utils/index.js.map +1 -0
- package/dist/cjs/clients/BundleDataClient/utils/shims.d.ts +8 -0
- package/dist/cjs/clients/BundleDataClient/utils/shims.js +3 -0
- package/dist/cjs/clients/BundleDataClient/utils/shims.js.map +1 -0
- package/dist/cjs/clients/index.d.ts +1 -0
- package/dist/cjs/clients/index.js +2 -1
- package/dist/cjs/clients/index.js.map +1 -1
- package/dist/cjs/interfaces/BundleData.d.ts +63 -0
- package/dist/cjs/interfaces/BundleData.js +3 -0
- package/dist/cjs/interfaces/BundleData.js.map +1 -0
- package/dist/cjs/interfaces/index.d.ts +1 -0
- package/dist/cjs/interfaces/index.js +1 -0
- package/dist/cjs/interfaces/index.js.map +1 -1
- package/dist/cjs/providers/alchemy.js +5 -5
- package/dist/cjs/providers/alchemy.js.map +1 -1
- package/dist/cjs/providers/drpc.d.ts +2 -0
- package/dist/cjs/providers/drpc.js +21 -0
- package/dist/cjs/providers/drpc.js.map +1 -0
- package/dist/cjs/providers/infura.js +5 -5
- package/dist/cjs/providers/infura.js.map +1 -1
- package/dist/cjs/providers/types.d.ts +1 -1
- package/dist/cjs/providers/utils.js +3 -1
- package/dist/cjs/providers/utils.js.map +1 -1
- package/dist/cjs/utils/AddressUtils.d.ts +1 -0
- package/dist/cjs/utils/AddressUtils.js +15 -1
- package/dist/cjs/utils/AddressUtils.js.map +1 -1
- package/dist/cjs/utils/ContractUtils.d.ts +1 -0
- package/dist/cjs/utils/ContractUtils.js +12 -0
- package/dist/cjs/utils/ContractUtils.js.map +1 -0
- package/dist/cjs/utils/Multicall.d.ts +3 -2
- package/dist/cjs/utils/Multicall.js +40 -41
- package/dist/cjs/utils/Multicall.js.map +1 -1
- package/dist/cjs/utils/ObjectUtils.d.ts +18 -0
- package/dist/cjs/utils/ObjectUtils.js +27 -1
- package/dist/cjs/utils/ObjectUtils.js.map +1 -1
- package/dist/cjs/utils/abi/contracts/index.d.ts +1 -0
- package/dist/cjs/utils/abi/contracts/index.js +9 -0
- package/dist/cjs/utils/abi/contracts/index.js.map +1 -0
- package/dist/cjs/utils/abi/typechain/Multicall3.d.ts +289 -0
- package/dist/cjs/utils/abi/typechain/Multicall3.js +3 -0
- package/dist/cjs/utils/abi/typechain/Multicall3.js.map +1 -0
- package/dist/cjs/utils/abi/typechain/common.d.ts +21 -0
- package/dist/cjs/utils/abi/typechain/common.js +3 -0
- package/dist/cjs/utils/abi/typechain/common.js.map +1 -0
- package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.d.ts +339 -0
- package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +458 -0
- package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -0
- package/dist/cjs/utils/abi/typechain/factories/index.d.ts +1 -0
- package/dist/cjs/utils/abi/typechain/factories/index.js +6 -0
- package/dist/cjs/utils/abi/typechain/factories/index.js.map +1 -0
- package/dist/cjs/utils/abi/typechain/index.d.ts +3 -0
- package/dist/cjs/utils/abi/typechain/index.js +8 -0
- package/dist/cjs/utils/abi/typechain/index.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/BundleDataClient.d.ts +60 -0
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +1097 -0
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/index.d.ts +2 -0
- package/dist/esm/clients/BundleDataClient/index.js +3 -0
- package/dist/esm/clients/BundleDataClient/index.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.d.ts +15 -0
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +182 -0
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.d.ts +6 -0
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +20 -0
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.d.ts +3 -0
- package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +20 -0
- package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +24 -0
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +157 -0
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +302 -0
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +79 -0
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/index.d.ts +6 -0
- package/dist/esm/clients/BundleDataClient/utils/index.js +7 -0
- package/dist/esm/clients/BundleDataClient/utils/index.js.map +1 -0
- package/dist/esm/clients/BundleDataClient/utils/shims.d.ts +8 -0
- package/dist/esm/clients/BundleDataClient/utils/shims.js +2 -0
- package/dist/esm/clients/BundleDataClient/utils/shims.js.map +1 -0
- package/dist/esm/clients/index.d.ts +1 -0
- package/dist/esm/clients/index.js +2 -0
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/interfaces/BundleData.d.ts +63 -0
- package/dist/esm/interfaces/BundleData.js +2 -0
- package/dist/esm/interfaces/BundleData.js.map +1 -0
- package/dist/esm/interfaces/index.d.ts +1 -0
- package/dist/esm/interfaces/index.js +1 -0
- package/dist/esm/interfaces/index.js.map +1 -1
- package/dist/esm/providers/alchemy.js +6 -6
- package/dist/esm/providers/alchemy.js.map +1 -1
- package/dist/esm/providers/drpc.d.ts +2 -0
- package/dist/esm/providers/drpc.js +18 -0
- package/dist/esm/providers/drpc.js.map +1 -0
- package/dist/esm/providers/infura.js +6 -6
- package/dist/esm/providers/infura.js.map +1 -1
- package/dist/esm/providers/types.d.ts +1 -1
- package/dist/esm/providers/utils.js +3 -1
- package/dist/esm/providers/utils.js.map +1 -1
- package/dist/esm/utils/AddressUtils.d.ts +1 -0
- package/dist/esm/utils/AddressUtils.js +16 -1
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/ContractUtils.d.ts +1 -0
- package/dist/esm/utils/ContractUtils.js +8 -0
- package/dist/esm/utils/ContractUtils.js.map +1 -0
- package/dist/esm/utils/Multicall.d.ts +3 -2
- package/dist/esm/utils/Multicall.js +39 -42
- package/dist/esm/utils/Multicall.js.map +1 -1
- package/dist/esm/utils/ObjectUtils.d.ts +18 -0
- package/dist/esm/utils/ObjectUtils.js +24 -0
- package/dist/esm/utils/ObjectUtils.js.map +1 -1
- package/dist/esm/utils/abi/contracts/index.d.ts +1 -0
- package/dist/esm/utils/abi/contracts/index.js +2 -0
- package/dist/esm/utils/abi/contracts/index.js.map +1 -0
- package/dist/esm/utils/abi/typechain/Multicall3.d.ts +292 -0
- package/dist/esm/utils/abi/typechain/Multicall3.js +2 -0
- package/dist/esm/utils/abi/typechain/Multicall3.js.map +1 -0
- package/dist/esm/utils/abi/typechain/common.d.ts +21 -0
- package/dist/esm/utils/abi/typechain/common.js +2 -0
- package/dist/esm/utils/abi/typechain/common.js.map +1 -0
- package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.d.ts +339 -0
- package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +458 -0
- package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -0
- package/dist/esm/utils/abi/typechain/factories/index.d.ts +1 -0
- package/dist/esm/utils/abi/typechain/factories/index.js +5 -0
- package/dist/esm/utils/abi/typechain/factories/index.js.map +1 -0
- package/dist/esm/utils/abi/typechain/index.d.ts +3 -0
- package/dist/esm/utils/abi/typechain/index.js +4 -0
- package/dist/esm/utils/abi/typechain/index.js.map +1 -0
- package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts +61 -0
- package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/index.d.ts +3 -0
- package/dist/types/clients/BundleDataClient/index.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/DataworkerUtils.d.ts +16 -0
- package/dist/types/clients/BundleDataClient/utils/DataworkerUtils.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts +7 -0
- package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/MerkleTreeUtils.d.ts +4 -0
- package/dist/types/clients/BundleDataClient/utils/MerkleTreeUtils.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +25 -0
- package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +303 -0
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/index.d.ts +7 -0
- package/dist/types/clients/BundleDataClient/utils/index.d.ts.map +1 -0
- package/dist/types/clients/BundleDataClient/utils/shims.d.ts +9 -0
- package/dist/types/clients/BundleDataClient/utils/shims.d.ts.map +1 -0
- package/dist/types/clients/index.d.ts +1 -0
- package/dist/types/clients/index.d.ts.map +1 -1
- package/dist/types/interfaces/BundleData.d.ts +64 -0
- package/dist/types/interfaces/BundleData.d.ts.map +1 -0
- package/dist/types/interfaces/index.d.ts +1 -0
- package/dist/types/interfaces/index.d.ts.map +1 -1
- package/dist/types/providers/drpc.d.ts +3 -0
- package/dist/types/providers/drpc.d.ts.map +1 -0
- package/dist/types/providers/types.d.ts +1 -1
- package/dist/types/providers/types.d.ts.map +1 -1
- package/dist/types/providers/utils.d.ts.map +1 -1
- package/dist/types/utils/AddressUtils.d.ts +1 -0
- package/dist/types/utils/AddressUtils.d.ts.map +1 -1
- package/dist/types/utils/ContractUtils.d.ts +2 -0
- package/dist/types/utils/ContractUtils.d.ts.map +1 -0
- package/dist/types/utils/Multicall.d.ts +3 -2
- package/dist/types/utils/Multicall.d.ts.map +1 -1
- package/dist/types/utils/ObjectUtils.d.ts +18 -0
- package/dist/types/utils/ObjectUtils.d.ts.map +1 -1
- package/dist/types/utils/abi/contracts/index.d.ts +2 -0
- package/dist/types/utils/abi/contracts/index.d.ts.map +1 -0
- package/dist/types/utils/abi/typechain/Multicall3.d.ts +293 -0
- package/dist/types/utils/abi/typechain/Multicall3.d.ts.map +1 -0
- package/dist/types/utils/abi/typechain/common.d.ts +22 -0
- package/dist/types/utils/abi/typechain/common.d.ts.map +1 -0
- package/dist/types/utils/abi/typechain/factories/Multicall3__factory.d.ts +340 -0
- package/dist/types/utils/abi/typechain/factories/Multicall3__factory.d.ts.map +1 -0
- package/dist/types/utils/abi/typechain/factories/index.d.ts +2 -0
- package/dist/types/utils/abi/typechain/factories/index.d.ts.map +1 -0
- package/dist/types/utils/abi/typechain/index.d.ts +4 -0
- package/dist/types/utils/abi/typechain/index.d.ts.map +1 -0
- package/package.json +6 -8
- package/src/clients/BundleDataClient/BundleDataClient.ts +1311 -0
- package/src/clients/BundleDataClient/index.ts +2 -0
- package/src/clients/BundleDataClient/utils/DataworkerUtils.ts +268 -0
- package/src/clients/BundleDataClient/utils/FillUtils.ts +46 -0
- package/src/clients/BundleDataClient/utils/MerkleTreeUtils.ts +26 -0
- package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +238 -0
- package/src/clients/BundleDataClient/utils/SuperstructUtils.ts +132 -0
- package/src/clients/BundleDataClient/utils/index.ts +6 -0
- package/src/clients/BundleDataClient/utils/shims.ts +10 -0
- package/src/clients/index.ts +1 -0
- package/src/interfaces/BundleData.ts +68 -0
- package/src/interfaces/index.ts +1 -0
- package/src/providers/alchemy.ts +6 -6
- package/src/providers/drpc.ts +19 -0
- package/src/providers/infura.ts +6 -6
- package/src/providers/types.ts +1 -1
- package/src/providers/utils.ts +3 -1
- package/src/utils/AddressUtils.ts +15 -1
- package/src/utils/ContractUtils.ts +8 -0
- package/src/utils/Multicall.ts +38 -30
- package/src/utils/ObjectUtils.ts +23 -0
- package/src/utils/abi/contracts/index.ts +1 -0
- package/src/utils/abi/typechain/Multicall3.ts +433 -0
- package/src/utils/abi/typechain/common.ts +30 -0
- package/src/utils/abi/typechain/factories/Multicall3__factory.ts +458 -0
- package/src/utils/abi/typechain/factories/index.ts +4 -0
- package/src/utils/abi/typechain/index.ts +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BundleDataClient.js","sourceRoot":"","sources":["../../../../src/clients/BundleDataClient/BundleDataClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/BundleDataClient/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BundleDepositsV3, BundleExcessSlowFills, BundleFillsV3, BundleSlowFills, CombinedRefunds, ExpiredDepositsToRefundV3 } from "../../../interfaces";
|
|
2
|
+
import { AnyObject } from "../../../utils";
|
|
3
|
+
import { PoolRebalanceRoot } from "./PoolRebalanceUtils";
|
|
4
|
+
import { V3FillWithBlock } from "./shims";
|
|
5
|
+
import { AcrossConfigStoreClient } from "../../AcrossConfigStoreClient";
|
|
6
|
+
import { HubPoolClient } from "../../HubPoolClient";
|
|
7
|
+
export declare function getRefundsFromBundle(bundleFillsV3: BundleFillsV3, expiredDepositsToRefundV3: ExpiredDepositsToRefundV3): CombinedRefunds;
|
|
8
|
+
export declare function prettyPrintV3SpokePoolEvents(bundleDepositsV3: BundleDepositsV3, bundleFillsV3: BundleFillsV3, bundleInvalidFillsV3: V3FillWithBlock[], bundleSlowFillsV3: BundleSlowFills, expiredDepositsToRefundV3: ExpiredDepositsToRefundV3, unexecutableSlowFills: BundleExcessSlowFills): AnyObject;
|
|
9
|
+
export declare function getEndBlockBuffers(chainIdListForBundleEvaluationBlockNumbers: number[], blockRangeEndBlockBuffer: {
|
|
10
|
+
[chainId: number]: number;
|
|
11
|
+
}): number[];
|
|
12
|
+
export declare function _buildPoolRebalanceRoot(latestMainnetBlock: number, mainnetBundleEndBlock: number, bundleV3Deposits: BundleDepositsV3, bundleFillsV3: BundleFillsV3, bundleSlowFillsV3: BundleSlowFills, unexecutableSlowFills: BundleExcessSlowFills, expiredDepositsToRefundV3: ExpiredDepositsToRefundV3, clients: {
|
|
13
|
+
hubPoolClient: HubPoolClient;
|
|
14
|
+
configStoreClient: AcrossConfigStoreClient;
|
|
15
|
+
}, maxL1TokenCountOverride?: number): PoolRebalanceRoot;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// Create a combined `refunds` object containing refunds for V2 + V3 fills
|
|
2
|
+
import { __assign } from "tslib";
|
|
3
|
+
import { bnZero, groupObjectCountsByTwoProps, fixedPointAdjustment, count2DDictionaryValues, count3DDictionaryValues, } from "../../../utils";
|
|
4
|
+
import { addLastRunningBalance, constructPoolRebalanceLeaves, updateRunningBalance, updateRunningBalanceForDeposit, } from "./PoolRebalanceUtils";
|
|
5
|
+
import { buildPoolRebalanceLeafTree } from "./MerkleTreeUtils";
|
|
6
|
+
// and expired deposits.
|
|
7
|
+
export function getRefundsFromBundle(bundleFillsV3, expiredDepositsToRefundV3) {
|
|
8
|
+
var combinedRefunds = {};
|
|
9
|
+
Object.entries(bundleFillsV3).forEach(function (_a) {
|
|
10
|
+
var _b;
|
|
11
|
+
var repaymentChainId = _a[0], fillsForChain = _a[1];
|
|
12
|
+
(_b = combinedRefunds[repaymentChainId]) !== null && _b !== void 0 ? _b : (combinedRefunds[repaymentChainId] = {});
|
|
13
|
+
Object.entries(fillsForChain).forEach(function (_a) {
|
|
14
|
+
var l2TokenAddress = _a[0], refunds = _a[1].refunds;
|
|
15
|
+
// refunds can be undefined if these fills were all slow fill executions.
|
|
16
|
+
if (refunds === undefined) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// @dev use shallow copy so that modifying combinedRefunds doesn't modify the original refunds object.
|
|
20
|
+
var refundsShallowCopy = __assign({}, refunds);
|
|
21
|
+
if (combinedRefunds[repaymentChainId][l2TokenAddress] === undefined) {
|
|
22
|
+
combinedRefunds[repaymentChainId][l2TokenAddress] = refundsShallowCopy;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Each refunds object should have a unique refund address so we can add new ones to the
|
|
26
|
+
// existing dictionary.
|
|
27
|
+
combinedRefunds[repaymentChainId][l2TokenAddress] = __assign(__assign({}, combinedRefunds[repaymentChainId][l2TokenAddress]), refundsShallowCopy);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
Object.entries(expiredDepositsToRefundV3).forEach(function (_a) {
|
|
32
|
+
var _b;
|
|
33
|
+
var originChainId = _a[0], depositsForChain = _a[1];
|
|
34
|
+
(_b = combinedRefunds[originChainId]) !== null && _b !== void 0 ? _b : (combinedRefunds[originChainId] = {});
|
|
35
|
+
Object.entries(depositsForChain).forEach(function (_a) {
|
|
36
|
+
var l2TokenAddress = _a[0], deposits = _a[1];
|
|
37
|
+
deposits.forEach(function (deposit) {
|
|
38
|
+
var _a;
|
|
39
|
+
if (combinedRefunds[originChainId][l2TokenAddress] === undefined) {
|
|
40
|
+
combinedRefunds[originChainId][l2TokenAddress] = (_a = {}, _a[deposit.depositor] = deposit.inputAmount, _a);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
var existingRefundAmount = combinedRefunds[originChainId][l2TokenAddress][deposit.depositor];
|
|
44
|
+
combinedRefunds[originChainId][l2TokenAddress][deposit.depositor] = deposit.inputAmount.add(existingRefundAmount !== null && existingRefundAmount !== void 0 ? existingRefundAmount : bnZero);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
return combinedRefunds;
|
|
50
|
+
}
|
|
51
|
+
export function prettyPrintV3SpokePoolEvents(bundleDepositsV3, bundleFillsV3, bundleInvalidFillsV3, bundleSlowFillsV3, expiredDepositsToRefundV3, unexecutableSlowFills) {
|
|
52
|
+
return {
|
|
53
|
+
bundleDepositsV3: count2DDictionaryValues(bundleDepositsV3),
|
|
54
|
+
bundleFillsV3: count3DDictionaryValues(bundleFillsV3, "fills"),
|
|
55
|
+
bundleSlowFillsV3: count2DDictionaryValues(bundleSlowFillsV3),
|
|
56
|
+
expiredDepositsToRefundV3: count2DDictionaryValues(expiredDepositsToRefundV3),
|
|
57
|
+
unexecutableSlowFills: count2DDictionaryValues(unexecutableSlowFills),
|
|
58
|
+
allInvalidFillsInRangeByDestinationChainAndRelayer: groupObjectCountsByTwoProps(bundleInvalidFillsV3, "destinationChainId", function (fill) { return "".concat(fill.relayer); }),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function getEndBlockBuffers(chainIdListForBundleEvaluationBlockNumbers, blockRangeEndBlockBuffer) {
|
|
62
|
+
// These buffers can be configured by the bot runner. They have two use cases:
|
|
63
|
+
// 1) Validate the end blocks specified in the pending root bundle. If the end block is greater than the latest
|
|
64
|
+
// block for its chain, then we should dispute the bundle because we can't look up events in the future for that
|
|
65
|
+
// chain. However, there are some cases where the proposer's node for that chain is returning a higher HEAD block
|
|
66
|
+
// than the bot-runner is seeing, so we can use this buffer to allow the proposer some margin of error. If
|
|
67
|
+
// the bundle end block is less than HEAD but within this buffer, then we won't dispute and we'll just exit
|
|
68
|
+
// early from this function.
|
|
69
|
+
// 2) Subtract from the latest block in a new root bundle proposal. This can be used to reduce the chance that
|
|
70
|
+
// bot runs using different providers see different contract state close to the HEAD block for a chain.
|
|
71
|
+
// Reducing the latest block that we query also gives partially filled deposits slightly more buffer for relayers
|
|
72
|
+
// to fully fill the deposit and reduces the chance that the data worker includes a slow fill payment that gets
|
|
73
|
+
// filled during the challenge period.
|
|
74
|
+
return chainIdListForBundleEvaluationBlockNumbers.map(function (chainId) { var _a; return (_a = blockRangeEndBlockBuffer[chainId]) !== null && _a !== void 0 ? _a : 0; });
|
|
75
|
+
}
|
|
76
|
+
export function _buildPoolRebalanceRoot(latestMainnetBlock, mainnetBundleEndBlock, bundleV3Deposits, bundleFillsV3, bundleSlowFillsV3, unexecutableSlowFills, expiredDepositsToRefundV3, clients, maxL1TokenCountOverride) {
|
|
77
|
+
// Running balances are the amount of tokens that we need to send to each SpokePool to pay for all instant and
|
|
78
|
+
// slow relay refunds. They are decreased by the amount of funds already held by the SpokePool. Balances are keyed
|
|
79
|
+
// by the SpokePool's network and L1 token equivalent of the L2 token to refund.
|
|
80
|
+
// Realized LP fees are keyed the same as running balances and represent the amount of LP fees that should be paid
|
|
81
|
+
// to LP's for each running balance.
|
|
82
|
+
// For each FilledRelay group, identified by { repaymentChainId, L1TokenAddress }, initialize a "running balance"
|
|
83
|
+
// to the total refund amount for that group.
|
|
84
|
+
var runningBalances = {};
|
|
85
|
+
var realizedLpFees = {};
|
|
86
|
+
/**
|
|
87
|
+
* REFUNDS FOR FAST FILLS
|
|
88
|
+
*/
|
|
89
|
+
// Add running balances and lp fees for v3 relayer refunds using BundleDataClient.bundleFillsV3. Refunds
|
|
90
|
+
// should be equal to inputAmount - lpFees so that relayers get to keep the relayer fee. Add the refund amount
|
|
91
|
+
// to the running balance for the repayment chain.
|
|
92
|
+
Object.entries(bundleFillsV3).forEach(function (_a) {
|
|
93
|
+
var _repaymentChainId = _a[0], fillsForChain = _a[1];
|
|
94
|
+
var repaymentChainId = Number(_repaymentChainId);
|
|
95
|
+
Object.entries(fillsForChain).forEach(function (_a) {
|
|
96
|
+
var l2TokenAddress = _a[0], _b = _a[1], totalRealizedLpFee = _b.realizedLpFees, totalRefundAmount = _b.totalRefundAmount;
|
|
97
|
+
var l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(l2TokenAddress, repaymentChainId, mainnetBundleEndBlock);
|
|
98
|
+
updateRunningBalance(runningBalances, repaymentChainId, l1TokenCounterpart, totalRefundAmount);
|
|
99
|
+
updateRunningBalance(realizedLpFees, repaymentChainId, l1TokenCounterpart, totalRealizedLpFee);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* PAYMENTS SLOW FILLS
|
|
104
|
+
*/
|
|
105
|
+
// Add running balances and lp fees for v3 slow fills using BundleDataClient.bundleSlowFillsV3.
|
|
106
|
+
// Slow fills should still increment bundleLpFees and updatedOutputAmount should be equal to inputAmount - lpFees.
|
|
107
|
+
// Increment the updatedOutputAmount to the destination chain.
|
|
108
|
+
Object.entries(bundleSlowFillsV3).forEach(function (_a) {
|
|
109
|
+
var _destinationChainId = _a[0], depositsForChain = _a[1];
|
|
110
|
+
var destinationChainId = Number(_destinationChainId);
|
|
111
|
+
Object.entries(depositsForChain).forEach(function (_a) {
|
|
112
|
+
var outputToken = _a[0], deposits = _a[1];
|
|
113
|
+
deposits.forEach(function (deposit) {
|
|
114
|
+
var l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(outputToken, destinationChainId, mainnetBundleEndBlock);
|
|
115
|
+
var lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
|
|
116
|
+
updateRunningBalance(runningBalances, destinationChainId, l1TokenCounterpart, deposit.inputAmount.sub(lpFee));
|
|
117
|
+
// Slow fill LP fees are accounted for when the slow fill executes and a V3FilledRelay is emitted. i.e. when
|
|
118
|
+
// the slow fill execution is included in bundleFillsV3.
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
/**
|
|
123
|
+
* EXCESSES FROM UNEXECUTABLE SLOW FILLS
|
|
124
|
+
*/
|
|
125
|
+
// Subtract destination chain running balances for BundleDataClient.unexecutableSlowFills.
|
|
126
|
+
// These are all slow fills that are impossible to execute and therefore the amount to return would be
|
|
127
|
+
// the updatedOutputAmount = inputAmount - lpFees.
|
|
128
|
+
Object.entries(unexecutableSlowFills).forEach(function (_a) {
|
|
129
|
+
var _destinationChainId = _a[0], slowFilledDepositsForChain = _a[1];
|
|
130
|
+
var destinationChainId = Number(_destinationChainId);
|
|
131
|
+
Object.entries(slowFilledDepositsForChain).forEach(function (_a) {
|
|
132
|
+
var outputToken = _a[0], slowFilledDeposits = _a[1];
|
|
133
|
+
slowFilledDeposits.forEach(function (deposit) {
|
|
134
|
+
var l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(outputToken, destinationChainId, mainnetBundleEndBlock);
|
|
135
|
+
var lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
|
|
136
|
+
updateRunningBalance(runningBalances, destinationChainId, l1TokenCounterpart, lpFee.sub(deposit.inputAmount));
|
|
137
|
+
// Slow fills don't add to lpFees, only when the slow fill is executed and a V3FilledRelay is emitted, so
|
|
138
|
+
// we don't need to subtract it here. Moreover, the HubPoole expects bundleLpFees to be > 0.
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* DEPOSITS
|
|
144
|
+
*/
|
|
145
|
+
// Handle v3Deposits. These decrement running balances from the origin chain equal to the inputAmount.
|
|
146
|
+
// There should not be early deposits in v3.
|
|
147
|
+
Object.entries(bundleV3Deposits).forEach(function (_a) {
|
|
148
|
+
var depositsForChain = _a[1];
|
|
149
|
+
Object.entries(depositsForChain).forEach(function (_a) {
|
|
150
|
+
var deposits = _a[1];
|
|
151
|
+
deposits.forEach(function (deposit) {
|
|
152
|
+
updateRunningBalanceForDeposit(runningBalances, clients.hubPoolClient, deposit, deposit.inputAmount.mul(-1));
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
/**
|
|
157
|
+
* REFUNDS FOR EXPIRED DEPOSITS
|
|
158
|
+
*/
|
|
159
|
+
// Add origin chain running balance for expired v3 deposits. These should refund the inputAmount.
|
|
160
|
+
Object.entries(expiredDepositsToRefundV3).forEach(function (_a) {
|
|
161
|
+
var _originChainId = _a[0], depositsForChain = _a[1];
|
|
162
|
+
var originChainId = Number(_originChainId);
|
|
163
|
+
Object.entries(depositsForChain).forEach(function (_a) {
|
|
164
|
+
var inputToken = _a[0], deposits = _a[1];
|
|
165
|
+
deposits.forEach(function (deposit) {
|
|
166
|
+
var l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(inputToken, originChainId, mainnetBundleEndBlock);
|
|
167
|
+
updateRunningBalance(runningBalances, originChainId, l1TokenCounterpart, deposit.inputAmount);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
// Add to the running balance value from the last valid root bundle proposal for {chainId, l1Token}
|
|
172
|
+
// combination if found.
|
|
173
|
+
addLastRunningBalance(latestMainnetBlock, runningBalances, clients.hubPoolClient);
|
|
174
|
+
var leaves = constructPoolRebalanceLeaves(mainnetBundleEndBlock, runningBalances, realizedLpFees, clients.configStoreClient, maxL1TokenCountOverride);
|
|
175
|
+
return {
|
|
176
|
+
runningBalances: runningBalances,
|
|
177
|
+
realizedLpFees: realizedLpFees,
|
|
178
|
+
leaves: leaves,
|
|
179
|
+
tree: buildPoolRebalanceLeafTree(leaves),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=DataworkerUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataworkerUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/DataworkerUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Fill } from "../../../interfaces";
|
|
2
|
+
import { HubPoolClient } from "../../HubPoolClient";
|
|
3
|
+
export declare function getRefundInformationFromFill(fill: Fill, hubPoolClient: HubPoolClient, blockRangesForChains: number[][], chainIdListForBundleEvaluationBlockNumbers: number[], fromLiteChain: boolean): {
|
|
4
|
+
chainToSendRefundTo: number;
|
|
5
|
+
repaymentToken: string;
|
|
6
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getBlockRangeForChain, isSlowFill } from "../../../utils";
|
|
2
|
+
export function getRefundInformationFromFill(fill, hubPoolClient, blockRangesForChains, chainIdListForBundleEvaluationBlockNumbers, fromLiteChain) {
|
|
3
|
+
// Handle slow relay where repaymentChainId = 0. Slow relays always pay recipient on destination chain.
|
|
4
|
+
// So, save the slow fill under the destination chain, and save the fast fill under its repayment chain.
|
|
5
|
+
var chainToSendRefundTo = isSlowFill(fill) ? fill.destinationChainId : fill.repaymentChainId;
|
|
6
|
+
// If the fill is for a deposit originating from the lite chain, the repayment chain is the origin chain
|
|
7
|
+
// regardless of whether it is a slow or fast fill (we ignore slow fills but this is for posterity).
|
|
8
|
+
if (fromLiteChain) {
|
|
9
|
+
chainToSendRefundTo = fill.originChainId;
|
|
10
|
+
}
|
|
11
|
+
// Save fill data and associate with repayment chain and L2 token refund should be denominated in.
|
|
12
|
+
var endBlockForMainnet = getBlockRangeForChain(blockRangesForChains, hubPoolClient.chainId, chainIdListForBundleEvaluationBlockNumbers)[1];
|
|
13
|
+
var l1TokenCounterpart = hubPoolClient.getL1TokenForL2TokenAtBlock(fill.inputToken, fill.originChainId, endBlockForMainnet);
|
|
14
|
+
var repaymentToken = hubPoolClient.getL2TokenForL1TokenAtBlock(l1TokenCounterpart, chainToSendRefundTo, endBlockForMainnet);
|
|
15
|
+
return {
|
|
16
|
+
chainToSendRefundTo: chainToSendRefundTo,
|
|
17
|
+
repaymentToken: repaymentToken,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=FillUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FillUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/FillUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGnE,MAAM,UAAU,4BAA4B,CAC1C,IAAU,EACV,aAA4B,EAC5B,oBAAgC,EAChC,0CAAoD,EACpD,aAAsB;IAKtB,uGAAuG;IACvG,wGAAwG;IACxG,IAAI,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC7F,wGAAwG;IACxG,oGAAoG;IACpG,IAAI,aAAa,EAAE;QACjB,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC;KAC1C;IAED,kGAAkG;IAClG,IAAM,kBAAkB,GAAG,qBAAqB,CAC9C,oBAAoB,EACpB,aAAa,CAAC,OAAO,EACrB,0CAA0C,CAC3C,CAAC,CAAC,CAAC,CAAC;IAEL,IAAM,kBAAkB,GAAG,aAAa,CAAC,2BAA2B,CAClE,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,kBAAkB,CACnB,CAAC;IAEF,IAAM,cAAc,GAAG,aAAa,CAAC,2BAA2B,CAC9D,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,CACnB,CAAC;IACF,OAAO;QACL,mBAAmB,qBAAA;QACnB,cAAc,gBAAA;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MerkleTree } from "@across-protocol/contracts";
|
|
2
|
+
import { getParamType } from "../../../utils/ContractUtils";
|
|
3
|
+
import { utils } from "ethers";
|
|
4
|
+
export function buildPoolRebalanceLeafTree(poolRebalanceLeaves) {
|
|
5
|
+
for (var i = 0; i < poolRebalanceLeaves.length; i++) {
|
|
6
|
+
// The 4 provided parallel arrays must be of equal length. Running Balances can optionally be 2x the length
|
|
7
|
+
if (poolRebalanceLeaves[i].l1Tokens.length !== poolRebalanceLeaves[i].bundleLpFees.length ||
|
|
8
|
+
poolRebalanceLeaves[i].netSendAmounts.length !== poolRebalanceLeaves[i].bundleLpFees.length) {
|
|
9
|
+
throw new Error("Provided lef arrays are not of equal length");
|
|
10
|
+
}
|
|
11
|
+
if (poolRebalanceLeaves[i].runningBalances.length !== poolRebalanceLeaves[i].bundleLpFees.length * 2 &&
|
|
12
|
+
poolRebalanceLeaves[i].runningBalances.length !== poolRebalanceLeaves[i].bundleLpFees.length) {
|
|
13
|
+
throw new Error("Running balances length unexpected");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
var paramType = getParamType("MerkleLibTest", "verifyPoolRebalance", "rebalance");
|
|
17
|
+
var hashFn = function (input) { return utils.keccak256(utils.defaultAbiCoder.encode([paramType], [input])); };
|
|
18
|
+
return new MerkleTree(poolRebalanceLeaves, hashFn);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=MerkleTreeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MerkleTreeUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/MerkleTreeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,UAAU,0BAA0B,CAAC,mBAAwC;IACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnD,2GAA2G;QAC3G,IACE,mBAAmB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM;YACrF,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAC3F;YACA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IACE,mBAAmB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAChG,mBAAmB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAC5F;YACA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;KACF;IAED,IAAM,SAAS,GAAG,YAAY,CAAC,eAAe,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;IACpF,IAAM,MAAM,GAAG,UAAC,KAAwB,IAAK,OAAA,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAnE,CAAmE,CAAC;IACjH,OAAO,IAAI,UAAU,CAAoB,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MerkleTree } from "@across-protocol/contracts/dist/utils/MerkleTree";
|
|
2
|
+
import { RunningBalances, PoolRebalanceLeaf, Clients, SpokePoolTargetBalance } from "../../../interfaces";
|
|
3
|
+
import { SpokePoolClient } from "../../SpokePoolClient";
|
|
4
|
+
import { BigNumber } from "ethers";
|
|
5
|
+
import { HubPoolClient } from "../../HubPoolClient";
|
|
6
|
+
import { V3DepositWithBlock } from "./shims";
|
|
7
|
+
import { AcrossConfigStoreClient } from "../../AcrossConfigStoreClient";
|
|
8
|
+
export type PoolRebalanceRoot = {
|
|
9
|
+
runningBalances: RunningBalances;
|
|
10
|
+
realizedLpFees: RunningBalances;
|
|
11
|
+
leaves: PoolRebalanceLeaf[];
|
|
12
|
+
tree: MerkleTree<PoolRebalanceLeaf>;
|
|
13
|
+
};
|
|
14
|
+
export declare function getWidestPossibleExpectedBlockRange(chainIdListForBundleEvaluationBlockNumbers: number[], spokeClients: {
|
|
15
|
+
[chainId: number]: SpokePoolClient;
|
|
16
|
+
}, endBlockBuffers: number[], clients: Clients, latestMainnetBlock: number, enabledChains: number[]): number[][];
|
|
17
|
+
export declare function isChainDisabled(blockRangeForChain: number[]): boolean;
|
|
18
|
+
export declare function computeDesiredTransferAmountToSpoke(runningBalance: BigNumber, spokePoolTargetBalance: SpokePoolTargetBalance): BigNumber;
|
|
19
|
+
export declare function getNetSendAmountForL1Token(spokePoolTargetBalance: SpokePoolTargetBalance, runningBalance: BigNumber): BigNumber;
|
|
20
|
+
export declare function getRunningBalanceForL1Token(spokePoolTargetBalance: SpokePoolTargetBalance, runningBalance: BigNumber): BigNumber;
|
|
21
|
+
export declare function updateRunningBalance(runningBalances: RunningBalances, l2ChainId: number, l1Token: string, updateAmount: BigNumber): void;
|
|
22
|
+
export declare function addLastRunningBalance(latestMainnetBlock: number, runningBalances: RunningBalances, hubPoolClient: HubPoolClient): void;
|
|
23
|
+
export declare function updateRunningBalanceForDeposit(runningBalances: RunningBalances, hubPoolClient: HubPoolClient, deposit: V3DepositWithBlock, updateAmount: BigNumber): void;
|
|
24
|
+
export declare function constructPoolRebalanceLeaves(latestMainnetBlock: number, runningBalances: RunningBalances, realizedLpFees: RunningBalances, configStoreClient: AcrossConfigStoreClient, maxL1TokenCount?: number): PoolRebalanceLeaf[];
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { bnZero, compareAddresses } from "../../../utils";
|
|
2
|
+
// This returns a possible next block range that could be submitted as a new root bundle, or used as a reference
|
|
3
|
+
// when evaluating pending root bundle. The block end numbers must be less than the latest blocks for each chain ID
|
|
4
|
+
// (because we can't evaluate events in the future), and greater than the expected start blocks, which are the
|
|
5
|
+
// greater of 0 and the latest bundle end block for an executed root bundle proposal + 1.
|
|
6
|
+
export function getWidestPossibleExpectedBlockRange(chainIdListForBundleEvaluationBlockNumbers, spokeClients, endBlockBuffers, clients, latestMainnetBlock, enabledChains) {
|
|
7
|
+
// We impose a buffer on the head of the chain to increase the probability that the received blocks are final.
|
|
8
|
+
// Reducing the latest block that we query also gives partially filled deposits slightly more buffer for relayers
|
|
9
|
+
// to fully fill the deposit and reduces the chance that the data worker includes a slow fill payment that gets
|
|
10
|
+
// filled during the challenge period.
|
|
11
|
+
var latestPossibleBundleEndBlockNumbers = chainIdListForBundleEvaluationBlockNumbers.map(function (chainId, index) {
|
|
12
|
+
return spokeClients[chainId] && Math.max(spokeClients[chainId].latestBlockSearched - endBlockBuffers[index], 0);
|
|
13
|
+
});
|
|
14
|
+
return chainIdListForBundleEvaluationBlockNumbers.map(function (chainId, index) {
|
|
15
|
+
var lastEndBlockForChain = clients.hubPoolClient.getLatestBundleEndBlockForChain(chainIdListForBundleEvaluationBlockNumbers, latestMainnetBlock, chainId);
|
|
16
|
+
// If chain is disabled, re-use the latest bundle end block for the chain as both the start
|
|
17
|
+
// and end block.
|
|
18
|
+
if (!enabledChains.includes(chainId)) {
|
|
19
|
+
return [lastEndBlockForChain, lastEndBlockForChain];
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
// If the latest block hasn't advanced enough from the previous proposed end block, then re-use it. It will
|
|
23
|
+
// be regarded as disabled by the Dataworker clients. Otherwise, add 1 to the previous proposed end block.
|
|
24
|
+
if (lastEndBlockForChain >= latestPossibleBundleEndBlockNumbers[index]) {
|
|
25
|
+
// @dev: Without this check, then `getNextBundleStartBlockNumber` could return `latestBlock+1` even when the
|
|
26
|
+
// latest block for the chain hasn't advanced, resulting in an invalid range being produced.
|
|
27
|
+
return [lastEndBlockForChain, lastEndBlockForChain];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Chain has advanced far enough including the buffer, return range from previous proposed end block + 1 to
|
|
31
|
+
// latest block for chain minus buffer.
|
|
32
|
+
return [
|
|
33
|
+
clients.hubPoolClient.getNextBundleStartBlockNumber(chainIdListForBundleEvaluationBlockNumbers, latestMainnetBlock, chainId),
|
|
34
|
+
latestPossibleBundleEndBlockNumbers[index],
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function isChainDisabled(blockRangeForChain) {
|
|
41
|
+
return blockRangeForChain[0] === blockRangeForChain[1];
|
|
42
|
+
}
|
|
43
|
+
// Note: this function computes the intended transfer amount before considering the transfer threshold.
|
|
44
|
+
// A positive number indicates a transfer from hub to spoke.
|
|
45
|
+
export function computeDesiredTransferAmountToSpoke(runningBalance, spokePoolTargetBalance) {
|
|
46
|
+
// Transfer is always desired if hub owes spoke.
|
|
47
|
+
if (runningBalance.gte(0)) {
|
|
48
|
+
return runningBalance;
|
|
49
|
+
}
|
|
50
|
+
// Running balance is negative, but its absolute value is less than the spoke pool target balance threshold.
|
|
51
|
+
// In this case, we transfer nothing.
|
|
52
|
+
if (runningBalance.abs().lt(spokePoolTargetBalance.threshold)) {
|
|
53
|
+
return bnZero;
|
|
54
|
+
}
|
|
55
|
+
// We are left with the case where the spoke pool is beyond the threshold.
|
|
56
|
+
// A transfer needs to be initiated to bring it down to the target.
|
|
57
|
+
var transferSize = runningBalance.abs().sub(spokePoolTargetBalance.target);
|
|
58
|
+
// If the transferSize is < 0, this indicates that the target is still above the running balance.
|
|
59
|
+
// This can only happen if the threshold is less than the target. This is likely due to a misconfiguration.
|
|
60
|
+
// In this case, we transfer nothing until the target is exceeded.
|
|
61
|
+
if (transferSize.lt(0)) {
|
|
62
|
+
return bnZero;
|
|
63
|
+
}
|
|
64
|
+
// Negate the transfer size because a transfer from spoke to hub is indicated by a negative number.
|
|
65
|
+
return transferSize.mul(-1);
|
|
66
|
+
}
|
|
67
|
+
// If the running balance is greater than the token transfer threshold, then set the net send amount
|
|
68
|
+
// equal to the running balance and reset the running balance to 0. Otherwise, the net send amount should be
|
|
69
|
+
// 0, indicating that we do not want the data worker to trigger a token transfer between hub pool and spoke
|
|
70
|
+
// pool when executing this leaf.
|
|
71
|
+
export function getNetSendAmountForL1Token(spokePoolTargetBalance, runningBalance) {
|
|
72
|
+
return computeDesiredTransferAmountToSpoke(runningBalance, spokePoolTargetBalance);
|
|
73
|
+
}
|
|
74
|
+
export function getRunningBalanceForL1Token(spokePoolTargetBalance, runningBalance) {
|
|
75
|
+
var desiredTransferAmount = computeDesiredTransferAmountToSpoke(runningBalance, spokePoolTargetBalance);
|
|
76
|
+
return runningBalance.sub(desiredTransferAmount);
|
|
77
|
+
}
|
|
78
|
+
export function updateRunningBalance(runningBalances, l2ChainId, l1Token, updateAmount) {
|
|
79
|
+
// Initialize dictionary if empty.
|
|
80
|
+
if (!runningBalances[l2ChainId]) {
|
|
81
|
+
runningBalances[l2ChainId] = {};
|
|
82
|
+
}
|
|
83
|
+
var runningBalance = runningBalances[l2ChainId][l1Token];
|
|
84
|
+
if (runningBalance) {
|
|
85
|
+
runningBalances[l2ChainId][l1Token] = runningBalance.add(updateAmount);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
runningBalances[l2ChainId][l1Token] = updateAmount;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export function addLastRunningBalance(latestMainnetBlock, runningBalances, hubPoolClient) {
|
|
92
|
+
Object.keys(runningBalances).forEach(function (repaymentChainId) {
|
|
93
|
+
Object.keys(runningBalances[Number(repaymentChainId)]).forEach(function (l1TokenAddress) {
|
|
94
|
+
var runningBalance = hubPoolClient.getRunningBalanceBeforeBlockForChain(latestMainnetBlock, Number(repaymentChainId), l1TokenAddress).runningBalance;
|
|
95
|
+
if (!runningBalance.eq(bnZero)) {
|
|
96
|
+
updateRunningBalance(runningBalances, Number(repaymentChainId), l1TokenAddress, runningBalance);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function updateRunningBalanceForDeposit(runningBalances, hubPoolClient, deposit, updateAmount) {
|
|
102
|
+
var l1TokenCounterpart = hubPoolClient.getL1TokenForL2TokenAtBlock(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber);
|
|
103
|
+
updateRunningBalance(runningBalances, deposit.originChainId, l1TokenCounterpart, updateAmount);
|
|
104
|
+
}
|
|
105
|
+
export function constructPoolRebalanceLeaves(latestMainnetBlock, runningBalances, realizedLpFees, configStoreClient, maxL1TokenCount) {
|
|
106
|
+
// Create one leaf per L2 chain ID. First we'll create a leaf with all L1 tokens for each chain ID, and then
|
|
107
|
+
// we'll split up any leaves with too many L1 tokens.
|
|
108
|
+
var leaves = [];
|
|
109
|
+
Object.keys(runningBalances)
|
|
110
|
+
.map(function (chainId) { return Number(chainId); })
|
|
111
|
+
// Leaves should be sorted by ascending chain ID
|
|
112
|
+
.sort(function (chainIdA, chainIdB) { return chainIdA - chainIdB; })
|
|
113
|
+
.map(function (chainId) {
|
|
114
|
+
// Sort addresses.
|
|
115
|
+
var sortedL1Tokens = Object.keys(runningBalances[chainId]).sort(function (addressA, addressB) {
|
|
116
|
+
return compareAddresses(addressA, addressB);
|
|
117
|
+
});
|
|
118
|
+
// This begins at 0 and increments for each leaf for this { chainId, L1Token } combination.
|
|
119
|
+
var groupIndexForChainId = 0;
|
|
120
|
+
// Split addresses into multiple leaves if there are more L1 tokens than allowed per leaf.
|
|
121
|
+
var maxL1TokensPerLeaf = maxL1TokenCount || configStoreClient.getMaxRefundCountForRelayerRefundLeafForBlock(latestMainnetBlock);
|
|
122
|
+
var _loop_1 = function (i) {
|
|
123
|
+
var l1TokensToIncludeInThisLeaf = sortedL1Tokens.slice(i, i + maxL1TokensPerLeaf);
|
|
124
|
+
var spokeTargetBalances = l1TokensToIncludeInThisLeaf.map(function (l1Token) {
|
|
125
|
+
return configStoreClient.getSpokeTargetBalancesForBlock(l1Token, chainId, latestMainnetBlock);
|
|
126
|
+
});
|
|
127
|
+
// Build leaves using running balances and realized lp fees data for l1Token + chain, or default to
|
|
128
|
+
// zero if undefined.
|
|
129
|
+
var leafBundleLpFees = l1TokensToIncludeInThisLeaf.map(function (l1Token) { var _a, _b; return (_b = (_a = realizedLpFees[chainId]) === null || _a === void 0 ? void 0 : _a[l1Token]) !== null && _b !== void 0 ? _b : bnZero; });
|
|
130
|
+
var leafNetSendAmounts = l1TokensToIncludeInThisLeaf.map(function (l1Token, index) {
|
|
131
|
+
return runningBalances[chainId] && runningBalances[chainId][l1Token]
|
|
132
|
+
? getNetSendAmountForL1Token(spokeTargetBalances[index], runningBalances[chainId][l1Token])
|
|
133
|
+
: bnZero;
|
|
134
|
+
});
|
|
135
|
+
var leafRunningBalances = l1TokensToIncludeInThisLeaf.map(function (l1Token, index) {
|
|
136
|
+
var _a;
|
|
137
|
+
return ((_a = runningBalances[chainId]) === null || _a === void 0 ? void 0 : _a[l1Token])
|
|
138
|
+
? getRunningBalanceForL1Token(spokeTargetBalances[index], runningBalances[chainId][l1Token])
|
|
139
|
+
: bnZero;
|
|
140
|
+
});
|
|
141
|
+
leaves.push({
|
|
142
|
+
chainId: chainId,
|
|
143
|
+
bundleLpFees: leafBundleLpFees,
|
|
144
|
+
netSendAmounts: leafNetSendAmounts,
|
|
145
|
+
runningBalances: leafRunningBalances,
|
|
146
|
+
groupIndex: groupIndexForChainId++,
|
|
147
|
+
leafId: leaves.length,
|
|
148
|
+
l1Tokens: l1TokensToIncludeInThisLeaf,
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
for (var i = 0; i < sortedL1Tokens.length; i += maxL1TokensPerLeaf) {
|
|
152
|
+
_loop_1(i);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
return leaves;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=PoolRebalanceUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolRebalanceUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts"],"names":[],"mappings":"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"}
|