위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
EIP-4626의 높은 미끄러짐 문제를 해결하는 방법은 무엇입니까?
ChinaDeFi
特邀专栏作者
2022-11-24 12:00
이 기사는 약 3755자로, 전체를 읽는 데 약 6분이 소요됩니다
컴플라이언스를 유지하면서 하이 슬리피지 공격을 완화할 수 있는 방법은 무엇입니까?

원래 제목: "Solving the issue with slippage in EIP-4626 

첫 번째 레벨 제목

원본 편집: ChinaDeFi

소개

소개

EIP-4626 표준의 한 가지 결과는 예금 및 발행 기능이 수익을 위한 최소 공유 또는 자산 금액을 지정하는 방법을 제공하지 않는다는 것입니다. 이것은 종종 높은 미끄러짐 또는 샌드위치 공격을 방지하는 데 사용됩니다. mStable은 규정을 준수하면서 높은 슬리피지 공격을 완화하는 Meta Vault로 이 문제를 어떻게 해결합니까? 이 백서에서는 이러한 문제에 대해 설명하고 접근 방식이 어떻게 작동하는지 설명합니다.

첫 번째 레벨 제목

EIP-4626 및 mStable 금 금고 예금

function deposit(uint 256 assets, address receiver)

external

returns (uint 256 shares);

예를 들어, 3 Crv Convex mUSD 볼트를 입금하면 발신자로부터 3 Crv가 전송되고 수신자에게 vcx 3 CRV-mUSD 볼트 공유가 전송됩니다.

EIP-4626의 높은 미끄러짐 문제를 해결하는 방법은 무엇입니까?

EIP-4626의 높은 미끄러짐 문제를 해결하는 방법은 무엇입니까?

EIP-4626의 높은 미끄러짐 문제를 해결하는 방법은 무엇입니까?

EIP-4626의 높은 미끄러짐 문제를 해결하는 방법은 무엇입니까?

첫 번째 레벨 제목

샌드위치 공격이란? 그들을 방지하는 방법?

function add_liquidity(uint 256 [ 2 ] memory amounts, uint 256 min_mint_amount)

external

returns (uint 256 );

Curve Metapool(또는 다른 풀)에 유동성을 추가할 때 예치할 자산의 양과 유동성 공급자(LP) 토큰의 최소량을 지정합니다. mUSD 메타풀의 경우 금액은 두 항목을 포함하는 배열입니다. 첫 번째는 mUSD 금액이고 두 번째는 3 Crv 금액입니다. 3 Crv 볼록 볼트는 3 Crv만 보유하므로 금액 배열의 첫 번째 항목은 0이 됩니다.

볼트를 개발할 때 기술적인 문제는 예상 유동성 공급자 토큰의 최소 수를 설정하는 방법이었습니다.

예를 들어 Curve의 mUSD Metapool이 200만 mUSD, 600만 3 Crv 및 100k 3 Crv를 추가하면 100,068 LP 토큰(musd 3 Crv)을 받게 됩니다. 메타풀이 600만 mUSD를 가지고 있다면 200만 3 Crv와 100k 3 Crv를 추가하면 100,892 LP 토큰(musd 3 Crv)을 받게 됩니다.

첫 번째 레벨 제목

공격자는 잠재적으로 악용 가능한 트랜잭션을 블록에 포함하기 전에 Mempool을 모니터링합니다. 트랜잭션을 악용하기 위해 블록 생산자에게 뇌물을 주어 악용 가능한 트랜잭션 전후에 트랜잭션을 포함시킵니다. 즉, 그들은 취약한 트랜잭션을 그들 자신과 샌드위치합니다. 최소 LP 금액이 0인 mUSD 메타풀에 3 Crv를 추가하는 트랜잭션이 있는 경우 공격자의 첫 번째 트랜잭션은 메타풀의 mUSD 금액을 줄이는 것입니다. 이것은 취약한 추가 유동성 거래에서 받은 메타풀 LP 토큰의 양이 원래보다 훨씬 적다는 것을 의미합니다. 세 번째 거래에서 공격자는 첫 번째 거래에서 제거된 mUSD를 반환하고 수익금을 주머니에 넣습니다.

Curve의 mUSD 메타풀을 사용하면 풀에 6,000,000 mUSD 및 3 Crv, 11,917,295 LP 토큰(musd 3 Crv) 및 가상 가격 $1.018095가 있습니다.

공격자는 풀의 유동성 공급자(musd 3 Crv) 토큰(musd 3 Crv) 중 6,500,000(54.5%)을 사용하여 풀에서 5,973,425 mUSD를 인출하여 풀에서 대부분의 LP 토큰을 사용하여 풀의 균형을 맞췄습니다. remove_liquidity_one_coin 기능을 사용하여 풀에 0.43% mUSD 및 99.56% 3 Crv를 남기고 일방적으로 인출하십시오. 더미 가격은 거의 1% 상승한 1.019105로 큰 불균형 인출이 풀에 수수료를 부과했기 때문입니다.

피해자는 add_liquidity 기능을 사용하여 최소 유동성 공급자가 없는 불균형 풀에 100,000 3 Crv를 추가합니다. 풀이 균형이 맞으면 피해자는 100371 대신 81978 LP 토큰을 받습니다. 이는 피해자가 받아야 할 것보다 18,393(18%) 적은 LP 토큰을 받았다는 것을 의미합니다. 달러로 환산하면 피해자는 달러 가치로 18,643(18%) 감소했다.

세 번째이자 마지막 트랜잭션의 경우 공격자는 add_liquidity를 사용하여 첫 번째 트랜잭션에서 인출한 5,973,425mUSD를 풀에 다시 추가하여 6,503,610 LP 토큰(musd 3 Crv)을 받습니다. 첫 번째 거래보다 $3610 더 많이 인출합니다. 풀의 가상 가격은 또 다른 불균형 거래이므로 1% 증가한 1.019216이 됩니다. USD 기준으로 공격자의 LP 값은 $6,500,000 * 1.018095 = $6,617,617에서 $6,503,610 * 1.019216 = $6,628,583로 $10,966(1.65%) 증가했습니다.

풀 불균형에 대한 0.04% 수수료는 유동성 공급자와 Curve 투표 에스크로 CRV(veCRV) 보유자 간에 균등하게 공유됩니다. 공격자가 보유하지 않은 5,417,295개의 LP 토큰의 가치는 $5,515,323에서 $5,520,794로 증가했습니다. 수영장 요금의 50%에 비해 $5,471가 인상된 금액입니다. 증가된 USD 가치는 에스크로된 CRV(veCRV) 보유자에게 전달됩니다.

첫 번째 레벨 제목

곡선 보호

샌드위치 공격을 방지하기 위해 Curve Metapool에 유동성을 추가할 때 합리적인 최소 LP 토큰 수를 지정해야 합니다. 일반적으로 DeFi 프로토콜은 거래에서 상당한 금액을 전달합니다. Curve 풀의 add_liquidity 함수는 min_mint_amount의 좋은 예입니다. 그러나 표준 EIP-4626 입금 기능의 경우 최소 금액을 지정하는 매개 변수가 정의되어 있지 않으므로 상당량의 오프체인 계산 메타풀 LP 토큰을 전달할 수 없습니다.

function calc_token_amount(uint 256 [ 2 ] memory amounts, bool is_deposit) external view returns (uint 256 );

그래서 문제는 여전히 EIP-4626 기능이 최소량을 통과할 방법이 없다는 것입니다. 이것을 추가하기 위해 표준을 깨는 것은 바람직하지 않으며 오라클을 사용하는 것은 차선책입니다. 온체인 방식이 필요합니다.

첫 번째 레벨 제목

mStable의 방법

function get_virtual_price() external view returns (uint 256 );

mStable의 재무부가 Metapool LP 토큰에 대해 공정한 가격을 얻는 방법은 Curve Metapool 및 Curve 3 Pool의 가상 가격을 사용하는 것입니다. get_virtual_price 함수는 풀의 유동성 공급자 토큰 가격을 USD로 반환합니다. 이는 풀에 있는 토큰의 달러 가치를 총 토큰 공급으로 나눈 값인 풀에 대한 불변량을 계산하여 수행합니다. 풀의 토큰 잔액은 풀의 불변 또는 총 달러 가치에 영향을 미치지 않기 때문에 가상 가격은 샌드위치 공격에 영향을 받지 않습니다.

fair Metapool LP tokens = 3 Crv assets *

 3 Pool virtual price /

Metapool virtual price

mStable 볼트에 입금하려면 커브의 3 풀 LP 토큰(3 Crv)에서 메타풀 LP 토큰의 가격을 책정해야 합니다. 이는 볼트에서 사용하는 자산이기 때문입니다. 이를 위해 3 Pool 가상 가격을 구하고 이를 Metapool LP 토큰 가격으로 나눕니다.

첫 번째 레벨 제목

EIP-4626의 높은 미끄러짐 문제를 해결하는 방법은 무엇입니까?

결론적으로

결론적으로

DeFi
Odaily 공식 커뮤니티에 가입하세요