---
# System prepended metadata

title: Token swap transaction 분석

---

---
title: Token swap transaction 분석
tags: 
description: 
---

# Swap transaction 분석
* 메타마스크에 있는 스왑기능을 이용해 USDC를 ETH로 스왑한 transaction을 분석해보자.
* etherscan에 transaction hash를 검색해 detail을 어떻게 보는지 예제로 이해해보기.

## Overview
![](https://i.imgur.com/CZDh0V8.png)
* Highlighted event를 표시해 준다.
주요 event는 Uniswap V3를 통해 300USDC를 0.144ETH로 swap 한것.

## Transaction 분석
![](https://i.imgur.com/ON1rSsy.png)
* From 에는 내 지갑 주소가 적혀있고 해당 주소에서 Metamask: Swap Router라는 이름의 contract를 호출해 transaction을 내보냈다. 세부내용까지 확인할 수 있다.
1. 0.144WETH가 0xExchange Proxy에 transfer 됨.
1-1. 0xExchange Proxy가 무엇인지 contract를 타고가 보니 아래와 같이 contract에 링크되어있는 사이트를 발견! ( [0x.org](https://www.0x.org/) )
![](https://i.imgur.com/0Kqv8Pt.png)
해당 사이트를 들어가 보니 아래와 같은 문구를 통해서 0x는 Defi 관련 API를 제공해주는 solution이라는 걸 알수 있다.
![](https://i.imgur.com/1zmhFSu.png)
최적의 가격과 슬리피지를 찾아주는 녀석인 것 같다.
![](https://i.imgur.com/LHmlMvq.png)
토큰 스왑시 code를 간결하게 해주는 API라고 한다.
![](https://i.imgur.com/v4R6jvk.png)
1-2. 그럼 Proxy가 무엇이냐?
[Proxy Contract 관련 medium글](https://medium.com/onther-tech/upgradeable-smart-contract-applications-using-proxy-patterns-2053a5780287)
이미 배포된 컨트랙트는 새로 업그레이드 할 수 없지만 Proxy Contract 아키텍쳐를 이용하면 가능하게 된다고 한다.
![](https://i.imgur.com/vLV2iOU.png)
유저가 요청한 message call을 Logic contract로 redirect시키는 녀석이다. 최신의 logic contract 주소와 버전 정보를 데이터로 가지고 있다.
2. 위 정보들을 조합해 유추해 보았을 때 0x의 API를 통해 최적의 가격을 찾고 300USDC에 해당하는 가치의 0.144WETH를 Proxy로 전송하고 Proxy는 logic contract를 호출하는 것으로 이해할 수 있다.
3. MetaMask: DS Proxy로 0.0012ETH가 전송되는것으로 보아 logic contract에서 메타마스크 쪽으로 수수료를 보내는 것으로 보인다. 메타마스크 라우터를 사용하는데 드는 비용인 것 같다.
4. 최종적으로 logic contract에서 내 주소로 swap된 ETH를 전송한다.

## Tokens Transferred
![](https://i.imgur.com/t0K2lj3.png)
1. 내 주소에서 logic contract로 300USDC가 전송
![](https://i.imgur.com/l3uhnTs.png)
2. Uniswap V3의 USDC-WETH pool에서 0x: Exchange Proxy로 0.144WETH를 전송
3. logic contract에서 Uniswap V3의 USDC-WETH pool로 300USDC 전송

## 참고 사이트
* [etherscan에서의 swap transaction](https://etherscan.io/tx/0xcef55a2811d71e980392748d02a0780d65edd0af763b323ceee46b18ef4a2f8e)
* [Proxy Contract 관련 medium글](https://medium.com/onther-tech/upgradeable-smart-contract-applications-using-proxy-patterns-2053a5780287)
* [Defi API solution 0x.org](https://www.0x.org/)

<style>

html, body, .ui-content {
    background-color: #333;
    color: #ddd;
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
    color: #ddd;
}

.markdown-body h1,
.markdown-body h2 {
    border-bottom-color: #ffffff69;
}

.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
    color: #fff;
}

.markdown-body img {
    background-color: transparent;
}

.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
    color: white;
    border-left: 2px solid white;
}

.expand-toggle:hover, 
.expand-toggle:focus, 
.back-to-top:hover, 
.back-to-top:focus, 
.go-to-bottom:hover, 
.go-to-bottom:focus {
    color: white;
}


.ui-toc-dropdown {
    background-color: #333;
}

.ui-toc-label.btn {
    background-color: #191919;
    color: white;
}

.ui-toc-dropdown .nav>li>a:focus, 
.ui-toc-dropdown .nav>li>a:hover {
    color: white;
    border-left: 1px solid white;
}

.markdown-body blockquote {
    color: #bcbcbc;
}

.markdown-body table tr {
    background-color: #5f5f5f;
}

.markdown-body table tr:nth-child(2n) {
    background-color: #4f4f4f;
}

.markdown-body code,
.markdown-body tt {
    color: #eee;
    background-color: rgba(230, 230, 230, 0.36);
}

a,
.open-files-container li.selected a {
    color: #5EB7E0;
}

</style>
