@sign-global/tokentable 0.4.1-beta.6 → 0.4.1-beta.7
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/cjs/airdrop/contracts/solana/AirdropSignatureClient.d.ts +1 -1
- package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js +11 -6
- package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
- package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.d.ts +1 -1
- package/dist/cjs/utils/web3.d.ts +15 -1
- package/dist/cjs/utils/web3.js +43 -0
- package/dist/cjs/utils/web3.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.d.ts +1 -1
- package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js +12 -7
- package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.d.ts +1 -1
- package/dist/esm/utils/web3.d.ts +15 -1
- package/dist/esm/utils/web3.js +43 -2
- package/dist/esm/utils/web3.js.map +1 -1
- package/package.json +1 -1
- package/src/airdrop/contracts/solana/AirdropSignatureClient.ts +14 -8
- package/src/utils/web3.ts +62 -2
|
@@ -161,17 +161,21 @@ class AirdropSignatureClient extends SolanaContractClient_1.SolanaContractClient
|
|
|
161
161
|
const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();
|
|
162
162
|
const feePDA = await this.FeeCollector.getProjectFeePDA();
|
|
163
163
|
const airdropPDA = await this.getAirdropPDA();
|
|
164
|
-
const
|
|
164
|
+
const tokenVersion = await (0, utils_1.fetchTokenVersion)(config.token, {
|
|
165
|
+
clusterOrEndpoint: this.chainId
|
|
166
|
+
});
|
|
165
167
|
const authorityATA = await (0, utils_1.getOrCreateAssociatedTokenAccount)({
|
|
166
168
|
connection: this.connection,
|
|
167
169
|
payer: this.wallet.publicKey,
|
|
168
170
|
mint: new web3_js_1.PublicKey(config.token),
|
|
169
171
|
owner: new web3_js_1.PublicKey(this.wallet.publicKey),
|
|
170
172
|
signTransaction: this.wallet.signTransaction,
|
|
171
|
-
programId: spl_token_1.TOKEN_2022_PROGRAM_ID
|
|
173
|
+
programId: tokenVersion?.programId || spl_token_1.TOKEN_2022_PROGRAM_ID
|
|
172
174
|
});
|
|
173
|
-
|
|
175
|
+
let lastHash = '';
|
|
176
|
+
// solana max transaction size of 1232
|
|
174
177
|
for (const claim of data) {
|
|
178
|
+
const tx = new anchor.web3.Transaction();
|
|
175
179
|
tx.add(anchor.web3.Ed25519Program.createInstructionWithPublicKey({
|
|
176
180
|
publicKey: new web3_js_1.PublicKey(config.signer).toBytes(),
|
|
177
181
|
message: Uint8Array.from((0, utils_1.hexStrToU8Array)(claim.hash)),
|
|
@@ -188,19 +192,20 @@ class AirdropSignatureClient extends SolanaContractClient_1.SolanaContractClient
|
|
|
188
192
|
authority: this.wallet.publicKey,
|
|
189
193
|
airdrop: airdropPDA,
|
|
190
194
|
claim: claimPDA,
|
|
191
|
-
// vault: vaultPDA,
|
|
192
195
|
authorityAta: authorityATA.address,
|
|
193
196
|
tokenMint: new web3_js_1.PublicKey(config.token),
|
|
194
197
|
feeCollectorStorage: feeCollectorStoragePDA,
|
|
195
198
|
feeCollectorVault: null,
|
|
196
199
|
fee: feePDA,
|
|
197
200
|
authorityFeeAta: null,
|
|
198
|
-
tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
201
|
+
tokenProgram: tokenVersion?.programId || spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
199
202
|
feeTokenMint: null
|
|
200
203
|
})
|
|
201
204
|
.transaction());
|
|
205
|
+
const hash = await this.program.provider.sendAndConfirm?.(tx);
|
|
206
|
+
lastHash = hash;
|
|
202
207
|
}
|
|
203
|
-
return
|
|
208
|
+
return lastHash;
|
|
204
209
|
}
|
|
205
210
|
}
|
|
206
211
|
exports.AirdropSignatureClient = AirdropSignatureClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AirdropSignatureClient.js","sourceRoot":"","sources":["../../../../../src/airdrop/contracts/solana/AirdropSignatureClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iEAAsF;AACtF,sHAA2D;AAC3D,0DAA4C;AAE5C,iDAA0D;AAC1D,6DAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"AirdropSignatureClient.js","sourceRoot":"","sources":["../../../../../src/airdrop/contracts/solana/AirdropSignatureClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils/web3.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Commitment, Connection, PublicKey, Transaction } from '@solana/web3.js';
|
|
1
|
+
import { Cluster, Commitment, Connection, PublicKey, Transaction } from '@solana/web3.js';
|
|
2
2
|
export declare function flipAddressType(address: string): string;
|
|
3
3
|
export declare function hexStrToU8Array(hexStr: string): number[];
|
|
4
4
|
export declare function getOrCreateAssociatedTokenAccount({ connection, payer, mint, owner, signTransaction, allowOwnerOffCurve, commitment, programId, associatedTokenProgramId }: {
|
|
@@ -12,3 +12,17 @@ export declare function getOrCreateAssociatedTokenAccount({ connection, payer, m
|
|
|
12
12
|
associatedTokenProgramId?: PublicKey;
|
|
13
13
|
signTransaction: (signature: Transaction) => Promise<Transaction>;
|
|
14
14
|
}): Promise<import("@solana/spl-token").Account>;
|
|
15
|
+
export declare enum SplTokenVersion {
|
|
16
|
+
SplToken = "spl-token",
|
|
17
|
+
SplToken2022 = "spl-token-2022"
|
|
18
|
+
}
|
|
19
|
+
export type FetchTokenVersionOptions = {
|
|
20
|
+
clusterOrEndpoint?: Cluster | string;
|
|
21
|
+
};
|
|
22
|
+
export type FetchTokenMetadataOptions = FetchTokenVersionOptions & {
|
|
23
|
+
fetchOffchainMetadata?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare function fetchTokenVersion(tokenAddress: string, options: FetchTokenMetadataOptions): Promise<{
|
|
26
|
+
name: SplTokenVersion;
|
|
27
|
+
programId: PublicKey;
|
|
28
|
+
} | null>;
|
package/dist/cjs/utils/web3.js
CHANGED
|
@@ -3,9 +3,11 @@ 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.SplTokenVersion = void 0;
|
|
6
7
|
exports.flipAddressType = flipAddressType;
|
|
7
8
|
exports.hexStrToU8Array = hexStrToU8Array;
|
|
8
9
|
exports.getOrCreateAssociatedTokenAccount = getOrCreateAssociatedTokenAccount;
|
|
10
|
+
exports.fetchTokenVersion = fetchTokenVersion;
|
|
9
11
|
const tonweb_1 = __importDefault(require("tonweb"));
|
|
10
12
|
const spl_token_1 = require("@solana/spl-token");
|
|
11
13
|
const web3_js_1 = require("@solana/web3.js");
|
|
@@ -71,4 +73,45 @@ async function getOrCreateAssociatedTokenAccount({ connection, payer, mint, owne
|
|
|
71
73
|
throw new spl_token_1.TokenInvalidOwnerError();
|
|
72
74
|
return account;
|
|
73
75
|
}
|
|
76
|
+
var SplTokenVersion;
|
|
77
|
+
(function (SplTokenVersion) {
|
|
78
|
+
SplTokenVersion["SplToken"] = "spl-token";
|
|
79
|
+
SplTokenVersion["SplToken2022"] = "spl-token-2022";
|
|
80
|
+
})(SplTokenVersion || (exports.SplTokenVersion = SplTokenVersion = {}));
|
|
81
|
+
async function _getTokenProgramAndParsedAccountData(conn, tokenAddress) {
|
|
82
|
+
const tokenMintAddress = new web3_js_1.PublicKey(tokenAddress);
|
|
83
|
+
const parsedMintAccountInfo = await conn.getParsedAccountInfo(tokenMintAddress);
|
|
84
|
+
const parsedMintAccountData = parsedMintAccountInfo.value?.data;
|
|
85
|
+
if (parsedMintAccountData?.program === SplTokenVersion.SplToken) {
|
|
86
|
+
return {
|
|
87
|
+
name: SplTokenVersion.SplToken,
|
|
88
|
+
programId: spl_token_1.TOKEN_PROGRAM_ID,
|
|
89
|
+
parsedMintAccountData
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
else if (parsedMintAccountData?.program === SplTokenVersion.SplToken2022) {
|
|
93
|
+
return {
|
|
94
|
+
name: SplTokenVersion.SplToken2022,
|
|
95
|
+
programId: spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
96
|
+
parsedMintAccountData
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
function _getConnection(clusterOrEndpoint) {
|
|
102
|
+
let endpoint;
|
|
103
|
+
try {
|
|
104
|
+
endpoint = (0, web3_js_1.clusterApiUrl)(clusterOrEndpoint ?? 'mainnet-beta');
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
endpoint = clusterOrEndpoint;
|
|
108
|
+
}
|
|
109
|
+
const conn = new web3_js_1.Connection(endpoint);
|
|
110
|
+
return conn;
|
|
111
|
+
}
|
|
112
|
+
async function fetchTokenVersion(tokenAddress, options) {
|
|
113
|
+
const conn = _getConnection(options.clusterOrEndpoint);
|
|
114
|
+
const data = await _getTokenProgramAndParsedAccountData(conn, tokenAddress);
|
|
115
|
+
return data ? { name: data.name, programId: data.programId } : null;
|
|
116
|
+
}
|
|
74
117
|
//# sourceMappingURL=web3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3.js","sourceRoot":"","sources":["../../../src/utils/web3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web3.js","sourceRoot":"","sources":["../../../src/utils/web3.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import IDL from './fungible_token_distributor_solana.json';
|
|
|
4
4
|
import * as anchor from '@coral-xyz/anchor';
|
|
5
5
|
import { TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
6
6
|
import { FeeCollectorClient } from './FeeCollectorClient';
|
|
7
|
-
import { getOrCreateAssociatedTokenAccount, hexStrToU8Array } from '../../../utils';
|
|
7
|
+
import { fetchTokenVersion, getOrCreateAssociatedTokenAccount, hexStrToU8Array } from '../../../utils';
|
|
8
8
|
export class AirdropSignatureClient extends SolanaContractClientBase {
|
|
9
9
|
projectId;
|
|
10
10
|
constructor(options) {
|
|
@@ -132,17 +132,21 @@ export class AirdropSignatureClient extends SolanaContractClientBase {
|
|
|
132
132
|
const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();
|
|
133
133
|
const feePDA = await this.FeeCollector.getProjectFeePDA();
|
|
134
134
|
const airdropPDA = await this.getAirdropPDA();
|
|
135
|
-
const
|
|
135
|
+
const tokenVersion = await fetchTokenVersion(config.token, {
|
|
136
|
+
clusterOrEndpoint: this.chainId
|
|
137
|
+
});
|
|
136
138
|
const authorityATA = await getOrCreateAssociatedTokenAccount({
|
|
137
139
|
connection: this.connection,
|
|
138
140
|
payer: this.wallet.publicKey,
|
|
139
141
|
mint: new PublicKey(config.token),
|
|
140
142
|
owner: new PublicKey(this.wallet.publicKey),
|
|
141
143
|
signTransaction: this.wallet.signTransaction,
|
|
142
|
-
programId: TOKEN_2022_PROGRAM_ID
|
|
144
|
+
programId: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID
|
|
143
145
|
});
|
|
144
|
-
|
|
146
|
+
let lastHash = '';
|
|
147
|
+
// solana max transaction size of 1232
|
|
145
148
|
for (const claim of data) {
|
|
149
|
+
const tx = new anchor.web3.Transaction();
|
|
146
150
|
tx.add(anchor.web3.Ed25519Program.createInstructionWithPublicKey({
|
|
147
151
|
publicKey: new PublicKey(config.signer).toBytes(),
|
|
148
152
|
message: Uint8Array.from(hexStrToU8Array(claim.hash)),
|
|
@@ -159,19 +163,20 @@ export class AirdropSignatureClient extends SolanaContractClientBase {
|
|
|
159
163
|
authority: this.wallet.publicKey,
|
|
160
164
|
airdrop: airdropPDA,
|
|
161
165
|
claim: claimPDA,
|
|
162
|
-
// vault: vaultPDA,
|
|
163
166
|
authorityAta: authorityATA.address,
|
|
164
167
|
tokenMint: new PublicKey(config.token),
|
|
165
168
|
feeCollectorStorage: feeCollectorStoragePDA,
|
|
166
169
|
feeCollectorVault: null,
|
|
167
170
|
fee: feePDA,
|
|
168
171
|
authorityFeeAta: null,
|
|
169
|
-
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
172
|
+
tokenProgram: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID,
|
|
170
173
|
feeTokenMint: null
|
|
171
174
|
})
|
|
172
175
|
.transaction());
|
|
176
|
+
const hash = await this.program.provider.sendAndConfirm?.(tx);
|
|
177
|
+
lastHash = hash;
|
|
173
178
|
}
|
|
174
|
-
return
|
|
179
|
+
return lastHash;
|
|
175
180
|
}
|
|
176
181
|
}
|
|
177
182
|
//# sourceMappingURL=AirdropSignatureClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AirdropSignatureClient.js","sourceRoot":"","sources":["../../../../../src/airdrop/contracts/solana/AirdropSignatureClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAsB,MAAM,wBAAwB,CAAC;AACtF,OAAO,GAAG,MAAM,0CAA0C,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AirdropSignatureClient.js","sourceRoot":"","sources":["../../../../../src/airdrop/contracts/solana/AirdropSignatureClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAsB,MAAM,wBAAwB,CAAC;AACtF,OAAO,GAAG,MAAM,0CAA0C,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvG,MAAM,OAAO,sBAAuB,SAAQ,wBAAwD;IAClG,SAAS,CAAS;IAClB,YAAY,OAA2B;QACrC,KAAK,CAAC;YACJ,GAAG,OAAO;YACV,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEhG,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,kBAAkB,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC/C,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC/C,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEnH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,UAAU,CAAC,QAAQ,EAAE;YACrB,IAAI,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEvE,OAAO;YACL,OAAO,EAAE,OAAiB;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAY;YACxC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAiB;YAChC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAY;YACpD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAY;SACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,SAAS,EAAE,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,YAAsB;QAC5C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,YAAwB;QAC1D,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACtC,YAAY,EACZ;YACE,uBAAuB;YACvB,mCAAmC;aACpC,EACD,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,IAAI,SAAS,CAAC,OAAO,CAAC,CACtD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,SAAiB,EAAE,OAAe,EAAE,MAAc;QAC1F,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EACpC,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClE,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACpC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;SAC7C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CACT,IASG;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE;YACzD,iBAAiB,EAAE,IAAI,CAAC,OAAO;SAChC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,iCAAiC,CAAC;YAC3D,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAC5B,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,KAAK,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAC3C,eAAe,EAAG,IAAI,CAAC,MAAc,CAAC,eAAe;YACrD,SAAS,EAAE,YAAY,EAAE,SAAS,IAAI,qBAAqB;SAC5D,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,sCAAsC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,EAAE,CAAC,GAAG,CACJ,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAC;gBACxD,SAAS,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;gBACjD,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,SAAS,EAAE,IAAI,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aAC5D,CAAC,CACH,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEvD,MAAM,WAAW,GAAG;gBAClB,kBAAkB,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;gBACpD,eAAe,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;aAC5C,CAAC;YAEF,EAAE,CAAC,GAAG,CACJ,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;iBACvB,KAAK,CACJ,IAAI,CAAC,SAAS,EACd,IAAI,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC9C,EAAE,EACF,WAAW,EACX,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAC9C;iBACA,eAAe,CAAC;gBACf,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,QAAQ;gBACf,YAAY,EAAE,YAAY,CAAC,OAAO;gBAClC,SAAS,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;gBACtC,mBAAmB,EAAE,sBAAsB;gBAC3C,iBAAiB,EAAE,IAAI;gBACvB,GAAG,EAAE,MAAM;gBACX,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,YAAY,EAAE,SAAS,IAAI,qBAAqB;gBAC9D,YAAY,EAAE,IAAI;aACnB,CAAC;iBACD,WAAW,EAAE,CACjB,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAE9D,QAAQ,GAAG,IAAK,CAAC;QACnB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
package/dist/esm/utils/web3.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Commitment, Connection, PublicKey, Transaction } from '@solana/web3.js';
|
|
1
|
+
import { Cluster, Commitment, Connection, PublicKey, Transaction } from '@solana/web3.js';
|
|
2
2
|
export declare function flipAddressType(address: string): string;
|
|
3
3
|
export declare function hexStrToU8Array(hexStr: string): number[];
|
|
4
4
|
export declare function getOrCreateAssociatedTokenAccount({ connection, payer, mint, owner, signTransaction, allowOwnerOffCurve, commitment, programId, associatedTokenProgramId }: {
|
|
@@ -12,3 +12,17 @@ export declare function getOrCreateAssociatedTokenAccount({ connection, payer, m
|
|
|
12
12
|
associatedTokenProgramId?: PublicKey;
|
|
13
13
|
signTransaction: (signature: Transaction) => Promise<Transaction>;
|
|
14
14
|
}): Promise<import("@solana/spl-token").Account>;
|
|
15
|
+
export declare enum SplTokenVersion {
|
|
16
|
+
SplToken = "spl-token",
|
|
17
|
+
SplToken2022 = "spl-token-2022"
|
|
18
|
+
}
|
|
19
|
+
export type FetchTokenVersionOptions = {
|
|
20
|
+
clusterOrEndpoint?: Cluster | string;
|
|
21
|
+
};
|
|
22
|
+
export type FetchTokenMetadataOptions = FetchTokenVersionOptions & {
|
|
23
|
+
fetchOffchainMetadata?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare function fetchTokenVersion(tokenAddress: string, options: FetchTokenMetadataOptions): Promise<{
|
|
26
|
+
name: SplTokenVersion;
|
|
27
|
+
programId: PublicKey;
|
|
28
|
+
} | null>;
|
package/dist/esm/utils/web3.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import TonWeb from 'tonweb';
|
|
2
|
-
import { ASSOCIATED_TOKEN_PROGRAM_ID, getAssociatedTokenAddress, getAccount, createAssociatedTokenAccountInstruction, TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidMintError, TokenInvalidOwnerError, TOKEN_PROGRAM_ID } from '@solana/spl-token';
|
|
3
|
-
import { Transaction } from '@solana/web3.js';
|
|
2
|
+
import { ASSOCIATED_TOKEN_PROGRAM_ID, getAssociatedTokenAddress, getAccount, createAssociatedTokenAccountInstruction, TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidMintError, TokenInvalidOwnerError, TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
3
|
+
import { clusterApiUrl, Connection, PublicKey, Transaction } from '@solana/web3.js';
|
|
4
4
|
export function flipAddressType(address) {
|
|
5
5
|
if (!address)
|
|
6
6
|
return '';
|
|
@@ -63,4 +63,45 @@ export async function getOrCreateAssociatedTokenAccount({ connection, payer, min
|
|
|
63
63
|
throw new TokenInvalidOwnerError();
|
|
64
64
|
return account;
|
|
65
65
|
}
|
|
66
|
+
export var SplTokenVersion;
|
|
67
|
+
(function (SplTokenVersion) {
|
|
68
|
+
SplTokenVersion["SplToken"] = "spl-token";
|
|
69
|
+
SplTokenVersion["SplToken2022"] = "spl-token-2022";
|
|
70
|
+
})(SplTokenVersion || (SplTokenVersion = {}));
|
|
71
|
+
async function _getTokenProgramAndParsedAccountData(conn, tokenAddress) {
|
|
72
|
+
const tokenMintAddress = new PublicKey(tokenAddress);
|
|
73
|
+
const parsedMintAccountInfo = await conn.getParsedAccountInfo(tokenMintAddress);
|
|
74
|
+
const parsedMintAccountData = parsedMintAccountInfo.value?.data;
|
|
75
|
+
if (parsedMintAccountData?.program === SplTokenVersion.SplToken) {
|
|
76
|
+
return {
|
|
77
|
+
name: SplTokenVersion.SplToken,
|
|
78
|
+
programId: TOKEN_PROGRAM_ID,
|
|
79
|
+
parsedMintAccountData
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
else if (parsedMintAccountData?.program === SplTokenVersion.SplToken2022) {
|
|
83
|
+
return {
|
|
84
|
+
name: SplTokenVersion.SplToken2022,
|
|
85
|
+
programId: TOKEN_2022_PROGRAM_ID,
|
|
86
|
+
parsedMintAccountData
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
function _getConnection(clusterOrEndpoint) {
|
|
92
|
+
let endpoint;
|
|
93
|
+
try {
|
|
94
|
+
endpoint = clusterApiUrl(clusterOrEndpoint ?? 'mainnet-beta');
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
endpoint = clusterOrEndpoint;
|
|
98
|
+
}
|
|
99
|
+
const conn = new Connection(endpoint);
|
|
100
|
+
return conn;
|
|
101
|
+
}
|
|
102
|
+
export async function fetchTokenVersion(tokenAddress, options) {
|
|
103
|
+
const conn = _getConnection(options.clusterOrEndpoint);
|
|
104
|
+
const data = await _getTokenProgramAndParsedAccountData(conn, tokenAddress);
|
|
105
|
+
return data ? { name: data.name, programId: data.programId } : null;
|
|
106
|
+
}
|
|
66
107
|
//# sourceMappingURL=web3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3.js","sourceRoot":"","sources":["../../../src/utils/web3.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,uCAAuC,EACvC,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"web3.js","sourceRoot":"","sources":["../../../src/utils/web3.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ import * as anchor from '@coral-xyz/anchor';
|
|
|
5
5
|
import { FungibleTokenDistributorSolana } from './fungible_token_distributor_solana';
|
|
6
6
|
import { TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
7
7
|
import { FeeCollectorClient } from './FeeCollectorClient';
|
|
8
|
-
import { getOrCreateAssociatedTokenAccount, hexStrToU8Array } from '../../../utils';
|
|
8
|
+
import { fetchTokenVersion, getOrCreateAssociatedTokenAccount, hexStrToU8Array } from '../../../utils';
|
|
9
9
|
|
|
10
10
|
export class AirdropSignatureClient extends SolanaContractClientBase<FungibleTokenDistributorSolana> {
|
|
11
11
|
projectId: string;
|
|
@@ -171,7 +171,9 @@ export class AirdropSignatureClient extends SolanaContractClientBase<FungibleTok
|
|
|
171
171
|
const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();
|
|
172
172
|
const feePDA = await this.FeeCollector.getProjectFeePDA();
|
|
173
173
|
const airdropPDA = await this.getAirdropPDA();
|
|
174
|
-
const
|
|
174
|
+
const tokenVersion = await fetchTokenVersion(config.token, {
|
|
175
|
+
clusterOrEndpoint: this.chainId
|
|
176
|
+
});
|
|
175
177
|
|
|
176
178
|
const authorityATA = await getOrCreateAssociatedTokenAccount({
|
|
177
179
|
connection: this.connection,
|
|
@@ -179,12 +181,13 @@ export class AirdropSignatureClient extends SolanaContractClientBase<FungibleTok
|
|
|
179
181
|
mint: new PublicKey(config.token),
|
|
180
182
|
owner: new PublicKey(this.wallet.publicKey),
|
|
181
183
|
signTransaction: (this.wallet as any).signTransaction,
|
|
182
|
-
programId: TOKEN_2022_PROGRAM_ID
|
|
184
|
+
programId: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID
|
|
183
185
|
});
|
|
184
186
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
+
let lastHash = '';
|
|
188
|
+
// solana max transaction size of 1232
|
|
187
189
|
for (const claim of data) {
|
|
190
|
+
const tx = new anchor.web3.Transaction();
|
|
188
191
|
tx.add(
|
|
189
192
|
anchor.web3.Ed25519Program.createInstructionWithPublicKey({
|
|
190
193
|
publicKey: new PublicKey(config.signer).toBytes(),
|
|
@@ -213,20 +216,23 @@ export class AirdropSignatureClient extends SolanaContractClientBase<FungibleTok
|
|
|
213
216
|
authority: this.wallet.publicKey,
|
|
214
217
|
airdrop: airdropPDA,
|
|
215
218
|
claim: claimPDA,
|
|
216
|
-
// vault: vaultPDA,
|
|
217
219
|
authorityAta: authorityATA.address,
|
|
218
220
|
tokenMint: new PublicKey(config.token),
|
|
219
221
|
feeCollectorStorage: feeCollectorStoragePDA,
|
|
220
222
|
feeCollectorVault: null,
|
|
221
223
|
fee: feePDA,
|
|
222
224
|
authorityFeeAta: null,
|
|
223
|
-
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
225
|
+
tokenProgram: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID,
|
|
224
226
|
feeTokenMint: null
|
|
225
227
|
})
|
|
226
228
|
.transaction()
|
|
227
229
|
);
|
|
230
|
+
|
|
231
|
+
const hash = await this.program.provider.sendAndConfirm?.(tx);
|
|
232
|
+
|
|
233
|
+
lastHash = hash!;
|
|
228
234
|
}
|
|
229
235
|
|
|
230
|
-
return
|
|
236
|
+
return lastHash;
|
|
231
237
|
}
|
|
232
238
|
}
|
package/src/utils/web3.ts
CHANGED
|
@@ -8,9 +8,18 @@ import {
|
|
|
8
8
|
TokenInvalidAccountOwnerError,
|
|
9
9
|
TokenInvalidMintError,
|
|
10
10
|
TokenInvalidOwnerError,
|
|
11
|
-
TOKEN_PROGRAM_ID
|
|
11
|
+
TOKEN_PROGRAM_ID,
|
|
12
|
+
TOKEN_2022_PROGRAM_ID
|
|
12
13
|
} from '@solana/spl-token';
|
|
13
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
Cluster,
|
|
16
|
+
clusterApiUrl,
|
|
17
|
+
Commitment,
|
|
18
|
+
Connection,
|
|
19
|
+
ParsedAccountData,
|
|
20
|
+
PublicKey,
|
|
21
|
+
Transaction
|
|
22
|
+
} from '@solana/web3.js';
|
|
14
23
|
|
|
15
24
|
export function flipAddressType(address: string) {
|
|
16
25
|
if (!address) return '';
|
|
@@ -110,3 +119,54 @@ export async function getOrCreateAssociatedTokenAccount({
|
|
|
110
119
|
if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();
|
|
111
120
|
return account;
|
|
112
121
|
}
|
|
122
|
+
|
|
123
|
+
export enum SplTokenVersion {
|
|
124
|
+
SplToken = 'spl-token',
|
|
125
|
+
SplToken2022 = 'spl-token-2022'
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export type FetchTokenVersionOptions = {
|
|
129
|
+
clusterOrEndpoint?: Cluster | string;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export type FetchTokenMetadataOptions = FetchTokenVersionOptions & {
|
|
133
|
+
fetchOffchainMetadata?: boolean;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
async function _getTokenProgramAndParsedAccountData(conn: Connection, tokenAddress: string) {
|
|
137
|
+
const tokenMintAddress = new PublicKey(tokenAddress);
|
|
138
|
+
const parsedMintAccountInfo = await conn.getParsedAccountInfo(tokenMintAddress);
|
|
139
|
+
const parsedMintAccountData = parsedMintAccountInfo.value?.data as ParsedAccountData;
|
|
140
|
+
if (parsedMintAccountData?.program === SplTokenVersion.SplToken) {
|
|
141
|
+
return {
|
|
142
|
+
name: SplTokenVersion.SplToken,
|
|
143
|
+
programId: TOKEN_PROGRAM_ID,
|
|
144
|
+
parsedMintAccountData
|
|
145
|
+
};
|
|
146
|
+
} else if (parsedMintAccountData?.program === SplTokenVersion.SplToken2022) {
|
|
147
|
+
return {
|
|
148
|
+
name: SplTokenVersion.SplToken2022,
|
|
149
|
+
programId: TOKEN_2022_PROGRAM_ID,
|
|
150
|
+
parsedMintAccountData
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function _getConnection(clusterOrEndpoint: Cluster | string) {
|
|
157
|
+
let endpoint: string;
|
|
158
|
+
try {
|
|
159
|
+
endpoint = clusterApiUrl((clusterOrEndpoint as Cluster) ?? 'mainnet-beta');
|
|
160
|
+
} catch {
|
|
161
|
+
endpoint = clusterOrEndpoint as string;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const conn = new Connection(endpoint);
|
|
165
|
+
return conn;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export async function fetchTokenVersion(tokenAddress: string, options: FetchTokenMetadataOptions) {
|
|
169
|
+
const conn = _getConnection(options.clusterOrEndpoint!);
|
|
170
|
+
const data = await _getTokenProgramAndParsedAccountData(conn, tokenAddress);
|
|
171
|
+
return data ? { name: data.name, programId: data.programId } : null;
|
|
172
|
+
}
|