시작하기

대체 가능 토큰 전송하기

Last updated November 25, 2025

Solana 블록체인에서 지갑 간 대체 가능 토큰(SPL 토큰)을 전송합니다.

토큰 전송하기

다음 섹션에서 전체 코드 예제와 변경이 필요할 수 있는 파라미터를 확인할 수 있습니다. 토큰 전송 세부 사항에 대해서는 Token Metadata 프로그램 페이지를 참조하세요.

1// To install all the required packages use the following command
2// npm install @metaplex-foundation/mpl-toolbox @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults
3import {
4 createTokenIfMissing,
5 findAssociatedTokenPda,
6 transferTokens,
7} from '@metaplex-foundation/mpl-toolbox';
8import {
9 keypairIdentity,
10 publicKey,
11 transactionBuilder,
12} from '@metaplex-foundation/umi';
13import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
14import { readFileSync } from 'fs';
15
16// Initialize Umi with Devnet endpoint
17 const umi = createUmi('https://api.devnet.solana.com')
18
19 // Load your wallet/keypair
20 const wallet = '<your wallet file path>'
21 const secretKey = JSON.parse(readFileSync(wallet, 'utf-8'))
22 const keypair = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(secretKey))
23 umi.use(keypairIdentity(keypair))
24
25 // Your token mint address and destination wallet
26 const mintAddress = publicKey('<your token mint address>')
27 const destinationAddress = publicKey('<destination wallet address>')
28
29// Find the source token account (your account)
30 const sourceTokenAccount = findAssociatedTokenPda(umi, {
31 mint: mintAddress,
32 owner: umi.identity.publicKey,
33 })
34
35 // Find the destination token account
36 const destinationTokenAccount = findAssociatedTokenPda(umi, {
37 mint: mintAddress,
38 owner: destinationAddress,
39 })
40
41 // Create the destination token account if it doesn't exist
42 transactionBuilder()
43 .add(createTokenIfMissing(umi, {
44 mint: mintAddress,
45 owner: destinationAddress,
46 }))
47 // Transfer 100 tokens
48 .add(
49 transferTokens(umi, {
50 source: sourceTokenAccount,
51 destination: destinationTokenAccount,
52 amount: 100,
53 }))
54 .sendAndConfirm(umi)
55
56console.log('Transferred 100 tokens')
57 console.log('From:', sourceTokenAccount)
58 console.log('To:', destinationTokenAccount)

파라미터

전송에 맞게 다음 파라미터를 커스터마이징하세요:

파라미터설명
mintAddress토큰 민트 주소
destinationAddress수신자 지갑 주소
amount전송할 토큰 수

작동 방식

전송 과정은 네 단계를 포함합니다:

  1. 출발지 토큰 계정 찾기 - findAssociatedTokenPda를 사용하여 자신의 토큰 계정을 찾습니다
  2. 대상 토큰 계정 찾기 - 수신자의 토큰 계정을 찾습니다
  3. 필요시 대상 토큰 계정 생성 - createTokenIfMissing을 사용하여 수신자가 토큰 계정을 가지고 있는지 확인합니다
  4. 토큰 전송 - transferTokens로 전송을 실행합니다

토큰 계정

각 지갑은 보유한 토큰 유형마다 Associated Token Account(ATA)를 가지고 있습니다. findAssociatedTokenPda 함수는 지갑 주소와 토큰 민트를 기반으로 이 계정들의 주소를 도출합니다.

createTokenIfMissing 함수는 토큰 계정이 아직 존재하지 않으면 자동으로 생성하고, 이미 존재하면 아무것도 하지 않습니다. 이를 통해 전송이 항상 성공합니다.