@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 +1 -0
- package/dist/state.js +9 -2
- package/dist/state.js.map +1 -1
- package/dist/test.d.ts +0 -1
- package/dist/test.js +0 -3
- package/dist/test.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +13 -1
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/state.ts +18 -2
- package/src/test.ts +0 -7
- package/src/utils.ts +22 -0
- package/dist/twitter.d.ts +0 -15
- package/dist/twitter.js +0 -165
- package/dist/twitter.js.map +0 -1
- package/src/tokens.json +0 -13319
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
|
|
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))
|
|
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":";;;AAAA,6CAAwD;AACxD,iCAAgE;AAEhE,MAAa,iBAAiB;IAoB5B,YAAY,GAIX;QACC,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAC1B,UAAsB,EACtB,cAAyB;;QAEzB,IAAI,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,CAC/C,cAAc,EACd,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QAED,IAAI,GAAG,GAAsB,4BAAoB,CAC/C,IAAI,CAAC,MAAM,EACX,iBAAiB,EACjB,WAAW,CAAC,IAAI,CACjB,CAAC;QAEF,GAAG,CAAC,IAAI,GAAG,MAAA,WAAW,CAAC,IAAI,0CAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpD,OAAO,GAAG,CAAC;IACb,CAAC;
|
|
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
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"
|
|
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":";;;;;;AAAA,oDAA4B;AAC5B,8DAAqC;AAErC,6CAOyB;AACzB,kDAAuB;AAEvB,yCAA0D;AAC1D,mCAA4C;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/state.ts
CHANGED
|
@@ -54,7 +54,7 @@ export class NameRegistryState {
|
|
|
54
54
|
return res;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
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))
|
|
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
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
|
package/dist/twitter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"twitter.js","sourceRoot":"","sources":["../src/twitter.ts"],"names":[],"mappings":"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"}
|