@render-foundation/utils 0.0.14 → 0.0.16

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.
Files changed (56) hide show
  1. package/package.json +1 -3
  2. package/lib/cjs/dbTypes.js +0 -3
  3. package/lib/cjs/dbTypes.js.map +0 -1
  4. package/lib/cjs/errorReporter.js +0 -77
  5. package/lib/cjs/errorReporter.js.map +0 -1
  6. package/lib/cjs/index.js +0 -24
  7. package/lib/cjs/index.js.map +0 -1
  8. package/lib/cjs/logger.js +0 -18
  9. package/lib/cjs/logger.js.map +0 -1
  10. package/lib/cjs/pgClient.js +0 -428
  11. package/lib/cjs/pgClient.js.map +0 -1
  12. package/lib/cjs/priceClient.js +0 -33
  13. package/lib/cjs/priceClient.js.map +0 -1
  14. package/lib/cjs/renderClient.js +0 -74
  15. package/lib/cjs/renderClient.js.map +0 -1
  16. package/lib/cjs/squadsV3.js +0 -63
  17. package/lib/cjs/squadsV3.js.map +0 -1
  18. package/lib/cjs/wormhole.js +0 -68
  19. package/lib/cjs/wormhole.js.map +0 -1
  20. package/lib/esm/src/dbTypes.js +0 -2
  21. package/lib/esm/src/dbTypes.js.map +0 -1
  22. package/lib/esm/src/errorReporter.js +0 -68
  23. package/lib/esm/src/errorReporter.js.map +0 -1
  24. package/lib/esm/src/index.js +0 -8
  25. package/lib/esm/src/index.js.map +0 -1
  26. package/lib/esm/src/logger.js +0 -15
  27. package/lib/esm/src/logger.js.map +0 -1
  28. package/lib/esm/src/pgClient.js +0 -389
  29. package/lib/esm/src/pgClient.js.map +0 -1
  30. package/lib/esm/src/priceClient.js +0 -15
  31. package/lib/esm/src/priceClient.js.map +0 -1
  32. package/lib/esm/src/renderClient.js +0 -57
  33. package/lib/esm/src/renderClient.js.map +0 -1
  34. package/lib/esm/src/squadsV3.js +0 -47
  35. package/lib/esm/src/squadsV3.js.map +0 -1
  36. package/lib/esm/src/wormhole.js +0 -32
  37. package/lib/esm/src/wormhole.js.map +0 -1
  38. package/lib/esm/tsconfig.esm.tsbuildinfo +0 -1
  39. package/lib/types/src/dbTypes.d.ts +0 -62
  40. package/lib/types/src/dbTypes.d.ts.map +0 -1
  41. package/lib/types/src/errorReporter.d.ts +0 -12
  42. package/lib/types/src/errorReporter.d.ts.map +0 -1
  43. package/lib/types/src/index.d.ts +0 -8
  44. package/lib/types/src/index.d.ts.map +0 -1
  45. package/lib/types/src/logger.d.ts +0 -14
  46. package/lib/types/src/logger.d.ts.map +0 -1
  47. package/lib/types/src/pgClient.d.ts +0 -77
  48. package/lib/types/src/pgClient.d.ts.map +0 -1
  49. package/lib/types/src/priceClient.d.ts +0 -5
  50. package/lib/types/src/priceClient.d.ts.map +0 -1
  51. package/lib/types/src/renderClient.d.ts +0 -10
  52. package/lib/types/src/renderClient.d.ts.map +0 -1
  53. package/lib/types/src/squadsV3.d.ts +0 -8
  54. package/lib/types/src/squadsV3.d.ts.map +0 -1
  55. package/lib/types/src/wormhole.d.ts +0 -9
  56. package/lib/types/src/wormhole.d.ts.map +0 -1
@@ -1,389 +0,0 @@
1
- import { Pool } from "pg";
2
- import { Kysely, NoResultError, PostgresDialect, sql, } from "kysely";
3
- import { consoleLogger } from "./logger";
4
- const transferFromDB = (o) => {
5
- return {
6
- id: o.id,
7
- solKey: o.sol_key,
8
- solTx: o.sol_tx,
9
- sqTx: o.sq_tx,
10
- txStatus: o.txStatus,
11
- createdAt: o.created_at,
12
- payedAt: o.payed_at,
13
- amountDue: BigInt(o.amount_due),
14
- amountPayed: o.amount_payed ? BigInt(o.amount_payed) : undefined,
15
- operatorRewards: o.transfer_type == "node_operator_rewards"
16
- ? {
17
- epochId: o.epoch_id,
18
- startTime: o.start_time,
19
- endTime: o.end_time,
20
- }
21
- : undefined,
22
- computeClientRewards: o.transfer_type == "open_compute_rewards"
23
- ? {
24
- epochId: o.epoch_id,
25
- deviceId: o.device_id,
26
- }
27
- : undefined,
28
- upgradeRewards: o.transfer_type == "upgrade_rewards" && !!o.epoch_id
29
- ? {
30
- epochId: o.epoch_id,
31
- epochStartTime: o.epoch_start_time,
32
- points: BigInt(o.points),
33
- }
34
- : undefined,
35
- };
36
- };
37
- export const pgClient = (config, log = consoleLogger) => {
38
- const dialect = new PostgresDialect({
39
- pool: new Pool({
40
- ...config,
41
- port: config.port ?? 5432,
42
- max: config.max ?? 10,
43
- }),
44
- });
45
- // Database interface is passed to Kysely's constructor, and from now on, Kysely
46
- // knows your database structure.
47
- // Dialect is passed to Kysely's constructor, and from now on, Kysely knows how
48
- // to communicate with your database.
49
- const db = new Kysely({
50
- dialect,
51
- });
52
- const TRANSFER = "transfer";
53
- const NODE_OPERATOR_REWARDS_TRANSFER = "node_operator_rewards_transfer";
54
- const COMPUTE_CLIENT_REWARDS_TRANSFER = "open_compute_rewards_transfer";
55
- const UPGRADE_REWARDS_TRANSFER = "upgrade_rewards_transfer";
56
- const SQUADS_TX = "squads_tx";
57
- const NODE_OPERATOR_EPOCH = "node_operator_epoch";
58
- const JOB_ID = "job_id";
59
- const createTransfers = async (db, transfers) => {
60
- for (const t of transfers) {
61
- const { id: transferId } = (await db
62
- .insertInto(TRANSFER)
63
- .values({
64
- amount_due: BigInt(t.amountDue),
65
- amount_payed: t.amountPayed ? BigInt(t.amountPayed) : 0,
66
- created_at: t.createdAt,
67
- payed_at: t.payedAt,
68
- sol_key: t.solKey,
69
- sol_tx: t.solTx,
70
- transfer_type: (() => {
71
- if (t.operatorRewards) {
72
- return "node_operator_rewards";
73
- }
74
- else if (t.upgradeRewards) {
75
- return "upgrade_rewards";
76
- }
77
- else if (t.computeClientRewards) {
78
- return "open_compute_rewards";
79
- }
80
- throw new Error("wtf");
81
- })(),
82
- })
83
- .returning((eb) => ["id as id"])
84
- .executeTakeFirst());
85
- log.info(`inserted transfer ${JSON.stringify(t, (key, value) => typeof value === "bigint" ? value.toString() : value)}`);
86
- if (t.operatorRewards) {
87
- log.info(`inserting operator rewards ${transferId}`);
88
- const x = (await db
89
- .insertInto(NODE_OPERATOR_REWARDS_TRANSFER)
90
- .values({
91
- end_time: t.operatorRewards.endTime,
92
- start_time: t.operatorRewards.startTime,
93
- epoch_id: t.operatorRewards.epochId,
94
- transfer_id: transferId,
95
- })
96
- .executeTakeFirst()).insertId;
97
- }
98
- else if (t.computeClientRewards) {
99
- log.info(`inserting compute client rewards ${transferId}`);
100
- const x = (await db
101
- .insertInto(COMPUTE_CLIENT_REWARDS_TRANSFER)
102
- .values({
103
- device_id: t.computeClientRewards.deviceId,
104
- transfer_id: transferId,
105
- })
106
- .executeTakeFirst()).insertId;
107
- }
108
- else if (t.upgradeRewards) {
109
- log.info(`inserting upgrade rewards ${transferId}`);
110
- const x = (await db
111
- .insertInto(UPGRADE_REWARDS_TRANSFER)
112
- .values({
113
- epoch_id: t.upgradeRewards.epochId,
114
- epoch_start_time: t.upgradeRewards.epochStartTime,
115
- points: t.upgradeRewards.points,
116
- transfer_id: transferId,
117
- })
118
- .executeTakeFirst()).insertId;
119
- }
120
- }
121
- return;
122
- };
123
- return {
124
- async updateBurned(epochId, burned) {
125
- const res = await db
126
- .updateTable(NODE_OPERATOR_EPOCH)
127
- .set({
128
- burned
129
- })
130
- .where("id", "=", epochId.toString())
131
- .executeTakeFirstOrThrow();
132
- log.info(`saved node operator epoch: ${res.numUpdatedRows}`);
133
- },
134
- async saveNodeOperatorEpoch(epochId, transfers, jobIds, totalRndr) {
135
- await db.transaction().execute(async (trx) => {
136
- await createTransfers(trx, transfers);
137
- log.info(`inserted transfers`);
138
- for (const id of jobIds) {
139
- await trx
140
- .insertInto(JOB_ID)
141
- .values({
142
- id: BigInt(id),
143
- epoch_id: epochId,
144
- })
145
- .executeTakeFirstOrThrow();
146
- }
147
- log.info(`inserted jobids`);
148
- const now = new Date(Date.now());
149
- const res = await trx
150
- .updateTable(NODE_OPERATOR_EPOCH)
151
- .set({
152
- saved_at: now,
153
- total_rndr: totalRndr,
154
- })
155
- .where("id", "=", epochId.toString())
156
- .executeTakeFirstOrThrow();
157
- log.info(`saved node operator epoch: ${res.numUpdatedRows}`);
158
- });
159
- return;
160
- },
161
- async getLatestNodeOperatorEpoch() {
162
- const now = new Date(Date.now());
163
- try {
164
- const res = await db
165
- .selectFrom(NODE_OPERATOR_EPOCH)
166
- .selectAll()
167
- .where("end_time", "<=", now)
168
- .orderBy("end_time desc")
169
- .limit(1)
170
- .executeTakeFirstOrThrow();
171
- return {
172
- epochId: BigInt(res.id),
173
- startedAt: res.start_time,
174
- endedAt: res.end_time,
175
- savedAt: res.saved_at ?? undefined,
176
- };
177
- }
178
- catch (e) {
179
- if (e instanceof NoResultError) {
180
- log.info(`no node operator epoch found`);
181
- return undefined;
182
- }
183
- throw e;
184
- }
185
- },
186
- async getOutstanding(f) {
187
- //select sol_key, sum(amount_due)-sum(amount_payed) from transfer group by sol_key;
188
- const res = await db
189
- .selectFrom(TRANSFER)
190
- .select(({ fn, val, ref }) => [
191
- "sol_key",
192
- sql `${fn.sum("amount_due")} - ${fn.sum("amount_payed")}`.as("due"),
193
- ])
194
- .where("transfer_type", "=", f.typ)
195
- .groupBy(["sol_key"])
196
- .execute();
197
- const out = {};
198
- for (const r of res) {
199
- out[r.sol_key] = BigInt(r.due);
200
- }
201
- return out;
202
- },
203
- async updateSqTx(tx, status) {
204
- const res = await db
205
- .updateTable(SQUADS_TX)
206
- .set({ tx_status: status })
207
- .where("sq_tx", "=", tx)
208
- .execute();
209
- log.info(`updated ${tx} -> ${status}`);
210
- },
211
- async setSqTx(transferIds, sqTx) {
212
- const { id } = (await db
213
- .insertInto(SQUADS_TX)
214
- .values({ sq_tx: sqTx, tx_status: "created" })
215
- .returning((eb) => ["id as id"])
216
- .executeTakeFirst());
217
- const res = await db
218
- .updateTable(TRANSFER)
219
- .set({ sq_tx_id: id })
220
- .where("id", "in", transferIds.map((id) => id.toString()))
221
- .execute();
222
- log.info(`set sqTx ${sqTx} on ${transferIds.length} transfers`);
223
- },
224
- /*
225
- [
226
- 'transfer.id',
227
- 'transfer.sol_key',
228
- 'transfer.transfer_type',
229
- 'transfer.transfer_type',
230
- 'squads_tx.tx_status', 'squads_tx.sq_tx']
231
- */
232
- async fetchTransfers(f) {
233
- let base = db
234
- .selectFrom(TRANSFER)
235
- // @ts-ignore
236
- .selectAll(TRANSFER)
237
- .leftJoin(SQUADS_TX, "squads_tx.id", "transfer.sq_tx_id")
238
- .select(["squads_tx.tx_status", "squads_tx.sq_tx"])
239
- .where("transfer_type", "=", f.typ);
240
- if (f.status) {
241
- if (f.status == "notx") {
242
- base = base.where("squads_tx.tx_status", "is", null);
243
- }
244
- else {
245
- base = base.where("squads_tx.tx_status", "=", f.status);
246
- }
247
- }
248
- if (f.payed != undefined) {
249
- base = base.where("payed_at", f.payed ? "is not" : "is", null);
250
- }
251
- if (f.typ == "upgrade_rewards") {
252
- base = base.innerJoin(UPGRADE_REWARDS_TRANSFER, "upgrade_rewards_transfer.transfer_id", "transfer.id");
253
- if (f.epochId) {
254
- // @ts-ignore
255
- base = base.where("upgrade_rewards_transfer.epoch_id", "=", f.epochId);
256
- }
257
- }
258
- if (f.typ == "node_operator_rewards") {
259
- base = base.innerJoin(NODE_OPERATOR_REWARDS_TRANSFER, "node_operator_rewards_transfer.transfer_id", "transfer.id");
260
- if (f.epochId) {
261
- // @ts-ignore
262
- base = base.where("node_operator_rewards_transfer.epoch_id", "=", f.epochId);
263
- }
264
- }
265
- if (f.sort) {
266
- base = base.orderBy("transfer.sol_key asc");
267
- }
268
- const res = await base.execute();
269
- log.info(`fetched ${base.compile().sql} ${res.length} transfers`);
270
- return res.map((r) => transferFromDB(r));
271
- },
272
- async payoutTransfersSquads(ts, payedAt, solTx, sqTx) {
273
- const { id: sqTxId } = (await db
274
- .insertInto(SQUADS_TX)
275
- .values({ sq_tx: sqTx, tx_status: "executed" })
276
- .returning((eb) => ["id as id"])
277
- .executeTakeFirstOrThrow());
278
- let numUpdated = BigInt(0);
279
- for (const [id, amtPayed] of Object.entries(ts)) {
280
- const res = await db
281
- .updateTable(TRANSFER)
282
- .set({
283
- payed_at: payedAt,
284
- sol_tx: solTx,
285
- amount_payed: amtPayed,
286
- sq_tx_id: sqTxId,
287
- })
288
- .where("id", "=", id)
289
- .executeTakeFirstOrThrow();
290
- numUpdated += res.numUpdatedRows;
291
- }
292
- log.info(`marked ${numUpdated} transfers payed out`);
293
- return;
294
- },
295
- async payoutTransfers(idToAmt, payedAt, solTx) {
296
- const res = await db.transaction().execute(async (tx) => {
297
- for (const [id, amt] of Object.entries(idToAmt)) {
298
- const res = await tx
299
- .updateTable(TRANSFER)
300
- .set({
301
- payed_at: payedAt,
302
- sol_tx: solTx,
303
- amount_payed: amt,
304
- })
305
- .where("id", "=", id.toString())
306
- .executeTakeFirstOrThrow();
307
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
308
- }
309
- });
310
- },
311
- async payoutTransfer(id, payedAt, solTx, amtPayed) {
312
- const res = await db
313
- .updateTable(TRANSFER)
314
- .set({
315
- payed_at: payedAt,
316
- sol_tx: solTx,
317
- amount_payed: amtPayed,
318
- })
319
- .where("id", "=", id.toString())
320
- .executeTakeFirst();
321
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
322
- return;
323
- },
324
- async payoutTransferSq(id, payedAt, solTx, amtPayed, sqTx) {
325
- const { id: sqTxId } = (await db
326
- .insertInto(SQUADS_TX)
327
- .values({ sq_tx: sqTx, tx_status: "executed" })
328
- .onConflict((oc) => oc.column("sq_tx").doNothing())
329
- .returning((eb) => ["id as id"])
330
- .executeTakeFirst());
331
- const res = await db
332
- .updateTable(TRANSFER)
333
- .set({
334
- payed_at: payedAt,
335
- sol_tx: solTx,
336
- amount_payed: amtPayed,
337
- sq_tx_id: sqTxId,
338
- })
339
- .where("id", "=", id.toString())
340
- .executeTakeFirst();
341
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
342
- return;
343
- },
344
- async createTransfers(transfers) {
345
- await createTransfers(db, transfers);
346
- },
347
- async fetchInfoForEpoch(epochId) {
348
- const res = await db
349
- .selectFrom(JOB_ID)
350
- .innerJoin(NODE_OPERATOR_EPOCH, "node_operator_epoch.id", "job_id.epoch_id")
351
- .where("job_id.epoch_id", "=", epochId.toString())
352
- .selectAll()
353
- .execute();
354
- const out = [];
355
- let totalRndr = BigInt(0);
356
- for (const r of res) {
357
- totalRndr = BigInt(r.total_rndr);
358
- out.push(Number(r.id));
359
- }
360
- return { jobIds: out, totalRndr };
361
- },
362
- async fetchTransfersByWallet(f) {
363
- let base = db
364
- .selectFrom(TRANSFER)
365
- .selectAll(TRANSFER)
366
- .where("sol_key", "=", f.address);
367
- if (f.payed != undefined) {
368
- base = base.where("payed_at", f.payed ? "is not" : "is", null);
369
- }
370
- const res = await base.execute();
371
- if (f.typ === "node_operator_rewards") {
372
- base = base.innerJoin(NODE_OPERATOR_REWARDS_TRANSFER, "node_operator_rewards_transfer.transfer_id", "transfer.id");
373
- if (f.epochId) {
374
- // @ts-ignore
375
- base = base.where("node_operator_rewards_transfer.epoch_id", "=", BigInt(f.epochId));
376
- }
377
- }
378
- if (f.typ === "open_compute_rewards") {
379
- base = base.innerJoin(COMPUTE_CLIENT_REWARDS_TRANSFER, "open_compute_rewards_transfer.transfer_id", "transfer.id");
380
- if (f.epochId) {
381
- // @ts-ignore
382
- base = base.where("open_compute_rewards_transfer.epoch_id", "=", BigInt(f.epochId));
383
- }
384
- }
385
- return res.map((r) => transferFromDB(r));
386
- },
387
- };
388
- };
389
- //# sourceMappingURL=pgClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pgClient.js","sourceRoot":"","sources":["../../../src/pgClient.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { CoinGeckoClient } from "coingecko-api-v3";
2
- import dateFormat from "dateformat";
3
- export const coinGeckoClient = () => {
4
- const client = new CoinGeckoClient({
5
- timeout: 10000,
6
- autoRetry: true,
7
- });
8
- return {
9
- async getRenderPriceAtDate(d) {
10
- const res = await client.coinIdHistory({ id: 'render-token', date: dateFormat(d, 'dd-mm-yyyy') });
11
- return res.market_data.current_price['usd'];
12
- }
13
- };
14
- };
15
- //# sourceMappingURL=priceClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"priceClient.js","sourceRoot":"","sources":["../../../src/priceClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,UAAU,MAAM,YAAY,CAAC;AAMpC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAgB,EAAE;IAE/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,oBAAoB,CAAC,CAAO;YAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,EAAC,CAAC,CAAA;YAC/F,OAAO,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC7C,CAAC;KACF,CAAA;AAEH,CAAC,CAAA"}
@@ -1,57 +0,0 @@
1
- import { consoleLogger } from "./logger";
2
- export const renderClient = (authToken, log = consoleLogger) => {
3
- const host = `rndr.x.io`;
4
- return {
5
- async fetchNodeOperatorRewards(startTime, endTime) {
6
- const startTimeStr = startTime.toISOString().split('T')[0];
7
- const endTimeStr = endTime.toISOString().split('T')[0];
8
- const url = `https://${host}/api/v3/services/solana/payments?finished_after=${startTimeStr}&finished_before=${endTimeStr}`;
9
- log.info(`fetching ${url}`);
10
- const res = await fetch(url, { headers: {
11
- Authorization: `${authToken}`,
12
- Accept: 'application/vnd.api+json'
13
- } }).then(async (res) => {
14
- if (res.status != 200) {
15
- throw new Error(`failed fetching node operator rewards. code: ${res.status} body: ${JSON.stringify(await res.text())}`);
16
- }
17
- return (await res.json());
18
- });
19
- const solKeyToDue = {};
20
- for (const r of res.data.attributes.paymentsOwed) {
21
- const [addr, amt] = Object.entries(r)[0];
22
- solKeyToDue[addr] = amt;
23
- }
24
- return { solKeyToDue, jobIds: res.meta.jobIds };
25
- },
26
- async markJobsPayed(ids, finishedAfter, finishedBefore, totalDistributed) {
27
- const payload = {
28
- data: {
29
- attributes: {
30
- finished_after: finishedAfter.toISOString().split('T')[0],
31
- finished_before: finishedBefore.toISOString().split('T')[0],
32
- job_ids: ids,
33
- total_distributed: totalDistributed
34
- },
35
- type: 'solana_payments'
36
- }
37
- };
38
- const res = await fetch(`https://${host}/api/v3/services/solana/payments`, {
39
- method: 'POST',
40
- headers: {
41
- 'Authorization': `Bearer ${authToken}`,
42
- 'Content-Type': `application/vnd.api+json`,
43
- 'Accept': `application/vnd.api+json`
44
- },
45
- body: JSON.stringify(payload)
46
- }).then(async (res) => {
47
- if (res.status != 201) {
48
- throw new Error(`failed posting node operator rewards. code: ${res.status} body: ${JSON.stringify(await res.text())}`);
49
- }
50
- return (await res.text());
51
- });
52
- log.info(`markJobsPayed ${res}`);
53
- return;
54
- }
55
- };
56
- };
57
- //# sourceMappingURL=renderClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderClient.js","sourceRoot":"","sources":["../../../src/renderClient.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { DEFAULT_MULTISIG_PROGRAM_ID, getAuthorityPDA, getTxPDA } from "@sqds/sdk";
2
- import BN from "bn.js";
3
- import { Transaction } from "@solana/web3.js";
4
- import { sendAndConfirmWithRetry } from "@render-foundation/spl-utils";
5
- import { consoleLogger } from "./logger";
6
- export const executeSqV3Transaction = async (connection, squadsMsKey, clients, instrs, log = consoleLogger) => {
7
- const msAuthorityK = getAuthorityPDA(squadsMsKey, new BN(1), DEFAULT_MULTISIG_PROGRAM_ID)[0];
8
- let txPDA;
9
- const primClient = clients[0];
10
- const txIdx = await primClient.getNextTransactionIndex(squadsMsKey);
11
- txPDA = getTxPDA(squadsMsKey, new BN(txIdx), DEFAULT_MULTISIG_PROGRAM_ID)[0];
12
- let createTx = new Transaction()
13
- .add(await primClient.buildCreateTransaction(squadsMsKey, 1, txIdx));
14
- let instrIdx = 1;
15
- for (const i of instrs) {
16
- createTx.add(await primClient.buildAddInstruction(squadsMsKey, txPDA, i, instrIdx));
17
- instrIdx += 1;
18
- }
19
- createTx.add(await primClient.buildActivateTransaction(squadsMsKey, txPDA));
20
- for (const c of clients) {
21
- createTx.add(await c.buildApproveTransaction(squadsMsKey, txPDA));
22
- }
23
- createTx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
24
- createTx.feePayer = primClient.wallet.publicKey;
25
- for (const c of clients) {
26
- createTx = await c.wallet.signTransaction(createTx);
27
- }
28
- //createTx.sign(sharedMsKp, authorityKp)
29
- await sendAndConfirmWithRetry(connection, createTx.serialize(), {
30
- skipPreflight: true,
31
- maxRetries: 10,
32
- }, 'finalized');
33
- log.info(`created tx ${txPDA}`);
34
- log.info(`executing tx ${txPDA}`);
35
- let execTx = new Transaction().add(await primClient.buildExecuteTransaction(txPDA, primClient.wallet.publicKey));
36
- execTx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
37
- execTx.feePayer = primClient.wallet.publicKey;
38
- execTx = await primClient.wallet.signTransaction(execTx);
39
- //execTx.sign(args.solFeePayerKp)
40
- const { txid } = await sendAndConfirmWithRetry(connection, execTx.serialize(), {
41
- skipPreflight: true,
42
- maxRetries: 10,
43
- }, 'confirmed');
44
- log.info(`executed ${txid}`);
45
- return { txSig: txid, txPDA };
46
- };
47
- //# sourceMappingURL=squadsV3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"squadsV3.js","sourceRoot":"","sources":["../../../src/squadsV3.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import * as anchor from "@coral-xyz/anchor";
2
- import { CONTRACTS } from "@certusone/wormhole-sdk";
3
- import { consoleLogger } from "./logger";
4
- export const fetchEthInfo = async (seq, wormEnv = 'MAINNET', ethChainId = 2, retries = 3, log = consoleLogger) => {
5
- const hexEmitter = Buffer.alloc(32)
6
- .fill(Uint8Array.from(anchor.utils.bytes.hex.decode(CONTRACTS[wormEnv].ethereum.token_bridge)), 12)
7
- .toString('hex');
8
- const url = `https://api${wormEnv.toLowerCase() == 'mainnet' ? '' : `.${wormEnv.toString().toLowerCase()}`}.wormholescan.io/api/v1/global-tx/${ethChainId}/${hexEmitter}/${seq}`;
9
- const recur = async (currRetry = 0) => {
10
- if (currRetry == retries) {
11
- return Promise.reject(new Error(`wormapi exceeded max retries ${retries} fetching ${url}`));
12
- }
13
- try {
14
- const res = await fetch(url).then(async (res) => {
15
- if (res.status != 200) {
16
- throw new Error(`status code ${res.status} fetching ${url}. body: ${JSON.stringify(await res.json())}`);
17
- }
18
- return (await res.json());
19
- }, err => {
20
- throw new Error(`exception fetching wormapi: ${JSON.stringify(err)}`);
21
- });
22
- return [seq, res];
23
- }
24
- catch (e) {
25
- // @ts-ignore
26
- log.error(`wormapi err ${e.message}`);
27
- return recur(currRetry + 1);
28
- }
29
- };
30
- return (await recur());
31
- };
32
- //# sourceMappingURL=wormhole.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wormhole.js","sourceRoot":"","sources":["../../../src/wormhole.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAC,aAAa,EAAe,MAAM,UAAU,CAAC;AAIrD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,GAAW,EACX,UAAiC,SAAS,EAC1C,aAAqB,CAAC,EACtB,OAAO,GAAG,CAAC,EACX,MAAoB,aAAa,EACL,EAAE;IAE9B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SAChC,IAAI,CACH,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAC3C,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC1C,EACD,EAAE,CACH;SACA,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClB,MAAM,GAAG,GAAG,cAAc,OAAO,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,qCAAqC,UAAU,IAAI,UAAU,IAAI,GAAG,EAAE,CAAA;IAEhL,MAAM,KAAK,GAAG,KAAK,EAAE,SAAS,GAAG,CAAC,EAA8B,EAAE;QAChE,IAAI,SAAS,IAAI,OAAO,EAAE;YACxB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,OAAO,aAAa,GAAG,EAAE,CAAC,CAAC,CAAA;SAC5F;QACD,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAC/B,KAAK,EAAC,GAAG,EAAC,EAAE;gBACV,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBACrB,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,MAAM,aAAa,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxG;gBACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAA;YACtC,CAAC,EACD,GAAG,CAAC,EAAE;gBACJ,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvE,CAAC,CACF,CAAA;YACD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;SAClB;QAAC,OAAO,CAAC,EAAE;YACV,aAAa;YACb,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;YACrC,OAAO,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;SAC5B;IACH,CAAC,CAAA;IAED,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,CAAA;AACxB,CAAC,CAAA"}