@helium/distributor-oracle 0.2.20 → 0.2.22-next.33
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/package.json +16 -15
- package/lib/cjs/client.js +0 -350
- package/lib/cjs/client.js.map +0 -1
- package/lib/cjs/index.js +0 -18
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/model.js +0 -101
- package/lib/cjs/model.js.map +0 -1
- package/lib/cjs/server.js +0 -413
- package/lib/cjs/server.js.map +0 -1
- package/lib/esm/src/client.js +0 -320
- package/lib/esm/src/client.js.map +0 -1
- package/lib/esm/src/index.js +0 -2
- package/lib/esm/src/index.js.map +0 -1
- package/lib/esm/src/model.js +0 -62
- package/lib/esm/src/model.js.map +0 -1
- package/lib/esm/src/server.js +0 -382
- package/lib/esm/src/server.js.map +0 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +0 -1
- package/lib/types/src/client.d.ts +0 -48
- package/lib/types/src/client.d.ts.map +0 -1
- package/lib/types/src/index.d.ts +0 -2
- package/lib/types/src/index.d.ts.map +0 -1
- package/lib/types/src/model.d.ts +0 -7
- package/lib/types/src/model.d.ts.map +0 -1
- package/lib/types/src/server.d.ts +0 -45
- package/lib/types/src/server.d.ts.map +0 -1
package/lib/esm/src/server.js
DELETED
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
import dotenv from "dotenv";
|
|
2
|
-
dotenv.config();
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
import { AnchorProvider, BN, getProvider, setProvider } from "@coral-xyz/anchor";
|
|
5
|
-
import { decodeEntityKey, entityCreatorKey, init as initHeliumEntityManager, keyToAssetKey, keyToAssetForAsset, } from "@helium/helium-entity-manager-sdk";
|
|
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";
|
|
10
|
-
import { AccountFetchCache } from "@helium/account-fetch-cache";
|
|
11
|
-
import { Keypair, PublicKey, Transaction } from "@solana/web3.js";
|
|
12
|
-
import { Op } from "sequelize";
|
|
13
|
-
import fs from "fs";
|
|
14
|
-
import { Reward } from "./model";
|
|
15
|
-
import Fastify from "fastify";
|
|
16
|
-
import cors from "@fastify/cors";
|
|
17
|
-
import { getLeafAssetId } from "@metaplex-foundation/mpl-bubblegum";
|
|
18
|
-
const HNT = process.env.HNT_MINT ? new PublicKey(process.env.HNT_MINT) : HNT_MINT;
|
|
19
|
-
const DAO = daoKey(HNT)[0];
|
|
20
|
-
const ENTITY_CREATOR = entityCreatorKey(DAO)[0];
|
|
21
|
-
export class PgDatabase {
|
|
22
|
-
issuanceProgram;
|
|
23
|
-
getAssetFn;
|
|
24
|
-
constructor(issuanceProgram, getAssetFn = getAsset) {
|
|
25
|
-
this.issuanceProgram = issuanceProgram;
|
|
26
|
-
this.getAssetFn = getAssetFn;
|
|
27
|
-
}
|
|
28
|
-
getActiveDevices() {
|
|
29
|
-
return Reward.count({
|
|
30
|
-
where: {
|
|
31
|
-
lastReward: {
|
|
32
|
-
[Op.gte]: new Date(Date.now() - 1000 * 60 * 60 * 24 * 30), // Active within the last 30 days
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
async getBulkRewards(entityKeys) {
|
|
38
|
-
const rewards = await Reward.findAll({
|
|
39
|
-
where: {
|
|
40
|
-
address: {
|
|
41
|
-
[Op.in]: entityKeys,
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
return rewards
|
|
46
|
-
.map((rew) => [rew.address, rew.rewards])
|
|
47
|
-
.reduce((acc, [key, val]) => {
|
|
48
|
-
acc[key] = new BN(val).toString();
|
|
49
|
-
return acc;
|
|
50
|
-
}, {});
|
|
51
|
-
}
|
|
52
|
-
async getCurrentRewards(assetId) {
|
|
53
|
-
const asset = await this.getAssetFn(process.env.ASSET_API_URL ||
|
|
54
|
-
this.issuanceProgram.provider.connection.rpcEndpoint, assetId);
|
|
55
|
-
if (!asset) {
|
|
56
|
-
console.error("No asset found", assetId.toBase58());
|
|
57
|
-
return "0";
|
|
58
|
-
}
|
|
59
|
-
const keyToAssetKey = keyToAssetForAsset(asset, DAO);
|
|
60
|
-
const keyToAsset = await this.issuanceProgram.account.keyToAssetV0.fetch(keyToAssetKey);
|
|
61
|
-
const entityKey = decodeEntityKey(keyToAsset.entityKey, keyToAsset.keySerialization);
|
|
62
|
-
// Verify the creator is our entity creator, otherwise they could just
|
|
63
|
-
// pass in any NFT with this ecc compact to collect rewards
|
|
64
|
-
if (!asset.creators[0].verified ||
|
|
65
|
-
!new PublicKey(asset.creators[0].address).equals(ENTITY_CREATOR)) {
|
|
66
|
-
throw new Error("Not a valid rewardable entity");
|
|
67
|
-
}
|
|
68
|
-
return this.getCurrentRewardsByEntity(entityKey);
|
|
69
|
-
}
|
|
70
|
-
async getCurrentRewardsByEntity(entityKeyStr) {
|
|
71
|
-
const reward = (await Reward.findByPk(entityKeyStr));
|
|
72
|
-
return new BN(reward?.rewards).toString() || "0";
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
export class OracleServer {
|
|
76
|
-
ldProgram;
|
|
77
|
-
roProgram;
|
|
78
|
-
hemProgram;
|
|
79
|
-
oracle;
|
|
80
|
-
db;
|
|
81
|
-
lazyDistributor;
|
|
82
|
-
dao;
|
|
83
|
-
app;
|
|
84
|
-
port = 8080;
|
|
85
|
-
server;
|
|
86
|
-
constructor(ldProgram, roProgram, hemProgram, oracle, db, lazyDistributor, dao = DAO) {
|
|
87
|
-
this.ldProgram = ldProgram;
|
|
88
|
-
this.roProgram = roProgram;
|
|
89
|
-
this.hemProgram = hemProgram;
|
|
90
|
-
this.oracle = oracle;
|
|
91
|
-
this.db = db;
|
|
92
|
-
this.lazyDistributor = lazyDistributor;
|
|
93
|
-
this.dao = dao;
|
|
94
|
-
const server = Fastify({
|
|
95
|
-
logger: true,
|
|
96
|
-
});
|
|
97
|
-
server.register(cors, {
|
|
98
|
-
origin: "*",
|
|
99
|
-
});
|
|
100
|
-
server.get("/health", async () => {
|
|
101
|
-
return { ok: true };
|
|
102
|
-
});
|
|
103
|
-
this.app = server;
|
|
104
|
-
this.addRoutes();
|
|
105
|
-
}
|
|
106
|
-
async start() {
|
|
107
|
-
this.server = await this.app.listen({
|
|
108
|
-
port: this.port,
|
|
109
|
-
host: "0.0.0.0",
|
|
110
|
-
});
|
|
111
|
-
console.log(`Oracle server listening on port ${this.port}`);
|
|
112
|
-
}
|
|
113
|
-
async close() {
|
|
114
|
-
await this.app.close();
|
|
115
|
-
}
|
|
116
|
-
addRoutes() {
|
|
117
|
-
this.app.get("/active-devices", this.getActiveDevicesHandler.bind(this));
|
|
118
|
-
this.app.post("/bulk-rewards", this.getAllRewardsHandler.bind(this));
|
|
119
|
-
this.app.get("/", this.getCurrentRewardsHandler.bind(this));
|
|
120
|
-
this.app.post("/", this.signTransactionHandler.bind(this));
|
|
121
|
-
this.app.post("/bulk-sign", this.signBulkTransactionsHandler.bind(this));
|
|
122
|
-
}
|
|
123
|
-
async getActiveDevicesHandler(req, res) {
|
|
124
|
-
const count = await this.db.getActiveDevices();
|
|
125
|
-
res.send({
|
|
126
|
-
count,
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
async getCurrentRewardsHandler(req, res) {
|
|
130
|
-
let assetId = req.query.assetId;
|
|
131
|
-
let entityKey = req.query.entityKey;
|
|
132
|
-
let keySerialization = req.query.keySerialization;
|
|
133
|
-
if (!keySerialization) {
|
|
134
|
-
keySerialization = "b58";
|
|
135
|
-
}
|
|
136
|
-
if (!assetId && !entityKey) {
|
|
137
|
-
res.status(400).send({
|
|
138
|
-
error: "Must provide either `entityKey` or `assetId` parameter",
|
|
139
|
-
});
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
if (entityKey) {
|
|
143
|
-
const [key] = await keyToAssetKey(this.dao, entityKey, keySerialization);
|
|
144
|
-
console.log(key.toBase58());
|
|
145
|
-
const keyToAsset = await this.hemProgram.account.keyToAssetV0.fetch(key);
|
|
146
|
-
assetId = keyToAsset.asset.toBase58();
|
|
147
|
-
}
|
|
148
|
-
let asset;
|
|
149
|
-
try {
|
|
150
|
-
asset = new PublicKey(assetId);
|
|
151
|
-
}
|
|
152
|
-
catch (err) {
|
|
153
|
-
res.status(400).send({ error: "Invalid asset id" });
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
const currentRewards = await this.db.getCurrentRewards(asset);
|
|
157
|
-
res.send({
|
|
158
|
-
currentRewards,
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
async getAllRewardsHandler(req, res) {
|
|
162
|
-
const entityKeys = req.body.entityKeys;
|
|
163
|
-
if (!entityKeys) {
|
|
164
|
-
res.status(400).send({ error: "No entityKeys field" });
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
const currentRewards = await this.db.getBulkRewards(entityKeys);
|
|
168
|
-
res.send({
|
|
169
|
-
currentRewards,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
async signTransaction(data) {
|
|
173
|
-
const tx = Transaction.from(data);
|
|
174
|
-
// validate only interacts with LD and RO programs and only calls setCurrentRewards, distributeRewards
|
|
175
|
-
const setRewardIxs = [];
|
|
176
|
-
let recipientToLazyDistToMint = {};
|
|
177
|
-
const initRecipientTx = this.ldProgram.idl.instructions.find((x) => x.name === "initializeRecipientV0");
|
|
178
|
-
const initCompressionRecipientTx = this.ldProgram.idl.instructions.find((x) => x.name === "initializeCompressionRecipientV0");
|
|
179
|
-
const lazyDistributorIdxInitRecipient = initRecipientTx.accounts.findIndex((x) => x.name === "lazyDistributor");
|
|
180
|
-
const lazyDistributorIdxInitCompressionRecipient = initCompressionRecipientTx.accounts.findIndex((x) => x.name === "lazyDistributor");
|
|
181
|
-
const mintIdx = initRecipientTx.accounts.findIndex((x) => x.name === "mint");
|
|
182
|
-
const merkleTreeIdxInitCompressionRecipient = initCompressionRecipientTx.accounts.findIndex((x) => x.name === "merkleTree");
|
|
183
|
-
const recipientIdxInitRecipient = initRecipientTx.accounts.findIndex((x) => x.name === "recipient");
|
|
184
|
-
const recipientIdxInitCompressionRecipient = initCompressionRecipientTx.accounts.findIndex((x) => x.name === "recipient");
|
|
185
|
-
for (const ix of tx.instructions) {
|
|
186
|
-
if (!(ix.programId.equals(LD_PID) || ix.programId.equals(RO_PID))) {
|
|
187
|
-
return {
|
|
188
|
-
success: false,
|
|
189
|
-
message: "Invalid instructions in transaction",
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
let decoded;
|
|
193
|
-
if (ix.programId.equals(LD_PID)) {
|
|
194
|
-
decoded = this.ldProgram.coder.instruction.decode(ix.data);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
decoded = this.roProgram.coder.instruction.decode(ix.data);
|
|
198
|
-
}
|
|
199
|
-
if (!decoded ||
|
|
200
|
-
(decoded.name !== "setCurrentRewardsV0" &&
|
|
201
|
-
decoded.name !== "distributeRewardsV0" &&
|
|
202
|
-
decoded.name !== "distributeCompressionRewardsV0" &&
|
|
203
|
-
decoded.name !== "initializeRecipientV0" &&
|
|
204
|
-
decoded.name !== "initializeCompressionRecipientV0" &&
|
|
205
|
-
decoded.name !== "setCurrentRewardsWrapperV0" &&
|
|
206
|
-
decoded.name !== "setCurrentRewardsWrapperV1")) {
|
|
207
|
-
return {
|
|
208
|
-
success: false,
|
|
209
|
-
message: "Invalid instructions in transaction",
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
console.log(decoded.name);
|
|
213
|
-
if (decoded.name === "setCurrentRewardsV0" ||
|
|
214
|
-
decoded.name === "setCurrentRewardsWrapperV0" ||
|
|
215
|
-
decoded.name === "setCurrentRewardsWrapperV1")
|
|
216
|
-
setRewardIxs.push(ix);
|
|
217
|
-
// Since recipient wont exist to fetch to get the mint id, grab it from the init recipient ix
|
|
218
|
-
if (decoded.name === "initializeRecipientV0") {
|
|
219
|
-
const recipient = ix.keys[recipientIdxInitRecipient].pubkey.toBase58();
|
|
220
|
-
recipientToLazyDistToMint[recipient] ||= {};
|
|
221
|
-
const lazyDist = ix.keys[lazyDistributorIdxInitRecipient].pubkey.toBase58();
|
|
222
|
-
recipientToLazyDistToMint[recipient][lazyDist] =
|
|
223
|
-
ix.keys[mintIdx].pubkey;
|
|
224
|
-
}
|
|
225
|
-
// Since recipient wont exist to fetch to get the asset id, grab it from the init recipient ix
|
|
226
|
-
if (decoded.name === "initializeCompressionRecipientV0") {
|
|
227
|
-
const recipient = ix.keys[recipientIdxInitCompressionRecipient].pubkey.toBase58();
|
|
228
|
-
recipientToLazyDistToMint[recipient] ||= {};
|
|
229
|
-
const lazyDist = ix.keys[lazyDistributorIdxInitCompressionRecipient].pubkey.toBase58();
|
|
230
|
-
const merkleTree = ix.keys[merkleTreeIdxInitCompressionRecipient].pubkey;
|
|
231
|
-
const index = decoded.data.args.index;
|
|
232
|
-
recipientToLazyDistToMint[recipient][lazyDist] = await getLeafAssetId(merkleTree, new BN(index));
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
const setRewardsIx = this.ldProgram.idl.instructions.find((x) => x.name === "setCurrentRewardsV0");
|
|
236
|
-
const payerKeyIdx = setRewardsIx.accounts.findIndex((x) => x.name === "payer");
|
|
237
|
-
const oracleKeyIdx = setRewardsIx.accounts.findIndex((x) => x.name === "oracle");
|
|
238
|
-
const lazyDistIdx = setRewardsIx.accounts.findIndex((x) => x.name === "lazyDistributor");
|
|
239
|
-
const recipientIdx = setRewardsIx.accounts.findIndex((x) => x.name === "recipient");
|
|
240
|
-
const setRewardsWrapperIx = this.roProgram.idl.instructions.find((x) => x.name === "setCurrentRewardsWrapperV0" ||
|
|
241
|
-
x.name === "setCurrentRewardsWrapperV1");
|
|
242
|
-
const wrapperOracleKeyIdx = setRewardsWrapperIx.accounts.findIndex((x) => x.name === "oracle");
|
|
243
|
-
const wrapperLazyDistIdx = setRewardsWrapperIx.accounts.findIndex((x) => x.name === "lazyDistributor");
|
|
244
|
-
const wrapperRecipientIdx = setRewardsWrapperIx.accounts.findIndex((x) => x.name === "recipient");
|
|
245
|
-
const wrapperKeyToAssetIdx = setRewardsWrapperIx.accounts.findIndex((x) => x.name === "keyToAsset");
|
|
246
|
-
// validate setRewards value for this oracle is correct
|
|
247
|
-
for (const ix of setRewardIxs) {
|
|
248
|
-
let recipient, lazyDist, proposedCurrentRewards;
|
|
249
|
-
let entityKey;
|
|
250
|
-
let keyToAssetK = undefined;
|
|
251
|
-
if (ix.keys[wrapperOracleKeyIdx].pubkey.equals(this.oracle.publicKey) &&
|
|
252
|
-
ix.programId.equals(RO_PID)) {
|
|
253
|
-
let decoded = this.roProgram.coder.instruction.decode(ix.data);
|
|
254
|
-
recipient = ix.keys[wrapperRecipientIdx].pubkey;
|
|
255
|
-
lazyDist = ix.keys[wrapperLazyDistIdx].pubkey;
|
|
256
|
-
keyToAssetK = ix.keys[wrapperKeyToAssetIdx].pubkey;
|
|
257
|
-
//@ts-ignore
|
|
258
|
-
proposedCurrentRewards = decoded.data.args.currentRewards;
|
|
259
|
-
entityKey = (await this.hemProgram.account.keyToAssetV0.fetch(keyToAssetK)).entityKey;
|
|
260
|
-
// A sneaky RPC could return incorrect data. Verify that the entity key is correct for the key to asset
|
|
261
|
-
if (!keyToAssetKey(this.dao, entityKey)[0].equals(keyToAssetK)) {
|
|
262
|
-
return { success: false, message: "RPC lied about the entity key for this asset." };
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
else if (ix.keys[oracleKeyIdx].pubkey.equals(this.oracle.publicKey) &&
|
|
266
|
-
ix.programId.equals(LD_PID)) {
|
|
267
|
-
let decoded = this.ldProgram.coder.instruction.decode(ix.data);
|
|
268
|
-
recipient = ix.keys[recipientIdx].pubkey;
|
|
269
|
-
lazyDist = ix.keys[lazyDistIdx].pubkey;
|
|
270
|
-
//@ts-ignore
|
|
271
|
-
proposedCurrentRewards = decoded.data.args.currentRewards;
|
|
272
|
-
}
|
|
273
|
-
if (!lazyDist || !recipient || !lazyDist.equals(this.lazyDistributor)) {
|
|
274
|
-
return { success: false, message: "Invalid lazy distributor" };
|
|
275
|
-
}
|
|
276
|
-
let mint = (recipientToLazyDistToMint[recipient.toBase58()] || {})[lazyDist.toBase58()];
|
|
277
|
-
if (!mint) {
|
|
278
|
-
const recipientAcc = await this.ldProgram.account.recipientV0.fetchNullable(recipient);
|
|
279
|
-
if (!recipientAcc) {
|
|
280
|
-
console.error(recipientToLazyDistToMint);
|
|
281
|
-
return { success: false, message: "Recipient doesn't exist" };
|
|
282
|
-
}
|
|
283
|
-
mint = recipientAcc.asset;
|
|
284
|
-
}
|
|
285
|
-
let keySerialization = { b58: {} };
|
|
286
|
-
if (keyToAssetK) {
|
|
287
|
-
const keyToAsset = await this.hemProgram.account.keyToAssetV0.fetch(keyToAssetK);
|
|
288
|
-
keySerialization = keyToAsset.keySerialization;
|
|
289
|
-
}
|
|
290
|
-
// @ts-ignore
|
|
291
|
-
const currentRewards = entityKey
|
|
292
|
-
? await this.db.getCurrentRewardsByEntity(decodeEntityKey(entityKey, keySerialization))
|
|
293
|
-
: await this.db.getCurrentRewards(mint);
|
|
294
|
-
if (proposedCurrentRewards.gt(new BN(currentRewards))) {
|
|
295
|
-
return { success: false, message: `Invalid amount, ${proposedCurrentRewards} is greater than actual rewards ${currentRewards}` };
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
// validate that this oracle is not the fee payer
|
|
299
|
-
if (tx.feePayer?.equals(this.oracle.publicKey)) {
|
|
300
|
-
return {
|
|
301
|
-
success: false,
|
|
302
|
-
message: "Cannot set this oracle as the fee payer",
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
tx.partialSign(this.oracle);
|
|
306
|
-
const serialized = tx.serialize({
|
|
307
|
-
requireAllSignatures: false,
|
|
308
|
-
verifySignatures: false,
|
|
309
|
-
});
|
|
310
|
-
return { success: true, transaction: serialized };
|
|
311
|
-
}
|
|
312
|
-
async signBulkTransactionsHandler(req, res) {
|
|
313
|
-
if (!req.body.transactions) {
|
|
314
|
-
res.status(400).send({ error: "No transactions field" });
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
let _this = this;
|
|
318
|
-
const results = await Promise.all(req.body.transactions.map(async (txData) => {
|
|
319
|
-
try {
|
|
320
|
-
return await _this.signTransaction(txData);
|
|
321
|
-
}
|
|
322
|
-
catch (err) {
|
|
323
|
-
console.error(err);
|
|
324
|
-
return { success: false, message: err.message };
|
|
325
|
-
}
|
|
326
|
-
}));
|
|
327
|
-
const errIdx = results.findIndex((x) => !x.success);
|
|
328
|
-
if (errIdx > -1) {
|
|
329
|
-
res
|
|
330
|
-
.status(400)
|
|
331
|
-
.send({
|
|
332
|
-
error: results[errIdx].message
|
|
333
|
-
? `${results[errIdx].message}\n\nTransaction index: ${errIdx}`
|
|
334
|
-
: `Error signing transaction index: ${errIdx}`,
|
|
335
|
-
});
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
res.send({
|
|
339
|
-
success: true,
|
|
340
|
-
transactions: results.map((x) => x.transaction),
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
async signTransactionHandler(req, res) {
|
|
344
|
-
if (!req.body.transaction) {
|
|
345
|
-
res.status(400).send({ error: "No transaction field" });
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
const result = await this.signTransaction(req.body.transaction.data);
|
|
349
|
-
if (!result.success) {
|
|
350
|
-
res
|
|
351
|
-
.status(400)
|
|
352
|
-
.send({ error: result.message || "Error signing transaction" });
|
|
353
|
-
}
|
|
354
|
-
res.send({ success: true, transaction: result.transaction });
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
(async function () {
|
|
358
|
-
if (process.argv.length > 2 && process.argv[2] == "serve") {
|
|
359
|
-
// driver code for running server
|
|
360
|
-
setProvider(AnchorProvider.env());
|
|
361
|
-
const provider = getProvider();
|
|
362
|
-
const oracleKeypair = Keypair.fromSecretKey(new Uint8Array(JSON.parse(fs
|
|
363
|
-
.readFileSync((process.env.ORACLE_KEYPAIR_PATH || process.env.ANCHOR_WALLET))
|
|
364
|
-
.toString())));
|
|
365
|
-
const ldProgram = await initLazy(provider);
|
|
366
|
-
const roProgram = await initRewards(provider);
|
|
367
|
-
const hemProgram = await initHeliumEntityManager(provider);
|
|
368
|
-
const DNT = process.env.DNT_MINT
|
|
369
|
-
? new PublicKey(process.env.DNT_MINT)
|
|
370
|
-
: IOT_MINT;
|
|
371
|
-
const LAZY_DISTRIBUTOR = lazyDistributorKey(DNT)[0];
|
|
372
|
-
const server = new OracleServer(ldProgram, roProgram, hemProgram, oracleKeypair, new PgDatabase(hemProgram), LAZY_DISTRIBUTOR);
|
|
373
|
-
// For performance
|
|
374
|
-
new AccountFetchCache({
|
|
375
|
-
connection: provider.connection,
|
|
376
|
-
commitment: "confirmed",
|
|
377
|
-
extendConnection: true,
|
|
378
|
-
});
|
|
379
|
-
server.start();
|
|
380
|
-
}
|
|
381
|
-
})();
|
|
382
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server.ts"],"names":[],"mappings":"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"}
|