SPB Git

spb/os-vault Public

Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.

Swift 96% Shell 3.4% Makefile 0.6%
1.4 KB · 41 lines swift
Raw Blame History
1import Foundation23public enum AssociatedTokenProgram: SolanaBasicProgram {4    // MARK: - Properties56    public static var id: PublicKey {7        "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"8    }910    // MARK: - Instruction builder1112    public static func createAssociatedTokenAccountInstruction(13        mint: PublicKey,14        owner: PublicKey,15        payer: PublicKey,16        tokenProgramId: PublicKey17    ) throws -> TransactionInstruction {18        try TransactionInstruction(19            keys: [20                .init(publicKey: payer, isSigner: true, isWritable: true),21                .init(22                    publicKey: PublicKey.associatedTokenAddress(23                        walletAddress: owner,24                        tokenMintAddress: mint,25                        tokenProgramId: tokenProgramId26                    ),27                    isSigner: false,28                    isWritable: true29                ),30                .init(publicKey: owner, isSigner: false, isWritable: false),31                .init(publicKey: mint, isSigner: false, isWritable: false),32                .init(publicKey: SystemProgram.id, isSigner: false, isWritable: false),33                .init(publicKey: tokenProgramId, isSigner: false, isWritable: false),34                .init(publicKey: .sysvarRent, isSigner: false, isWritable: false),35            ],36            programId: AssociatedTokenProgram.id,37            data: []38        )39    }40}41