사용자의 associated token account에서 에스크로의 associated token account로 SPL 토큰을 전송하며, 입금한 사용자의 채널 잔액(또는 선택적 수신자의 잔액)을 증가시킵니다.
계정
| 계정 | 쓰기 가능 | 서명자 | 설명 |
|---|---|---|---|
payer | ✓ | ✓ | 트랜잭션 수수료 납부자 |
user | ✓ | 입금을 수행하는 토큰 소유자 | |
instance | 에스크로 인스턴스 PDA | ||
mint | SPL 토큰 민트 | ||
allowed_mint | 해당 인스턴스에서 민트가 허용되었는지 검증하는 PDA | ||
user_ata | ✓ | 사용자의 associated token account (출처) | |
instance_ata | ✓ | 에스크로의 associated token account (목적지) | |
system_program | System Program | ||
token_program | SPL Token Program | ||
associated_token_program | Associated Token Program | ||
event_authority | EmitEvent CPI를 위한 이벤트 권한 PDA | ||
private_channel_escrow_program | 에스크로 프로그램 (CPI를 위한 자기 참조) |
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
amount | u64 | 입금할 토큰 수량 (토큰의 최소 단위 기준) |
recipient | Option<Pubkey> | 선택적 온체인 수신자; None인 경우 입금한 사용자의 채널 잔액에 적립됩니다 |
반환값
트랜잭션을 빌드하고 전송하는 데 사용할 수 있는 TransactionBuilder를 반환합니다.
예제
import { getDepositInstructionAsync } from "../private-channel-escrow-program/clients/typescript/src/generated";// allowedMint and instanceAta are auto-derived from mint and instanceconst depositIx = await getDepositInstructionAsync({payer: payerSigner,user: userSigner,instance: instancePda,mint: mintAddress,userAta: userAtaAddress,amount: 1_000_000n,recipient: null});
중요 사항
- 프로그램 ID:
9tgHa1DcnaSSUtmMsst8ovKTe1Gfxzezn27KnH9xXYeU - Token-2022 민트의 경우, 기본값이 표준 SPL Token Program으로 설정되어 있으므로
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS를 명시적으로 전달해야 합니다 allowed_mintPDA가 존재해야 합니다 (AllowMint에 의해 생성됨); 목록에 없는 민트를 입금하면InvalidAllowedMint오류가 발생합니다recipient가None이면 입금한 사용자의 채널 잔액이 적립되고, 값이 제공된 경우에는 지정된 지갑의 잔액이 대신 적립됩니다payer와user모두 트랜잭션에 서명해야 합니다instance_ata는 이미 존재해야 합니다 (해당 민트에 대해AllowMint에 의해 생성됨)
Is this page helpful?