@streamr/node 103.0.0 → 103.1.0-rc.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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/node",
3
- "version": "103.0.0",
3
+ "version": "103.1.0-rc.0",
4
4
  "description": "A full-featured node implementation for the Streamr Network",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,9 +39,9 @@
39
39
  "dependencies": {
40
40
  "@inquirer/prompts": "^7.5.3",
41
41
  "@streamr/config": "^5.8.0",
42
- "@streamr/dht": "103.0.0",
43
- "@streamr/sdk": "103.0.0",
44
- "@streamr/utils": "103.0.0",
42
+ "@streamr/dht": "103.1.0-rc.0",
43
+ "@streamr/sdk": "103.1.0-rc.0",
44
+ "@streamr/utils": "103.1.0-rc.0",
45
45
  "aedes": "^0.51.3",
46
46
  "ajv": "^8.17.1",
47
47
  "ajv-formats": "^3.0.1",
@@ -65,7 +65,7 @@
65
65
  "devDependencies": {
66
66
  "@inquirer/testing": "^2.1.47",
67
67
  "@streamr/network-contracts": "^9.1.0",
68
- "@streamr/test-utils": "103.0.0",
68
+ "@streamr/test-utils": "103.1.0-rc.0",
69
69
  "@types/cors": "^2.8.19",
70
70
  "@types/express": "^5.0.1",
71
71
  "@types/heap": "^0.2.34",
@@ -7,6 +7,13 @@ export interface AutostakerPluginConfig {
7
7
  minTransactionDataTokenAmount: number;
8
8
  maxAcceptableMinOperatorCount: number;
9
9
  runIntervalInMs: number;
10
+ fleetState: {
11
+ heartbeatUpdateIntervalInMs: number;
12
+ pruneAgeInMs: number;
13
+ pruneIntervalInMs: number;
14
+ latencyExtraInMs: number;
15
+ warmupPeriodInMs: number;
16
+ };
10
17
  }
11
18
  export declare class AutostakerPlugin extends Plugin<AutostakerPluginConfig> {
12
19
  private abortController;
@@ -14,6 +21,7 @@ export declare class AutostakerPlugin extends Plugin<AutostakerPluginConfig> {
14
21
  private runActions;
15
22
  private getStakeableSponsorships;
16
23
  private getMyCurrentStakes;
24
+ private getUndelegationQueueAmount;
17
25
  stop(): Promise<void>;
18
26
  getConfigSchema(): Schema;
19
27
  }
@@ -10,6 +10,10 @@ const ethers_1 = require("ethers");
10
10
  const Plugin_1 = require("../../Plugin");
11
11
  const config_schema_json_1 = __importDefault(require("./config.schema.json"));
12
12
  const payoutProportionalStrategy_1 = require("./payoutProportionalStrategy");
13
+ const formCoordinationStreamId_1 = require("../operator/formCoordinationStreamId");
14
+ const OperatorFleetState_1 = require("../operator/OperatorFleetState");
15
+ const createIsLeaderFn_1 = require("../operator/createIsLeaderFn");
16
+ const sum_1 = require("./sum");
13
17
  const logger = new utils_1.Logger(module);
14
18
  // 1e12 wei, i.e. one millionth of one DATA token (we can tweak this later if needed)
15
19
  const MIN_SPONSORSHIP_TOTAL_PAYOUT_PER_SECOND = 1000000000000n;
@@ -40,9 +44,15 @@ class AutostakerPlugin extends Plugin_1.Plugin {
40
44
  async start(streamrClient) {
41
45
  logger.info('Start autostaker plugin');
42
46
  const minStakePerSponsorship = await fetchMinStakePerSponsorship(streamrClient.getTheGraphClient());
47
+ const fleetState = new OperatorFleetState_1.OperatorFleetState(streamrClient, (0, formCoordinationStreamId_1.formCoordinationStreamId)((0, utils_1.toEthereumAddress)(this.pluginConfig.operatorContractAddress)), this.pluginConfig.fleetState.heartbeatUpdateIntervalInMs, this.pluginConfig.fleetState.pruneAgeInMs, this.pluginConfig.fleetState.pruneIntervalInMs, this.pluginConfig.fleetState.latencyExtraInMs, this.pluginConfig.fleetState.warmupPeriodInMs);
48
+ await fleetState.start();
49
+ await fleetState.waitUntilReady();
50
+ const isLeader = await (0, createIsLeaderFn_1.createIsLeaderFn)(streamrClient, fleetState, logger);
43
51
  (0, utils_1.scheduleAtApproximateInterval)(async () => {
44
52
  try {
45
- await this.runActions(streamrClient, minStakePerSponsorship);
53
+ if (isLeader()) {
54
+ await this.runActions(streamrClient, minStakePerSponsorship);
55
+ }
46
56
  }
47
57
  catch (err) {
48
58
  logger.warn('Error while running autostaker actions', { err });
@@ -56,7 +66,8 @@ class AutostakerPlugin extends Plugin_1.Plugin {
56
66
  .connect(provider);
57
67
  const myCurrentStakes = await this.getMyCurrentStakes(streamrClient);
58
68
  const stakeableSponsorships = await this.getStakeableSponsorships(myCurrentStakes, streamrClient);
59
- const myStakedAmount = await operatorContract.totalStakedIntoSponsorshipsWei();
69
+ const undelegationQueueAmount = await this.getUndelegationQueueAmount(streamrClient);
70
+ const myStakedAmount = (0, sum_1.sum)([...myCurrentStakes.values()]);
60
71
  const myUnstakedAmount = (await operatorContract.valueWithoutEarnings()) - myStakedAmount;
61
72
  logger.debug('Analysis state', {
62
73
  stakeableSponsorships: [...stakeableSponsorships.entries()].map(([sponsorshipId, config]) => ({
@@ -67,15 +78,14 @@ class AutostakerPlugin extends Plugin_1.Plugin {
67
78
  sponsorshipId,
68
79
  amount: (0, ethers_1.formatEther)(amount)
69
80
  })),
70
- balance: {
71
- unstaked: (0, ethers_1.formatEther)(myUnstakedAmount),
72
- staked: (0, ethers_1.formatEther)(myStakedAmount)
73
- }
81
+ myUnstakedAmount: (0, ethers_1.formatEther)(myUnstakedAmount),
82
+ undelegationQueue: (0, ethers_1.formatEther)(undelegationQueueAmount)
74
83
  });
75
84
  const actions = (0, payoutProportionalStrategy_1.adjustStakes)({
76
85
  myCurrentStakes,
77
86
  myUnstakedAmount,
78
87
  stakeableSponsorships,
88
+ undelegationQueueAmount,
79
89
  operatorContractAddress: this.pluginConfig.operatorContractAddress,
80
90
  maxSponsorshipCount: this.pluginConfig.maxSponsorshipCount,
81
91
  minTransactionAmount: (0, ethers_1.parseEther)(String(this.pluginConfig.minTransactionDataTokenAmount)),
@@ -95,7 +105,7 @@ class AutostakerPlugin extends Plugin_1.Plugin {
95
105
  query: `
96
106
  {
97
107
  sponsorships (
98
- where: {
108
+ where: {
99
109
  projectedInsolvency_gt: ${Math.floor(Date.now() / 1000)}
100
110
  minimumStakingPeriodSeconds: "0"
101
111
  minOperators_lte: ${this.pluginConfig.maxAcceptableMinOperatorCount}
@@ -134,7 +144,7 @@ class AutostakerPlugin extends Plugin_1.Plugin {
134
144
  query: `
135
145
  {
136
146
  stakes (
137
- where: {
147
+ where: {
138
148
  operator: "${this.pluginConfig.operatorContractAddress.toLowerCase()}",
139
149
  id_gt: "${lastId}"
140
150
  },
@@ -153,6 +163,28 @@ class AutostakerPlugin extends Plugin_1.Plugin {
153
163
  const stakes = await (0, utils_1.collect)(queryResult);
154
164
  return new Map(stakes.map((stake) => [stake.sponsorship.id, BigInt(stake.amountWei)]));
155
165
  }
166
+ async getUndelegationQueueAmount(streamrClient) {
167
+ const queryResult = streamrClient.getTheGraphClient().queryEntities((lastId, pageSize) => {
168
+ return {
169
+ query: `
170
+ {
171
+ queueEntries (
172
+ where: {
173
+ operator: "${this.pluginConfig.operatorContractAddress.toLowerCase()}",
174
+ id_gt: "${lastId}"
175
+ },
176
+ first: ${pageSize}
177
+ ) {
178
+ id
179
+ amount
180
+ }
181
+ }
182
+ `
183
+ };
184
+ });
185
+ const entries = await (0, utils_1.collect)(queryResult);
186
+ return (0, sum_1.sum)(entries.map((entry) => BigInt(entry.amount)));
187
+ }
156
188
  async stop() {
157
189
  logger.info('Stop autostaker plugin');
158
190
  this.abortController.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"AutostakerPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/autostaker/AutostakerPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutostakerPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/autostaker/AutostakerPlugin.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,44 @@
36
36
  "description": "The interval (in milliseconds) at which autostaking possibilities are analyzed and executed",
37
37
  "minimum": 0,
38
38
  "default": 3600000
39
+ },
40
+ "fleetState": {
41
+ "type": "object",
42
+ "description": "Operator fleet state settings",
43
+ "additionalProperties": false,
44
+ "default": {},
45
+ "properties": {
46
+ "heartbeatUpdateIntervalInMs": {
47
+ "type": "integer",
48
+ "description": "The interval (in milliseconds) at which heartbeats get published to coordination stream",
49
+ "minimum": 0,
50
+ "default": 10000
51
+ },
52
+ "pruneAgeInMs": {
53
+ "type": "integer",
54
+ "description": "The maximum time (in milliseconds) of a heartbeat to count towards a node being online",
55
+ "minimum": 0,
56
+ "default": 180000
57
+ },
58
+ "pruneIntervalInMs": {
59
+ "type": "integer",
60
+ "description": "The interval (in milliseconds) at which to prune old heartbeats",
61
+ "minimum": 0,
62
+ "default": 30000
63
+ },
64
+ "latencyExtraInMs": {
65
+ "type": "integer",
66
+ "description": "Account for extra latency (milliseconds) due to networking",
67
+ "minimum": 0,
68
+ "default": 2000
69
+ },
70
+ "warmupPeriodInMs": {
71
+ "type": "integer",
72
+ "description": "The time (in milliseconds) to wait before starting to count heartbeats",
73
+ "minimum": 0,
74
+ "default": 10000
75
+ }
76
+ }
39
77
  }
40
78
  }
41
79
  }
@@ -5,14 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.adjustStakes = void 0;
7
7
  const crypto_1 = __importDefault(require("crypto"));
8
- const maxBy_1 = __importDefault(require("lodash/maxBy"));
9
8
  const minBy_1 = __importDefault(require("lodash/minBy"));
10
9
  const partition_1 = __importDefault(require("lodash/partition"));
11
10
  const pull_1 = __importDefault(require("lodash/pull"));
12
11
  const sortBy_1 = __importDefault(require("lodash/sortBy"));
13
- const sum = (values) => {
14
- return values.reduce((acc, value) => acc + value, 0n);
15
- };
12
+ const sum_1 = require("./sum");
16
13
  const abs = (n) => (n < 0n) ? -n : n;
17
14
  const getExpiredSponsorships = (myCurrentStakes, stakeableSponsorships) => {
18
15
  return [...myCurrentStakes.keys()].filter((sponsorshipId) => !stakeableSponsorships.has(sponsorshipId));
@@ -41,12 +38,12 @@ const getSelectedSponsorships = (myCurrentStakes, stakeableSponsorships, totalSt
41
38
  * - for selected sponsorships the stake is minimum stake plus payout-proportional allocation
42
39
  * - for expired sponsorships the stake is zero
43
40
  */
44
- const getTargetStakes = (myCurrentStakes, myUnstakedAmount, stakeableSponsorships, operatorContractAddress, maxSponsorshipCount, minStakePerSponsorship) => {
45
- const totalStakeableAmount = sum([...myCurrentStakes.values()]) + myUnstakedAmount;
41
+ const getTargetStakes = (myCurrentStakes, myUnstakedAmount, stakeableSponsorships, undelegationQueueAmount, operatorContractAddress, maxSponsorshipCount, minStakePerSponsorship) => {
42
+ const totalStakeableAmount = (0, sum_1.sum)([...myCurrentStakes.values()]) + myUnstakedAmount - undelegationQueueAmount;
46
43
  const selectedSponsorships = getSelectedSponsorships(myCurrentStakes, stakeableSponsorships, totalStakeableAmount, operatorContractAddress, maxSponsorshipCount, minStakePerSponsorship);
47
44
  const minStakePerSponsorshipSum = BigInt(selectedSponsorships.length) * minStakePerSponsorship;
48
45
  const payoutProportionalAmount = totalStakeableAmount - minStakePerSponsorshipSum;
49
- const payoutPerSecSum = sum(selectedSponsorships.map((id) => stakeableSponsorships.get(id).payoutPerSec));
46
+ const payoutPerSecSum = (0, sum_1.sum)(selectedSponsorships.map((id) => stakeableSponsorships.get(id).payoutPerSec));
50
47
  const targetsForSelected = selectedSponsorships.map((id) => [
51
48
  id,
52
49
  minStakePerSponsorship + payoutProportionalAmount * stakeableSponsorships.get(id).payoutPerSec / payoutPerSecSum
@@ -61,41 +58,37 @@ const getTargetStakes = (myCurrentStakes, myUnstakedAmount, stakeableSponsorship
61
58
  * @returns A list of stake and unstake actions. The actions should be ordered so that transactions can be executed sequentially,
62
59
  * e.g. all unstake actions first to ensure sufficient balance for the subsequent staking actions.
63
60
  */
64
- const adjustStakes = ({ myCurrentStakes, myUnstakedAmount, stakeableSponsorships, operatorContractAddress, maxSponsorshipCount, minTransactionAmount, minStakePerSponsorship }) => {
65
- const targetStakes = getTargetStakes(myCurrentStakes, myUnstakedAmount, stakeableSponsorships, operatorContractAddress, maxSponsorshipCount, minStakePerSponsorship);
61
+ const adjustStakes = ({ myCurrentStakes, myUnstakedAmount, stakeableSponsorships, undelegationQueueAmount, operatorContractAddress, maxSponsorshipCount, minTransactionAmount, minStakePerSponsorship }) => {
62
+ const targetStakes = getTargetStakes(myCurrentStakes, myUnstakedAmount, stakeableSponsorships, undelegationQueueAmount, operatorContractAddress, maxSponsorshipCount, minStakePerSponsorship);
66
63
  const adjustments = [...targetStakes.keys()]
67
64
  .map((sponsorshipId) => ({
68
65
  sponsorshipId,
69
66
  difference: targetStakes.get(sponsorshipId) - (myCurrentStakes.get(sponsorshipId) ?? 0n)
70
67
  }))
71
68
  .filter(({ difference: difference }) => difference !== 0n);
72
- // fix rounding errors by forcing the net staking to equal myUnstakedAmount: adjust the largest staking
73
- const netStakingAmount = sum(adjustments.map((a) => a.difference));
74
- if (netStakingAmount !== myUnstakedAmount && stakeableSponsorships.size > 0 && adjustments.length > 0) {
75
- const largestDifference = (0, maxBy_1.default)(adjustments, (a) => a.difference);
76
- largestDifference.difference += myUnstakedAmount - netStakingAmount;
77
- if (largestDifference.difference === 0n) {
78
- (0, pull_1.default)(adjustments, largestDifference);
79
- }
80
- }
81
69
  const tooSmallAdjustments = adjustments.filter(
82
70
  // note the edge case: expired sponsorships can be unstaked, even if the transaction amount is considered "too small"
83
71
  (a) => (abs(a.difference) < minTransactionAmount) && stakeableSponsorships.has(a.sponsorshipId));
84
- if (tooSmallAdjustments.length > 0) {
85
- (0, pull_1.default)(adjustments, ...tooSmallAdjustments);
86
- while (true) {
87
- const stakings = adjustments.filter((a) => a.difference > 0);
88
- const unstakings = adjustments.filter((a) => a.difference < 0);
89
- const stakingSum = sum(stakings.map((a) => a.difference));
90
- const availableSum = abs(sum(unstakings.map((a) => a.difference))) + myUnstakedAmount;
91
- if (stakingSum > availableSum) {
92
- const smallestStaking = (0, minBy_1.default)(stakings, (a) => a.difference);
93
- (0, pull_1.default)(adjustments, smallestStaking);
72
+ (0, pull_1.default)(adjustments, ...tooSmallAdjustments);
73
+ while (true) {
74
+ const stakings = adjustments.filter((a) => a.difference > 0);
75
+ const unstakings = adjustments.filter((a) => a.difference < 0);
76
+ const stakingSum = (0, sum_1.sum)(stakings.map((a) => a.difference));
77
+ const availableSum = abs((0, sum_1.sum)(unstakings.map((a) => a.difference))) + myUnstakedAmount - undelegationQueueAmount;
78
+ if (stakingSum > availableSum && stakings.length > 0) {
79
+ const smallestStaking = (0, minBy_1.default)(stakings, (a) => a.difference);
80
+ const newDifference = smallestStaking.difference - (stakingSum - availableSum);
81
+ const hasAlreadyStaked = myCurrentStakes.has(smallestStaking.sponsorshipId);
82
+ if (newDifference >= minTransactionAmount && (hasAlreadyStaked || newDifference >= minStakePerSponsorship)) {
83
+ smallestStaking.difference = newDifference;
94
84
  }
95
85
  else {
96
- break;
86
+ (0, pull_1.default)(adjustments, smallestStaking);
97
87
  }
98
88
  }
89
+ else {
90
+ break;
91
+ }
99
92
  }
100
93
  return (0, sortBy_1.default)(adjustments.map(({ sponsorshipId, difference }) => ({
101
94
  type: difference > 0n ? 'stake' : 'unstake',
@@ -1 +1 @@
1
- {"version":3,"file":"payoutProportionalStrategy.js","sourceRoot":"","sources":["../../../../src/plugins/autostaker/payoutProportionalStrategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payoutProportionalStrategy.js","sourceRoot":"","sources":["../../../../src/plugins/autostaker/payoutProportionalStrategy.ts"],"names":[],"mappings":";;;;;;AACA,oDAA2B;AAC3B,yDAAgC;AAChC,iEAAwC;AACxC,uDAA8B;AAC9B,2DAAkC;AAElC,+BAA2B;AAoC3B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5C,MAAM,sBAAsB,GAAG,CAC3B,eAA8C,EAC9C,qBAA4D,EAC7C,EAAE;IACjB,OAAO,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;AAC3G,CAAC,CAAA;AACD;;GAEG;AACH,MAAM,uBAAuB,GAAG,CAC5B,eAA8C,EAC9C,qBAA4D,EAC5D,oBAA+B,EAC/B,uBAA+B,EAC/B,mBAA2B,EAC3B,sBAAiC,EAClB,EAAE;IACjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAClB,qBAAqB,CAAC,IAAI,EAC1B,mBAAmB,EACnB,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAE,2BAA2B;KAChI,CAAA;IACD,MAAM,CACF,gBAAgB,EAChB,qBAAqB,EACxB,GAAG,IAAA,mBAAS,EAAC,CAAC,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACjF,OAAO;QACH,GAAG,gBAAgB;QACnB,GAAG,IAAA,gBAAM,EAAC,qBAAqB,EAC3B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,YAAY,EACpD,CAAC,EAAE,EAAE,EAAE;YACH,gFAAgF;YAChF,yFAAyF;YACzF,iFAAiF;YACjF,sBAAsB;YACtB,MAAM,MAAM,GAAG,gBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;YACrF,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CACJ;KACJ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACrB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,eAAe,GAAG,CACpB,eAA8C,EAC9C,gBAA2B,EAC3B,qBAA4D,EAC5D,uBAAkC,EAClC,uBAA+B,EAC/B,mBAA2B,EAC3B,sBAAiC,EACJ,EAAE;IAC/B,MAAM,oBAAoB,GAAG,IAAA,SAAG,EAAC,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,gBAAgB,GAAG,uBAAuB,CAAA;IAC5G,MAAM,oBAAoB,GAAG,uBAAuB,CAChD,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,CACzB,CAAA;IACD,MAAM,yBAAyB,GAAG,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAA;IAC9F,MAAM,wBAAwB,GAAG,oBAAoB,GAAG,yBAAyB,CAAA;IACjF,MAAM,eAAe,GAAG,IAAA,SAAG,EAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAC1G,MAAM,kBAAkB,GAAkB,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QACvE,EAAE;QACF,sBAAsB,GAAG,wBAAwB,GAAG,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,YAAY,GAAG,eAAe;KACpH,CAAC,CAAA;IACF,MAAM,iBAAiB,GAAkB,sBAAsB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QAChH,EAAE;QACF,EAAE;KACL,CAAC,CAAA;IACF,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAA;AACjE,CAAC,CAAA;AAED;;;GAGG;AACI,MAAM,YAAY,GAAmB,CAAC,EACzC,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACzB,EAAY,EAAE;IAEX,MAAM,YAAY,GAAG,eAAe,CAChC,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,CACzB,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;SACvC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACrB,aAAa;QACb,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,aAAa,CAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC5F,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,CAAA;IAE9D,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM;IAC1C,qHAAqH;IACrH,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAClG,CAAA;IACD,IAAA,cAAI,EAAC,WAAW,EAAE,GAAG,mBAAmB,CAAC,CAAA;IACzC,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;QAC9D,MAAM,UAAU,GAAG,IAAA,SAAG,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QACzD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAA,SAAG,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,uBAAuB,CAAA;QAC/G,IAAI,UAAU,GAAG,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,eAAe,GAAG,IAAA,eAAK,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAE,CAAA;YAC7D,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,CAAA;YAC9E,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;YAC3E,IAAI,aAAa,IAAI,oBAAoB,IAAI,CAAC,gBAAgB,IAAI,aAAa,IAAI,sBAAsB,CAAC,EAAE,CAAC;gBACzG,eAAe,CAAC,UAAU,GAAG,aAAa,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACJ,IAAA,cAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAA;YACtC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAK;QACT,CAAC;IACL,CAAC;IAED,OAAO,IAAA,gBAAM,EACT,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC3C,aAAa;QACb,MAAM,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU;KACrD,CAAC,CAAC,EACH,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CACxD,CAAA;AACL,CAAC,CAAA;AA5DY,QAAA,YAAY,gBA4DxB"}
@@ -0,0 +1 @@
1
+ export declare const sum: (values: bigint[]) => bigint;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sum = void 0;
4
+ const sum = (values) => {
5
+ return values.reduce((acc, value) => acc + value, 0n);
6
+ };
7
+ exports.sum = sum;
8
+ //# sourceMappingURL=sum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sum.js","sourceRoot":"","sources":["../../../../src/plugins/autostaker/sum.ts"],"names":[],"mappings":";;;AAAO,MAAM,GAAG,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC,CAAA;AACzD,CAAC,CAAA;AAFY,QAAA,GAAG,OAEf"}
@@ -12,6 +12,7 @@ export type AdjustStakesFn = (opts: {
12
12
  myCurrentStakes: Map<SponsorshipID, WeiAmount>;
13
13
  myUnstakedAmount: WeiAmount;
14
14
  stakeableSponsorships: Map<SponsorshipID, SponsorshipConfig>;
15
+ undelegationQueueAmount: WeiAmount;
15
16
  operatorContractAddress: string;
16
17
  maxSponsorshipCount: number;
17
18
  minTransactionAmount: WeiAmount;
@@ -21,7 +21,7 @@ export declare class OperatorFleetState extends EventEmitter<OperatorFleetStateE
21
21
  private readonly ready;
22
22
  private subscription?;
23
23
  static createOperatorFleetStateBuilder(streamrClient: StreamrClient, heartbeatIntervalInMs: number, pruneAgeInMs: number, pruneIntervalInMs: number, latencyExtraInMs: number, warmupPeriodInMs: number, timeProvider?: () => number): CreateOperatorFleetStateFn;
24
- private constructor();
24
+ constructor(streamrClient: StreamrClient, coordinationStreamId: StreamID, heartbeatIntervalInMs: number, pruneAgeInMs: number, pruneIntervalInMs: number, latencyExtraInMs: number, warmupPeriodInMs: number, timeProvider?: () => number);
25
25
  start(): Promise<void>;
26
26
  waitUntilReady(): Promise<void>;
27
27
  destroy(): Promise<void>;
@@ -10,12 +10,12 @@ export declare const HeartbeatMessageSchema: z.ZodObject<{
10
10
  port: z.ZodNumber;
11
11
  tls: z.ZodBoolean;
12
12
  }, "strip", z.ZodTypeAny, {
13
- port: number;
14
13
  host: string;
14
+ port: number;
15
15
  tls: boolean;
16
16
  }, {
17
- port: number;
18
17
  host: string;
18
+ port: number;
19
19
  tls: boolean;
20
20
  }>>;
21
21
  region: z.ZodOptional<z.ZodNumber>;
@@ -23,8 +23,8 @@ export declare const HeartbeatMessageSchema: z.ZodObject<{
23
23
  nodeId: string;
24
24
  type?: NetworkNodeType | undefined;
25
25
  websocket?: {
26
- port: number;
27
26
  host: string;
27
+ port: number;
28
28
  tls: boolean;
29
29
  } | undefined;
30
30
  region?: number | undefined;
@@ -32,8 +32,8 @@ export declare const HeartbeatMessageSchema: z.ZodObject<{
32
32
  nodeId: string;
33
33
  type?: NetworkNodeType | undefined;
34
34
  websocket?: {
35
- port: number;
36
35
  host: string;
36
+ port: number;
37
37
  tls: boolean;
38
38
  } | undefined;
39
39
  region?: number | undefined;
@@ -45,8 +45,8 @@ export declare const HeartbeatMessageSchema: z.ZodObject<{
45
45
  nodeId: string;
46
46
  type?: NetworkNodeType | undefined;
47
47
  websocket?: {
48
- port: number;
49
48
  host: string;
49
+ port: number;
50
50
  tls: boolean;
51
51
  } | undefined;
52
52
  region?: number | undefined;
@@ -58,8 +58,8 @@ export declare const HeartbeatMessageSchema: z.ZodObject<{
58
58
  nodeId: string;
59
59
  type?: NetworkNodeType | undefined;
60
60
  websocket?: {
61
- port: number;
62
61
  host: string;
62
+ port: number;
63
63
  tls: boolean;
64
64
  } | undefined;
65
65
  region?: number | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/node",
3
- "version": "103.0.0",
3
+ "version": "103.1.0-rc.0",
4
4
  "description": "A full-featured node implementation for the Streamr Network",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,9 +39,9 @@
39
39
  "dependencies": {
40
40
  "@inquirer/prompts": "^7.5.3",
41
41
  "@streamr/config": "^5.8.0",
42
- "@streamr/dht": "103.0.0",
43
- "@streamr/sdk": "103.0.0",
44
- "@streamr/utils": "103.0.0",
42
+ "@streamr/dht": "103.1.0-rc.0",
43
+ "@streamr/sdk": "103.1.0-rc.0",
44
+ "@streamr/utils": "103.1.0-rc.0",
45
45
  "aedes": "^0.51.3",
46
46
  "ajv": "^8.17.1",
47
47
  "ajv-formats": "^3.0.1",
@@ -65,7 +65,7 @@
65
65
  "devDependencies": {
66
66
  "@inquirer/testing": "^2.1.47",
67
67
  "@streamr/network-contracts": "^9.1.0",
68
- "@streamr/test-utils": "103.0.0",
68
+ "@streamr/test-utils": "103.1.0-rc.0",
69
69
  "@types/cors": "^2.8.19",
70
70
  "@types/express": "^5.0.1",
71
71
  "@types/heap": "^0.2.34",