새소식

인기 검색어

Web3/BlockChain

[BlockChain] DeFiHackLabs - 2. Warmup

  • -
반응형

BlockChain를 공부하다가 좋은 Web3 Cybersecurity Academy가 있어서 공유하고자 작성하였다.

Assets Transfer

etherscan을 통해 다음과 같은 정보를 획득할 수 있다.

  • From: 트랜잭션의 주소, EOA 지갑 주소
  • To: Tether: USDT Contract
  • ERC-20 Tokens Transferred: From에서 사용자 A로 651.13 USDT 전송
  • Input Data: transfer함수를 호출

해당 Phalcon의 Invocation Flow를 보면 EVM은 부동 소수점 연산을 지원하지 않기 때문에 10진수로 소수점 자릿수를 표현하는 decimal이 대신 사용된다.

각 토큰에는 토큰 값을 나타내는 데 사용되는 소수점 자릿수인 자체 정밀도가 있는 데 ERC-20 토큰의 decimal은 일반적으로 18자리인 반면 USDT는 6자리이다. 그래서 토큰의 정밀도가 제대로 처리되지 않으면 문제가 발생할 수 있다.


Uniswap

위 etherscan을 통해 다음과 같은 정보를 획득할 수 있다.

  • Transaction Action: 사용자가 Uniswap V2에서 swap을 호출하여 12,716 USDT를 7,118 UNDEAD로 교환
  • From: 트랜잭션 소스의 지갑 주소
  • To: MEV Bot이 swap을 위한 Uniswap Contract를 호출
  • ERC-20 Tokens Transferred: 토큰 교환 프로세스

해당 Phalcon의 Invocation Flow를 보면 MEV Bot은 Uniswap V2 USDT/UNDEAD 거래 패이 컨트랙트를 호출하여 Swap을 호출하여 토큰을 교환한다.


Foundry

Sample Code를 보면 Uniswap_v2_router.swapExactTokensForTokens()함수를 호출하여 1 BTC를 23587 DAI로 교환한다.


Curve 3pool - DAI/USDC/USDT 유동성 추가

etherscan을 통해 다음과 같은 정보를 획득할 수 있다.

  • 해당 거래의 목적: Curve 3pool에 유동성을 추가하는 것
  • From: 이 트랙잭션의 소스 주소
  • To: Curve.fi: DAT/USDC/USDT pool
  • ERC-20 Tokens Transferred: A가 3,524,968.44 USDT를 Curve 3pool로 전송한 다음 Curve 사용자 A를 위해 3,447,897.54 3Crv 토큰을 발행

해당 Phalcon의 Invocation Flow를 보면 호출 순서에 따라 3 단계가 진행되었다.

  1. add_liqudity
  2. transferFrom
  3. mint

Compound Propose

etherscan을 통해 다음과 같은 정보를 획득할 수 있다.

사용자가 compound에 대한 제안서를 제출했다.

Phalcon의 Invocation Flow에 따르면 propose() 함수를 통해 제안을 제출하여 제안 번호 44가 생성되었다.


Uniswap FlashSwap

Sample code를 보면 Uniswap UNI/WETH 교환을 통해 100 WETH의 flashloan을 빌린다. 상환 시 0.3%의 수수료를 지불해야 한다.

foundry를 분석하면 flashswap는 swap을 호출한 다음 uniswapV2Call을 다시 호출하여 상환한다.

Flashloan과 Flashswap의 특징

  • 공통점: 두 함수다 무담보로 토큰을 빌릴 수 있으며 동일한 블록에서 반환을 해야 함. 그렇지 않으면 거래가 실패
  • 차이점: Flashloan token0/token1을 통해 token0을 빌린 경우 token0을 반환해야 한다. 하지만 Flashswap은 token0을 빌려주고 token0 또는 token1을 반환할 수 있어 좀 더 유연함

 

출처: https://github.com/SunWeb3Sec/DeFiHackLabs/tree/main/academy/onchain_debug/02_warmup/en

 

반응형

'Web3 > BlockChain' 카테고리의 다른 글

[BlockChain] DeFiVulnLabs - Integer overflow  (0) 2023.02.05
[BlockChain] DeFiHackLabs - 3. Write Your Own PoC  (0) 2023.02.05
[BlockChain] Contract & Assembly  (0) 2023.02.02
[BlockChain] DelegateCall  (0) 2023.02.02
[BlockChain] ERC20  (2) 2023.01.31
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.