결제구독

구독 권한 생성

구독 권한은 프로그램이 한 사용자의 token account와 하나의 토큰 민트에 대한 SPL 토큰 위임자로 사용하는 PDA입니다. 해당 민트에 대한 고정 위임, 반복 위임 또는 구독 플랜 구독을 생성하기 전에 이를 생성하세요.

사용자의 token account는 이미 존재해야 합니다. 초기화 시 구독 권한 PDA가 생성되고 사용자의 token account에서 토큰 위임자로 승인됩니다.

권한 생성

import { address, createClient } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { signer } from '@solana/kit-plugin-signer';
import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
import {
fetchMaybeSubscriptionAuthority,
findSubscriptionAuthorityPda,
subscriptionsProgram,
} from '@solana/subscriptions';
const client = createClient()
.use(signer(userSigner))
.use(solanaLocalRpc({ rpcUrl: 'http://127.0.0.1:8899' }))
.use(subscriptionsProgram());
const tokenMint = address('TOKEN_MINT_ADDRESS_HERE');
const [userAta] = await findAssociatedTokenPda({
mint: tokenMint,
owner: userSigner.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
});
const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({
user: userSigner.address,
tokenMint,
});
const subscriptionAuthority = await fetchMaybeSubscriptionAuthority(
client.rpc,
subscriptionAuthorityPda,
);
if (!subscriptionAuthority.exists) {
await client.subscriptions.instructions
.initSubscriptionAuthority({
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
userAta,
})
.sendTransaction();
}

참고사항

  • 사용자가 초기화 트랜잭션에 서명합니다.
  • 사용자와 토큰 민트 쌍마다 하나의 구독 권한(Subscription Authority)을 생성합니다.
  • 동일한 민트에서 이후 위임 시 기존 구독 권한을 재사용합니다.
  • 스폰서가 계정에 자금을 지원할 수 있습니다: payer에 선택적 initSubscriptionAuthority를 전달하거나(createFixedDelegation, createRecurringDelegation, subscribe에서도 지원), .use(payer(sponsorSigner))로 구성합니다. 그러면 rent는 일치하는 receiver로 닫을 때 해당 스폰서에게 반환됩니다. 자기 자금 조달 기본값을 사용하려면 생략하세요.
  • 해당 구독 권한에 의존하는 모든 위임이 취소되거나 닫힌 후에만 구독 권한을 닫으세요.

Is this page helpful?

목차

페이지 편집