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