@helium/helium-admin-cli 0.7.11 → 0.7.13

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,84 +1,56 @@
1
- import Address from '@helium/address';
2
- import { ED25519_KEY_TYPE } from '@helium/address/build/KeyTypes';
3
- import { init as initHem, makerKey, rewardableEntityConfigKey, makerApprovalKey, } from '@helium/helium-entity-manager-sdk';
4
- import { init as initHsd, subDaoKey } from '@helium/helium-sub-daos-sdk';
5
- import { init as initVsr } from '@helium/voter-stake-registry-sdk';
6
- import { chunks, humanReadable, sendInstructions, truthy, } from '@helium/spl-utils';
7
- import * as anchor from '@coral-xyz/anchor';
8
- import { getConcurrentMerkleTreeAccountSize, SPL_ACCOUNT_COMPRESSION_PROGRAM_ID, } from '@solana/spl-account-compression';
9
- import { Keypair, PublicKey, SystemProgram, } from '@solana/web3.js';
10
- import fs from 'fs';
11
- import os from 'os';
12
- import yargs from 'yargs/yargs';
13
- import { exists, loadKeypair, sendInstructionsOrSquads, merkleSizes, } from './utils';
14
- import Squads from '@sqds/sdk';
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { init as initHem, makerKey } from "@helium/helium-entity-manager-sdk";
3
+ import { daoKey } from "@helium/helium-sub-daos-sdk";
4
+ import { HNT_MINT, humanReadable, sendInstructions, truthy, withPriorityFees } from "@helium/spl-utils";
5
+ import { SPL_ACCOUNT_COMPRESSION_PROGRAM_ID, getConcurrentMerkleTreeAccountSize, } from "@solana/spl-account-compression";
6
+ import { Keypair, PublicKey, SystemProgram, } from "@solana/web3.js";
7
+ import fs from "fs";
8
+ import os from "os";
9
+ import yargs from "yargs/yargs";
10
+ import { exists, loadKeypair, merkleSizes } from "./utils";
15
11
  export async function run(args = process.argv) {
16
12
  const yarg = yargs(args).options({
17
13
  wallet: {
18
- alias: 'k',
19
- describe: 'Anchor wallet keypair',
14
+ alias: "k",
15
+ describe: "Anchor wallet keypair",
20
16
  default: `${os.homedir()}/.config/solana/id.json`,
21
17
  },
22
- executeTransaction: {
23
- type: 'boolean',
24
- },
25
18
  url: {
26
- alias: 'u',
27
- default: 'http://127.0.0.1:8899',
28
- describe: 'The solana url',
19
+ alias: "u",
20
+ default: "http://127.0.0.1:8899",
21
+ describe: "The solana url",
29
22
  },
30
- subdaoMint: {
23
+ name: {
24
+ alias: "n",
25
+ type: "string",
31
26
  required: true,
32
- describe: 'Public Key of the subdao mint',
33
- type: 'string',
27
+ describe: "The name of the maker",
34
28
  },
35
- govProgramId: {
36
- type: 'string',
37
- describe: 'Pubkey of the GOV program',
38
- default: 'hgovkRU6Ghe1Qoyb54HdSLdqN7VtxaifBzRmh9jtd3S',
39
- },
40
- fromFile: {
41
- describe: 'Load makers from a json file and create in bulk',
42
- required: false,
43
- type: 'string',
29
+ issuingAuthority: {
30
+ type: "string",
31
+ describe: "Key that can issue hotspots on behalf of this maker",
32
+ required: true,
44
33
  },
45
- name: {
46
- alias: 'n',
47
- type: 'string',
48
- required: false,
49
- describe: 'The name of the maker',
34
+ updateAuthority: {
35
+ type: "string",
36
+ describe: "Key that can update the maker's issuing authority",
37
+ required: true,
50
38
  },
51
- makerKey: {
52
- alias: 'm',
53
- type: 'string',
54
- describe: '*Helium* Public Key of a maker',
55
- required: false,
39
+ metadataUrl: {
40
+ type: "string",
41
+ describe: "URL to metadata for this maker. Should be JSON with at least { name, image, description }",
42
+ required: true,
56
43
  },
57
44
  makerCount: {
58
- alias: 'c',
59
- type: 'number',
60
- describe: 'Estimated number of hotspots this maker will have',
61
- required: false,
62
- },
63
- merkleBasePath: {
64
- type: 'string',
65
- describe: 'Base path for merkle keypairs',
66
- default: `${__dirname}/../keypairs`,
67
- },
68
- symbol: {
69
- alias: 's',
70
- type: 'string',
45
+ alias: "c",
46
+ type: "number",
47
+ describe: "Estimated number of hotspots this maker will have",
71
48
  required: true,
72
- describe: 'The symbol of the entity config',
73
49
  },
74
- multisig: {
75
- type: 'string',
76
- describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
77
- },
78
- authorityIndex: {
79
- type: 'number',
80
- describe: 'Authority index for squads. Defaults to 1',
81
- default: 1,
50
+ merkleBasePath: {
51
+ type: "string",
52
+ describe: "Base path for merkle keypairs",
53
+ default: `${__dirname}`,
82
54
  },
83
55
  });
84
56
  const argv = await yarg.argv;
@@ -86,96 +58,99 @@ export async function run(args = process.argv) {
86
58
  process.env.ANCHOR_PROVIDER_URL = argv.url;
87
59
  anchor.setProvider(anchor.AnchorProvider.local(argv.url));
88
60
  const provider = anchor.getProvider();
89
- const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
90
61
  const name = argv.name;
91
- const symbol = argv.symbol;
92
- let makers = [
93
- {
94
- name,
95
- address: argv.makerKey,
96
- count: argv.makerCount || 300000,
97
- staked: true,
98
- },
99
- ];
100
- if (argv.fromFile) {
101
- makers = JSON.parse(fs.readFileSync(argv.fromFile, 'utf-8'));
102
- // Append a special fallthrough maker for hotspots that don't have a maker
103
- const solAddr = provider.wallet.publicKey;
104
- const helAddr = new Address(0, 0, ED25519_KEY_TYPE, solAddr.toBuffer());
105
- makers.push({
106
- name: 'Migrated Helium Hotspot',
107
- address: helAddr.b58,
108
- count: 50000,
109
- staked: true,
110
- });
111
- }
62
+ const count = argv.makerCount;
63
+ const issuingAuthority = new PublicKey(argv.issuingAuthority);
64
+ const updateAuthority = new PublicKey(argv.updateAuthority);
112
65
  const hemProgram = await initHem(provider);
113
- const hsdProgram = await initHsd(provider);
114
- const vsrProgram = await initVsr(provider);
115
66
  const conn = provider.connection;
116
- const subdaoMint = new PublicKey(argv.subdaoMint);
117
- const subdao = (await subDaoKey(subdaoMint))[0];
118
- const entityConfigKey = (await rewardableEntityConfigKey(subdao, symbol.toUpperCase()))[0];
119
- const subdaoAcc = await hsdProgram.account.subDaoV0.fetch(subdao);
120
- const dao = await hsdProgram.account.daoV0.fetch(subdaoAcc.dao);
121
- let subdaoPayer = provider.wallet.publicKey;
67
+ const daoK = daoKey(HNT_MINT)[0];
122
68
  let daoPayer = provider.wallet.publicKey;
123
- const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
124
- commitmentOrConfig: 'finalized',
125
- });
126
- let authority = provider.wallet.publicKey;
127
- let multisig = argv.multisig ? new PublicKey(argv.multisig) : null;
128
- if (multisig) {
129
- authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
130
- subdaoPayer = authority;
131
- daoPayer = authority;
132
- console.log('SQUAD AUTH', authority.toBase58());
133
- }
134
- const createInstructions = [];
135
- const approveInstructions = [];
136
- const updateAuthority = dao.authority;
137
69
  let totalSol = 0;
138
- for (const { name, address, count, staked } of makers) {
139
- const innerCreateInstrs = [];
140
- const makerAuthority = new PublicKey(Address.fromB58(address).publicKey);
141
- const [size, buffer, canopy] = merkleSizes.find(([height]) => Math.pow(2, height) > count * 2);
142
- const space = getConcurrentMerkleTreeAccountSize(size, buffer, canopy);
143
- const maker = await makerKey(subdaoAcc.dao, name)[0];
144
- const rent = await provider.connection.getMinimumBalanceForRentExemption(space);
145
- totalSol += rent;
146
- let merkle;
147
- const merklePath = `${argv.merkleBasePath}/merkle-${address}.json`;
148
- if (fs.existsSync(merklePath)) {
149
- merkle = loadKeypair(merklePath);
150
- }
151
- else {
152
- merkle = Keypair.generate();
153
- fs.writeFileSync(merklePath, JSON.stringify(Array.from(merkle.secretKey)));
154
- }
155
- if (!(await exists(conn, maker))) {
156
- console.log(`
157
- Creating maker with helium addr: ${address}.
158
- Solana addr: ${makerAuthority.toBase58()}.
159
- Size: ${size}, buffer: ${buffer}, canopy: ${canopy}.
70
+ const instructions = [];
71
+ const [size, buffer, canopy] = merkleSizes.find(([height]) => Math.pow(2, height) > count * 2);
72
+ const space = getConcurrentMerkleTreeAccountSize(size, buffer, canopy);
73
+ const maker = await makerKey(daoK, name)[0];
74
+ const rent = await provider.connection.getMinimumBalanceForRentExemption(space);
75
+ totalSol += rent;
76
+ let merkle;
77
+ const merklePath = `${argv.merkleBasePath}/merkle-${maker.toBase58()}.json`;
78
+ if (fs.existsSync(merklePath)) {
79
+ merkle = loadKeypair(merklePath);
80
+ }
81
+ else {
82
+ merkle = Keypair.generate();
83
+ fs.writeFileSync(merklePath, JSON.stringify(Array.from(merkle.secretKey)));
84
+ }
85
+ if (!(await exists(conn, maker))) {
86
+ console.log(`
87
+ Creating maker with address: ${maker.toBase58()}
88
+ Issuing Authority: ${issuingAuthority.toBase58()}.
89
+ Capacity: 2^${size}, buffer: ${buffer}, canopy: ${canopy}.
160
90
  Space: ${space} bytes
161
91
  Cost: ~${humanReadable(new anchor.BN(rent), 9)} Sol
162
92
  `);
163
- if (space > 10000000) {
164
- throw new Error(`Space ${space} more than 10mb for tree ${size}, ${buffer}, ${canopy}}`);
165
- }
166
- const create = await hemProgram.methods
167
- .initializeMakerV0({
168
- name: name,
169
- metadataUrl: 'todo',
170
- issuingAuthority: makerAuthority,
93
+ if (space > 10000000) {
94
+ throw new Error(`Space ${space} more than 10mb for tree ${size}, ${buffer}, ${canopy}}`);
95
+ }
96
+ const create = await hemProgram.methods
97
+ .initializeMakerV0({
98
+ name: name,
99
+ metadataUrl: argv.metadataUrl,
100
+ issuingAuthority,
101
+ // Temp, since we need to set maker tree
102
+ updateAuthority: provider.wallet.publicKey,
103
+ })
104
+ .accounts({
105
+ maker,
106
+ payer: daoPayer,
107
+ dao: daoK,
108
+ })
109
+ .instruction();
110
+ const setTree = await hemProgram.methods
111
+ .setMakerTreeV0({
112
+ maxDepth: size,
113
+ maxBufferSize: buffer,
114
+ })
115
+ .accounts({
116
+ maker,
117
+ merkleTree: merkle.publicKey,
118
+ payer: daoPayer,
119
+ updateAuthority: provider.wallet.publicKey,
120
+ })
121
+ .instruction();
122
+ if (!(await exists(conn, merkle.publicKey))) {
123
+ await sendInstructions(provider, [
124
+ SystemProgram.createAccount({
125
+ fromPubkey: provider.wallet.publicKey,
126
+ newAccountPubkey: merkle.publicKey,
127
+ lamports: await provider.connection.getMinimumBalanceForRentExemption(space),
128
+ space: space,
129
+ programId: SPL_ACCOUNT_COMPRESSION_PROGRAM_ID,
130
+ }),
131
+ ], [merkle]);
132
+ }
133
+ instructions.push(...[create, setTree].filter(truthy));
134
+ if (!updateAuthority.equals(provider.wallet.publicKey)) {
135
+ instructions.push(await hemProgram.methods
136
+ .updateMakerV0({
137
+ issuingAuthority,
171
138
  updateAuthority,
172
139
  })
173
- .accounts({
174
- maker,
175
- payer: daoPayer,
176
- dao: subdaoAcc.dao,
177
- })
178
- .instruction();
140
+ .accounts({ maker, updateAuthority: provider.wallet.publicKey })
141
+ .instruction());
142
+ }
143
+ }
144
+ else {
145
+ const makerAcc = await hemProgram.account.makerV0.fetch(maker);
146
+ instructions.push(await hemProgram.methods
147
+ .updateMakerV0({
148
+ issuingAuthority,
149
+ updateAuthority,
150
+ })
151
+ .accounts({ maker, updateAuthority: makerAcc.updateAuthority })
152
+ .instruction());
153
+ if (makerAcc.merkleTree.equals(SystemProgram.programId)) {
179
154
  const setTree = await hemProgram.methods
180
155
  .setMakerTreeV0({
181
156
  maxDepth: size,
@@ -199,84 +174,18 @@ export async function run(args = process.argv) {
199
174
  }),
200
175
  ], [merkle]);
201
176
  }
202
- innerCreateInstrs.push(...[create, setTree].filter(truthy));
203
- }
204
- else {
205
- const makerAcc = await hemProgram.account.makerV0.fetch(maker);
206
- innerCreateInstrs.push(await hemProgram.methods
207
- .updateMakerV0({
208
- issuingAuthority: makerAuthority,
209
- updateAuthority,
210
- })
211
- .accounts({ maker, updateAuthority: makerAcc.updateAuthority })
212
- .instruction());
213
- if (makerAcc.merkleTree.equals(SystemProgram.programId)) {
214
- const setTree = await hemProgram.methods
215
- .setMakerTreeV0({
216
- maxDepth: size,
217
- maxBufferSize: buffer,
218
- })
219
- .accounts({
220
- maker,
221
- merkleTree: merkle.publicKey,
222
- payer: daoPayer,
223
- updateAuthority,
224
- })
225
- .instruction();
226
- if (!(await exists(conn, merkle.publicKey))) {
227
- await sendInstructions(provider, [
228
- SystemProgram.createAccount({
229
- fromPubkey: provider.wallet.publicKey,
230
- newAccountPubkey: merkle.publicKey,
231
- lamports: await provider.connection.getMinimumBalanceForRentExemption(space),
232
- space: space,
233
- programId: SPL_ACCOUNT_COMPRESSION_PROGRAM_ID,
234
- }),
235
- ], [merkle]);
236
- }
237
- innerCreateInstrs.push(setTree);
238
- }
239
- }
240
- createInstructions.push(innerCreateInstrs);
241
- const innerApproveInstrs = [];
242
- let approve;
243
- if (staked &&
244
- !(await exists(conn, makerApprovalKey(entityConfigKey, maker)[0]))) {
245
- const authority = (await hemProgram.account.rewardableEntityConfigV0.fetch(entityConfigKey)).authority;
246
- approve = await hemProgram.methods
247
- .approveMakerV0()
248
- .accounts({
249
- maker,
250
- rewardableEntityConfig: entityConfigKey,
251
- authority,
252
- payer: subdaoPayer,
253
- })
254
- .instruction();
255
- innerApproveInstrs.push(approve);
256
- }
257
- approveInstructions.push(innerApproveInstrs);
258
- }
259
- console.log('Total sol needed: ', humanReadable(new anchor.BN(totalSol), 9));
260
- if (multisig) {
261
- // Approve instructions must execute after ALL create instructions
262
- const instrs = createInstructions.flat().filter(truthy);
263
- const approveInstrs = approveInstructions.flat().filter(truthy);
264
- for (const chunk of chunks([...instrs, ...approveInstrs], 3)) {
265
- await sendInstructionsOrSquads({
266
- provider,
267
- instructions: chunk,
268
- signers: [],
269
- executeTransaction: argv.executeTransaction,
270
- squads,
271
- multisig,
272
- authorityIndex: argv.authorityIndex,
273
- });
177
+ instructions.push(setTree);
274
178
  }
275
179
  }
276
- else {
277
- for (const instrs of [...createInstructions, ...approveInstructions]) {
278
- await sendInstructions(provider, instrs, []);
279
- }
180
+ console.log("Total sol needed: ", humanReadable(new anchor.BN(totalSol), 9));
181
+ const balance = await provider.connection.getBalance(provider.wallet.publicKey);
182
+ if (balance < totalSol) {
183
+ throw new Error(`Insufficient balance: ${humanReadable(new anchor.BN(Math.floor(balance)), 9)} < ${humanReadable(new anchor.BN(totalSol), 9)}`);
280
184
  }
185
+ await sendInstructions(provider, await withPriorityFees({
186
+ connection: provider.connection,
187
+ instructions,
188
+ feePayer: provider.wallet.publicKey
189
+ }));
281
190
  }
282
191
  //# sourceMappingURL=create-maker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-maker.js","sourceRoot":"","sources":["../../../src/create-maker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-maker.js","sourceRoot":"","sources":["../../../src/create-maker.ts"],"names":[],"mappings":"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"}