@helium/helium-admin-cli 0.10.3 → 0.10.5
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/lib/cjs/update-destinations.js +209 -0
- package/lib/cjs/update-destinations.js.map +1 -0
- package/lib/cjs/update-subdao-vehnt.js +27 -14
- package/lib/cjs/update-subdao-vehnt.js.map +1 -1
- package/lib/esm/src/update-destinations.js +161 -0
- package/lib/esm/src/update-destinations.js.map +1 -0
- package/lib/esm/src/update-subdao-vehnt.js +27 -14
- package/lib/esm/src/update-subdao-vehnt.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/update-destinations.d.ts +5 -0
- package/lib/types/src/update-destinations.d.ts.map +1 -0
- package/lib/types/src/update-subdao-vehnt.d.ts.map +1 -1
- package/package.json +13 -13
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
35
|
+
var t = {};
|
|
36
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
37
|
+
t[p] = s[p];
|
|
38
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
39
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
40
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
41
|
+
t[p[i]] = s[p[i]];
|
|
42
|
+
}
|
|
43
|
+
return t;
|
|
44
|
+
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.run = exports.exists = void 0;
|
|
50
|
+
const anchor = __importStar(require("@coral-xyz/anchor"));
|
|
51
|
+
const lazy_distributor_sdk_1 = require("@helium/lazy-distributor-sdk");
|
|
52
|
+
const spl_utils_1 = require("@helium/spl-utils");
|
|
53
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
54
|
+
const os_1 = __importDefault(require("os"));
|
|
55
|
+
const yargs_1 = __importDefault(require("yargs/yargs"));
|
|
56
|
+
function exists(provider, account) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
return Boolean(yield provider.connection.getAccountInfo(account));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
exports.exists = exists;
|
|
62
|
+
function getCompressedCollectablesByOwner(provider, pubKey, page, limit) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
const endpoint = provider.connection.rpcEndpoint;
|
|
65
|
+
const _a = yield (0, spl_utils_1.searchAssetsWithPageInfo)(endpoint, {
|
|
66
|
+
ownerAddress: pubKey.toBase58(),
|
|
67
|
+
page,
|
|
68
|
+
limit,
|
|
69
|
+
burnt: false,
|
|
70
|
+
options: {
|
|
71
|
+
showGrandTotal: true,
|
|
72
|
+
},
|
|
73
|
+
}), { items } = _a, rest = __rest(_a, ["items"]);
|
|
74
|
+
return Object.assign(Object.assign({}, rest), { items });
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function run(args = process.argv) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
const yarg = (0, yargs_1.default)(args).options({
|
|
80
|
+
wallet: {
|
|
81
|
+
alias: "k",
|
|
82
|
+
describe: "Anchor wallet keypair",
|
|
83
|
+
default: `${os_1.default.homedir()}/.config/solana/id.json`,
|
|
84
|
+
},
|
|
85
|
+
url: {
|
|
86
|
+
alias: "u",
|
|
87
|
+
default: "http://127.0.0.1:8899",
|
|
88
|
+
describe: "The solana url",
|
|
89
|
+
},
|
|
90
|
+
mint: {
|
|
91
|
+
type: "string",
|
|
92
|
+
describe: "Token mint type to update recipients for",
|
|
93
|
+
default: "all",
|
|
94
|
+
choices: ["iot", "mobile", "hnt", "all"],
|
|
95
|
+
},
|
|
96
|
+
destination: {
|
|
97
|
+
type: "string",
|
|
98
|
+
describe: "Destination address to update recipients to",
|
|
99
|
+
required: false,
|
|
100
|
+
},
|
|
101
|
+
commit: {
|
|
102
|
+
type: "boolean",
|
|
103
|
+
describe: "Commit transactions to the chain",
|
|
104
|
+
default: false,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
const PAGE_LIMIT = 1000;
|
|
108
|
+
const argv = yield yarg.argv;
|
|
109
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
110
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
111
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
112
|
+
const provider = anchor.getProvider();
|
|
113
|
+
const lazyProgram = yield (0, lazy_distributor_sdk_1.init)(provider);
|
|
114
|
+
const ownerWallet = provider.publicKey;
|
|
115
|
+
const destination = argv.destination
|
|
116
|
+
? new web3_js_1.PublicKey(argv.destination)
|
|
117
|
+
: web3_js_1.PublicKey.default;
|
|
118
|
+
const destinationExists = yield exists(provider, destination);
|
|
119
|
+
if (!destinationExists) {
|
|
120
|
+
console.log("Destination doesn't exist");
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
console.log(`Searching for hotspots owned by: ${ownerWallet.toBase58()}`);
|
|
124
|
+
console.log(`Destination address: ${destination.toBase58()}`);
|
|
125
|
+
let firstPageResult = yield getCompressedCollectablesByOwner(provider, ownerWallet, 1, PAGE_LIMIT);
|
|
126
|
+
let totalPages = Math.ceil(firstPageResult.total / PAGE_LIMIT);
|
|
127
|
+
let assets = [...firstPageResult.items];
|
|
128
|
+
if (assets.length === 0) {
|
|
129
|
+
console.log("No hotspots found for this wallet");
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (totalPages > 1) {
|
|
133
|
+
const remainingPages = Array.from({ length: totalPages - 1 }, (_, i) => i + 2);
|
|
134
|
+
const pageResults = yield Promise.all(remainingPages.map((page) => getCompressedCollectablesByOwner(provider, ownerWallet, page, PAGE_LIMIT)));
|
|
135
|
+
pageResults.forEach((result) => {
|
|
136
|
+
assets = assets.concat(result.items);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
const mintMap = {
|
|
140
|
+
iot: spl_utils_1.IOT_MINT,
|
|
141
|
+
mobile: spl_utils_1.MOBILE_MINT,
|
|
142
|
+
hnt: spl_utils_1.HNT_MINT,
|
|
143
|
+
};
|
|
144
|
+
const mintsToUpdate = argv.mint === "all"
|
|
145
|
+
? Object.values(mintMap)
|
|
146
|
+
: [mintMap[argv.mint]];
|
|
147
|
+
const recipientsToUpdate = {};
|
|
148
|
+
mintsToUpdate.forEach((mint) => {
|
|
149
|
+
const mintName = mint.equals(spl_utils_1.IOT_MINT)
|
|
150
|
+
? "iot"
|
|
151
|
+
: mint.equals(spl_utils_1.MOBILE_MINT)
|
|
152
|
+
? "mobile"
|
|
153
|
+
: "hnt";
|
|
154
|
+
recipientsToUpdate[mintName] = [];
|
|
155
|
+
});
|
|
156
|
+
const recipientChecks = assets
|
|
157
|
+
.flatMap((asset) => mintsToUpdate.map((mint) => ({
|
|
158
|
+
mint,
|
|
159
|
+
assetId: asset.id,
|
|
160
|
+
lazyKey: (0, lazy_distributor_sdk_1.lazyDistributorKey)(mint)[0],
|
|
161
|
+
mintName: mint.equals(spl_utils_1.IOT_MINT)
|
|
162
|
+
? "iot"
|
|
163
|
+
: mint.equals(spl_utils_1.MOBILE_MINT)
|
|
164
|
+
? "mobile"
|
|
165
|
+
: "hnt",
|
|
166
|
+
})))
|
|
167
|
+
.map(({ assetId, lazyKey, mintName }) => __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
const recipient = (0, lazy_distributor_sdk_1.recipientKey)(lazyKey, assetId)[0];
|
|
169
|
+
const acc = yield lazyProgram.account.recipientV0.fetchNullable(recipient);
|
|
170
|
+
if (acc && acc.destination.toBase58() !== destination.toBase58()) {
|
|
171
|
+
recipientsToUpdate[mintName].push({ recipient, asset: assetId });
|
|
172
|
+
}
|
|
173
|
+
}));
|
|
174
|
+
yield Promise.all(recipientChecks);
|
|
175
|
+
console.log("\nSummary:");
|
|
176
|
+
for (const [mintName, recipients] of Object.entries(recipientsToUpdate)) {
|
|
177
|
+
console.log(`- ${mintName.toUpperCase()}: ${recipients.length} recipients to destination ${destination.toBase58()}`);
|
|
178
|
+
}
|
|
179
|
+
if (argv.commit) {
|
|
180
|
+
try {
|
|
181
|
+
const instructions = yield Promise.all(Object.values(recipientsToUpdate)
|
|
182
|
+
.flat()
|
|
183
|
+
.map(({ recipient, asset }) => __awaiter(this, void 0, void 0, function* () {
|
|
184
|
+
const { asset: { ownership: { owner }, }, args, accounts, remainingAccounts, } = yield (0, spl_utils_1.proofArgsAndAccounts)({
|
|
185
|
+
connection: provider.connection,
|
|
186
|
+
assetId: asset,
|
|
187
|
+
});
|
|
188
|
+
return lazyProgram.methods
|
|
189
|
+
.updateCompressionDestinationV0(Object.assign({}, args))
|
|
190
|
+
.accountsPartial(Object.assign(Object.assign({}, accounts), { owner,
|
|
191
|
+
recipient, destination: destination == null ? web3_js_1.PublicKey.default : destination }))
|
|
192
|
+
.remainingAccounts(remainingAccounts)
|
|
193
|
+
.instruction();
|
|
194
|
+
})));
|
|
195
|
+
const transactions = yield (0, spl_utils_1.batchInstructionsToTxsWithPriorityFee)(provider, instructions, { useFirstEstimateForAll: true });
|
|
196
|
+
yield (0, spl_utils_1.bulkSendTransactions)(provider, transactions, console.log, 10, [], 100);
|
|
197
|
+
}
|
|
198
|
+
catch (e) {
|
|
199
|
+
console.log("Failed to update recipients", e);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
console.log("\nDry run completed. Use --commit flag to execute the updates.");
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
exports.run = run;
|
|
209
|
+
//# sourceMappingURL=update-destinations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-destinations.js","sourceRoot":"","sources":["../../src/update-destinations.ts"],"names":[],"mappings":"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"}
|
|
@@ -151,7 +151,7 @@ function run(args = process.argv) {
|
|
|
151
151
|
CASE WHEN p.genesis_end > current_ts THEN cast(r.voting_mints[p.voting_mint_config_idx + 1]->>'genesisVotePowerMultiplier' as numeric) ELSE 1 END as genesis_multiplier,
|
|
152
152
|
GREATEST(
|
|
153
153
|
cast(
|
|
154
|
-
p.end_ts -
|
|
154
|
+
p.end_ts -
|
|
155
155
|
CASE WHEN lockup_kind = 'constant' THEN start_ts ELSE current_ts END
|
|
156
156
|
as numeric
|
|
157
157
|
),
|
|
@@ -165,7 +165,7 @@ function run(args = process.argv) {
|
|
|
165
165
|
cast(lockup->>'startTs' as numeric) as start_ts,
|
|
166
166
|
-- 1683727980 as current_ts
|
|
167
167
|
FLOOR(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)) as current_ts
|
|
168
|
-
FROM positions
|
|
168
|
+
FROM positions
|
|
169
169
|
) p
|
|
170
170
|
JOIN registrars r on p.registrar = r.address
|
|
171
171
|
),
|
|
@@ -181,9 +181,9 @@ function run(args = process.argv) {
|
|
|
181
181
|
amount_deposited_native,
|
|
182
182
|
ve_tokens,
|
|
183
183
|
initial_ve_tokens,
|
|
184
|
-
CASE WHEN lockup_kind = 'constant' THEN
|
|
184
|
+
CASE WHEN lockup_kind = 'constant' THEN
|
|
185
185
|
0
|
|
186
|
-
ELSE
|
|
186
|
+
ELSE
|
|
187
187
|
CASE WHEN current_ts < genesis_end THEN
|
|
188
188
|
-- genesis
|
|
189
189
|
(ve_tokens - (
|
|
@@ -199,7 +199,7 @@ function run(args = process.argv) {
|
|
|
199
199
|
) / (genesis_end - current_ts)
|
|
200
200
|
ELSE
|
|
201
201
|
-- normal
|
|
202
|
-
ve_tokens / (end_ts - current_ts)
|
|
202
|
+
ve_tokens / (end_ts - current_ts)
|
|
203
203
|
END
|
|
204
204
|
END as fall_rate,
|
|
205
205
|
start_ts,
|
|
@@ -246,26 +246,39 @@ function run(args = process.argv) {
|
|
|
246
246
|
FROM positions_with_vehnt p
|
|
247
247
|
JOIN delegated_positions d on d.position = p.address
|
|
248
248
|
JOIN sub_daos s on s.address = d.sub_dao
|
|
249
|
-
-- Remove positions getting purged this epoch
|
|
250
|
-
WHERE
|
|
249
|
+
-- Remove positions getting purged this epoch or expired this epoch
|
|
250
|
+
WHERE
|
|
251
|
+
(
|
|
252
|
+
lockup_kind = 'constant'
|
|
253
|
+
or end_ts > (
|
|
254
|
+
floor(current_ts / (60 * 60 * 24)) * (60 * 60 * 24)
|
|
255
|
+
) + 60 * 60 * 24
|
|
256
|
+
)
|
|
257
|
+
AND d.expiration_ts > (floor(current_ts / (60 * 60 * 24)) * (60 * 60 * 24)) + 60 * 60 * 24
|
|
251
258
|
GROUP BY s.dnt_mint, s.vehnt_fall_rate, s.vehnt_delegated, s.vehnt_last_calculated_ts, s.vehnt_last_calculated_ts
|
|
252
259
|
)
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
260
|
+
SELECT
|
|
261
|
+
mint,
|
|
262
|
+
delegations,
|
|
263
|
+
current_ts,
|
|
257
264
|
real_ve_tokens * 1000000000000 as real_ve_tokens,
|
|
258
265
|
approx_ve_tokens * 1000000000000 as approx_ve_tokens,
|
|
259
266
|
real_fall_rate * 1000000000000 as real_fall_rate,
|
|
260
267
|
approx_fall_rate * 1000000000000 as approx_fall_rate,
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
268
|
+
approx_fall_rate - real_fall_rate as fall_rate_diff,
|
|
269
|
+
approx_ve_tokens - real_ve_tokens as ve_tokens_diff
|
|
270
|
+
FROM subdao_delegations;
|
|
271
|
+
`)).rows;
|
|
264
272
|
const row = response.find((x) => x.mint == argv.dntMint);
|
|
265
273
|
const instructions = [];
|
|
266
274
|
const subDao = (0, helium_sub_daos_sdk_1.subDaoKey)(new web3_js_1.PublicKey(argv.dntMint))[0];
|
|
267
275
|
const subDaoAcc = yield program.account.subDaoV0.fetch(subDao);
|
|
268
276
|
console.log('Subdao', subDao.toBase58());
|
|
277
|
+
console.log("updating: ", {
|
|
278
|
+
vehntDelegated: new bn_js_1.BN(row.real_ve_tokens.split('.')[0]).toString(),
|
|
279
|
+
vehntLastCalculatedTs: new bn_js_1.BN(row.current_ts).toString(),
|
|
280
|
+
vehntFallRate: new bn_js_1.BN(row.real_fall_rate.split('.')[0]).toString(),
|
|
281
|
+
});
|
|
269
282
|
instructions.push(yield program.methods
|
|
270
283
|
.updateSubDaoVehntV0({
|
|
271
284
|
vehntDelegated: new bn_js_1.BN(row.real_ve_tokens.split('.')[0]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-subdao-vehnt.js","sourceRoot":"","sources":["../../src/update-subdao-vehnt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update-subdao-vehnt.js","sourceRoot":"","sources":["../../src/update-subdao-vehnt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import * as anchor from "@coral-xyz/anchor";
|
|
2
|
+
import { lazyDistributorKey, recipientKey, init as initLazy, } from "@helium/lazy-distributor-sdk";
|
|
3
|
+
import { IOT_MINT, MOBILE_MINT, HNT_MINT, searchAssetsWithPageInfo, batchInstructionsToTxsWithPriorityFee, bulkSendTransactions, proofArgsAndAccounts, } from "@helium/spl-utils";
|
|
4
|
+
import { PublicKey } from "@solana/web3.js";
|
|
5
|
+
import os from "os";
|
|
6
|
+
import yargs from "yargs/yargs";
|
|
7
|
+
export async function exists(provider, account) {
|
|
8
|
+
return Boolean(await provider.connection.getAccountInfo(account));
|
|
9
|
+
}
|
|
10
|
+
async function getCompressedCollectablesByOwner(provider, pubKey, page, limit) {
|
|
11
|
+
const endpoint = provider.connection.rpcEndpoint;
|
|
12
|
+
const { items, ...rest } = await searchAssetsWithPageInfo(endpoint, {
|
|
13
|
+
ownerAddress: pubKey.toBase58(),
|
|
14
|
+
page,
|
|
15
|
+
limit,
|
|
16
|
+
burnt: false,
|
|
17
|
+
options: {
|
|
18
|
+
showGrandTotal: true,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
...rest,
|
|
23
|
+
items,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export async function run(args = process.argv) {
|
|
27
|
+
const yarg = yargs(args).options({
|
|
28
|
+
wallet: {
|
|
29
|
+
alias: "k",
|
|
30
|
+
describe: "Anchor wallet keypair",
|
|
31
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
32
|
+
},
|
|
33
|
+
url: {
|
|
34
|
+
alias: "u",
|
|
35
|
+
default: "http://127.0.0.1:8899",
|
|
36
|
+
describe: "The solana url",
|
|
37
|
+
},
|
|
38
|
+
mint: {
|
|
39
|
+
type: "string",
|
|
40
|
+
describe: "Token mint type to update recipients for",
|
|
41
|
+
default: "all",
|
|
42
|
+
choices: ["iot", "mobile", "hnt", "all"],
|
|
43
|
+
},
|
|
44
|
+
destination: {
|
|
45
|
+
type: "string",
|
|
46
|
+
describe: "Destination address to update recipients to",
|
|
47
|
+
required: false,
|
|
48
|
+
},
|
|
49
|
+
commit: {
|
|
50
|
+
type: "boolean",
|
|
51
|
+
describe: "Commit transactions to the chain",
|
|
52
|
+
default: false,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
const PAGE_LIMIT = 1000;
|
|
56
|
+
const argv = await yarg.argv;
|
|
57
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
58
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
59
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
60
|
+
const provider = anchor.getProvider();
|
|
61
|
+
const lazyProgram = await initLazy(provider);
|
|
62
|
+
const ownerWallet = provider.publicKey;
|
|
63
|
+
const destination = argv.destination
|
|
64
|
+
? new PublicKey(argv.destination)
|
|
65
|
+
: PublicKey.default;
|
|
66
|
+
const destinationExists = await exists(provider, destination);
|
|
67
|
+
if (!destinationExists) {
|
|
68
|
+
console.log("Destination doesn't exist");
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
console.log(`Searching for hotspots owned by: ${ownerWallet.toBase58()}`);
|
|
72
|
+
console.log(`Destination address: ${destination.toBase58()}`);
|
|
73
|
+
let firstPageResult = await getCompressedCollectablesByOwner(provider, ownerWallet, 1, PAGE_LIMIT);
|
|
74
|
+
let totalPages = Math.ceil(firstPageResult.total / PAGE_LIMIT);
|
|
75
|
+
let assets = [...firstPageResult.items];
|
|
76
|
+
if (assets.length === 0) {
|
|
77
|
+
console.log("No hotspots found for this wallet");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (totalPages > 1) {
|
|
81
|
+
const remainingPages = Array.from({ length: totalPages - 1 }, (_, i) => i + 2);
|
|
82
|
+
const pageResults = await Promise.all(remainingPages.map((page) => getCompressedCollectablesByOwner(provider, ownerWallet, page, PAGE_LIMIT)));
|
|
83
|
+
pageResults.forEach((result) => {
|
|
84
|
+
assets = assets.concat(result.items);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const mintMap = {
|
|
88
|
+
iot: IOT_MINT,
|
|
89
|
+
mobile: MOBILE_MINT,
|
|
90
|
+
hnt: HNT_MINT,
|
|
91
|
+
};
|
|
92
|
+
const mintsToUpdate = argv.mint === "all"
|
|
93
|
+
? Object.values(mintMap)
|
|
94
|
+
: [mintMap[argv.mint]];
|
|
95
|
+
const recipientsToUpdate = {};
|
|
96
|
+
mintsToUpdate.forEach((mint) => {
|
|
97
|
+
const mintName = mint.equals(IOT_MINT)
|
|
98
|
+
? "iot"
|
|
99
|
+
: mint.equals(MOBILE_MINT)
|
|
100
|
+
? "mobile"
|
|
101
|
+
: "hnt";
|
|
102
|
+
recipientsToUpdate[mintName] = [];
|
|
103
|
+
});
|
|
104
|
+
const recipientChecks = assets
|
|
105
|
+
.flatMap((asset) => mintsToUpdate.map((mint) => ({
|
|
106
|
+
mint,
|
|
107
|
+
assetId: asset.id,
|
|
108
|
+
lazyKey: lazyDistributorKey(mint)[0],
|
|
109
|
+
mintName: mint.equals(IOT_MINT)
|
|
110
|
+
? "iot"
|
|
111
|
+
: mint.equals(MOBILE_MINT)
|
|
112
|
+
? "mobile"
|
|
113
|
+
: "hnt",
|
|
114
|
+
})))
|
|
115
|
+
.map(async ({ assetId, lazyKey, mintName }) => {
|
|
116
|
+
const recipient = recipientKey(lazyKey, assetId)[0];
|
|
117
|
+
const acc = await lazyProgram.account.recipientV0.fetchNullable(recipient);
|
|
118
|
+
if (acc && acc.destination.toBase58() !== destination.toBase58()) {
|
|
119
|
+
recipientsToUpdate[mintName].push({ recipient, asset: assetId });
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
await Promise.all(recipientChecks);
|
|
123
|
+
console.log("\nSummary:");
|
|
124
|
+
for (const [mintName, recipients] of Object.entries(recipientsToUpdate)) {
|
|
125
|
+
console.log(`- ${mintName.toUpperCase()}: ${recipients.length} recipients to destination ${destination.toBase58()}`);
|
|
126
|
+
}
|
|
127
|
+
if (argv.commit) {
|
|
128
|
+
try {
|
|
129
|
+
const instructions = await Promise.all(Object.values(recipientsToUpdate)
|
|
130
|
+
.flat()
|
|
131
|
+
.map(async ({ recipient, asset }) => {
|
|
132
|
+
const { asset: { ownership: { owner }, }, args, accounts, remainingAccounts, } = await proofArgsAndAccounts({
|
|
133
|
+
connection: provider.connection,
|
|
134
|
+
assetId: asset,
|
|
135
|
+
});
|
|
136
|
+
return lazyProgram.methods
|
|
137
|
+
.updateCompressionDestinationV0({
|
|
138
|
+
...args,
|
|
139
|
+
})
|
|
140
|
+
.accountsPartial({
|
|
141
|
+
...accounts,
|
|
142
|
+
owner,
|
|
143
|
+
recipient,
|
|
144
|
+
destination: destination == null ? PublicKey.default : destination,
|
|
145
|
+
})
|
|
146
|
+
.remainingAccounts(remainingAccounts)
|
|
147
|
+
.instruction();
|
|
148
|
+
}));
|
|
149
|
+
const transactions = await batchInstructionsToTxsWithPriorityFee(provider, instructions, { useFirstEstimateForAll: true });
|
|
150
|
+
await bulkSendTransactions(provider, transactions, console.log, 10, [], 100);
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
console.log("Failed to update recipients", e);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log("\nDry run completed. Use --commit flag to execute the updates.");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=update-destinations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-destinations.js","sourceRoot":"","sources":["../../../src/update-destinations.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,7 +112,7 @@ export async function run(args = process.argv) {
|
|
|
112
112
|
CASE WHEN p.genesis_end > current_ts THEN cast(r.voting_mints[p.voting_mint_config_idx + 1]->>'genesisVotePowerMultiplier' as numeric) ELSE 1 END as genesis_multiplier,
|
|
113
113
|
GREATEST(
|
|
114
114
|
cast(
|
|
115
|
-
p.end_ts -
|
|
115
|
+
p.end_ts -
|
|
116
116
|
CASE WHEN lockup_kind = 'constant' THEN start_ts ELSE current_ts END
|
|
117
117
|
as numeric
|
|
118
118
|
),
|
|
@@ -126,7 +126,7 @@ export async function run(args = process.argv) {
|
|
|
126
126
|
cast(lockup->>'startTs' as numeric) as start_ts,
|
|
127
127
|
-- 1683727980 as current_ts
|
|
128
128
|
FLOOR(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)) as current_ts
|
|
129
|
-
FROM positions
|
|
129
|
+
FROM positions
|
|
130
130
|
) p
|
|
131
131
|
JOIN registrars r on p.registrar = r.address
|
|
132
132
|
),
|
|
@@ -142,9 +142,9 @@ export async function run(args = process.argv) {
|
|
|
142
142
|
amount_deposited_native,
|
|
143
143
|
ve_tokens,
|
|
144
144
|
initial_ve_tokens,
|
|
145
|
-
CASE WHEN lockup_kind = 'constant' THEN
|
|
145
|
+
CASE WHEN lockup_kind = 'constant' THEN
|
|
146
146
|
0
|
|
147
|
-
ELSE
|
|
147
|
+
ELSE
|
|
148
148
|
CASE WHEN current_ts < genesis_end THEN
|
|
149
149
|
-- genesis
|
|
150
150
|
(ve_tokens - (
|
|
@@ -160,7 +160,7 @@ export async function run(args = process.argv) {
|
|
|
160
160
|
) / (genesis_end - current_ts)
|
|
161
161
|
ELSE
|
|
162
162
|
-- normal
|
|
163
|
-
ve_tokens / (end_ts - current_ts)
|
|
163
|
+
ve_tokens / (end_ts - current_ts)
|
|
164
164
|
END
|
|
165
165
|
END as fall_rate,
|
|
166
166
|
start_ts,
|
|
@@ -207,26 +207,39 @@ export async function run(args = process.argv) {
|
|
|
207
207
|
FROM positions_with_vehnt p
|
|
208
208
|
JOIN delegated_positions d on d.position = p.address
|
|
209
209
|
JOIN sub_daos s on s.address = d.sub_dao
|
|
210
|
-
-- Remove positions getting purged this epoch
|
|
211
|
-
WHERE
|
|
210
|
+
-- Remove positions getting purged this epoch or expired this epoch
|
|
211
|
+
WHERE
|
|
212
|
+
(
|
|
213
|
+
lockup_kind = 'constant'
|
|
214
|
+
or end_ts > (
|
|
215
|
+
floor(current_ts / (60 * 60 * 24)) * (60 * 60 * 24)
|
|
216
|
+
) + 60 * 60 * 24
|
|
217
|
+
)
|
|
218
|
+
AND d.expiration_ts > (floor(current_ts / (60 * 60 * 24)) * (60 * 60 * 24)) + 60 * 60 * 24
|
|
212
219
|
GROUP BY s.dnt_mint, s.vehnt_fall_rate, s.vehnt_delegated, s.vehnt_last_calculated_ts, s.vehnt_last_calculated_ts
|
|
213
220
|
)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
221
|
+
SELECT
|
|
222
|
+
mint,
|
|
223
|
+
delegations,
|
|
224
|
+
current_ts,
|
|
218
225
|
real_ve_tokens * 1000000000000 as real_ve_tokens,
|
|
219
226
|
approx_ve_tokens * 1000000000000 as approx_ve_tokens,
|
|
220
227
|
real_fall_rate * 1000000000000 as real_fall_rate,
|
|
221
228
|
approx_fall_rate * 1000000000000 as approx_fall_rate,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
229
|
+
approx_fall_rate - real_fall_rate as fall_rate_diff,
|
|
230
|
+
approx_ve_tokens - real_ve_tokens as ve_tokens_diff
|
|
231
|
+
FROM subdao_delegations;
|
|
232
|
+
`)).rows;
|
|
225
233
|
const row = response.find((x) => x.mint == argv.dntMint);
|
|
226
234
|
const instructions = [];
|
|
227
235
|
const subDao = subDaoKey(new PublicKey(argv.dntMint))[0];
|
|
228
236
|
const subDaoAcc = await program.account.subDaoV0.fetch(subDao);
|
|
229
237
|
console.log('Subdao', subDao.toBase58());
|
|
238
|
+
console.log("updating: ", {
|
|
239
|
+
vehntDelegated: new BN(row.real_ve_tokens.split('.')[0]).toString(),
|
|
240
|
+
vehntLastCalculatedTs: new BN(row.current_ts).toString(),
|
|
241
|
+
vehntFallRate: new BN(row.real_fall_rate.split('.')[0]).toString(),
|
|
242
|
+
});
|
|
230
243
|
instructions.push(await program.methods
|
|
231
244
|
.updateSubDaoVehntV0({
|
|
232
245
|
vehntDelegated: new BN(row.real_ve_tokens.split('.')[0]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-subdao-vehnt.js","sourceRoot":"","sources":["../../../src/update-subdao-vehnt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update-subdao-vehnt.js","sourceRoot":"","sources":["../../../src/update-subdao-vehnt.ts"],"names":[],"mappings":"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"}
|