Skip to main content
이 가이드에서는 Solana 주소가 보유하고 있는 것과 현재 활동을 보여주는 대시보드를 구축합니다. 지갑의 전체 토큰, NFT, SOL 포트폴리오를 단일 DAS 호출로 가져오고, Helius 전용 getTransactionsForAddress로 거래 내역을 로드하며, transactionSubscribe를 통해 새로운 활동을 실시간으로 스트리밍합니다. 먼저 임베디드 데모로 시도한 후, 전체 Next.js 앱으로 구축합니다.

실시간으로 시도해보기

API 키와 지갑 주소를 붙여넣어 포트폴리오, 내역, 실시간 피드가 함께 작동하는 것을 확인하세요. 이는 귀하의 앱이 렌더링할 동일한 데이터입니다.

Next.js 앱으로 구축하기

GitHub에서 전체 앱 가져오기

이 튜토리얼에서 완성된 Next.js 앱을 클론하여 npm install && npm run dev 준비하세요.
위젯은 브라우저에서 Helius에 직접 요청하여 API 키를 노출합니다. 실제 앱에서는 키를 서버에 보관합니다. 이 튜토리얼은 Next.js 앱 라우터를 사용하고 두 개의 라우트 핸들러로 키가 클라이언트에 도달하지 않도록 합니다. 하나는 RPC 호출을 프록시하고, 다른 하나는 WebSocket 피드를 서버-이벤트로 전달합니다.
전제 조건: Node.js 18+ 및 Helius API 키.
1

프로젝트 스캐폴딩

RPC 호출을 위해 Helius SDK를 사용하고, 실시간 WebSocket 피드를 위한 ws를 사용합니다.키를 .env.local에 추가하세요:
.env.local
2

경로 핸들러를 통한 RPC 호출 프록시

이 방법은 API 키를 서버 측에 보관합니다. 클라이언트는 메서드와 매개변수를 이곳에 게시하고, 핸들러는 키를 첨부하여 요청을 생성해주는 Helius SDK를 통해 실행합니다.
app/api/helius/route.ts
3

서버-이벤트를 통해 실시간 피드 릴레이

브라우저는 키 없이 Helius WebSocket을 열 수 없습니다. 대신 서버에서 WebSocket을 열고 클라이언트에 서명을 SSE로 스트리밍합니다.
app/api/stream/route.ts
4

대시보드 렌더링

페이지는 프록시를 통해 포트폴리오와 내역을 로드한 후 실시간 업데이트를 위한 SSE 피드에 구독합니다.
app/page.tsx
5

실행하기

http://localhost:3000을 열고 지갑 주소를 붙여넣은 후 Load를 클릭하세요. 포트폴리오와 내역이 즉시 표시되고 새로운 거래가 지갑에 도달할 때 실시간 피드가 채워집니다.

작동 원리

전체 포트폴리오를 위한 단일 DAS 호출

getAssetsByOwnershowFungible: trueshowNativeBalance: true는 단일 응답에서 대체 가능한 토큰, NFT(표준 압축) 및 기본 SOL 잔액을 반환하므로 별도의 getBalance 또는 getTokenAccountsByOwner 호출이 필요하지 않습니다. itemsinterface로 분할하여 토큰과 NFT를 그룹화하세요. 각 항목은 자체 메타데이터를 포함하고 있으므로 동일한 호출이 두 리스트에 전력을 공급합니다. 이름은 content.metadata.name, 로고나 아트워크는 content.links.image를 사용하세요. 대체 가능한 토큰은 또한 원시 balance, decimalssymbol 정보를 포함하는 token_info 객체를 포함하며, 인간이 읽을 수 있는 양을 얻으려면 balance10 ** decimals로 나누세요. 모든 토큰이 이름이나 로고를 제공하는 것은 아니므로 누락 시 적절히 대처하세요.

하나의 요청으로 전체 내역

getTransactionsForAddress는 지갑의 거래 내역을 반환하며, filters.tokenAccounts: "balanceChanged"와 함께 지갑의 관련 토큰 계정에 대한 전송 내역도 포함하여 일반 getSignaturesForAddress에서 놓칠 수 있는 활동까지도 제공합니다. transactionDetails: "full"를 사용하여 서명만이 아닌 전체 거래 데이터를 얻으세요.

폴링 없이 실시간 업데이트

transactionSubscribe는 거래가 지갑에 도달할 때마다 메시지를 푸시하므로, 폴링이 필요 없습니다. 필터에 tokenAccounts: "balanceChanged"를 추가하면 지갑의 토큰 계정도 매치되어 들어오는 SPL 전송이 피드에 나타납니다. 이는 히스토리 호출에서 카운트하는 동일한 활동입니다. 서버 측 라우트 핸들러를 통해 구독을 중계하면 API 키가 클라이언트에 노출되지 않습니다.

다음 단계

getAssetsByOwner

모든 표시 옵션, 페이지 매김 및 전체 자산 응답 구조.

getTransactionsForAddress

시간, 슬롯, 토큰, 방향 및 금액에 따른 고급 필터링.

transactionSubscribe

라이브 WebSocket 피드를 위한 필터 옵션과 페이로드 구조.

자신의 프로그램 배포

다음 트랙: Helius를 통해 devnet에 Solana 프로그램을 배포하세요.