멘탈관리소
1.38K subscribers
5.81K photos
33 videos
62 files
2.67K links
꽉잡아 멘탈 !!!!!

투자자를 위한 멘탈관리중

멘탈회복을 위한 잡담방은 👇
t.me/jaysonchatting

blog.naver.com/temple1103
Download Telegram
#20210206 하트넘버 45일차

최초시드 2375달러
현재자산 3938달러

일수익 +30달러
누적수익 +1563달러
Forwarded from Horizon
홍석현) [the yearn.finance yDAI exploit, explained]

1.

한국시간으로 2월 5일 이른 새벽, yearn.finance의 yDAI 볼트에 예치된 35M DAI 중 11M DAI가 도난당하는 사고가 발생했다. 공격자는 그 중 약 2.7M DAI를 이득으로 취했고, yDAI의 DAI 교환 비율은 약 0.7까지 떨어져 30% 정도의 손해가 발생했다.

이 공격으로 인해 디파이의 전반적인 보안과 안전성 문제가 다시 한 번 대두되었다. 그도 그럴 것이 yearn 계열 볼트 컨트랙트들은 그동안 보안 사고가 단 한 번도 발생하지 않았으며 Pickle에 대한 공격 당시 취약점 분석에 주도적인 역할을 수행했는데, 그랬던 팀조차 결국 완벽하지 못했다는 것으로 받아들여졌기 때문이다.

하지만 이 공격은 완벽하게 기술적 문제로 인해 발생한 “보안취약점”으로만 보기에는 다소 무리가 있는 지점이 몇 가지 있다 (절대 Andre 때문에 이렇게 말하는 건 아니다). 당초 알려졌던 것과는 달리 플래시론이 동반되었고 충분히 막을 수 있는 공격이었던 것은 사실이나, 순수한 기술적 문제라기보다는 금융공학적인 설계 결함의 비중이 훨씬 더 크다.

yDAI 볼트에 대한 전반적인 공격 플로우를 이해하려면 (i) 플래시론, (ii) 커브와 커브 LP토큰, 그리고 (iii) yearn 볼트가 이자를 발생시키는 방식에 관해 먼저 알아볼 필요가 있다.

2.

먼저 플래시론은 흔히 알려진 대로, 하나의 트랜잭션 혹은 블록 내에 대출과 상환을 동시에 수행함으로써 실제로 없는 돈을 있는 것처럼 사용할 수 있도록 하는 기법이다. 이더리움에서는 멤풀에서 블록에 올라가기 전까지 오퍼레이션 간 타임 오더링이 명확하게 정해지지 않기 때문이다.

일반적으로 플래시론 기반 디파이 공격 패턴들을 살펴보면, 플래시론 그 자체는 주로 공격자가 이미 갖고 있지 않은 거액의 금액을 컨트랙트에 입금시킨 후, 오퍼레이션 오더링 문제를 이용해 이자 계산 로직 등을 망가트리는 데 사용된다. 하지만 이 yDAI 볼트 공격에서는 오더링으로 인한 컨트랙트의 기술적 결함이 활용된 부분은 없었다.

공격자는 각각 116K ETH와 99K ETH를 각각 dYdX와 Aave에서 플래시론한 이후 이를 담보로 컴파운드에서 134M USDC와 129M DAI를 대출하는 데 사용했는데, 그 이후에 일어난 공격 패턴은 이 플래시론 자체와는 크게 관련이 없다. 공격자가 실제로 이 금액을 가지고 있었다면 플래시론 없이도 똑같은 방식의 공격이 가능했을 것이라는 뜻이다 (물론 실제로 공격에 사용된 $170M어치 스테이블코인을 정말 들고 있어야만 이 공격이 가능했다면 애초에 진입장벽 자체가 매우 높아질 뿐만 아니라, $2.7M 정도 추가로 더 벌겠다고 저 큰 돈을 컨트랙트 공격패턴에 입금시킬 경제적 인센티브가 훨씬 작아지는 것은 사실이다).

따라서 플래시론이 이 공격패턴의 일부이고 공격 진입장벽을 훨씬 낮추긴 했지만 (~$170M -> 가스피 2 ETH), 결정적인 역할을 수행한 기술적 “보안취약점”은 아니다.

3.

두 번째로 알아두어야 할 지점은 커브, 즉 스테이블스왑 계열 AMM들이 LP토큰을 처리하는 방식이다.

스테이블스왑(https://www.curve.fi/stableswap-paper.pdf)은 invariant 가격곡선 자체에 현 유동성 비율에 따른 dynamic leverage (A*product(x_i)/(D/n)^n)을 적용함으로써, 실제보다 훨씬 유동성이 큰 것처럼 보이게 만들어주는 메커니즘이다. 밸런서에서 처음 도입된 virtual pool에 기반한 virtual price을 사용하므로 실제 유동성을 완벽하게 반영하지 않고, 유동성 비율과 관계없이 토큰들이 서로 최대한 1:1에 가깝게 교환되도록 만들어준다.

한 가지 독특한 부분은 커브와 스테이블스왑이 LP토큰을 처리하는 방식이다.

밸런서가 LP토큰을 마치 서로 다른 자산비중을 가진 ETF처럼 활용하는 것처럼, 커브에서는 LP토큰을 그 풀을 구성하는 자산들의 가치교환안정성을 모두 합친 일종의 헷징자산으로 활용할 수 있다. 네이티브 크립토 자산의 경우 이 특성이 큰 의미가 없을 수 있으나, 블록체인 바깥에서 발행되는 자산의 가치를 추종하도록 설계되어 있는 토큰들의 경우 (특히 법정화폐에 페깅되어 있는 스테이블코인이나 합성자산 등) 이는 매우 유용하게 활용될 수 있다. 서로 다른 메커니즘으로 자산가치를 추종하는 동일 가치 토큰들의 커브 LP토큰을 들고 있다면, 단일 가격보장 메커니즘에 의존하는 위험성을 어느 정도 헷징할 수 있다고 해석할 수 있기 때문이다.

이미 커브에서는 이를 활용해 이더리움 생태계 위에서 유동성이 가장 높은 (USDT, USDC, DAI) 세 가지 스테이블코인에 대해 3Crv라는 풀을 만들어놓고, 새로운 USD 페깅 스테이블코인이 상장될 때마다 3Crv LP토큰과의 스테이블스왑 페어를 만들어, 거래 시 이 세 가지 스테이블코인은 무조건 input/output 거래자산으로 활용될 수 있도록 구성되어 있다. 셋 중 하나의 스테이블코인을 선택하면 3Crv LP토큰을 먼저 받은 후, 이를 다시 풀에 있는 스테이블코인을 꺼내쓰는 데 사용하면 된다 (자산을 unwrap한다고 표현한다).

이런 방식으로 구성된 3Crv 페어 풀들을 커브에서는 “메타풀”이라고 정의한다.

3Crv-LP <> Stablecoin 간 교환(즉 3Crv unwrapping) 메커니즘은 *유동성 비율이 극도로 깨지지 않는 한* 유효하다. 여기서 *극도*의 기준이란, 스테이블스왑 레버리지 공식 A*product(x_i)/(D/n)^n을 적용했을 때조차 virtual price가 0.9나 그 밑으로 떨어지는 경우다.

이러한 경우, 굉장히 커다란 문제가 발생한다. Virtual price가 1:1에 가까운 시점에서는 그 어떤 스테이블코인을 3Crv 풀에 예치해도 레버리지를 적용한 이후의 가격이 사용되어, 그 예치액수에 매우 가까운 만큼의 3Crv LP토큰이 발행된다 (커브에서는 다른 AMM들과는 달리, 풀을 구성하는 자산 중 하나 이상의 자산만 예치해도 LP토큰을 발행해준다. 풀 전체를 하나로 보고, 균등교환비율 가정 아래에서 그만큼 풀의 지분을 가져가는 것으로 보기 때문이다. 유동성을 제거할 때는 풀을 구성하는 자산 중 어떠한 자산으로도 출금이 가능한데, 이 때 내부적으로 한 번 전체 스왑이 일어난 이후 자산이 반환된다). LP토큰 자체가 풀을 구성하는 자산에 대한 aggregating asset이기 때문이다.

그러나 유동성 비율이 크게 깨지게 되면, 유동성이 부족한 쪽에 자산을 예치하면 LP토큰을 예치금액보다 더 많이, 그렇지 않은 쪽에 자산을 예치하면 예치금액보다 더 적게 받게 된다. 이는 실제 외부 시장에서 거래되는 가격과는 전혀 관계없이 커브 풀 내의 유동성에 의해서만 결정되고, 따라서 유동성이 일시적으로 크게 출렁이면, 다시 1:1로 돌아가기 위한 아비트라지를 유도하기 위해서 실제 가치보다 LP토큰인 3Crv를 훨씬 더 많이 받게 될 수도, 더 적게 받을 수도 있다 (즉 impermanent loss를 액면가 그대로 반영해버리는 것이다). 따라서, 그 자체로 일종의 스테이블코인으로 작용하는 wrapping asset인 3Crv를 실제 달러 대비 예치액보다 더 많이 가져가는 상황이 된다.

yDAI 볼트에 대한 공격이 가능했던 이유는 너무 당연하게 받아들여졌던 커브의 3Crv 가정이 깨져버리고 위의 상황이 정말로 일어나버렸기 때문인데, 구체적인 방법에 관해서는 잠시 후에 알아보자.

4.

마지막으로, 이번에 문제가 된 yearn.finance yDAI v1 볼트의 메커니즘을 간단하게 살펴볼 필요가 있다.

커브는 위의 유동성 비율 문제를 해결하기 위해 일부 페어들에 대해 liquidity mining 인센티브를 제공한다. 즉, 유동성 비율이 한 번에 너무 많이 바뀌지 않게 하기 위한 방어 차원에서 최대한 자산이 많이 예치되도록 유도하기 위해 리워드를 추가로 나눠주는 것이다.

이 리워드는 커브의 DAO 토큰인 CRV로 분배된다. 이 CRV를 DAO에 묶으면 vested CRV (veCRV) 토큰이 베스팅으로 인해 디밸류된 만큼 발행되고, 해당 veCRV는 상장심사 등 커브의 거버넌스 절차나 추가적인 베스팅 리워드 수령 등에 사용될 수 있다.
Forwarded from Horizon
yDAI 볼트는 DAI를 커브의 3Crv 풀에 예치하고 3Crv LP토큰을 받은 후, 여기에서 리워드로 나오는 CRV 토큰을 매번 DAI로 다시 교환해 다시 3Crv 풀에 예치하는 방식으로 복리이자를 구현하는 strategy를 사용한다. USDT/USDC 볼트와 앞에 ‘crv’가 붙은 커브 메타풀 볼트들도 이와 마찬가지 방식을 사용하며, yETH 볼트의 경우 (i) 예치된 ETH로 메이커에서 CDP를 열어 DAI를 발행하고, (ii) 이를 다시 yDAI 볼트에 예치하는 방법을 사용한다. 이 때 실제로 DAI를 메이커에서 대출해가는 entity는 curve.fi 프로토콜이므로, DAI 수요가 높아져서 유동성이 상대적으로 낮아지면 yETH 볼트를 사용해 아비트라지를 수행할 수 있다. 그만큼 3Crv 토큰을 더 많이 받아갈 수 있기 때문이다. (실제로 yETH 볼트가 DAI의 고질적인 수요 - 공급 mismatch에 따른 프리미엄 해소에 기여하고 있다는 평가를 받기도 한다).

여기서 모든 것이 “아비트라지” 기반으로 돌아간다는 사실을 눈여겨볼 필요가 있다. 만약 아비트라지가 기대했던 것과 정반대로 발생해버리면 어떻게 될까?

5.

다음의 공격 트랜잭션을 눈여겨보자. https://etherscan.io/tx/0x59faab5a1911618064f1ffa1e4649d85c99cfd9f0d64dcebbc1af7d7630da98b

안드레가 최초로 발견한 문제의 볼트 공격 트랜잭션인데, 이 하나의 트랜잭션 안에서 다음의 일들이 순차적으로 발생했다.

(i) dYdX에서 117K ETH를 플래시론한다.
(ii) Aave에서 111K ETH를 플래시론한다.
(iii) 총합 228K ETH를 컴파운드에 담보로 예치한다. 따라서 약 11M cETH가 발행되었다.
(iv) 11M cETH를 다시 각각 143.4M DAI와 133M USDC를 컴파운드에서 대출해오는 데에 사용한다.
(v) 대출해온 143M DAI 중 38M DAI로 커브 3Crv 풀에 유동성을 제공하고, 3Crv 토큰을 받아온다.
-> 이에 따라 DAI 쪽으로 3Crv 풀의 유동성이 쏠렸다. 이 글을 작성하는 현재 3Crv 풀에 예치된 DAI는 210M DAI다.
(vi) 대출해온 133M USDC 전체를 3Crv 풀에 예치하고, 3Crv 토큰을 받아온다.
-> USDC 쪽으로 풀의 유동성이 더 쏠린다. 이 글을 작성하는 현재 3Crv 풀에 예치된 USDC는 233M USDC다.
(vii) 받아온 3Crv 토큰 대부분인 169M 3Crv를 다시 풀 유동성 제거에 사용해, 167M USDT를 받아온다.
-> 유동성을 제공할 때는 거액의 USDC와 DAI를 예치했지만, 제거할 때는 거액의 USDT를 출금했다. 이에 따라 3Crv 풀에서 USDT 유동성의 80%에 가까운 금액이 공격자에 의해 빼앗겼다 (현 유동성 207M USDT). 공격의 영향이 아직 풀에 남아있지만, 현 유동성 기준으로 계산해보면 위 세 오퍼레이션이 일어난 이후 248M DAI, 366M USDC, 40M USDT가 풀에 남아있는 모양이 된다. USDT의 비중은 본래 31%에서 6% 이하로 떨어졌다. 이 정도면 아무리 레버리지를 적용하더라도 3Crv 발행량에 유의미한 영향을 미칠 수 있을 정도의 수준이다.
(viii) 남은 105.4M DAI를 yDAI 볼트에 예치한다. 공격자는 95M yDAI 토큰을 수령하고, yearn은 해당 DAI를 3Crv 풀에 예치해 3Crv 토큰을 받아와…야 하는데 위의 공격의 영향으로 인해 실제 받아와야 하는 3Crv보다 적은 102M 3Crv를 수령했다. 비율상으로는 1:1에 아직 가깝긴 한데 (스테이블스왑이 버텨줘서), 그래도 절대적인 액수가 워낙 커서 양쪽으로 거의 3M개가 차이난다. yearn은 해당 3Crv를 다시 3Crv 볼트에 예치해 y3Crv를 발행한다.
(ix) 제거한 167M USDT를 다시 풀에 돌려놓는다. 이렇게 되면 다시 3Crv 풀의 유동성 균형이 어느 정도 돌아온다.
(x) 95M yDAI를 볼트에 보내 소각하고 다시 DAI로 바꿔온다. 엥, 그런데 생각해보니 그 사이에 3Crv 풀의 균형이 바뀌었다. 원래 받아야 할 3Crv 개수보다 적게 받은 상황에서, 풀의 균형이 돌아오고 난 이후 다시 3Crv를 DAI로 바꿔오려니 yDAI 볼트가 받아야 할 DAI보다 토큰을 적게 받게 된다. 받아보니 103.6M DAI 정도를 돌려받았다. 즉, 다시 말해 볼트가 0.7M DAI 정도 손해를 본 것이다.
(xi) 위의 (viii) - (x)를 DAI 액수를 조금씩 줄여가면서 반복한다. 유동성 균형이 지속적으로 깨지므로 매번 액수를 줄여가며 공격해야 더 많은 액수를 풀에 남겨둘 수 있기 때문이다.
(xii) 5번 반복한 후, 3Crv로 USDT의 유동성을 제거하는 대신 남은 3Crv 전체를 사용해 DAI와 USDC의 유동성을 제거한다. 풀이 133M USDC와 41M DAI를 반환했으므로 원래 대출해온 DAI보다 3M DAI가 더 남았다.
(xiii) 모든 부채를 다시 되갚는다.

위의 과정을 여러 트랜잭션에 걸쳐 반복하면 yDAI 볼트의 잔액을 점진적으로 제거할 수 있다.

이러한 공격이 발생할 수 있었던 원인은 크게 두 가지인데, 첫 번째는 슬리피지 보호치가 1%로 지나치게 유연하게 설정되어 있었고, 두 번째는 v1 볼트였던 탓에 마음대로 earn()을 호출해 strategy 컨트랙트로 잔액을 마음대로 넣을 수 있었다는 것이다 (해당 권한 문제는 v2에서 패치되었다). v1 -> v2 마이그레이션이 진행중이었으므로 0.5% exit fee가 면제되고 있었던 것도 어느 정도 영향은 주었겠지만 절대적이지는 않았던 듯하다.

Curve strategy를 공유하는 모든 v1 yearn 볼트는 동일한 문제점을 가지고 있으므로, 현 시점에서 모두 폐쇄된 상태다. 커뮤니티 YFI를 담보로 DAI를 발행해 사용자들의 손해를 메꿔주자는 보상안이 발표되었으나 근본적인 해결책이 될지는 아직 미지수다.

6.

이쯤 되면 디파이에서의 취약점은 단순 기술 문제만이 아니라, 여러 프로토콜들에 걸쳐져서 존재하는, 간과하고 넘어가기 쉬운 약간의 기술적인 결함들과 간과하고 넘어가기 쉬운 약간의 금융공학적인 결함들이 합쳐져서 발생하는 것이 아닌가 싶다.

즉, 기술적인 난점들과 금융공학적인 난점들을 동시에 이해하고 파악하고 있어야 대비 및 대응이 가능하다는 것인데, 그럴 만한 능력이 있는 사람이 지구상에 몇이나 될까 싶다. 모든 결점들과 퍼즐 조각을 맞춰 저 취약점을 찾아낸 사람도, 그걸 38분 만에 찾아내 11분 만에 패치해낸 yearn 팀도 대단하다.

블록체인의 몇 안 되는 유일한 유즈 케이스 중 하나는 똑똑한 사람들끼리의 전쟁을 통한 계층상승이라는 말을 들은 적이 있다. 그렇게 되지 않기를 바라지만, 도저히 예측 불가능한 지점에서 계속해서 사고가 터지면 결국 정말 organic한 사용자는 다 빠져나가고 똑똑한 사람들끼리의 금융전쟁터 정도로만 남게 되지 않을까.

여러 방면에서 지속적으로 고민할 필요가 있어보인다.
#20210207 하트넘버 46일차

최초시드 2375달러
현재자산 3944달러

일수익 +6달러
누적수익 +1569달러
Forwarded from 수달
Forwarded from 수달
트론... 상방관점이 보여서
Forwarded from 수달
한번 그려봤읍니다..
Forwarded from 수달
우상향이라는 전제조건을 깐다면 저 목표가는
Forwarded from 수달
최소 1차 목표가라고 생각하시면되겠습니다....
Forwarded from 수달
Forwarded from 수달
근거는 하모닉패턴의 deep crab 입니다 ㅎㅎ
#TRX #TRON

차트분석 정말 잘해주시는 수달님의 트론 중장기 분석입니다.

이말을들으니 또 힘이나는군요..

강하게 HODL 입니다.
블록워터, 디지털 자산 커스터디 서비스 ‘바이프라임’ 지분 전량 인수

https://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=014&aid=0004581088

(주)블록워터매니지먼트에서 바이프라임 지분 전부인수

(산하)
- 블록워터테크놀로지스 : 퀀트리서치
- 바이프라임 : 투자.수탁.운용 전문

수직계열화 완성으로 포트폴리오 강화에 전략적 투자

향후 디파이 연계지원과 디지털자산 종합금융서비스 빌딩을 위한 초석을 다지는 행보임을 천명
Forwarded from 수달
BREAKING: TESLA BOUGHT $1.5 BILLION IN BITCOIN
Forwarded from 취미생활방📮
TESLA - MAY INVEST PORTION OF CASH IN SOME ALTERNATIVE RESERVE ASSETS INCLUDING DIGITAL ASSETS, GOLD BULLION, GOLD EXCHANGE-TRADED FUNDS IN FUTURE

테슬라는 미래 디지털 자산, 금 교환거래 펀드를 포함한 일부 대체 예비 자산에 현금의 일부를 투자할수 있다고 합니다

* 해당 속보 이후, 비트코인 혁명빔 중입니다

#국제 #BTC
#20210208 하트넘버 47일차

최초시드 2375달러
현재자산 4003달러

일수익 +59달러
누적수익 +1628달러
쓸데없는 소리말고 트론이나 더 올려봐라
Forwarded from Digitalasset Korea 이슈/뉴스 (Vitamin Lemon)
https://www.blockmedia.co.kr/archives/169365

#이번 결정을 내린 사람들
테슬라의 비트코인 투자 및 결제 채택. 가능성과 위험성을 평가한 사람들은 누구일까요. 머스크의 제안을 승인한 감사위원회 면면이 흥미롭습니다. 위원들이 자신이 속한 조직에서도 비트코인 투자나 결제를 진행할 수 있으니까요.

위원장은 로빈 덴홀름. 테슬라 이사회 의장입니다. 주피터네트워크, 도요타 호주 등에서 활동했습니다. 위원은 안토니오 그라시아스(투자회사 발로르 CEO), 히로미치 미주노(금융전문가), 제임스 머독 등입니다. 제임스 머독? ★월스트리트저널을 소유한 루퍼트 머독 뉴스코프 회장의 아들입니다★ 비트코인이 인싸 중의 인싸 속으로 들어왔네요.