---
title: "Transfers API: 과거 트랜잭션을 한 번의 요청으로 500배 빠르게 조회"
description: "Alchemy Transfers API로 과거 트랜잭션을 한 번의 요청으로 500배 빠르게 조회하는 방법을 알아보세요!"
---

### From "0x0" to "latest" real quick: 히스토리컬 ETH, ERC20, ERC721 전송 내역을 단일 API 호출로 조회하는 가장 빠르고 효율적인 방법

"Vitalik Buterin이 Elon Musk에게 얼마나 많은 ETH, SUSHI, USDT를 보냈는지" \(대충 감이 오실 겁니다\) 답해주는 메소드가 있다면 어떨까요? [Alchemy’s Transfers API](https://www.alchemy.com/docs/reference/transfers-api-quickstart)를 사용하면 이제 가능합니다 \(단, 지갑 주소를 알고 있다는 전제 하에\). 단 한 번의 API 호출로 _모든_ 주소와 토큰에 대한 히스토리컬 트랜잭션을 조회할 수 있으며, 각 사용자마다 전체 체인을 스캔할 필요가 없습니다.

최신 DEX든 가장 핫한 게임 dApp이든, 개발자라면 히스토리컬 트랜잭션에 접근하는 게 얼마나 어려운 일인지 잘 알고 계실 겁니다.

네이티브 Ethereum 클라이언트 메소드를 사용한다면, ETH 전송 내역을 얻기 위해 블록마다 쿼리를 날리고, 수천 개의 로그를 파싱해서 [ERC20](https://www.alchemy.com/overviews/erc20-solidity)과 ERC721 전송 내역을 필터링한 다음, 이 모든 정보를 별도의 데이터스토어에 저장하고 있을 겁니다. 말하는 것부터가 번거롭지만, 이런 인프라를 확장 가능하고 일관성 있게 구축하는 작업은 엄청난 엔지니어링 리소스를 소모하며 속도도 매우 느립니다. 컨트랙트 주소의 내부 트랜잭션에 접근하기 위해 트랜잭션 트레이스를 파싱하는 건 말도 꺼내지 맙시다 - DefiSaver의 Nikola Vuković의 말을 빌리자면 "내부 전송 내역을 얻는 건 거의 불가능에 가깝다"고 합니다.

이렇게 단순하고 보편적인 사용 사례에 이런 고통스러운 과정이 필요하다는 걸 알게 된 후, 저희는 이 모든 작업을 백그라운드에서 처리해주는 Transfers API를 만들기로 했습니다. 이제 단일 엔드포인트에 호출 한 번만 하면 ETH, ERC20, ERC721 전송 내역이 쏟아져 나오는 걸 볼 수 있습니다. 추가 보너스이자 최적화로, 이 API는 페이지네이션을 지원하므로 네트워크 지연을 줄이고, 타임아웃 없이 순차적으로 결과를 조회하며, 결과를 직접 이어붙일 필요도 없습니다.

<ImageBlock
  src="https://media.alchemy.com/1704734966-diagram-of-alchemy-transfer-api-infrastructure.png"
  alt="Alchemy Transfers API 인프라 다이어그램"
  width={2880}
  height={2048}
  caption="Transfers API 인프라"
/>

Transfers API Infrastructure

과거에 사용자들이 만든 모든 트랜잭션을 조회했다면, [Address Activity Notifications](https://www.alchemy.com/docs/reference/notify-api-quickstart)를 손쉽게 설정하여 ETH, ERC20, ERC721 전송 내역을 실시간으로 계속 받아볼 수 있습니다. Alchemy의 Transfers API와 Address Activity Notifications를 함께 사용하면 사용자 트랜잭션을 위한 백엔드를 구축하려는 모든 개발자에게 강력한 도구 세트가 됩니다.

<VideoCta
  title="Alchemy 대시보드 실제 사용 모습 보기"
  description="30분 가이드 투어: 대시보드의 모든 도구를 실시간으로 시연합니다."
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>


자, 이제 재미있는 부분 - 라이브 데모입니다. 저희 Transfers API가 실제로 작동하는 모습을 보시려면, Public Composer에 있는 이[ 예제 쿼리](https://www.alchemy.com/composer?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22alchemy_getAssetTransfers%22%2C%22paramValues%22%3A%5B%7B%22excludeZeroValue%22%3Atrue%2C%22fromBlock%22%3A%220x0%22%2C%22toBlock%22%3A%22latest%22%2C%22fromAddress%22%3A%220x7a250d5630B4cF539739dF2C5dAcb4c659F2488D%22%2C%22toAddress%22%3A%220x2D407dDb06311396fE14D4b49da5F0471447d45C%22%7D%5D%7D)를 확인해보세요. Uniswap V2: Router 2에서 Yearn: Deployer로 보낸 전송 내역을 조회하는 예제인데, 매우 간단해서 시작하는 데 도움이 될 겁니다!

저희 결과에 따르면, alchemy_getAssetTransfers 호출은 WETH로 전송된 모든 ETH, ERC20, ERC721 전송 내역을 조회하기 위해 1만 개 블록에 대해 eth_getBlockByNumber와 eth_getLogs를 동시에 사용하는 [geth](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one) 메소드보다 최대 500배 \(일부 사용 사례에서는 무려 1,000,000배\) 더 빠릅니다. 못 믿으시겠다고요? 의심 많은 분이시군요 - 마음에 듭니다. 다행히 이 [스크립트](https://github.com/alchemyplatform/alchemy-asset-transfers-benchmark)로 직접 성능을 테스트해볼 수 있습니다. 최적화 효과를 제대로 체감하고 싶다면, 더 많은 블록을 쿼리해보세요. 1만 개 블록에서 500배 속도 향상이 있었다면, 1,000만 개 블록에서는 얼마나 빨라질지 상상해보세요 🚀!

‍
Transfers API에 관심이 있으시다면 [Alchemy에 무료로 가입](https://dashboard.alchemy.com/signup?referral=affiliate:18a41366-5a36-4300-8b7b-31bfc8cda175)하고 [문서](https://www.alchemy.com/docs/reference/transfers-api-quickstart)를 확인해서 오늘 바로 시작해보세요.
‍
