@bit-gpt/h402
Version:
BitGPT's 402 open protocol for blockchain-native payments
30 lines • 1.28 kB
JavaScript
import { getProgramDerivedAddress } from "@solana/kit";
import { TOKEN_PROGRAM_ADDRESS, ASSOCIATED_TOKEN_PROGRAM_ADDRESS, } from "@solana-program/token";
import bs58 from "bs58";
/**
* Get the associated token address for a given mint and owner
* This function derives the ATA using the standard Solana approach
*/
export async function getAssociatedTokenAddress(mint, owner) {
try {
// Convert the address objects to strings
const mintStr = mint.toString();
const ownerStr = owner.toString();
const tokenProgramStr = TOKEN_PROGRAM_ADDRESS.toString();
// Decode from base58 to get the raw bytes
const mintBytes = bs58.decode(mintStr);
const ownerBytes = bs58.decode(ownerStr);
const tokenProgramBytes = bs58.decode(tokenProgramStr);
// Use the raw bytes as seeds for PDA derivation
const [associatedTokenAddress] = await getProgramDerivedAddress({
programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
seeds: [ownerBytes, tokenProgramBytes, mintBytes],
});
return associatedTokenAddress;
}
catch (error) {
console.error("Error deriving Associated Token Address:", error);
throw error;
}
}
//# sourceMappingURL=tokenAddress.js.map