Skip to main content
Whiterail SDK의 메인 클라이언트 클래스로 계정 관리, 인증, 결제 처리를 위한 포괄적인 기능을 제공합니다.

Example

Properties

Methods

Account Management

createAccount()

사용자를 위한 Turnkey sub-organization을 생성합니다. 이 메서드는 멱등성(idempotent)이므로 동일한 이메일로 여러 번 호출하면 기존 계정을 반환합니다.
Parameters
Returns
Promise<CreateAccountResult> 생성된 계정 정보를 반환합니다.
Note: 계정 생성 시 Solana 지갑 주소도 함께 생성되어 반환됩니다.
Example

getAccount()

이메일, subOrganizationId 또는 Solana 주소로 계정 정보를 조회합니다.
Parameters
Returns
Promise<AccountResult> 계정 정보를 반환합니다.
Examples
이메일로 조회
subOrganizationId로 조회
Solana 주소로 조회

Authentication

initAuth()

사용자의 이메일로 OTP 코드를 전송합니다. 계정이 이미 존재해야 합니다(createAccount로 생성).
Parameters
Returns
Promise<InitAuthResult> OTP 세션 정보를 반환합니다.
Example

completeAuth()

OTP 코드를 검증하고 인증을 완료합니다. 첫 인증 시 Solana 지갑을 생성합니다.
Parameters
Returns
Promise<CompleteAuthResult> 인증 세션과 지갑 정보를 반환합니다.
Note: 세션은 30분 동안 유효합니다. 페이지를 새로고침하면 메모리가 지워지고 재인증이 필요합니다.
Example

Session Management

isAuthenticated()

사용자가 유효한 세션으로 인증되었는지 확인합니다. 임시 개인키가 메모리에 존재하고 세션이 만료되지 않은 경우에만 true를 반환합니다.
Returns
boolean 사용자가 트랜잭션에 서명할 수 있으면 true, 그렇지 않으면 false. Note: 페이지를 새로고침하거나 30분이 지나면 false를 반환합니다. 이는 보안을 위한 설계입니다.
Example

getSession()

현재 인증 세션을 반환합니다. 보안: 개인키(ephemeralPrivateKey)는 보안을 위해 제외됩니다. 개인키는 메모리에만 존재하며 외부로 노출되지 않습니다.
Returns
Omit<AuthSession, 'ephemeralPrivateKey'> | null 현재 세션 (개인키 제외) 또는 null.
Example

loadSession()

localStorage에서 세션을 불러옵니다. 보안: 개인키 없이 부분 세션만 반환합니다 (XSS 보호).
Returns
PersistedSession | null 개인키가 제외된 세션 또는 null.
Note: 세션에 ephemeralPrivateKey가 포함되지 않습니다. 사용자는 이 세션으로 트랜잭션에 서명할 수 없으며, 새 임시 키페어를 얻기 위해 전체 인증 흐름을 완료해야 합니다.
Example

saveSession()

인증 세션을 localStorage에 저장합니다. 보안: ephemeralPrivateKey는 localStorage에 절대 저장되지 않습니다. 개인키는 메모리에만 존재하며, XSS 공격으로부터 보호됩니다. localStorage에는 PersistedSession (개인키 제외)만 저장됩니다.
Parameters
Returns
void Note: 이 메서드는 인증 성공 후 자동으로 호출됩니다.

clearSession()

현재 세션을 지우고 localStorage에서 제거합니다.
Returns
void
Example

Payment Processing

sendPayment()

한 번의 메서드 호출로 결제를 전송합니다 (intent 생성 → 서명 → 제출).
Parameters
Note: currency 또는 mintAddress 중 하나는 반드시 제공해야 합니다.
Returns
Promise<PaymentResult> 트랜잭션 서명과 탐색기 URL을 반환합니다.
Examples
통화 심볼 사용
직접 민트 주소 사용
사용자 정의 수수료 지불자
Note: feePayer를 사용할 경우, 수수료 지불자 지갑도 트랜잭션에 서명해야 합니다.

createPaymentIntent()

결제 intent를 생성하고 서명되지 않은 트랜잭션을 가져옵니다.
Parameters
Returns
Promise<PaymentIntentResult> 서명되지 않은 트랜잭션과 상세 정보를 반환합니다.
Example

signTransaction()

Turnkey API 프록시를 통한 클라이언트 측 서명으로 Solana 트랜잭션에 서명합니다. 작동 방식:
  1. 임시 개인키로 트랜잭션 본문에 서명 (DER 인코딩 ECDSA)
  2. 압축된 공개키 + 서명으로 X-Stamp 헤더 생성
  3. SDK 서버 프록시 엔드포인트 호출 (/transaction/sign)
  4. SDK 서버가 Turnkey API로 요청 전달 (CORS 회피, 보안 향상)
  5. 서명된 트랜잭션 반환
Parameters
Returns
Promise<SignResult> 서명된 트랜잭션을 반환합니다.
Note: 이 메서드는 sendPayment()에서 자동으로 호출됩니다. 대부분의 사용자는 직접 호출할 필요가 없습니다.
Example

submitTransaction()

서명된 트랜잭션을 네트워크에 제출합니다.
Parameters
Returns
Promise<SubmitResult> 트랜잭션 서명과 확인 상태를 반환합니다.
Example

Utilities

createEphemeralKeypair()

임시 세션 인증을 위한 P-256 ECDSA 키페어를 생성합니다.
Returns
Promise<EphemeralKeypair> 생성된 키페어를 반환합니다.
Note: SDK는 completeAuth()에서 이를 자동으로 처리합니다. 대부분의 사용자는 직접 호출할 필요가 없습니다.
Example

Complete Example

React 애플리케이션에서의 완전한 인증 및 결제 흐름: