@bonfida/spl-name-service 0.1.19 → 0.1.23

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/dist/state.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare class NameRegistryState {
14
14
  class: Uint8Array;
15
15
  });
16
16
  static retrieve(connection: Connection, nameAccountKey: PublicKey): Promise<NameRegistryState>;
17
+ static _retrieveBatch(connection: Connection, nameAccountKeys: PublicKey[]): Promise<(NameRegistryState | undefined)[]>;
17
18
  static retrieveBatch(connection: Connection, nameAccountKeys: PublicKey[]): Promise<(NameRegistryState | undefined)[]>;
18
19
  }
19
20
  export declare class TokenData {
package/dist/state.js CHANGED
@@ -19,7 +19,7 @@ class NameRegistryState {
19
19
  res.data = (_a = nameAccount.data) === null || _a === void 0 ? void 0 : _a.slice(this.HEADER_LEN);
20
20
  return res;
21
21
  }
22
- static async retrieveBatch(connection, nameAccountKeys) {
22
+ static async _retrieveBatch(connection, nameAccountKeys) {
23
23
  const nameAccounts = await connection.getMultipleAccountsInfo(nameAccountKeys);
24
24
  const fn = (data) => {
25
25
  if (!data)
@@ -28,7 +28,14 @@ class NameRegistryState {
28
28
  res.data = data === null || data === void 0 ? void 0 : data.slice(this.HEADER_LEN);
29
29
  return res;
30
30
  };
31
- return nameAccounts.map((e) => fn(e === null || e === void 0 ? void 0 : e.data)).filter((e) => !!e);
31
+ return nameAccounts.map((e) => fn(e === null || e === void 0 ? void 0 : e.data));
32
+ }
33
+ static async retrieveBatch(connection, nameAccountKeys) {
34
+ let result = [];
35
+ while (nameAccountKeys.length > 0) {
36
+ result.push(...(await this._retrieveBatch(connection, nameAccountKeys.splice(0, 100))));
37
+ }
38
+ return result;
32
39
  }
33
40
  }
34
41
  exports.NameRegistryState = NameRegistryState;
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/dist/test.d.ts CHANGED
@@ -1 +0,0 @@
1
- export {};
package/dist/test.js CHANGED
@@ -1,5 +1,2 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const test = async () => { };
4
- test();
5
2
  //# sourceMappingURL=test.js.map
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAIA,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;AAE5B,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
package/dist/utils.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  import { AccountInfo, Connection, Keypair, PublicKey, TransactionInstruction } from "@solana/web3.js";
3
3
  import BN from "bn.js";
4
4
  import { NameRegistryState } from "./state";
5
+ export declare const REVERSE_LOOKUP_CLASS: PublicKey;
5
6
  export declare class Numberu32 extends BN {
6
7
  /**
7
8
  * Convert to Buffer representation
@@ -30,3 +31,4 @@ export declare function getFilteredProgramAccounts(connection: Connection, progr
30
31
  publicKey: PublicKey;
31
32
  accountInfo: AccountInfo<Buffer>;
32
33
  }[]>;
34
+ export declare function performReverseLookup(connection: Connection, nameAccount: PublicKey): Promise<string>;
package/dist/utils.js CHANGED
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getFilteredProgramAccounts = exports.getNameOwner = exports.getNameAccountKey = exports.getHashedName = exports.signAndSendTransactionInstructions = exports.Numberu64 = exports.Numberu32 = void 0;
6
+ exports.performReverseLookup = exports.getFilteredProgramAccounts = exports.getNameOwner = exports.getNameAccountKey = exports.getHashedName = exports.signAndSendTransactionInstructions = exports.Numberu64 = exports.Numberu32 = exports.REVERSE_LOOKUP_CLASS = void 0;
7
7
  const assert_1 = __importDefault(require("assert"));
8
8
  const create_hash_1 = __importDefault(require("create-hash"));
9
9
  const web3_js_1 = require("@solana/web3.js");
10
10
  const bn_js_1 = __importDefault(require("bn.js"));
11
11
  const bindings_1 = require("./bindings");
12
12
  const state_1 = require("./state");
13
+ exports.REVERSE_LOOKUP_CLASS = new web3_js_1.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z");
13
14
  class Numberu32 extends bn_js_1.default {
14
15
  /**
15
16
  * Convert to Buffer representation
@@ -124,4 +125,15 @@ async function getFilteredProgramAccounts(connection, programId, filters) {
124
125
  }));
125
126
  }
126
127
  exports.getFilteredProgramAccounts = getFilteredProgramAccounts;
128
+ async function performReverseLookup(connection, nameAccount) {
129
+ let hashedReverseLookup = await getHashedName(nameAccount.toBase58());
130
+ let reverseLookupAccount = await getNameAccountKey(hashedReverseLookup, exports.REVERSE_LOOKUP_CLASS);
131
+ let name = await state_1.NameRegistryState.retrieve(connection, reverseLookupAccount);
132
+ if (!name.data) {
133
+ throw "Could not retrieve name data";
134
+ }
135
+ let nameLength = new bn_js_1.default(name.data.slice(0, 4), "le").toNumber();
136
+ return name.data.slice(4, 4 + nameLength).toString();
137
+ }
138
+ exports.performReverseLookup = performReverseLookup;
127
139
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bonfida/spl-name-service",
3
- "version": "0.1.19",
3
+ "version": "0.1.23",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
package/src/state.ts CHANGED
@@ -54,7 +54,7 @@ export class NameRegistryState {
54
54
  return res;
55
55
  }
56
56
 
57
- public static async retrieveBatch(
57
+ static async _retrieveBatch(
58
58
  connection: Connection,
59
59
  nameAccountKeys: PublicKey[]
60
60
  ) {
@@ -71,7 +71,23 @@ export class NameRegistryState {
71
71
  res.data = data?.slice(this.HEADER_LEN);
72
72
  return res;
73
73
  };
74
- return nameAccounts.map((e) => fn(e?.data)).filter((e) => !!e);
74
+ return nameAccounts.map((e) => fn(e?.data));
75
+ }
76
+
77
+ public static async retrieveBatch(
78
+ connection: Connection,
79
+ nameAccountKeys: PublicKey[]
80
+ ) {
81
+ let result: (NameRegistryState | undefined)[] = [];
82
+ while (nameAccountKeys.length > 0) {
83
+ result.push(
84
+ ...(await this._retrieveBatch(
85
+ connection,
86
+ nameAccountKeys.splice(0, 100)
87
+ ))
88
+ );
89
+ }
90
+ return result;
75
91
  }
76
92
  }
77
93
 
package/src/test.ts CHANGED
@@ -1,7 +0,0 @@
1
- import { getTwitterRegistryKey, getTwitterRegistry } from "./twitter_bindings";
2
- import { Connection, PublicKey } from "@solana/web3.js";
3
- import { NameRegistryState } from "./state";
4
-
5
- const test = async () => {};
6
-
7
- test();
package/src/utils.ts CHANGED
@@ -14,6 +14,10 @@ import BN from "bn.js";
14
14
  import { HASH_PREFIX, NAME_PROGRAM_ID } from "./bindings";
15
15
  import { NameRegistryState } from "./state";
16
16
 
17
+ export const REVERSE_LOOKUP_CLASS = new PublicKey(
18
+ "33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"
19
+ );
20
+
17
21
  export class Numberu32 extends BN {
18
22
  /**
19
23
  * Convert to Buffer representation
@@ -155,3 +159,21 @@ export async function getFilteredProgramAccounts(
155
159
  })
156
160
  );
157
161
  }
162
+
163
+ export async function performReverseLookup(
164
+ connection: Connection,
165
+ nameAccount: PublicKey
166
+ ): Promise<string> {
167
+ let hashedReverseLookup = await getHashedName(nameAccount.toBase58());
168
+ let reverseLookupAccount = await getNameAccountKey(
169
+ hashedReverseLookup,
170
+ REVERSE_LOOKUP_CLASS
171
+ );
172
+
173
+ let name = await NameRegistryState.retrieve(connection, reverseLookupAccount);
174
+ if (!name.data) {
175
+ throw "Could not retrieve name data";
176
+ }
177
+ let nameLength = new BN(name.data.slice(0, 4), "le").toNumber();
178
+ return name.data.slice(4, 4 + nameLength).toString();
179
+ }
package/dist/twitter.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /// <reference types="node" />
2
- import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
3
- import { NameRegistryState } from './state';
4
- export declare const TWITTER_VERIFICATION_AUTHORITY: PublicKey;
5
- export declare const TWITTER_ROOT_PARENT_REGISTRY_KEY: PublicKey;
6
- export declare function createVerifiedTwitterRegistry(connection: Connection, twitterHandle: string, verifiedPubkey: PublicKey, space: number, // The space that the user will have to write data into the verified registry
7
- payerKey: PublicKey): Promise<TransactionInstruction[]>;
8
- export declare function changeTwitterRegistryData(twitterHandle: string, verifiedPubkey: PublicKey, offset: number, // The offset at which to write the input data into the NameRegistryData
9
- input_data: Buffer): Promise<TransactionInstruction[]>;
10
- export declare function changeVerifiedPubkey(connection: Connection, twitterHandle: string, currentVerifiedPubkey: PublicKey, newVerifiedPubkey: PublicKey, payerKey: PublicKey): Promise<TransactionInstruction[]>;
11
- export declare function deleteTwitterRegistry(twitterHandle: string, verifiedPubkey: PublicKey): Promise<TransactionInstruction[]>;
12
- export declare function getTwitterHandle(connection: Connection, verifiedPubkey: PublicKey): Promise<string>;
13
- export declare function getTwitterRegistryKey(twitter_handle: string): Promise<PublicKey>;
14
- export declare function getTwitterRegistry(connection: Connection, twitter_handle: string): Promise<NameRegistryState>;
15
- export declare function getTwitterRegistryData(connection: Connection, verifiedPubkey: PublicKey): Promise<Buffer>;
package/dist/twitter.js DELETED
@@ -1,165 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTwitterRegistryData = exports.getTwitterRegistry = exports.getTwitterRegistryKey = exports.getTwitterHandle = exports.deleteTwitterRegistry = exports.changeVerifiedPubkey = exports.changeTwitterRegistryData = exports.createVerifiedTwitterRegistry = exports.TWITTER_ROOT_PARENT_REGISTRY_KEY = exports.TWITTER_VERIFICATION_AUTHORITY = void 0;
4
- const web3_js_1 = require("@solana/web3.js");
5
- const bindings_1 = require("./bindings");
6
- const instructions_1 = require("./instructions");
7
- const state_1 = require("./state");
8
- const utils_1 = require("./utils");
9
- exports.TWITTER_VERIFICATION_AUTHORITY = new web3_js_1.PublicKey('867BLob5b52i81SNaV9Awm5ejkZV6VGSv9SxLcwukDDJ');
10
- // The address of the name registry that will be a parent to all twitter handle registries,
11
- // it should be owned by the TWITTER_VERIFICATION_AUTHORITY and it's name is irrelevant
12
- exports.TWITTER_ROOT_PARENT_REGISTRY_KEY = new web3_js_1.PublicKey('AFrGkxNmVLBn3mKhvfJJABvm8RJkTtRhHDoaF97pQZaA');
13
- // Signed by the authority and the payer
14
- async function createVerifiedTwitterRegistry(connection, twitterHandle, verifiedPubkey, space, // The space that the user will have to write data into the verified registry
15
- payerKey) {
16
- const hashedTwitterHandle = await utils_1.getHashedName(twitterHandle);
17
- const twitterHandleRegistryKey = await utils_1.getNameAccountKey(hashedTwitterHandle, undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY);
18
- const hashedVerifiedPubkey = await utils_1.getHashedName(verifiedPubkey.toString().concat(twitterHandle));
19
- const reverseRegistryKey = await utils_1.getNameAccountKey(hashedVerifiedPubkey, exports.TWITTER_VERIFICATION_AUTHORITY, undefined);
20
- space += 96; // Accounting for the Registry State Header
21
- const instructions = [
22
- // Create user facing registry
23
- instructions_1.createInstruction(bindings_1.NAME_PROGRAM_ID, web3_js_1.SystemProgram.programId, twitterHandleRegistryKey, verifiedPubkey, payerKey, hashedTwitterHandle,
24
- // @ts-ignore
25
- new utils_1.Numberu64(await connection.getMinimumBalanceForRentExemption(space)),
26
- // @ts-ignore
27
- new utils_1.Numberu32(space), undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY, exports.TWITTER_VERIFICATION_AUTHORITY // Twitter authority acts as owner of the parent for all user-facing registries
28
- ),
29
- // Create reverse lookup registry
30
- instructions_1.createInstruction(bindings_1.NAME_PROGRAM_ID, web3_js_1.SystemProgram.programId, reverseRegistryKey, verifiedPubkey, payerKey, hashedVerifiedPubkey, new utils_1.Numberu64(
31
- // @ts-ignore
32
- await connection.getMinimumBalanceForRentExemption(96 + 18)),
33
- // @ts-ignore
34
- new utils_1.Numberu32(96 + 18), // maximum length of a twitter handle
35
- exports.TWITTER_VERIFICATION_AUTHORITY, // Twitter authority acts as class for all reverse-lookup registries
36
- undefined, undefined),
37
- // Write the twitter handle into the reverse lookup registry
38
- instructions_1.updateInstruction(bindings_1.NAME_PROGRAM_ID, reverseRegistryKey,
39
- // @ts-ignore
40
- new utils_1.Numberu32(0), Buffer.from(twitterHandle), exports.TWITTER_VERIFICATION_AUTHORITY),
41
- ];
42
- return instructions;
43
- }
44
- exports.createVerifiedTwitterRegistry = createVerifiedTwitterRegistry;
45
- // Overwrite the data that is written in the user facing registry
46
- // Signed by the verified pubkey
47
- async function changeTwitterRegistryData(twitterHandle, verifiedPubkey, offset, // The offset at which to write the input data into the NameRegistryData
48
- input_data) {
49
- const hashedTwitterHandle = await utils_1.getHashedName(twitterHandle);
50
- const twitterHandleRegistryKey = await utils_1.getNameAccountKey(hashedTwitterHandle, undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY);
51
- const instructions = [
52
- instructions_1.updateInstruction(bindings_1.NAME_PROGRAM_ID, twitterHandleRegistryKey,
53
- // @ts-ignore
54
- new utils_1.Numberu32(offset), input_data, verifiedPubkey),
55
- ];
56
- return instructions;
57
- }
58
- exports.changeTwitterRegistryData = changeTwitterRegistryData;
59
- // Change the verified pubkey for a given twitter handle
60
- // Signed by the Authority, the verified pubkey and the payer
61
- async function changeVerifiedPubkey(connection, twitterHandle, currentVerifiedPubkey, newVerifiedPubkey, payerKey) {
62
- const hashedTwitterHandle = await utils_1.getHashedName(twitterHandle);
63
- const twitterHandleRegistryKey = await utils_1.getNameAccountKey(hashedTwitterHandle, undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY);
64
- const currentHashedVerifiedPubkey = await utils_1.getHashedName(currentVerifiedPubkey.toString().concat(twitterHandle));
65
- const currentReverseRegistryKey = await utils_1.getNameAccountKey(currentHashedVerifiedPubkey, exports.TWITTER_VERIFICATION_AUTHORITY, undefined);
66
- const newHashedVerifiedPubkey = await utils_1.getHashedName(newVerifiedPubkey.toString().concat(twitterHandle));
67
- const newReverseRegistryKey = await utils_1.getNameAccountKey(newHashedVerifiedPubkey, exports.TWITTER_VERIFICATION_AUTHORITY, undefined);
68
- const instructions = [
69
- // Transfer the user-facing registry ownership
70
- instructions_1.transferInstruction(bindings_1.NAME_PROGRAM_ID, twitterHandleRegistryKey, newVerifiedPubkey, currentVerifiedPubkey, undefined),
71
- // Delete the current reverse registry
72
- instructions_1.deleteInstruction(bindings_1.NAME_PROGRAM_ID, currentReverseRegistryKey, payerKey, currentVerifiedPubkey),
73
- // Create the new reverse lookup registry
74
- instructions_1.createInstruction(bindings_1.NAME_PROGRAM_ID, web3_js_1.SystemProgram.programId, newReverseRegistryKey, exports.TWITTER_VERIFICATION_AUTHORITY, payerKey, newHashedVerifiedPubkey,
75
- // @ts-ignore
76
- new utils_1.Numberu64(await connection.getMinimumBalanceForRentExemption(18)),
77
- // @ts-ignore
78
- new utils_1.Numberu32(18), // maximum length of a twitter handle
79
- exports.TWITTER_VERIFICATION_AUTHORITY, // Twitter authority acts as class for all reverse-lookup registries
80
- undefined, undefined),
81
- // Write the twitter handle into the new reverse lookup registry
82
- instructions_1.updateInstruction(bindings_1.NAME_PROGRAM_ID, newReverseRegistryKey,
83
- // @ts-ignore
84
- new utils_1.Numberu32(0), Buffer.from(twitterHandle), exports.TWITTER_VERIFICATION_AUTHORITY),
85
- ];
86
- return instructions;
87
- }
88
- exports.changeVerifiedPubkey = changeVerifiedPubkey;
89
- // Delete the verified registry for a given twitter handle
90
- // Signed by the verified pubkey
91
- async function deleteTwitterRegistry(twitterHandle, verifiedPubkey) {
92
- const hashedTwitterHandle = await utils_1.getHashedName(twitterHandle);
93
- const twitterHandleRegistryKey = await utils_1.getNameAccountKey(hashedTwitterHandle, undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY);
94
- const hashedVerifiedPubkey = await utils_1.getHashedName(verifiedPubkey.toString().concat(twitterHandle));
95
- const reverseRegistryKey = await utils_1.getNameAccountKey(hashedVerifiedPubkey, exports.TWITTER_VERIFICATION_AUTHORITY, undefined);
96
- const instructions = [
97
- // Delete the user facing registry
98
- instructions_1.deleteInstruction(bindings_1.NAME_PROGRAM_ID, twitterHandleRegistryKey, verifiedPubkey, verifiedPubkey),
99
- // Delete the reverse registry
100
- instructions_1.deleteInstruction(bindings_1.NAME_PROGRAM_ID, reverseRegistryKey, verifiedPubkey, verifiedPubkey),
101
- ];
102
- return instructions;
103
- }
104
- exports.deleteTwitterRegistry = deleteTwitterRegistry;
105
- async function getTwitterHandle(connection, verifiedPubkey) {
106
- const filters = [
107
- {
108
- memcmp: {
109
- offset: 32,
110
- bytes: verifiedPubkey.toBase58(),
111
- },
112
- },
113
- {
114
- memcmp: {
115
- offset: bindings_1.VERIFICATION_AUTHORITY_OFFSET,
116
- bytes: exports.TWITTER_VERIFICATION_AUTHORITY.toBase58(),
117
- },
118
- },
119
- ];
120
- const filteredAccounts = await utils_1.getFilteredProgramAccounts(connection, bindings_1.NAME_PROGRAM_ID, filters);
121
- for (const f of filteredAccounts) {
122
- if (f.accountInfo.data.length == 114) {
123
- return f.accountInfo.data.slice(96, 114).toString();
124
- }
125
- }
126
- throw 'Could not find the twitter handle';
127
- }
128
- exports.getTwitterHandle = getTwitterHandle;
129
- // Returns the key of the user-facing registry
130
- async function getTwitterRegistryKey(twitter_handle) {
131
- const hashedTwitterHandle = await utils_1.getHashedName(twitter_handle);
132
- return await utils_1.getNameAccountKey(hashedTwitterHandle, undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY);
133
- }
134
- exports.getTwitterRegistryKey = getTwitterRegistryKey;
135
- async function getTwitterRegistry(connection, twitter_handle) {
136
- const hashedTwitterHandle = await utils_1.getHashedName(twitter_handle);
137
- const twitterHandleRegistryKey = await utils_1.getNameAccountKey(hashedTwitterHandle, undefined, exports.TWITTER_ROOT_PARENT_REGISTRY_KEY);
138
- const registry = state_1.NameRegistryState.retrieve(connection, twitterHandleRegistryKey);
139
- return registry;
140
- }
141
- exports.getTwitterRegistry = getTwitterRegistry;
142
- async function getTwitterRegistryData(connection, verifiedPubkey) {
143
- // Does not give you the name, but is faster than getTwitterHandle + getTwitterRegistry to get the data
144
- const filters = [
145
- {
146
- memcmp: {
147
- offset: 0,
148
- bytes: exports.TWITTER_ROOT_PARENT_REGISTRY_KEY.toBytes(),
149
- },
150
- },
151
- {
152
- memcmp: {
153
- offset: 32,
154
- bytes: verifiedPubkey.toBytes(),
155
- },
156
- },
157
- ];
158
- const filteredAccounts = await utils_1.getFilteredProgramAccounts(connection, bindings_1.NAME_PROGRAM_ID, filters);
159
- if (filteredAccounts.length > 1) {
160
- throw 'Found more than one twitter handle';
161
- }
162
- return filteredAccounts[0].accountInfo.data;
163
- }
164
- exports.getTwitterRegistryData = getTwitterRegistryData;
165
- //# sourceMappingURL=twitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"twitter.js","sourceRoot":"","sources":["../src/twitter.ts"],"names":[],"mappings":"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"}