@helium/distributor-oracle 0.6.1 → 0.6.2-next.34

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.
@@ -1,21 +1,27 @@
1
1
  import dotenv from "dotenv";
2
2
  dotenv.config();
3
3
  // @ts-ignore
4
- import { AnchorProvider, BN, getProvider, setProvider } from "@coral-xyz/anchor";
4
+ import { AnchorProvider, BN, getProvider, setProvider, } from "@coral-xyz/anchor";
5
5
  import { decodeEntityKey, entityCreatorKey, init as initHeliumEntityManager, keyToAssetKey, keyToAssetForAsset, } from "@helium/helium-entity-manager-sdk";
6
6
  import { daoKey } from "@helium/helium-sub-daos-sdk";
7
- import { init as initLazy, lazyDistributorKey, PROGRAM_ID as LD_PID } from "@helium/lazy-distributor-sdk";
8
- import { init as initRewards, PROGRAM_ID as RO_PID } from "@helium/rewards-oracle-sdk";
9
- import { getAsset, HNT_MINT, IOT_MINT } from "@helium/spl-utils";
7
+ import { init as initLazy, lazyDistributorKey, PROGRAM_ID as LD_PID, } from "@helium/lazy-distributor-sdk";
8
+ import { init as initRewards, PROGRAM_ID as RO_PID, } from "@helium/rewards-oracle-sdk";
9
+ import { getAsset, HNT_MINT, IOT_MINT, toNumber, } from "@helium/spl-utils";
10
10
  import { AccountFetchCache } from "@helium/account-fetch-cache";
11
- import { Keypair, PublicKey, Transaction } from "@solana/web3.js";
11
+ import { Keypair, PublicKey, ComputeBudgetProgram, VersionedTransaction, } from "@solana/web3.js";
12
12
  import { Op } from "sequelize";
13
13
  import fs from "fs";
14
- import { Reward } from "./model";
14
+ import { Reward, sequelize } from "./model";
15
15
  import Fastify from "fastify";
16
16
  import cors from "@fastify/cors";
17
17
  import { getLeafAssetId } from "@metaplex-foundation/mpl-bubblegum";
18
- const HNT = process.env.HNT_MINT ? new PublicKey(process.env.HNT_MINT) : HNT_MINT;
18
+ import { register, totalRewardsGauge } from "./metrics";
19
+ const HNT = process.env.HNT_MINT
20
+ ? new PublicKey(process.env.HNT_MINT)
21
+ : HNT_MINT;
22
+ const DNT = process.env.DNT_MINT
23
+ ? new PublicKey(process.env.DNT_MINT)
24
+ : IOT_MINT;
19
25
  const DAO = daoKey(HNT)[0];
20
26
  const ENTITY_CREATOR = entityCreatorKey(DAO)[0];
21
27
  export class PgDatabase {
@@ -25,6 +31,14 @@ export class PgDatabase {
25
31
  this.issuanceProgram = issuanceProgram;
26
32
  this.getAssetFn = getAssetFn;
27
33
  }
34
+ async getTotalRewards() {
35
+ const totalRewards = (await Reward.findAll({
36
+ attributes: [
37
+ [sequelize.fn("SUM", sequelize.col("rewards")), "rewards"],
38
+ ],
39
+ }))[0].rewards;
40
+ return totalRewards;
41
+ }
28
42
  getActiveDevices() {
29
43
  return Reward.count({
30
44
  where: {
@@ -114,6 +128,21 @@ export class OracleServer {
114
128
  server.get("/health", async () => {
115
129
  return { ok: true };
116
130
  });
131
+ let lastCall = 0;
132
+ async function getTotalRewards() {
133
+ const currTs = new Date().valueOf();
134
+ // Only update once every 10m
135
+ if (currTs - lastCall > 10 * 60 * 1000) {
136
+ console.log("Updating total rewards");
137
+ const rewards = toNumber(new BN(await db.getTotalRewards()), 6);
138
+ totalRewardsGauge.labels(DNT.toBase58()).set(Number(rewards));
139
+ lastCall = currTs;
140
+ }
141
+ }
142
+ server.get("/metrics", async (request, reply) => {
143
+ await getTotalRewards();
144
+ return register.metrics();
145
+ });
117
146
  this.app = server;
118
147
  this.addRoutes();
119
148
  }
@@ -184,7 +213,16 @@ export class OracleServer {
184
213
  });
185
214
  }
186
215
  async signTransaction(data) {
187
- const tx = Transaction.from(data);
216
+ console.log("data is", data);
217
+ const conn = this.ldProgram.provider.connection;
218
+ const tx = VersionedTransaction.deserialize(new Uint8Array(data));
219
+ const LUTs = (await Promise.all(tx.message.addressTableLookups.map((acc) => conn.getAddressLookupTable(acc.accountKey))))
220
+ .map((lut) => lut.value)
221
+ .filter((val) => val !== null);
222
+ const allAccs = tx.message
223
+ .getAccountKeys({ addressLookupTableAccounts: LUTs })
224
+ .keySegments()
225
+ .reduce((acc, cur) => acc.concat(cur), []);
188
226
  // validate only interacts with LD and RO programs and only calls setCurrentRewards, distributeRewards
189
227
  const setRewardIxs = [];
190
228
  let recipientToLazyDistToMint = {};
@@ -196,24 +234,30 @@ export class OracleServer {
196
234
  const merkleTreeIdxInitCompressionRecipient = initCompressionRecipientTx.accounts.findIndex((x) => x.name === "merkleTree");
197
235
  const recipientIdxInitRecipient = initRecipientTx.accounts.findIndex((x) => x.name === "recipient");
198
236
  const recipientIdxInitCompressionRecipient = initCompressionRecipientTx.accounts.findIndex((x) => x.name === "recipient");
199
- for (const ix of tx.instructions) {
200
- if (!(ix.programId.equals(LD_PID) || ix.programId.equals(RO_PID))) {
237
+ for (const ix of tx.message.compiledInstructions) {
238
+ const programId = allAccs[ix.programIdIndex];
239
+ if (programId.equals(ComputeBudgetProgram.programId)) {
240
+ continue;
241
+ }
242
+ if (!(programId.equals(LD_PID) || programId.equals(RO_PID))) {
201
243
  return {
202
244
  success: false,
203
245
  message: "Invalid instructions in transaction",
204
246
  };
205
247
  }
248
+ const data = Buffer.from(ix.data);
206
249
  let decoded;
207
- if (ix.programId.equals(LD_PID)) {
208
- decoded = this.ldProgram.coder.instruction.decode(ix.data);
250
+ if (programId.equals(LD_PID)) {
251
+ decoded = this.ldProgram.coder.instruction.decode(data);
209
252
  }
210
253
  else {
211
- decoded = this.roProgram.coder.instruction.decode(ix.data);
254
+ decoded = this.roProgram.coder.instruction.decode(data);
212
255
  }
213
256
  if (!decoded ||
214
257
  (decoded.name !== "setCurrentRewardsV0" &&
215
258
  decoded.name !== "distributeRewardsV0" &&
216
259
  decoded.name !== "distributeCompressionRewardsV0" &&
260
+ decoded.name !== "distributeCustomDestinationV0" &&
217
261
  decoded.name !== "initializeRecipientV0" &&
218
262
  decoded.name !== "initializeCompressionRecipientV0" &&
219
263
  decoded.name !== "setCurrentRewardsWrapperV0" &&
@@ -230,18 +274,18 @@ export class OracleServer {
230
274
  setRewardIxs.push(ix);
231
275
  // Since recipient wont exist to fetch to get the mint id, grab it from the init recipient ix
232
276
  if (decoded.name === "initializeRecipientV0") {
233
- const recipient = ix.keys[recipientIdxInitRecipient].pubkey.toBase58();
277
+ const recipient = allAccs[ix.accountKeyIndexes[recipientIdxInitRecipient]].toBase58();
234
278
  recipientToLazyDistToMint[recipient] ||= {};
235
- const lazyDist = ix.keys[lazyDistributorIdxInitRecipient].pubkey.toBase58();
279
+ const lazyDist = allAccs[ix.accountKeyIndexes[lazyDistributorIdxInitRecipient]].toBase58();
236
280
  recipientToLazyDistToMint[recipient][lazyDist] =
237
- ix.keys[mintIdx].pubkey;
281
+ allAccs[ix.accountKeyIndexes[mintIdx]];
238
282
  }
239
283
  // Since recipient wont exist to fetch to get the asset id, grab it from the init recipient ix
240
284
  if (decoded.name === "initializeCompressionRecipientV0") {
241
- const recipient = ix.keys[recipientIdxInitCompressionRecipient].pubkey.toBase58();
285
+ const recipient = allAccs[ix.accountKeyIndexes[recipientIdxInitCompressionRecipient]].toBase58();
242
286
  recipientToLazyDistToMint[recipient] ||= {};
243
- const lazyDist = ix.keys[lazyDistributorIdxInitCompressionRecipient].pubkey.toBase58();
244
- const merkleTree = ix.keys[merkleTreeIdxInitCompressionRecipient].pubkey;
287
+ const lazyDist = allAccs[ix.accountKeyIndexes[lazyDistributorIdxInitCompressionRecipient]].toBase58();
288
+ const merkleTree = allAccs[ix.accountKeyIndexes[merkleTreeIdxInitCompressionRecipient]];
245
289
  const index = decoded.data.args.index;
246
290
  recipientToLazyDistToMint[recipient][lazyDist] = await getLeafAssetId(merkleTree, new BN(index));
247
291
  }
@@ -262,25 +306,28 @@ export class OracleServer {
262
306
  let recipient, lazyDist, proposedCurrentRewards;
263
307
  let entityKey;
264
308
  let keyToAssetK = undefined;
265
- if (ix.keys[wrapperOracleKeyIdx].pubkey.equals(this.oracle.publicKey) &&
266
- ix.programId.equals(RO_PID)) {
267
- let decoded = this.roProgram.coder.instruction.decode(ix.data);
268
- recipient = ix.keys[wrapperRecipientIdx].pubkey;
269
- lazyDist = ix.keys[wrapperLazyDistIdx].pubkey;
270
- keyToAssetK = ix.keys[wrapperKeyToAssetIdx].pubkey;
309
+ if (allAccs[ix.accountKeyIndexes[wrapperOracleKeyIdx]].equals(this.oracle.publicKey) &&
310
+ allAccs[ix.programIdIndex].equals(RO_PID)) {
311
+ let decoded = this.roProgram.coder.instruction.decode(Buffer.from(ix.data));
312
+ recipient = allAccs[ix.accountKeyIndexes[wrapperRecipientIdx]];
313
+ lazyDist = allAccs[ix.accountKeyIndexes[wrapperLazyDistIdx]];
314
+ keyToAssetK = allAccs[ix.accountKeyIndexes[wrapperKeyToAssetIdx]];
271
315
  //@ts-ignore
272
316
  proposedCurrentRewards = decoded.data.args.currentRewards;
273
317
  entityKey = (await this.hemProgram.account.keyToAssetV0.fetch(keyToAssetK)).entityKey;
274
318
  // A sneaky RPC could return incorrect data. Verify that the entity key is correct for the key to asset
275
319
  if (!keyToAssetKey(this.dao, entityKey)[0].equals(keyToAssetK)) {
276
- return { success: false, message: "RPC lied about the entity key for this asset." };
320
+ return {
321
+ success: false,
322
+ message: "RPC lied about the entity key for this asset.",
323
+ };
277
324
  }
278
325
  }
279
- else if (ix.keys[oracleKeyIdx].pubkey.equals(this.oracle.publicKey) &&
280
- ix.programId.equals(LD_PID)) {
281
- let decoded = this.ldProgram.coder.instruction.decode(ix.data);
282
- recipient = ix.keys[recipientIdx].pubkey;
283
- lazyDist = ix.keys[lazyDistIdx].pubkey;
326
+ else if (allAccs[ix.accountKeyIndexes[oracleKeyIdx]].equals(this.oracle.publicKey) &&
327
+ allAccs[ix.programIdIndex].equals(LD_PID)) {
328
+ let decoded = this.ldProgram.coder.instruction.decode(Buffer.from(ix.data));
329
+ recipient = allAccs[ix.accountKeyIndexes[recipientIdx]];
330
+ lazyDist = allAccs[ix.accountKeyIndexes[lazyDistIdx]];
284
331
  //@ts-ignore
285
332
  proposedCurrentRewards = decoded.data.args.currentRewards;
286
333
  }
@@ -306,22 +353,31 @@ export class OracleServer {
306
353
  ? await this.db.getCurrentRewardsByEntity(decodeEntityKey(entityKey, keySerialization))
307
354
  : await this.db.getCurrentRewards(mint);
308
355
  if (proposedCurrentRewards.gt(new BN(currentRewards))) {
309
- return { success: false, message: `Invalid amount, ${proposedCurrentRewards} is greater than actual rewards ${currentRewards}` };
356
+ return {
357
+ success: false,
358
+ message: `Invalid amount, ${proposedCurrentRewards} is greater than actual rewards ${currentRewards}`,
359
+ };
310
360
  }
311
361
  }
312
362
  // validate that this oracle is not the fee payer
313
- if (tx.feePayer?.equals(this.oracle.publicKey)) {
363
+ if (allAccs[0]?.equals(this.oracle.publicKey)) {
314
364
  return {
315
365
  success: false,
316
366
  message: "Cannot set this oracle as the fee payer",
317
367
  };
318
368
  }
319
- tx.partialSign(this.oracle);
320
- const serialized = tx.serialize({
321
- requireAllSignatures: false,
322
- verifySignatures: false,
323
- });
324
- return { success: true, transaction: serialized };
369
+ try {
370
+ // It's valid to send txs that don't actually need to be signed by us. Happens sometimes with
371
+ // tx packing.
372
+ tx.sign([this.oracle]);
373
+ }
374
+ catch (e) {
375
+ if (!e.message.toString().includes("Cannot sign with non signer key")) {
376
+ throw e;
377
+ }
378
+ }
379
+ const serialized = tx.serialize();
380
+ return { success: true, transaction: Buffer.from(serialized) };
325
381
  }
326
382
  async signBulkTransactionsHandler(req, res) {
327
383
  if (!req.body.transactions) {
@@ -340,9 +396,7 @@ export class OracleServer {
340
396
  }));
341
397
  const errIdx = results.findIndex((x) => !x.success);
342
398
  if (errIdx > -1) {
343
- res
344
- .status(400)
345
- .send({
399
+ res.status(400).send({
346
400
  error: results[errIdx].message
347
401
  ? `${results[errIdx].message}\n\nTransaction index: ${errIdx}`
348
402
  : `Error signing transaction index: ${errIdx}`,
@@ -364,6 +418,7 @@ export class OracleServer {
364
418
  res
365
419
  .status(400)
366
420
  .send({ error: result.message || "Error signing transaction" });
421
+ return;
367
422
  }
368
423
  res.send({ success: true, transaction: result.transaction });
369
424
  }
@@ -379,9 +434,6 @@ export class OracleServer {
379
434
  const ldProgram = await initLazy(provider);
380
435
  const roProgram = await initRewards(provider);
381
436
  const hemProgram = await initHeliumEntityManager(provider);
382
- const DNT = process.env.DNT_MINT
383
- ? new PublicKey(process.env.DNT_MINT)
384
- : IOT_MINT;
385
437
  const LAZY_DISTRIBUTOR = lazyDistributorKey(DNT)[0];
386
438
  const server = new OracleServer(ldProgram, roProgram, hemProgram, oracleKeypair, new PgDatabase(hemProgram), LAZY_DISTRIBUTOR);
387
439
  // For performance
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server.ts"],"names":[],"mappings":"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"}