Skip to content

Instantly share code, notes, and snippets.

@junhoyeo
Created June 7, 2022 04:27
Show Gist options
  • Save junhoyeo/f21f155afe74fcef71faf1e6648889db to your computer and use it in GitHub Desktop.
Save junhoyeo/f21f155afe74fcef71faf1e6648889db to your computer and use it in GitHub Desktop.

Q. 왜 OHM(자체 토큰)을 바로 스테이킹하지 않고 sOHM으로 바꿔 스테이킹하나요?

OHM 을 스테이킹하면, sOHM 을 주는 게 맞을걸요! 보통 우리가 스테이킹을 하면, 스마트 컨트랙트 안의 상태로 “스테이킹 했다는 사실”이 기록되는데요(ex> { “주노”: 50 OHM, “이든”: 100 OHM } 대충 뭐 이런식). 그런데 이 구현의 문제는, 이렇게 하면 주노가 스테이킹된 50옴을 그대로 양도할 수 없어요(=유동화를 못해요, 여기에도 unstaking period 가 있는지는 모르겠는데, 오스모를 스테이킹 한 기간 동안은 그걸 팔거나 이관하지 못하잖아요?). 그래서 OlympusDAO 에서는 스테이킹한 사람들에게 sOHM 이라는 토큰을 발행해주고, “나중에 다시 가져오면 OHM으로 바꿔줄게!” 하는 거예요. 약간 채권같은거죠!!

간단한 예시: 앵커 (앵커에 UST를 Deposit(사실상 Staking) 하면, 그 증표로 aUST를 주잖아요!)

이렇게 유동화가 가능하면 서드파티 서비스에서 sOHM 을 연동하거나, 대신 받을 수도 있어요. sOHM 의 이자수익을 활용하는 머니레고를 만든다던가…

Q. Asset을 OHM으로는 Swap할 수 있지만, sOHM, gOHM으로는 Swap 불가능하고 zap만 가능한 이유가 무엇인가요?

아래 WETH 설명한 질문 보고와주세요! Wrapped 된 자산끼리 Swap도 똑같이 가능해요. 다만 Zap 을 보면, sOHM/gOHM 을 지니는 순간, 의미상 스테이킹하는 거랑 마찬가지기 때문에(하나의 포지션을 가지는 거기 때문에) 일부러 나눠둔 듯하네요. Zap = “Asset 을 하나 고르면, 그게 OHM 으로 바뀌어서 바로 스테이킹된다구” 하는 기능입니다. 단 그게 하나의 트잭일뿐!

Q. Defi 유저들은 여러 Defi에 투자하나요? 아니면 단일 Defi만 투자하나요?

보통 디젠들은 여러개 하더라고요! 따로 스터디도 하고.. 그런데 이더리움기반(EVM) 블록체인 끼리에서는, 하나의 컨트랙트를 가지고 여기저기 네트워크마다 재배포하고 돌려먹는 게 어느정도 있다보니 “아 저건 걍 A 모델이네 / B 랑 C 합친 모델이네” 하면서 분간하는 것도 있는 것 같은!

Q. Defi를 보면 자산을 다른 자산으로 Wrap해서 예치하는 경우가 많은데 왜 그러는 건가요??

이건 걍 컨트랙트나 메인넷의 호환성을 위해서라고 생각하면 될 것 같아요! Wrap 하는 이유는 두가지입니다.

  1. 네이티브 토큰과 컨트랙트(ERC20) 기반 토큰의 호환성을 위해. 배경: 이더리움에는 ETH, BSC 에는 BNB, 폴리곤에는 MATIC, 오스모시스에는 OSMO(그리고 ION)… 같은 네트워크 자체 통화가 있지요? 이런걸 체인이 생성될 때 초기부터 존재했던 네이티브 토큰이라고 불러요. 그리고 이거랑 별개로 사람들이 컨트랙트를 배포해서 만들 수 있는 토큰들이 있어요. 그중 하나가 예전에 우리가 만든 스포티움(SPRT)이였던 거고! 이런 토큰들은 하나의 규격이 있어서, ERC20(코스모스는 CW20) 스펙을 준수하면 서로 다 호환이 되어요. 문제: 그런데 컨트랙트에서, 네이티브 토큰을 다루는 코드랑, ERC20 을 다루는 코드가 조금 달라요. 그래서 뭐 NFT를 판다던가 할 땐 둘 중 하나만 짜면 되는데, 두 토큰을 같이 사용하는 LP 풀을 만든다던가 하면 통일된 인터페이스를 만들 수 없어요.

그래서 WETH 라는 게 생겼는데, 이건 ETH가 ERC20 호환되도록 컨트랙트로 한번 감싸준 거라고 생각하면 되요. 컨트랙트 자체에서 1:1 교환이 바로바로 되기 때문에 가치는 동일해요.

  1. 두번째는 Wormhole, Bridge.. 등등을 사용해 다른 네트워크로 자산을 보내기 위해서 만들어지는 경우입니다. (이더리움에서 유저 A 가 특정 컨트랙트로 10 SPRT 를 보내면, 해당 컨트랙트 안에 10 SPRT 가 묶이고, 폴리곤에 배포된 또다른 컨트랙트에서 10 SPRT 가 발행됨. 이때 새로 발행되는 SPRT를 Wrapped SPRT 라고 하는 경우가 있음)

Q. 플래시론 공격이란 걸 알게 되었는데 이해 불가 🚨🚨🚨 설명이 필요해요🚨🚨🚨

플래시론은 (사실상) 무담보 대출을 말해요. 그런데 블록체인은 기본적으로 무신뢰입니다(왜냐면, 신용이라는 게 작동하지 않음. 나 누군지 알아?!! 무려 알파웍스 다니는 사람인데;; 빨리 돈 빌려줘!!! 하더라도, 그게 진짜 주노인지 검증을 못함. 그래서 미리 담보를 입금시켜놓고, 특정 시간동안 돈 안갚으면 그걸 조금씩 야금야금 먹거나 청산해버리는 방식으로 돌아감).

사실상 담보가 필수적인 크립토씬에서 마치 무담보로 대출을 할 수 있다고?! 플래시론!

배경 지식

  1. DEX 에서 거래가 가능한 이유는 LP 풀에 거래할 한 쌍의 토큰에 대한 준비금이 마련되어 있기 때문입니다.
  2. 하나의 토큰에 여러개의 LP 풀이 존재할 수도 있는데, 모든 LP 풀이 빵빵한 것은 아니라서, 비율이 깨진 풀이 존재할 수 있습니다. 그렇게 되면 실제 마켓의 교환비와 LP 풀의 교환비가 달라질 수 있습니다.

플래시론 공격:

  1. 대출 서비스가 참조하는 LP 풀의 비율을 깨뜨린다던가 해서, B 토큰의 가격을 조작해 떨굽니다.
  2. 대출 서비스에서 A 토큰을 담보로 B 토큰을 빌립니다. LP 풀에서는 A 토큰의 가격이 비정상적으로 떨궈져 있기 때문에 대출 서비스는 실제 A 의 가치보다 더 많은 B 토큰을 빌려줄 수밖에 없습니다.
  3. B 토큰을 다른 DEX(얘는 비율이 안깨져 있어서 가격이 정상임)에서 팔고, 대출을 갚아버립니다.

왜 플래시론이라고 부를까? 1~3+(중간에 대출 서비스를 여러개 쓴다던가, 여러 DEX를 경유한다던가 할 수 있음) 까지의 과정이 단 하나의 트랜잭션 내에서 진행될 수 있어서입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment