@helium/helium-admin-cli 0.10.0-alpha.0 → 0.10.0-alpha.1
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/backfill-mobile-deployment-infos.js +29 -14
- package/lib/cjs/backfill-mobile-deployment-infos.js.map +1 -1
- package/lib/cjs/end-epoch.js +237 -68
- package/lib/cjs/end-epoch.js.map +1 -1
- package/lib/cjs/queue-hotspot-claims.js +135 -0
- package/lib/cjs/queue-hotspot-claims.js.map +1 -0
- package/lib/cjs/queue-position-claims.js +160 -0
- package/lib/cjs/queue-position-claims.js.map +1 -0
- package/lib/cjs/remove-authorities.js +134 -0
- package/lib/cjs/remove-authorities.js.map +1 -0
- package/lib/cjs/requeue-hotspot-claims.js +111 -0
- package/lib/cjs/requeue-hotspot-claims.js.map +1 -0
- package/lib/cjs/start-cron.js +155 -0
- package/lib/cjs/start-cron.js.map +1 -0
- package/lib/esm/src/backfill-mobile-deployment-infos.js +32 -13
- package/lib/esm/src/backfill-mobile-deployment-infos.js.map +1 -1
- package/lib/esm/src/end-epoch.js +234 -69
- package/lib/esm/src/end-epoch.js.map +1 -1
- package/lib/esm/src/queue-hotspot-claims.js +94 -0
- package/lib/esm/src/queue-hotspot-claims.js.map +1 -0
- package/lib/esm/src/queue-position-claims.js +119 -0
- package/lib/esm/src/queue-position-claims.js.map +1 -0
- package/lib/esm/src/remove-authorities.js +93 -0
- package/lib/esm/src/remove-authorities.js.map +1 -0
- package/lib/esm/src/requeue-hotspot-claims.js +70 -0
- package/lib/esm/src/requeue-hotspot-claims.js.map +1 -0
- package/lib/esm/src/start-cron.js +114 -0
- package/lib/esm/src/start-cron.js.map +1 -0
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/backfill-mobile-deployment-infos.d.ts.map +1 -1
- package/lib/types/src/end-epoch.d.ts.map +1 -1
- package/lib/types/src/queue-hotspot-claims.d.ts +2 -0
- package/lib/types/src/queue-hotspot-claims.d.ts.map +1 -0
- package/lib/types/src/queue-position-claims.d.ts +2 -0
- package/lib/types/src/queue-position-claims.d.ts.map +1 -0
- package/lib/types/src/remove-authorities.d.ts +2 -0
- package/lib/types/src/remove-authorities.d.ts.map +1 -0
- package/lib/types/src/requeue-hotspot-claims.d.ts +2 -0
- package/lib/types/src/requeue-hotspot-claims.d.ts.map +1 -0
- package/lib/types/src/start-cron.d.ts +2 -0
- package/lib/types/src/start-cron.d.ts.map +1 -0
- package/package.json +19 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAEL,IAAI,IAAI,OAAO,EACf,aAAa,EACb,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EACL,WAAW,EACX,qCAAqC,
|
|
1
|
+
{"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/src/end-epoch.js
CHANGED
|
@@ -1,88 +1,253 @@
|
|
|
1
|
-
import { currentEpoch, daoEpochInfoKey, daoKey, EPOCH_LENGTH, init as initDao, } from "@helium/helium-sub-daos-sdk";
|
|
2
1
|
import * as anchor from "@coral-xyz/anchor";
|
|
3
|
-
import
|
|
2
|
+
import * as client from "@helium/distributor-oracle";
|
|
3
|
+
import { init as initHem, keyToAssetKey, } from "@helium/helium-entity-manager-sdk";
|
|
4
|
+
import { EPOCH_LENGTH, currentEpoch, daoEpochInfoKey, daoKey, init as initDao, subDaoEpochInfoKey, } from "@helium/helium-sub-daos-sdk";
|
|
5
|
+
import { init as initLazy, lazyDistributorKey, recipientKey, } from "@helium/lazy-distributor-sdk";
|
|
6
|
+
import { init as initBurn } from "@helium/no-emit-sdk";
|
|
7
|
+
import { init as initRewards } from "@helium/rewards-oracle-sdk";
|
|
8
|
+
import { HNT_MINT, IOT_MINT, MOBILE_MINT, createMintInstructions, sendAndConfirmWithRetry, sendInstructions, sendInstructionsWithPriorityFee, } from "@helium/spl-utils";
|
|
9
|
+
import { Keypair, PublicKey, SYSVAR_CLOCK_PUBKEY, } from "@solana/web3.js";
|
|
4
10
|
import { BN } from "bn.js";
|
|
5
11
|
import b58 from "bs58";
|
|
6
12
|
import os from "os";
|
|
7
13
|
import yargs from "yargs/yargs";
|
|
8
|
-
|
|
14
|
+
const IOT_OPERATIONS_FUND = "iot_operations_fund";
|
|
15
|
+
const NOT_EMITTED = "not_emitted";
|
|
16
|
+
const MAX_CLAIM_AMOUNT = new BN("207020547945205");
|
|
17
|
+
async function getSolanaUnixTimestamp(connection) {
|
|
18
|
+
const clock = await connection.getAccountInfo(SYSVAR_CLOCK_PUBKEY);
|
|
19
|
+
const unixTime = clock.data.readBigInt64LE(8 * 4);
|
|
20
|
+
return unixTime;
|
|
21
|
+
}
|
|
22
|
+
async function sleep(ms) {
|
|
23
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
24
|
+
}
|
|
9
25
|
export async function run(args = process.argv) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
url: {
|
|
17
|
-
alias: "u",
|
|
18
|
-
default: "http://127.0.0.1:8899",
|
|
19
|
-
describe: "The solana url",
|
|
20
|
-
},
|
|
21
|
-
hntMint: {
|
|
22
|
-
type: "string",
|
|
23
|
-
describe: "Mint of the HNT token",
|
|
24
|
-
},
|
|
25
|
-
from: {
|
|
26
|
-
type: "number",
|
|
27
|
-
describe: "The timestamp to start ending epochs from",
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
const argv = await yarg.argv;
|
|
31
|
-
process.env.ANCHOR_WALLET = argv.wallet;
|
|
32
|
-
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
33
|
-
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
34
|
-
const provider = anchor.getProvider();
|
|
35
|
-
const heliumSubDaosProgram = await initDao(provider);
|
|
36
|
-
const hntMint = new PublicKey(argv.hntMint);
|
|
37
|
-
const dao = await daoKey(hntMint)[0];
|
|
38
|
-
const subdaos = await heliumSubDaosProgram.account.subDaoV0.all([
|
|
39
|
-
{
|
|
40
|
-
memcmp: {
|
|
41
|
-
offset: 8,
|
|
42
|
-
bytes: b58.encode(dao.toBuffer()),
|
|
26
|
+
try {
|
|
27
|
+
const yarg = yargs(args).options({
|
|
28
|
+
wallet: {
|
|
29
|
+
alias: "k",
|
|
30
|
+
describe: "Anchor wallet keypair",
|
|
31
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
43
32
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
33
|
+
url: {
|
|
34
|
+
alias: "u",
|
|
35
|
+
default: "http://127.0.0.1:8899",
|
|
36
|
+
describe: "The solana url",
|
|
37
|
+
},
|
|
38
|
+
basePriorityFee: {
|
|
39
|
+
type: "number",
|
|
40
|
+
describe: "Base priority fee to be used",
|
|
41
|
+
},
|
|
42
|
+
from: {
|
|
43
|
+
type: "number",
|
|
44
|
+
describe: "The timestamp to start ending epochs from",
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
const argv = await yarg.argv;
|
|
48
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
49
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
50
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
51
|
+
const errors = [];
|
|
52
|
+
const provider = anchor.getProvider();
|
|
53
|
+
const heliumSubDaosProgram = await initDao(provider);
|
|
54
|
+
const hntMint = new PublicKey(HNT_MINT);
|
|
55
|
+
const unixNow = new Date().valueOf() / 1000;
|
|
56
|
+
const [dao] = daoKey(hntMint);
|
|
57
|
+
const basePriorityFee = Number(argv.basePriorityFee || 1);
|
|
58
|
+
const subDaos = await heliumSubDaosProgram.account.subDaoV0.all([
|
|
59
|
+
{
|
|
60
|
+
memcmp: {
|
|
61
|
+
offset: 8,
|
|
62
|
+
bytes: b58.encode(dao.toBuffer()),
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
]);
|
|
66
|
+
let targetTs = argv.from
|
|
67
|
+
? new BN(argv.from)
|
|
68
|
+
: subDaos.reduce((acc, subDao) => BN.min(acc, subDao.account.vehntLastCalculatedTs),
|
|
69
|
+
// Start one day back to ensure we at least close the epoch that the job is running in.
|
|
70
|
+
new BN(unixNow - 24 * 60 * 60));
|
|
71
|
+
const solanaTime = await getSolanaUnixTimestamp(provider.connection);
|
|
72
|
+
mainLoop: while (targetTs.toNumber() < unixNow) {
|
|
73
|
+
const epoch = currentEpoch(targetTs);
|
|
74
|
+
console.log(epoch.toNumber(), targetTs.toNumber());
|
|
75
|
+
const driftFromSolana = targetTs.toNumber() - Number(solanaTime);
|
|
76
|
+
// If Solana is within 5 minutes of the epoch we're trying to end, wait.
|
|
77
|
+
// This can happen because of solana clock drift.
|
|
78
|
+
if (driftFromSolana > 0 && driftFromSolana < 60 * 5) {
|
|
79
|
+
await sleep(driftFromSolana * 1000);
|
|
80
|
+
}
|
|
81
|
+
const [daoEpoch] = daoEpochInfoKey(dao, targetTs);
|
|
82
|
+
const daoEpochInfo = await heliumSubDaosProgram.account.daoEpochInfoV0.fetchNullable(daoEpoch);
|
|
83
|
+
if (!daoEpochInfo?.doneCalculatingScores) {
|
|
84
|
+
for (const subDao of subDaos) {
|
|
85
|
+
const [subDaoEpoch] = subDaoEpochInfoKey(subDao.publicKey, targetTs);
|
|
86
|
+
const subDaoEpochInfo = await heliumSubDaosProgram.account.subDaoEpochInfoV0.fetchNullable(subDaoEpoch);
|
|
87
|
+
if (!subDaoEpochInfo?.utilityScore) {
|
|
88
|
+
try {
|
|
89
|
+
await sendInstructionsWithPriorityFee(provider, [
|
|
90
|
+
await heliumSubDaosProgram.methods
|
|
91
|
+
.calculateUtilityScoreV0({ epoch })
|
|
92
|
+
.accountsPartial({ subDao: subDao.publicKey })
|
|
93
|
+
.instruction(),
|
|
94
|
+
], {
|
|
95
|
+
computeUnitLimit: 1000000,
|
|
96
|
+
basePriorityFee: basePriorityFee,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
const strErr = JSON.stringify(err);
|
|
101
|
+
if (strErr.includes("Error Code: EpochNotOver") ||
|
|
102
|
+
strErr.includes(`{"Custom":6003}`)) {
|
|
103
|
+
// epoch not over
|
|
104
|
+
break mainLoop;
|
|
105
|
+
}
|
|
106
|
+
if (!strErr.includes("Error Code: UtilityScoreAlreadyCalculated") ||
|
|
107
|
+
!strErr.includes(`{"Custom":6002}`))
|
|
108
|
+
errors.push(`Failed to calculate utility score for ${subDao.account.dntMint.toBase58()}: ${err}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
64
111
|
}
|
|
65
|
-
|
|
66
|
-
|
|
112
|
+
}
|
|
113
|
+
for (const subDao of subDaos) {
|
|
114
|
+
if (!daoEpochInfo?.doneIssuingRewards) {
|
|
115
|
+
const [subDaoEpoch] = subDaoEpochInfoKey(subDao.publicKey, targetTs);
|
|
116
|
+
const subDaoEpochInfo = await heliumSubDaosProgram.account.subDaoEpochInfoV0.fetchNullable(subDaoEpoch);
|
|
117
|
+
if (!subDaoEpochInfo?.rewardsIssuedAt) {
|
|
118
|
+
try {
|
|
119
|
+
await sendInstructionsWithPriorityFee(provider, [
|
|
120
|
+
await heliumSubDaosProgram.methods
|
|
121
|
+
.issueRewardsV0({ epoch })
|
|
122
|
+
.accountsPartial({ subDao: subDao.publicKey })
|
|
123
|
+
.instruction(),
|
|
124
|
+
], {
|
|
125
|
+
basePriorityFee: basePriorityFee,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
errors.push(`Failed to issue rewards for ${subDao.account.dntMint.toBase58()}: ${err}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
67
132
|
}
|
|
68
133
|
}
|
|
134
|
+
targetTs = targetTs.add(new BN(EPOCH_LENGTH));
|
|
69
135
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
136
|
+
// distribute iot operations fund
|
|
137
|
+
const hemProgram = await initHem(provider);
|
|
138
|
+
const lazyProgram = await initLazy(provider);
|
|
139
|
+
const rewardsOracleProgram = await initRewards(provider);
|
|
140
|
+
for (const token of [IOT_MINT, HNT_MINT]) {
|
|
141
|
+
const [lazyDistributor] = lazyDistributorKey(token);
|
|
142
|
+
const [keyToAsset] = keyToAssetKey(dao, IOT_OPERATIONS_FUND, "utf8");
|
|
143
|
+
const assetId = (await hemProgram.account.keyToAssetV0.fetch(keyToAsset))
|
|
144
|
+
.asset;
|
|
145
|
+
const [recipient] = recipientKey(lazyDistributor, assetId);
|
|
146
|
+
if (!(await provider.connection.getAccountInfo(recipient))) {
|
|
147
|
+
const method = lazyProgram.methods.initializeRecipientV0().accountsPartial({
|
|
148
|
+
lazyDistributor,
|
|
149
|
+
mint: assetId,
|
|
150
|
+
});
|
|
151
|
+
await sendInstructionsWithPriorityFee(provider, [await method.instruction()], { basePriorityFee });
|
|
152
|
+
}
|
|
153
|
+
const rewards = await client.getCurrentRewards(lazyProgram, lazyDistributor, assetId);
|
|
154
|
+
const pending = await client.getPendingRewards(lazyProgram, lazyDistributor, daoKey(HNT_MINT)[0], [IOT_OPERATIONS_FUND], "utf8");
|
|
155
|
+
// Avoid claiming too much and tripping the breaker
|
|
156
|
+
if (new BN(pending[IOT_OPERATIONS_FUND]).gt(MAX_CLAIM_AMOUNT)) {
|
|
157
|
+
rewards[0].currentRewards = new BN(rewards[0].currentRewards)
|
|
158
|
+
.sub(new BN(pending[IOT_OPERATIONS_FUND]))
|
|
159
|
+
.add(MAX_CLAIM_AMOUNT)
|
|
160
|
+
.toString();
|
|
161
|
+
}
|
|
162
|
+
const tx = await client.formTransaction({
|
|
163
|
+
program: lazyProgram,
|
|
164
|
+
rewardsOracleProgram: rewardsOracleProgram,
|
|
165
|
+
provider,
|
|
166
|
+
rewards,
|
|
167
|
+
asset: assetId,
|
|
168
|
+
lazyDistributor,
|
|
169
|
+
});
|
|
170
|
+
const signed = await provider.wallet.signTransaction(tx);
|
|
171
|
+
try {
|
|
172
|
+
await sendAndConfirmWithRetry(provider.connection, Buffer.from(signed.serialize()), { skipPreflight: true }, "confirmed");
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
errors.push(`Failed to distribute iot op funds: ${err}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Only do this if that feature has been deployed
|
|
179
|
+
if (hemProgram.methods.issueNotEmittedEntityV0) {
|
|
180
|
+
console.log("Issuing no_emit");
|
|
181
|
+
const noEmitProgram = await initBurn(provider);
|
|
182
|
+
const tokens = [MOBILE_MINT, IOT_MINT, HNT_MINT];
|
|
183
|
+
for (const token of tokens) {
|
|
184
|
+
const [lazyDistributor] = lazyDistributorKey(token);
|
|
185
|
+
const notEmittedEntityKta = keyToAssetKey(dao, NOT_EMITTED, "utf-8")[0];
|
|
186
|
+
// Issue the burn entity if it doesn't exist yet.
|
|
187
|
+
if (!(await provider.connection.getAccountInfo(notEmittedEntityKta))) {
|
|
188
|
+
const mint = Keypair.generate();
|
|
189
|
+
await sendInstructions(provider, [
|
|
190
|
+
...(await createMintInstructions(provider, 0, provider.wallet.publicKey, provider.wallet.publicKey, mint)),
|
|
191
|
+
await hemProgram.methods
|
|
192
|
+
.issueNotEmittedEntityV0()
|
|
193
|
+
.accountsPartial({
|
|
194
|
+
dao,
|
|
195
|
+
mint: mint.publicKey,
|
|
196
|
+
})
|
|
77
197
|
.instruction(),
|
|
78
|
-
]);
|
|
198
|
+
], [mint]);
|
|
199
|
+
}
|
|
200
|
+
const assetId = (await hemProgram.account.keyToAssetV0.fetch(notEmittedEntityKta)).asset;
|
|
201
|
+
const [recipient] = recipientKey(lazyDistributor, assetId);
|
|
202
|
+
try {
|
|
203
|
+
if (!(await provider.connection.getAccountInfo(recipient))) {
|
|
204
|
+
const method = lazyProgram.methods
|
|
205
|
+
.initializeRecipientV0()
|
|
206
|
+
.accountsPartial({
|
|
207
|
+
lazyDistributor,
|
|
208
|
+
mint: assetId,
|
|
209
|
+
});
|
|
210
|
+
await sendInstructionsWithPriorityFee(provider, [await method.instruction()], { basePriorityFee });
|
|
211
|
+
}
|
|
212
|
+
const rewards = await client.getCurrentRewards(lazyProgram, lazyDistributor, assetId);
|
|
213
|
+
const tx = await client.formTransaction({
|
|
214
|
+
program: lazyProgram,
|
|
215
|
+
rewardsOracleProgram: rewardsOracleProgram,
|
|
216
|
+
provider,
|
|
217
|
+
rewards,
|
|
218
|
+
asset: assetId,
|
|
219
|
+
lazyDistributor,
|
|
220
|
+
});
|
|
221
|
+
const signed = await provider.wallet.signTransaction(tx);
|
|
222
|
+
await sendAndConfirmWithRetry(provider.connection, Buffer.from(signed.serialize()), { skipPreflight: true }, "confirmed");
|
|
79
223
|
}
|
|
80
|
-
catch (
|
|
81
|
-
|
|
224
|
+
catch (err) {
|
|
225
|
+
errors.push(`Failed to distribute burn funds for mint ${token.toBase58()}: ${err}`);
|
|
82
226
|
}
|
|
83
227
|
}
|
|
84
|
-
|
|
228
|
+
try {
|
|
229
|
+
console.log("No emit");
|
|
230
|
+
await sendInstructions(provider, [
|
|
231
|
+
await noEmitProgram.methods
|
|
232
|
+
.noEmitV0()
|
|
233
|
+
.accountsPartial({
|
|
234
|
+
mint: hntMint,
|
|
235
|
+
})
|
|
236
|
+
.instruction(),
|
|
237
|
+
]);
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
errors.push(`Failed to run noEmitV0`);
|
|
241
|
+
}
|
|
85
242
|
}
|
|
243
|
+
if (!errors.length)
|
|
244
|
+
process.exit(0);
|
|
245
|
+
errors.map(console.log);
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
console.log(err);
|
|
250
|
+
process.exit(1);
|
|
86
251
|
}
|
|
87
252
|
}
|
|
88
253
|
//# sourceMappingURL=end-epoch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end-epoch.js","sourceRoot":"","sources":["../../../src/end-epoch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"end-epoch.js","sourceRoot":"","sources":["../../../src/end-epoch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import * as anchor from "@coral-xyz/anchor";
|
|
2
|
+
import { cronJobKey, cronJobNameMappingKey, cronJobTransactionKey, init as initCron } from "@helium/cron-sdk";
|
|
3
|
+
import { sendInstructionsWithPriorityFee } from "@helium/spl-utils";
|
|
4
|
+
import { init as initTuktuk, taskKey } from "@helium/tuktuk-sdk";
|
|
5
|
+
import { PublicKey, SystemProgram, } from "@solana/web3.js";
|
|
6
|
+
import os from "os";
|
|
7
|
+
import yargs from "yargs/yargs";
|
|
8
|
+
import { init as initHplCrons, entityCronAuthorityKey, nextAvailableTaskIds, } from "@helium/hpl-crons-sdk";
|
|
9
|
+
export async function run(args = process.argv) {
|
|
10
|
+
const yarg = yargs(args).options({
|
|
11
|
+
wallet: {
|
|
12
|
+
alias: "k",
|
|
13
|
+
describe: "Anchor wallet keypair",
|
|
14
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
15
|
+
},
|
|
16
|
+
url: {
|
|
17
|
+
alias: "u",
|
|
18
|
+
default: "http://127.0.0.1:8899",
|
|
19
|
+
describe: "The solana url",
|
|
20
|
+
},
|
|
21
|
+
taskQueue: {
|
|
22
|
+
required: true,
|
|
23
|
+
type: "string",
|
|
24
|
+
alias: "t",
|
|
25
|
+
describe: "The task queue to queue",
|
|
26
|
+
default: "H39gEszvsi6AT4rYBiJTuZHJSF5hMHy6CKGTd7wzhsg7",
|
|
27
|
+
},
|
|
28
|
+
keyToAsset: {
|
|
29
|
+
required: true,
|
|
30
|
+
type: "string",
|
|
31
|
+
describe: "The key to asset to queue",
|
|
32
|
+
},
|
|
33
|
+
fundingAmount: {
|
|
34
|
+
required: true,
|
|
35
|
+
type: "string",
|
|
36
|
+
describe: "The amount of lamports to fund the cron job with",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
const argv = await yarg.argv;
|
|
40
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
41
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
42
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
43
|
+
const provider = anchor.getProvider();
|
|
44
|
+
const taskQueue = new PublicKey(argv.taskQueue);
|
|
45
|
+
const program = await initHplCrons(provider);
|
|
46
|
+
const cronProgram = await initCron(provider);
|
|
47
|
+
const tuktukProgram = await initTuktuk(provider);
|
|
48
|
+
const taskQueueAcc = await tuktukProgram.account.taskQueueV0.fetch(taskQueue);
|
|
49
|
+
const nextAvailable = nextAvailableTaskIds(taskQueueAcc.taskBitmap, 1)[0];
|
|
50
|
+
const [task] = taskKey(taskQueue, nextAvailable);
|
|
51
|
+
const keyToAsset = new PublicKey(argv.keyToAsset);
|
|
52
|
+
const authority = entityCronAuthorityKey(provider.wallet.publicKey)[0];
|
|
53
|
+
const cronJob = cronJobKey(authority, 0)[0];
|
|
54
|
+
if (!(await provider.connection.getAccountInfo(cronJob))) {
|
|
55
|
+
await sendInstructionsWithPriorityFee(provider, [
|
|
56
|
+
await program.methods
|
|
57
|
+
.initEntityClaimCronV0({
|
|
58
|
+
schedule: "0 0 2 * * *",
|
|
59
|
+
})
|
|
60
|
+
.accountsPartial({
|
|
61
|
+
taskQueue,
|
|
62
|
+
cronJob,
|
|
63
|
+
task,
|
|
64
|
+
cronJobNameMapping: cronJobNameMappingKey(authority, "entity_claim")[0],
|
|
65
|
+
})
|
|
66
|
+
.instruction(),
|
|
67
|
+
SystemProgram.transfer({
|
|
68
|
+
fromPubkey: provider.wallet.publicKey,
|
|
69
|
+
toPubkey: cronJob,
|
|
70
|
+
lamports: BigInt(argv.fundingAmount),
|
|
71
|
+
}),
|
|
72
|
+
], {
|
|
73
|
+
computeUnitLimit: 500000
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
console.log("Cron job account", cronJob.toBase58());
|
|
77
|
+
const cronJobAcc = await cronProgram.account.cronJobV0.fetch(cronJob);
|
|
78
|
+
const instructions = [];
|
|
79
|
+
const { instruction } = await program.methods
|
|
80
|
+
.addEntityToCronV0({
|
|
81
|
+
index: cronJobAcc.nextTransactionId,
|
|
82
|
+
})
|
|
83
|
+
.accountsPartial({
|
|
84
|
+
keyToAsset,
|
|
85
|
+
cronJob,
|
|
86
|
+
cronJobTransaction: cronJobTransactionKey(cronJob, cronJobAcc.nextTransactionId)[0],
|
|
87
|
+
})
|
|
88
|
+
.prepare();
|
|
89
|
+
instructions.push(instruction);
|
|
90
|
+
await sendInstructionsWithPriorityFee(provider, instructions, {
|
|
91
|
+
computeUnitLimit: 500000,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=queue-hotspot-claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-hotspot-claims.js","sourceRoot":"","sources":["../../../src/queue-hotspot-claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import * as anchor from "@coral-xyz/anchor";
|
|
2
|
+
import { delegatedPositionKey, EPOCH_LENGTH, init as initHsd, } from "@helium/helium-sub-daos-sdk";
|
|
3
|
+
import { sendInstructionsWithPriorityFee } from "@helium/spl-utils";
|
|
4
|
+
import { customSignerKey, init as initTuktuk, taskKey, } from "@helium/tuktuk-sdk";
|
|
5
|
+
import { init as initVsr } from "@helium/voter-stake-registry-sdk";
|
|
6
|
+
import { getAccount, getAssociatedTokenAddressSync } from "@solana/spl-token";
|
|
7
|
+
import { PublicKey, SystemProgram, } from "@solana/web3.js";
|
|
8
|
+
import BN from "bn.js";
|
|
9
|
+
import os from "os";
|
|
10
|
+
import yargs from "yargs/yargs";
|
|
11
|
+
import { init as initHplCrons, delegationClaimBotKey, nextAvailableTaskIds, } from "@helium/hpl-crons-sdk";
|
|
12
|
+
export async function run(args = process.argv) {
|
|
13
|
+
const yarg = yargs(args).options({
|
|
14
|
+
wallet: {
|
|
15
|
+
alias: "k",
|
|
16
|
+
describe: "Anchor wallet keypair",
|
|
17
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
18
|
+
},
|
|
19
|
+
url: {
|
|
20
|
+
alias: "u",
|
|
21
|
+
default: "http://127.0.0.1:8899",
|
|
22
|
+
describe: "The solana url",
|
|
23
|
+
},
|
|
24
|
+
taskQueue: {
|
|
25
|
+
required: true,
|
|
26
|
+
type: "string",
|
|
27
|
+
alias: "t",
|
|
28
|
+
describe: "The task queue to queue",
|
|
29
|
+
default: "H39gEszvsi6AT4rYBiJTuZHJSF5hMHy6CKGTd7wzhsg7",
|
|
30
|
+
},
|
|
31
|
+
position: {
|
|
32
|
+
required: true,
|
|
33
|
+
type: "string",
|
|
34
|
+
describe: "The position to trigger automated claims for",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
const argv = await yarg.argv;
|
|
38
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
39
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
40
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
41
|
+
const provider = anchor.getProvider();
|
|
42
|
+
const taskQueue = new PublicKey(argv.taskQueue);
|
|
43
|
+
const program = await initHplCrons(provider);
|
|
44
|
+
const vsrProgram = await initVsr(provider);
|
|
45
|
+
const hsdProgram = await initHsd(provider);
|
|
46
|
+
const tuktukProgram = await initTuktuk(provider);
|
|
47
|
+
const taskQueueAcc = await tuktukProgram.account.taskQueueV0.fetch(taskQueue);
|
|
48
|
+
const nextAvailable = nextAvailableTaskIds(taskQueueAcc.taskBitmap, 1)[0];
|
|
49
|
+
const [task] = taskKey(taskQueue, nextAvailable);
|
|
50
|
+
const position = new PublicKey(argv.position);
|
|
51
|
+
const positionAcc = await vsrProgram.account.positionV0.fetch(position);
|
|
52
|
+
const delegatedPosition = delegatedPositionKey(position)[0];
|
|
53
|
+
const delegatedPositionAcc = await hsdProgram.account.delegatedPositionV0.fetch(delegatedPosition);
|
|
54
|
+
const [customWallet, bump] = customSignerKey(taskQueue, [
|
|
55
|
+
Buffer.from("helium", "utf-8"),
|
|
56
|
+
]);
|
|
57
|
+
const [positionClaimPayer, positionClaimPayerBump] = customSignerKey(taskQueue, [Buffer.from("position", "utf-8")]);
|
|
58
|
+
const bumpBuffer = Buffer.alloc(1);
|
|
59
|
+
bumpBuffer.writeUint8(bump);
|
|
60
|
+
const positionClaimPayerBumpBuffer = Buffer.alloc(1);
|
|
61
|
+
positionClaimPayerBumpBuffer.writeUint8(positionClaimPayerBump);
|
|
62
|
+
const claimBot = delegationClaimBotKey(taskQueue, delegatedPosition)[0];
|
|
63
|
+
const instructions = [];
|
|
64
|
+
const account = await provider.connection.getTokenLargestAccounts(positionAcc.mint);
|
|
65
|
+
const positionTokenAccount = account.value[0];
|
|
66
|
+
if (!(await provider.connection.getAccountInfo(claimBot))) {
|
|
67
|
+
instructions.push(await program.methods
|
|
68
|
+
.initDelegationClaimBotV0()
|
|
69
|
+
.accountsPartial({
|
|
70
|
+
delegatedPosition,
|
|
71
|
+
position: delegatedPositionAcc.position,
|
|
72
|
+
taskQueue,
|
|
73
|
+
mint: positionAcc.mint,
|
|
74
|
+
positionTokenAccount: positionTokenAccount.address,
|
|
75
|
+
})
|
|
76
|
+
.instruction());
|
|
77
|
+
// @ts-ignore
|
|
78
|
+
const endEpoch = delegatedPositionAcc.expirationTs.div(new BN(EPOCH_LENGTH));
|
|
79
|
+
instructions.push(SystemProgram.transfer({
|
|
80
|
+
fromPubkey: provider.wallet.publicKey,
|
|
81
|
+
toPubkey: claimBot,
|
|
82
|
+
lamports: BigInt(taskQueueAcc.minCrankReward
|
|
83
|
+
.mul(endEpoch.sub(
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
delegatedPositionAcc.lastClaimedEpoch))
|
|
86
|
+
.toString()),
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
console.log("Payer for claims", positionClaimPayer.toBase58());
|
|
90
|
+
// TODO: Have to do a bunch of manual stuff because the anchor 28 IDL
|
|
91
|
+
// prevents account resolution from working :/
|
|
92
|
+
const subDaoAcc = await hsdProgram.account.subDaoV0.fetch(delegatedPositionAcc.subDao);
|
|
93
|
+
const daoAcc = await hsdProgram.account.daoV0.fetch(subDaoAcc.dao);
|
|
94
|
+
const { instruction, pubkeys } = await program.methods
|
|
95
|
+
.startDelegationClaimBotV0({
|
|
96
|
+
taskId: nextAvailable,
|
|
97
|
+
})
|
|
98
|
+
.accountsPartial({
|
|
99
|
+
delegationClaimBot: claimBot,
|
|
100
|
+
subDao: delegatedPositionAcc.subDao,
|
|
101
|
+
dao: subDaoAcc.dao,
|
|
102
|
+
mint: positionAcc.mint,
|
|
103
|
+
hntMint: daoAcc.hntMint,
|
|
104
|
+
positionAuthority: (await getAccount(provider.connection, positionTokenAccount.address)).owner,
|
|
105
|
+
positionTokenAccount: positionTokenAccount.address,
|
|
106
|
+
taskQueue,
|
|
107
|
+
delegatedPosition,
|
|
108
|
+
systemProgram: SystemProgram.programId,
|
|
109
|
+
delegatorAta: getAssociatedTokenAddressSync(daoAcc.hntMint, provider.wallet.publicKey),
|
|
110
|
+
task,
|
|
111
|
+
})
|
|
112
|
+
.prepare();
|
|
113
|
+
console.log("Queue authority is", pubkeys.queueAuthority.toBase58());
|
|
114
|
+
instructions.push(instruction);
|
|
115
|
+
await sendInstructionsWithPriorityFee(provider, instructions, {
|
|
116
|
+
computeUnitLimit: 500000,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=queue-position-claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-position-claims.js","sourceRoot":"","sources":["../../../src/queue-position-claims.ts"],"names":[],"mappings":"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"}
|