자동화된 시장조성자(AMM) 알고리즘과 그 미래에 대한 수학적 관점

2023년 4월 20일

앵커다오 연구소의 레오 라우, G.W. XIE

이 백서에서는 먼저 뱅코르, 유니스왑, 밸런서, 커브와 같은 프로토콜로 구현되는 네 가지 자동화된 시장 조성자(AMM) 알고리즘을 살펴볼 것입니다. 또한 최근 개발 사항, 개선 가능성, AMM 알고리즘의 미래에 대해서도 논의할 것입니다.

콘텐츠

  1. 뱅코르의 본딩 곡선 및 거래 공식
  2. 유니스왑의 비영구적 손실 계산
  3. 가격이 2ρ 이내일 때 플러스 수익이 발생합니다.
  4. 유니스왑 V3의 유동성 분배, 유동성 예치, 범위 주문
  5. 밸런서의 마켓 메이커 기능 및 트레이딩 공식
  6. 스마트 주문 라우터(SOR) 알고리즘
  7. 커브의 스테이블 스왑 및 트레이딩 공식
  8. 커브 V2의 동적 가중치, 사용자 지정 가능한 가격 페그 및 부드러운 가격 전환
  9. 2토큰 풀 설정에서 커브 V2의 마켓 메이커 기능
  10. CPMM 및 스테이블스왑과 비교한 커브 V2의 가격 함수
  11. 리페깅 프로세스: Xcp 기준, EMA 가격 오라클, 상대 가격 변경 단계 크기 s
  12. 커브 V2의 동적 거래 수수료
  13. DEX 애그리게이터: 밸런서의 SOR 알고리즘에 대한 일반적인 솔루션
  14. 피벗 알고리즘: 비영구적 손실 문제를 해결하기 위한 시도
  15. 단면 유동성 솔루션
  16. 커브 V2를 위한 더 나은 동적 가중치 설계
  17. 가격 함수가 분석적이지 않은 경우 가격 범위 적용하기
  18. 클리퍼: 소액 거래에 최적화된 AMM 알고리즘
  19. TWAMM: 대규모 장기 주문에 최적화된 AMM 알고리즘
  20. 상수 상품 시장조성자(CPMM) 및 로그 시장 점수 규칙(LMSR)에 TWAMM 적용
  21. YieldSpace와 같은 시간 종속적 AMM에 TWAMM 적용
  22. 결론 및 향후 작업

Bancor

뱅코르¹는가격을 결정하기 위해 본딩 커브 개념을 활용합니다. 본딩 곡선은 토큰 가격과 총 공급량 사이의 관계입니다.

방코르가 선택한 불변수는 다음과 같습니다. F, 커넥터 무게라고 하며, 이는 R (유동성 풀의 예비 토큰 수)와 다음의 곱인 S (유동성 풀 외부의 BNT 총 공급량)와 P (BNT와 리저브 토큰 간의 상대 가격)의 곱입니다. 다음과 같은 방정식으로 대체할 수 있습니다. P 의 방정식을 대입하고 양쪽을 적분²하면다음과 같은 관계를 얻을 수 있습니다. PS. 이것은 지수 식이며, 지수는 α 는 커넥터 무게와 관련이 있습니다. F (F 0에서 1 사이). 크기가 작을수록 F 가 작을수록 α 가 커지며, 이는 BNT의 총 공급량에 비해 가격이 더 빠르게 변한다는 의미입니다.

이 표현식과 간단한 통합을 사용하여 다음과 같은 관계를 도출할 수 있습니다. T (BNT 토큰 구매)와 E (지불한 리저브 토큰)의 관계를 도출할 수 있습니다. R0, S0 의 현재 값입니다. RS.

토큰 A와 토큰 B를 교환하려면 토큰 A를 토큰 B로 판매해야 합니다. 먼저 풀 A에서 BNT 토큰이 없는 경우, 토큰 A를 사용하여 풀 A에서 BNT 토큰을 구매해야 합니다. 다음으로 BNT를 사용하여 풀 B에서 토큰 B를 구매해야 합니다. 다음은 우리가 받게 될 토큰의 양을 계산하는 데 필요한 정확한 공식입니다. 토큰 A와 토큰 B 사이의 상대 가격은 BNT 토큰과 토큰 A/B 사이의 상대 가격으로 표현할 수 있습니다.

장점: 뱅코는 뱅코 거버넌스에 의해 결정되는 특정 풀에 단면 유동성 예치를 허용합니다. 단점: 뱅코르 거버넌스에 따라 예치할 수 있는 단면 유동성의 양에는 제한이 있습니다. 한도 내에서 사용자가 다른 토큰의 형태로 일면 유동성을 예치할 경우, 뱅코는 동일한 가치의 BNT 토큰을 보충합니다. 이렇게 하면 유효 유동성이 두 배가 됩니다. 한도에 도달하면 단면 유동성을 예치하려면 누군가가 단면 유동성을 인출하거나 누군가가 BNT에 단면 유동성을 예치할 때까지 기다려야 합니다.

뱅코르 프로토콜은 또한 사용자가 편측 유동성을 예치할 때 BNT 부분에서 발생하는 거래 수수료의 형태로 비영구적 손실(추후 논의될 예정)을 보상합니다. 거래 수수료가 비영구적 손실을 완전히 보상하지 못할 경우, 뱅코는 비영구적 손실이 0이 되도록 BNT를 발행할 것입니다. 결과적으로 유동성 공급자는 일정 기간(100일 이상 예치해야 완전 보상) 동안 유동성을 예치한 경우 안정적인 수익을 누릴 수 있습니다.

단점: 모든 스왑에는 위에서 설명한 대로 중개자로 BNT 토큰이 필요합니다. 결과적으로 슬리피지가 두 번 발생합니다. 모든 유동성 풀은 같은 이유로 BNT와 다른 토큰으로 구성되므로 다양성이 부족합니다. 또한 비영구적인 손실 보상과 일방적인 유동성 예치를 가능하게 하는 데 필요한 탄력적인 공급으로 인해 BNT 토큰 가격이 영향을 받을 수 있습니다.

뱅코는 서로 다른 연결 가중치로 모든 토큰에 연결되어 서로 다른 가격 결정 본딩 곡선에 해당하는 네트워크 토큰 BNT라는 개념을 도입했습니다.

유니스왑

유니스왑은 고정 상품 시장 메이커(CPMM)를 사용해 가격을 결정합니다. 유니스왑 V2와 V3가 사용하는 알고리즘을 살펴보기 전에 먼저 비영구적 손실(IL)이 무엇이며 이를 계산하는 방법을 이해하겠습니다.

If the AMM function is convex (the price increases as we buy / price decreases as we sell), then a single trade with no transaction fee compensation will always cause liquidity providers to lose money. Suppose one trade causes the AMM function to move from point 1 to point 2. The spot price (absolute value of the function’s derivative) at point 1 and point 2 are P1 and P2. P3 is the actual trading price. Due to the nature of convex functions, P1 > P3 > P2. Impermanent loss is defined as the difference in value between the current value of liquidity provider’s tokens in the pool after trading and the current value of liquidity provider’s tokens if he simply holds onto his tokens and does not use them for liquidity provision, which are denoted by V and Vheld. For convenience, impermanent loss and price will be expressed in terms of token Y (the price of 1 token Y is unit 1). After some simple derivations, it is easy to show that impermanent loss is always less than zero (x2 > x1, P2 < P3).

유니스왑³ V2는 간단하지만 강력한 공식을 사용해 거래를 결정합니다. 풀 토큰 준비금의 곱은 상수입니다. 뱅코르와 비교하면 네트워크 토큰을 제거했습니다. 거래는 유동성 풀의 토큰 번호에 의해 완전히 결정됩니다.

이 함수의 특성상 풀에 있는 두 토큰의 가치는 항상 동일합니다(이 백서에서 사용하는 가격은 항상 상대적인 가격입니다).

동일한 논리를 사용하여 유니스왑 V2에서 수수료 유무에 따른 단일 거래의 비영구적 손실을 계산하는 것은 어렵지 않습니다. 거래로 인해 가격이 다음에서 변경된다고 가정해 보겠습니다. P 에서 Pk. 백분율로 측정되는 비영구적 손실은 다음의 함수로만 표현할 수 있습니다. k.

이 함수는 위의 수수료 없는 비영구적 손실 수치에서 볼 수 있듯이 당연히 항상 0보다 작거나 같습니다. IL(k) 는 가로축이 대수 공간에 그려지면 대칭이 됩니다. 요점은 상대적 가격 변동이 클수록 비영구적 손실이 커진다는 것입니다. 이는 유동성 공급자가 풀에서 더 가치 있는 토큰을 매입하고, 덜 가치 있는 토큰을 더 많이 보유하기 때문으로 설명할 수 있습니다.

다음으로, 어떻게 IL(k) 가 트랜잭션 수수료를 추가하면 어떻게 동작하는지 살펴보겠습니다:

비영구 손실 함수 IL(k, ρ) 는 수수료가 없는 비영구 손실 함수와 매우 유사하게 보입니다. 다음과 같이 설정하여 건전성 검사를 수행할 수 있습니다. ρ 를 0으로 설정하여 동일한 결과를 얻을 수 있습니다. 일반적인 유니스왑 V2 수수료 비율은 다음과 같습니다. ρ = 0.3%. 비영구적 손실 함수를 플롯할 때 대략 0을 초과하는 부분이 있음을 알 수 있습니다. k = 0.994에서 1(대략 2ρ 스팬). 이 영역에서 비영구적 손실은 양수이며, 이는 유동성 공급자가 실제로 가치를 얻는다는 것을 의미합니다(이 영역에서는 벌어들인 거래 수수료가 손실을 능가합니다). 거래 수수료를 도입하면 가격이 특정 범위에서 움직일 때 유동성 공급자는 양수 이득을 얻게 됩니다.

위의 논의에서는 상대 가격이 하락하는 경우만 고려했습니다. 또한 정확한 범위를 계산할 수도 있습니다. k 의 정확한 범위를 계산할 수도 있습니다.

언제 ρ 가 작을 때, 전체 범위의 k의 총 범위는 두 가지 조건(가격 상승 및 하락)을 모두 고려할 때 약 4ρ (2ρ 각각). 즉, 가격이 2ρ 이내로 가격이 움직이면 유동성 공급자는 플러스 이득을 얻게 됩니다. 토큰 준비금 측면에서 최대 거래량을 계산할 수도 있는데, 이는 당연히 다음과 같습니다. ρ 와 같을 때 ρ 가 작을 때와 같습니다.

가격 변동성이 커지면 유동성 공급자가 항상 손해를 보는 것처럼 보입니다. 하지만 실제로는 그렇지 않습니다. 우리는 이 수수께끼를 해결한 데이브 화이트 외⁴의연구를 잘 알고 있습니다. 안타깝게도 이 입문 수준의 중간 논문에서는 다루지 못했습니다. 향후 이 문제를 더 연구할 계획입니다.

유니스왑 V3를 포함한 다른 인기 있는 AMM 알고리즘의 비영구적 손실 도출에 대해서는 Jiahua Xu 외⁵의멋진 논문을 참고하시기 바랍니다. 이러한 파생상품은 다음 기회에 다룰 예정입니다.

장점: 풀에서 가격을 결정하기 위해 토큰 번호의 볼록 함수를 최초로 구현했습니다.

단점: 유동성 공급이 모든 가격대에 걸쳐 고르게 제공되므로 자본 효율성이 낮습니다.

유동성 효용을 높이고 비영구적 손실 위험을 줄이기 위해 Uniswap⁶ V3는 사용자가 특정 가격 범위 내에서만 유동성을 제공할 수 있도록 합니다.

유니스왑 V3 백서에서 발췌

이는 유니스왑 V2 기능의 번역을 통해 이루어집니다:

유니스왑 V3 백서에서 발췌

함수를 점의 y 값만큼 아래로 변환 a의 y 값만큼 아래쪽으로, 그리고 점 b로 변환하면 위의 그림과 방정식에 표시되고 설명 된대로 ab 사이에서 동일한 유효 거래 결과를 보장합니다. 가격이 이 범위를 벗어나면 토큰 보유량 중 하나가 매진되어 이 가격 범위에 유동성이 효과적으로 집중됩니다.

댄 로빈슨⁷의훌륭한 논문에서 여러 AMM의 유동성 분포를 계산하는 방법을 확인할 수 있습니다.

또한 같은 가격대에 있는 두 유동성 공급자의 유동성을 간단히 합산할 수 있음을 간단하게 보여줄 수도 있습니다.

유동성을 입금할 때 각 자산의 가치가 유니스왑 V3에서 반드시 같지는 않다는 것을 위에 나와 있습니다. 다음과 같은 경우에만 P 의 기하평균과 같을 때만 PaPb의 기하평균과 같으므로 각 자산의 값은 서로 같습니다. 다음과 같은 경우 P 가 기하 평균보다 작으면 자산 X의 값이 자산 Y의 값보다 큽니다. P 가 기하평균보다 크면 자산 X의 값이 자산 Y의 값보다 작습니다.

현재 가격이 유동성 공급자가 설정한 가격 범위를 완전히 벗어난 경우, 유니스왑 V3는 유동성 공급자의 입력을 범위 주문으로 간주하고 한 가지 유형의 토큰만 입금할 수 있도록 허용합니다(유형은 가격 범위가 현재 가격보다 완전히 높은지 또는 낮은지에 따라 다릅니다). 예를 들어 유동성 풀이 이더와 다이로 구성되어 있다고 가정해 보겠습니다. 가격 범위가 이더리움의 현재 가격보다 완전히 높으면 사용자는 이더리움만 입금할 수 있습니다. 가격 범위가 현재 이더리움 가격보다 완전히 낮으면 사용자는 다이만 입금할 수 있습니다. 가격이 유동성 공급자가 설정한 가격 범위를 완전히 넘으면 입금한 자산은 모두 다른 유형의 토큰으로 전환됩니다. 사용자는 한 가지 유형의 토큰만 입금할 수 있기 때문에 지정가 주문은 기존 지정가 주문(이익실현 주문, 매수 지정가 주문) 4가지 중 2가지 주문만 실현할 수 있습니다. 반면에 매수-손절 주문과 손절 주문은 실현할 수 없습니다. 현재로서는 지정가 주문의 토큰 유형을 제한하는 목적이 무엇인지 알 수 없습니다.

장점: 유니스왑 V3는 유동성 분배 개념을 도입하여 사용자가 가격 범위에서 유동성을 예치할 수 있도록 합니다. 유동성을 집중시킴으로써 자본 효율성을 향상시킵니다. 동일한 가치의 자산을 예치할 때 더 높은 유동성과 낮은 슬리피지를 달성할 수 있습니다. 또한 가격 범위에서 유동성을 제공하면 어떤 식으로든 비영구적 손실의 위험이 낮아집니다.

단점: 사용자는 지정가 주문을 할 때 특정 유형의 토큰만 입금할 수 있습니다. 따라서 매수 주문과 손절 주문은 실현할 수 없습니다.

유니스왑 V2와 V3는 AMM 알고리즘에 CPMM과 유동성 분배를 도입했습니다. 가격 범위에서 유동성을 제공함으로써 유니스왑 V3는 유동성 분포를 변경하여 가능한 모든 AMM이 될 수 있는 범용 AMM이 될 수 있습니다.

밸런서

밸런서⁸는유니스왑 V2의 2토큰 풀을 멀티토큰 풀로 확장합니다. 밸런서 풀의 각 자산 유형별 가치는 1을 더하는 불변 가중치를 갖습니다. 이는 각 자산의 준비금 수의 거듭제곱이 상수라는 것과 같다는 것을 어렵지 않게 알 수 있습니다. 자산의 가격 n 의 가격은 자산 t 에 대한 자산 n의 가격은 자산의 준비 수량과 tn의 비율로 도출할 수도 있습니다.

상수 불변량을 기반으로 다양한 입력값을 가진 트레이딩 공식을 도출할 수 있습니다(자산 간 거래 o 와 자산 i). 자산 o 는 항상 매입한 자산입니다. 자산 i 는 전송된 자산입니다. AB 는 송금/수령한 토큰과 현재 토큰 보유량입니다. 토큰을 계산할 수도 있습니다. i 보낸 토큰 또는 토큰 o 를 계산할 수도 있습니다.

또한 밸런서는 스마트 주문 라우터(SOR⁹) 알고리즘을 도입했습니다.

https://docs.balancer.fi/v/v1/smart-contracts/sor/

이 알고리즘의 일반적인 개념은 주문을 여러 개의 작은 조각으로 나누어 서로 다른 밸런서 풀에서 거래하여 더 나은 스왑 결과를 얻는 것입니다. 풀 1과 풀 2에서 거래하고 싶다고 가정해 보겠습니다. 총 금액이 N 이 아래와 같다면 A 이면 풀 1의 가격이 항상 풀 2의 가격보다 높으므로 풀 1에서만 거래합니다. 총 금액이 A를 초과하면 주문의 일부는 풀 1에서, 일부는 풀 2에서 거래합니다. 각 풀에서 거래된 금액은 각 풀의 가격을 동일하게(B + C = N).

최적의 전략은 항상 각 풀의 가격을 동일하게 만드는 전략이라는 것을 쉽게 증명할 수 있습니다(가격이 동일하지 않은 경우 스왑 결과를 개선하기 위해 항상 더 나은 가격을 가진 풀을 찾을 수 있습니다).

일반적으로 거래 금액에 대한 가격 함수는 비선형 함수입니다. 밸런서는 가격 함수를 선형 함수로 단순화합니다. 다음과 같은 경우 n 풀이 있는 경우 최적의 전략은 다음과 같이 표현할 수 있습니다:

해당 풀에 있는 모든 토큰을 스왑할 때 스왑 전 다른 모든 가격 함수의 초기 값과 동일한 가격을 가져올 수 없는 가격 함수가 존재한다면, 사소한 최적의 전략은 해당 풀에 있는 모든 토큰을 스왑하는 것입니다. 더 복잡한 계산을 하기 전에 먼저 이 조건이 충족되는지 확인해야 합니다. 일부 가격 함수의 초기값만 일치할 수 없는 경우 해당 가격 함수만 계산에서 제거해야 합니다.

이 계산에서는 가스 요금은 고려되지 않습니다. 실제로 최적의 전략은 경로 이득과 가스 요금 손실 사이의 균형을 유지해야 합니다.

SOR 알고리즘은 더 넓은 맥락에서 사용될 수 있다고 생각합니다. 예를 들어, 가격 함수는 다른 AMM 프로토콜 풀의 함수가 될 수 있습니다. 현재 지식의 한계로 인해 실제 AMM 애그리게이터가 더 나은 가격을 달성하기 위해 동일한 종류의 로직을 사용하는지 여부는 확실하지 않습니다. 가격 함수 근사치가 없는 보다 일반적인 솔루션은 이 백서의 뒷부분에서 논의할 것입니다.

장점: 밸런서는 2토큰 풀을 멀티토큰 풀로 일반화하고, 사용자에게 더 나은 가격을 제공하기 위해 SOR 알고리즘을 도입했습니다.

단점: "유동성 풀은 가장 약한 자산만큼만 강하다." 한 풀에 토큰 유형이 많을수록 리스크가 커집니다.

밸런서는 가격 최적화 알고리즘을 통해 토큰 가치를 유연하게 분배할 수 있는 멀티토큰 포트폴리오 관리 도구입니다.

커브

커브는 가격 변동성을 낮추기 위해 상수합시장 메이커(CSMM)와 상수상품시장 메이커(CPMM)를 병합합니다. 이 알고리즘은 유니스왑/밸런서 모델에 고정 가격 부분을 추가하여 결과 함수가 특정 가격에 고정되도록 만든다고 생각하면 됩니다.

스테이블스왑으로 알려진 Curve¹⁰ V1은 스테이블코인 거래를 위한 알고리즘을 설계합니다. CSMM에 가중치를 곱하고 CPMM을 추가합니다:

먼저 유동성 풀에 있는 각 토큰의 수가 동일한 특별한 경우를 생각해 보겠습니다. 균형 보유 시 방정식을 표시하는 것은 간단합니다(χ 는 가중치입니다, Dⁿ-¹를 곱하면 CSMM과 CPMM의 크기가 같아집니다). 그러나 유동성 풀이 평형을 벗어난 경우, 다음과 같은 경우 χ 가 상수인 경우 방정식은 더 이상 유지되지 않습니다. 따라서 우리는 χ 를 동적으로 만들어야 합니다. 곡선 V1은 다음과 같은 함수 형태를 선택합니다. χ 의 함수 형태를 선택합니다. 의 함수 형태를 선택하며, 극단적인 불균형 상태에서는 0이 되며, 이는 방정식이 CPMM에 의해 지배된다는 것을 의미합니다. 평형 상태에서는 χ 는 다음과 같습니다. A. A 는 과거 데이터를 시뮬레이션하여 최적화된 상수입니다. 대체 χ 를 대입하면 항상 성립하는 방정식이 나옵니다.

다음으로, 스테이블스왑이 실제로 스왑 결과를 계산하는 방법을 도출해 보겠습니다. 풀의 현재 토큰 번호를 기반으로 다음과 같이 계산할 수 있습니다. D. 예를 들어, 토큰 수량 j로 스왑하려면 xⱼ 를 분리하고 xⱼ:

방정식은 이차 방정식으로 축소할 수 있습니다. 안타깝게도 현재 바이퍼에는 이차 방정식을 풀 수 있는 수학 라이브러리가 없습니다. 따라서 스테이블스왑은 뉴턴의 방법을 구현하여 다음을 해결합니다. xⱼ. 이 반복 공식은 반복할 때마다 정밀도가 두 배로 증가합니다. 따라서 허용 가능한 xⱼ 를 설정된 가스 한도 내에서 계산할 수 있습니다. 마지막으로 xⱼ 의 차이는 스왑 전과 후의 토큰 수량 j 가 매입한 금액입니다.

스테이블스왑 백서에서 발췌
스테이블스왑 백서에서 발췌

스테이블스왑 시장 메이커는 CPMM과 달리 x + y = 상수에 대해 평탄화됩니다. 이렇게 하면 스왑 가격이 균형점 근처에서 매우 작은 미끄러짐으로 1에 가깝거나 같게 유지됩니다(풀의 토큰 중 하나가 거의 매진되지 않은 경우). 풀에 있는 토큰 하나가 거의 매진되면 가격이 급격히 떨어지기 시작합니다. 이는 이해하기 쉽습니다. 함수의 곡률/미끄러짐이 다른 곳에 집중되거나 밀려서 평형점 근처에서 작은 미끄러짐을 보장합니다.

이 모델의 CPMM과 동적 가중치는 정보에 기반한 초대형 주문을 처벌하여 풀의 토큰이 완전히 매진되는 것을 방지하는 데 사용됩니다.

장점: 커브의 스테이블스왑은 동적 가중치와 함께 CSMM과 CPMM을 추가함으로써 매우 작은 슬리피지를 달성하여 스테이블코인에 이상적입니다.

단점: 가격은 항상 1로 고정되어 있습니다. 시장 가격이 풀 가격과 크게 다를 경우 풀은 매입됩니다. 따라서 스테이블스왑은 스테이블코인에서만 작동합니다.

보다 원활한 가격 전환과 사용자 정의 가능한 가격 페그를 보장하기 위해 Curve¹¹ V2는 동적 가중치를 수정합니다. χ K로 수정합니다:

K0 은 0(불균형)과 1(평형) 사이에서 변화합니다, χ K (정규화된 A)의 함수로 K0 의 함수로 나타낸 그림이 아래에 나와 있습니다:

위의 그림에서 커브 V2가 어떻게 가격 전환을 부드럽게 하는지 파악할 수 있습니다. 기본적으로 균형에서 멀어질 때 동적 가중치를 빠르게 감소시킵니다. 낮은 γ 가 낮을수록 하락이 더 빠릅니다. 동적 가중치를 0으로 빠르게 감소시키는 것은 풀이 약간 불균형하더라도 함수가 CPMM과 훨씬 더 비슷하게 작동하도록 강제하는 것과 같습니다.

트위터¹²에같은 개념을 설명하는 DW의멋진 트윗이 있습니다.

가격 전환 문제가 해결되었습니다. 이제 커브 V2가 1이 아닌 다른 가격 페그를 구현하는 방법에 대해 알아보겠습니다. 가격 페그(백서에서는 가격 척도라고 부릅니다)가 있다는 것은 마켓 메이커 커브에서 스케일링된 토큰 숫자가 동일한 균형점이 존재한다는 것을 의미합니다:

스케일링된 토큰 숫자는 스테이블스왑과 유사한 방정식을 만족합니다. 가장 간단한 2토큰 풀을 예로 들면, 마켓 메이커 함수는 다음과 같이 표현할 수 있습니다. A, γ, p, D, x, y. 이 함수는 다음에 대한 입방 함수로 단순화할 수 있습니다. x, y 에 대한 섹틱 함수 ( D).

일반적인 값으로 이 함수의 플롯은 아래와 같습니다:

토큰 가격 x 토큰에 상대적인 y 도 플롯할 수 있습니다. 커브 V2 가격 함수에는 평형점(1000, 1000) 근처에서 일정한 부분이 있습니다. 커브 V2는 스테이블 스왑에 비해 가격 변동이 완전히 지연되는 것이 아니라 약간 지연됩니다. 거래 금액이 증가함에 따라 가격은 CPMM에 비해 더 작은 슬리피지로 반응하기 시작합니다. 요약하자면, 커브 V2는 평형점 근처에서 매우 작은 슬리피지를 달성하고 다른 지역에서는 CPMM보다 더 나은 슬리피지를 달성합니다. 1이 아닌 다른 가격 페그의 경우, 우리는 단순히 p 를 변경하면 됩니다. 따라서 가격 페그 문제도 해결됩니다.

스왑 결과를 계산하기 위해 StableSwap에서도 비슷한 뉴턴의 방법을 사용할 수 있습니다. 먼저 D 를 계산합니다(이번에는 방정식이 훨씬 더 복잡하므로 뉴턴의 방법을 사용합니다). 둘째, 토큰 수량 i로 스왑하려면 다시 뉴턴의 방법을 사용하여 다음을 해결합니다. xᵢ. 다시 말하지만, (가격 척도로 정규화된) 차이는 토큰의 양이 될 것입니다. i 가 매입한 토큰의 양입니다 ( xᵢ 는 모두 스케일링된 토큰 숫자입니다).

다항식 함수의 근을 설정된 가스 한계 내에서 풀 수 있도록 하기 위해 곡선 백서에서는 함수의 매개변수뿐만 아니라 선택한 시작 추측에 대해 설명합니다. 이러한 최적의 값을 결정하기 위해 퍼징(가설 프레임워크)이라는 방법을 사용합니다. 현재로서는 이 방법에 대해 자세히 알지 못하며 더 자세히 알아보고 싶습니다.

작은 슬리피지(균형점 근처에서 거래)를 보장하기 위해 커브 V2는 가격 척도를 변경하여 시장 조성자 기능을 지속적으로 리페깅합니다. 그러나 리페깅은 유동성 공급자가 감내해야 하는 가치 손실로 이어질 수 있습니다. 커브 V2는 Xcp 라는 변수를 도입하여 이 문제를 완화합니다:

한 번의 리페그 후 손실이 Xcp (원래의 Xcp)보다 크면 알고리즘은 마켓 메이커 기능을 동일하게 유지합니다. 백서에서는 간략하게만 설명하였으므로 향후 이에 대한 몇 가지 질문에 답변해드리고자 합니다. Xcp. 소스 코드를 살펴보면 도움이 될 수 있습니다.

  1. Does the Xcp 값은 풀의 현재 토큰 번호를 사용하여 계산된 값에 비례하나요?
  2. 유동성 입금 또는 출금 시 Xcp?
  3. 유동성 인출이 Xcp, 유동성 인출이 중단되면 Xcp 의 감소가 너무 크면 중단되나요?

리페깅을 위해 커브 V2는 EMA(지수이동평균) 가격 오라클을 사용해 오라클 가격을 결정합니다. 새로운 오라클 가격 벡터는 마지막 스왑 가격 벡터와 이전 오라클 가격 벡터의 선형 조합에 의해 결정됩니다. 새 가격 척도 벡터는 오라클 가격과 비슷한 방향으로 변화하지만 새 오라클 가격과 완전히 같지는 않습니다. 상대적 가격 변동 단계 크기를 도입하여 가격 척도 벡터를 오라클 가격보다 뒤처지게 합니다. s. 이 방정식은 유클리드 기하학을 사용하여 쉽게 도출할 수 있습니다. EMA 가격 오라클과 가격 척도 지연은 변동성이 큰 최근 가격 움직임의 영향을 줄이고 장기 시장 가격을 더 잘 나타내기 위한 것입니다.

상대 가격 변동 스텝 크기 관련 s는 "새로고침 커브 금융 웹페이지" 경험을 기반으로 합니다, s 는 일부 풀의 경우 최소 수십 분 단위로 변경됩니다. Curve V2 업데이트 방법 s 는 현재 저희가 아는 범위 밖의 흥미로운 질문입니다. 소스 코드를 살펴보는 것도 도움이 될 것입니다.

하나의 리페깅 프로세스를 보여주는 플롯은 아래와 같습니다:

스왑을 다음 위치에서 시작한다고 가정해 보겠습니다. x = 에서 스왑을 시작하고 x = 1400. 원래 가격은 1에 고정되어 있습니다. 스왑 후 가격은 0.6으로 이동합니다. 단순화하기 위해 데모 목적으로만 새 가격 척도를 현물 가격과 동일하게 설정하고(가격은 이제 0.6으로 고정됨), 섹스틱 방정식을 풀면 다음과 같이 됩니다. D. 이제 마켓 메이커 함수는 위와 같이 0.6에 고정됩니다.

리페깅은 본질적으로 현재 토큰 숫자 지점((()을 통과하는 새로운 마켓 메이커 함수를 찾는 것과 같습니다.x, y)를 통과하는 새로운 시장 메이커 함수를 찾는 것과 같으며, 균형점은 ((x0, y0)에 평형점을 두어 y0/x0 에서 도함수의 절대값이 (x0, y0). 재미있는 프로젝트는 실제 커브 파이낸스 풀 파라미터를 가져와 리페깅 과정을 더 잘 보여주는 데모(아마도 애니메이션)를 만드는 것입니다.

위에서 설명한 커브 V2의 마켓 메이커 기능으로 인해 거래 수수료는 동적 가중치가 있는 2단계 거래 수수료의 선형 조합으로 만들어 균형점(현재 가격 변동이 스테이블스왑 또는 CPMM에 더 가까운지)에서 얼마나 멀리 떨어져 있는지를 측정하는 것이 합리적입니다. 수수료는 fmidfout 커브 V2에서 선택한 값은 0.04%와 0.4%입니다. 2토큰 풀에서 수수료가 어떻게 변하는지를 보여주는 그림이 아래에 나와 있습니다(리페깅이나 유동성 변화가 없다고 가정할 때):

장점: 마켓 메이커 기능은 스테이블코인뿐만 아니라 모든 토큰에 적합한 모든 가격에 고정할 수 있습니다. 스테이블스왑보다 가격 전환이 더 부드럽습니다. 또한 커브 V2는 내부 가격 오라클에 따라 가격 척도를 지속적으로 업데이트하여 시장 가격을 더 잘 나타내고 균형점에 가까운 거래를 보장합니다. 여기에 동적 수수료가 더해져 더 나은 가격을 보장합니다.

단점: 3차 방정식과 6차 방정식을 풀어야 하므로 가스 요금이 높아질 수 있습니다. 내부 가격 오라클에만 의존하여 리페깅하는 것은 위험할 수 있습니다. 가격 척도가 시장 가격과 눈에 띄게 차이가 나는 시나리오가 있는지 궁금합니다. Xcp 기준을 통과하는 시나리오가 있는지 궁금합니다. 이 경우 다른 오라클과 가격을 교차 확인하는 것이 도움이 될 수 있습니다.

커브의 스테이블스왑과 동적 페그 V2는 거래 슬리피지를 최대한 줄이기 위한 것입니다. 스테이블 스왑은 항상 1에 페그하는 반면 V2는 페그가 시장 가격을 따르도록 합니다.

아래에서는 AMM 알고리즘의 최근 발전 사항과 개선 가능성에 대해 설명합니다.

DEX 애그리게이터

DEX 애그리게이터는 더 나은 스왑 결과를 얻기 위해 기존 AMM 프로토콜을 통합하는 프로토콜입니다. 위에서 설명한 뱅클러의 SOR 알고리즘은 DEX 애그리게이터에서도 작동하여 수학적으로 최적의 스왑 전략을 보장합니다.

가격 함수 근사치를 사용하지 않는 밸런서 SOR 알고리즘의 일반적인 솔루션은 아래와 같이 표현할 수 있습니다:

가격 함수는 생성되는 AMM 알고리즘에 따라 어떤 형태든 될 수 있기 때문입니다. 즉, 총 토큰 수 보존과 동일한 최종 가격 등의 조건을 만족하는 방정식에는 분석 솔루션이 없을 수도 있습니다.

따라서 머신러닝과 같은 분야에서 일반적으로 사용되는 경사 하강이라는 기법을 소개합니다. 손실 함수는 서로 다른 가격 함수의 값의 분산으로 정의합니다. 시작 추측을 선택한 후(사소하고 정보가 없는 추측이라면 스왑 금액과 동일한 N/n 과 같은 스왑 금액)을 선택한 후, 반복(각 스왑 금액을 해당 변수에 대한 손실 함수의 편미분과 학습률을 곱한 값으로 변경)할 수 있습니다. l)을 반복하여 오차 허용 오차를 설정한 최적의 결과를 얻을 수 있습니다.

최종 동일 가격의 함수로서 총 거래 금액은 단조롭기 때문에, 이 방법은 글로벌 최소값(분산 = 0)을 찾을 수 있어야 합니다. 다시 말하지만, 위의 계산은 사소한 해결책이 없다고 가정합니다(해당 풀에 있는 모든 토큰을 스왑할 때 스왑 전 다른 모든 가격 함수의 초기값과 동일한 가격을 가져올 수 없는 가격 함수는 존재하지 않습니다).

피벗 알고리즘

피벗 알고리즘은 마켓 메이커 함수를 고정점(x0, y0).

가격은 (x0, y0)의 가격은 항상 현재 시장 가격입니다. Pt 가 되도록 설계되었습니다. 이는 개념적으로 차익거래가 풀을 항상 포인트(x0, y0). 이 기능으로 인해 비영구적 손실은 0이 됩니다. 그러나 실제로 이 알고리즘에는 현재 예비금(x, y)와 (x0, y0). 즉, 풀이 다시 (x0, y0)로 돌아갈 때까지 기다린 다음 마켓 메이커 함수를 변경해야 합니다.

위 그림에서 볼 수 있듯이, 스왑 후 시점은 새로운 시장 조성자 기능(파란색과 파란색 점선 곡선)에 없습니다. 풀에는 다시 돌아갈 인센티브가 없을 수 있습니다(x0, y0)로 돌아갈 유인이 없을 수도 있는데, 현재 시장 가격이 현재 준비금의 현물 가격보다 작을 경우입니다.

두 함수를 모두 통과하는 함수가 있는지 궁금합니다 (x, y)와 (x0, y0)에서 조정 가능한 파생물을 사용하여 (x0, y0)에서 시장 가격에 맞게 조정할 수 있습니다. 함수가 볼록하다고 가정하면 시장 가격은 두 점 사이의 선형 세그먼트 기울기보다 작을 수 없습니다. 따라서 시장 조성자 함수가 볼록해야 하는 경우 이 문제에 대한 완전한 해결책이 없을 수 있습니다.

단면 유동성

유동성 공급자가 유동성을 예치할 때 모든 유형의 자산을 예치하는 것은 불편할 수 있습니다. 방코르가 취하는 탄력적 공급 방식과 다른 메커니즘이 있는지 궁금합니다. 직관적으로 두 가지 해결책이 있습니다: 1. 동일한 프로토콜을 사용하여 토큰의 일부를 먼저 스왑하는 방법 2. 일방향 유동성을 예치하고 차익거래를 통해 가격을 시장 가격으로 되돌릴 수 있는 방법.

예를 들어, 동일한 가치를 지닌 2개의 토큰 풀에 유동성을 예치하고자 합니다.

토큰만 있습니다 x. 스왑 후 각 토큰의 가치가 동일해지려면 얼마나 많은 토큰을 스왑해야 하는지 계산하는 것은 어렵지 않습니다. 또한 다음과 같이 쉽게 나타낼 수 있습니다. β 는 항상 0과 1 사이이므로 합리적인 결과라는 것을 쉽게 알 수 있습니다. 하지만 스왑 후의 가격은 유동성을 예치할 때의 가격과 다를 수 있습니다. 따라서 프로토콜이 실제로 스왑과 유동성 예치를 하나의 원자 연산으로 만드는지 궁금합니다. 스왑을 할 때 가격 미끄러짐도 있습니다. 밸런서나 커브와 같은 프로토콜이 일방적인 유동성 예치를 어떻게 처리하는지는 현재로서는 의문으로 남아 있습니다. 슬리피지가 작은 경우 위에서 설명한 작업을 수행하는 것이 합리적입니다.

밸런서 및 커브 백서에 설명된 두 번째 접근법은 상관없이 입금하는 것입니다. 이는 가격을 상당히 변화시킬 수 있습니다. 차익거래로 인해 비영구적 손실도 상당할 수 있습니다. 개인적으로 밸런서 백서 및 문서에서 이에 대한 카운터 측정은 찾아볼 수 없습니다. 반면 커브는 편측 유동성을 예치할 때 0%에서 0.02% 범위의 불균형 수수료를 부과합니다. 실제로 차익거래와 비영구적 손실로 인해 두 번째 접근 방식에서는 편측 유동성을 예치하는 데 실질적인 인센티브가 없습니다.

단면 유동성과 관련된 다른 혁신에 대해 자세히 알아보는 것도 흥미로울 것입니다.

γ 값

커브 V2에는 다음과 같은 상수가 있습니다. γ. 이를 동적으로 만들면 어떻게 될까요? 예를 들어, 다음과 같은 함수로 만들 수 있습니다. K0. 가장 간단한 경우는 다음과 같게 만드는 것입니다. K0. 여기서 동기는 함수가 평형에 가까울 때는 StableSwap과 비슷하게, 멀어질 때는 CPMM과 비슷하게 작동하도록 하는 것입니다.

보라색 점선 곡선은 스테이블스왑과 작은 γ 커브 사이에 있는 보라색 점선 커브는 스테이블스왑과 커브 V2 사이에 마켓 메이커 함수를 제공해야 합니다. 그러나 마켓 메이커 함수를 플롯하면 스테이블스왑과 똑같이 작동합니다:

이 문제에 대한 두 가지 해결책이 있습니다. A 를 더 작게 2. K0 의 더 높은 거듭제곱수를 선택하여 γ. 둘 다 실행 가능해 보이지만 1. A 가 큰 숫자가 되는 것은 마켓 메이커가 가격에 고정된 기능을 수행하도록 하는 것입니다. 저희가 수행한 추가 테스트에 따르면 A 를 변경해도 기능적 동작에 차이가 없는 것으로 나타났습니다(마켓 메이커 기능은 변경 후에도 여전히 스테이블스왑처럼 보입니다. A).

두 번째 해결책은 가스 요금을 더 높게 책정하는 것입니다. 더 높은 전력 수인 K0 의 거듭제곱수가 높을수록 풀어야 하는 고차 다항식 방정식이 높아집니다. 실제로 커브 V2가 특정 형태의 동적 가중치를 선택한 이유는 다음과 같습니다. K 의 함수 동작을 모방하기 위한 것입니다. K0 함수의 동작을 모방하는 동시에 다항식의 차수를 더 높게 만들지 않기 위해서입니다.

여기서 흥미로운 질문은 커브 V2의 기능을 동일하게 또는 더 잘 유지하면서 풀어야 하는 방정식을 단순화하는 더 나은 동적 가중치를 찾을 수 있는가 하는 것입니다. 이러한 동적 가중치를 설계할 때는 작은 슬리피지와 정보에 입각한 대량 주문에 반응하는 마켓 메이커 기능의 기능 사이에서 균형을 유지해야 한다는 점도 명심해야 합니다. 가격 페그만 있는 스테이블스왑은 페그 가격이 시장 가격과 다를 경우 거의 모든 토큰이 매수되기 때문에 이러한 측면에서 작동하지 않습니다. 잔액이 유지될 때만 리페깅이 가능합니다.

가격 범위

가격 범위 개념을 커브 V2에 적용할 수 있습니다. 풀의 토큰 수에 대한 가격의 분석적 표현이 없으므로 가격과 토큰 수 사이의 관계를 보간해야 합니다. 마켓 메이커 기능에 적용되는 시프트의 양은 가격 범위에 따라 결정됩니다. 이러한 프로그램을 작성하면 자본 효율성을 더욱 높일 수 있습니다.

Clipper

Clipper¹³는소규모 거래에 가장 적합한 AMM 알고리즘을 사용합니다. 두 가지 극단적 인 경우 (k = 1 및 k = 0)로 CPMM (Constant Product Market Maker)과 CSMM (Constant Sum Market Maker)을 일반화합니다.

토큰이 두 가지 유형(X와 Y)만 있을 때, 불변수는 다음과 같은 더 간단한 형태로 축소될 수 있습니다. x0y0 은 초기 유동성 공급자가 설정한 토큰 번호입니다. 아래는 풀이 다른 조건에서 작동하는 방식입니다. k v값에서 풀이 작동하는 방식입니다. x축과 y축은 다음과 같이 정규화됩니다. x0y0.

더 작은 k 값은 (1, 1) 근처에서 더 낮은 미끄러짐(함수가 덜 볼록함)에 해당합니다. 언제 k 가 0과 1 사이일 때, 불변 함수는 x축과 y축이 교차할 수 있습니다. 이는 풀에 있는 토큰이 매진될 수 있음을 의미합니다. 이러한 교차점에서의 가격은 0이며, 이는 전환점까지 가격이 CPMM 가격보다 높다는 것을 의미합니다. 전환점을 지나면 CPMM 가격이 더 좋습니다. 아래 그림에서 이를 설명할 수 있습니다:

다시 X축이 정규화됩니다. 초기 지점(1, 1)에서 멀어질수록 Y에 대한 X 토큰의 가격은 감소합니다. 교점이 발생하는 위치를 정확하게 계산할 수 있습니다:

장점: 도입으로 k를 도입함으로써 Clipper는 거래량이 적을 때 낮은 슬리피지(더 나은 가격)를 달성할 수 있습니다. 클리퍼 백서의 다음 차트는 이 점을 잘 보여줍니다.

Clipper 백서에서 발췌

단점: 거래 수량이 특정 임계값을 초과하면 가격이 CPMM보다 훨씬 나빠집니다.

더 나은 가격을 보장하기 위해 알고리즘은 지속적으로 리페그( x0y0를 변경)하여 현재 풀 보유량을 (1, 1) 지점 근처에 유지해야 합니다. 이는 커브가 사용하는 것과 동일한 메커니즘을 사용할 수 있습니다. 알고리즘은 시장 가격을 추적하는 내부 가격 오라클을 따라 페그를 다시 설정합니다. 기본적으로 다음 공식을 푸는 것과 같지만 이번에는 다음과 같이 계산합니다. x, y 가 알려져 있습니다. P 는 가격 오라클에 의해 주어집니다. 마지막으로 이 방정식을 풀면 x0 에 대해 이 방정식을 풀면 새로운 균형점이 나옵니다.

이를 통해 항상 시장가에 가깝고 슬리피지가 적은 가격으로 거래할 수 있습니다. 현재 Clipper 백서에는 설명되어 있지 않기 때문에 Clipper가 이를 구현하는지 여부는 조사하지 않았습니다. 소스 코드를 자세히 살펴볼 필요가 있습니다.

가격대 개념은 Clipper에도 적용할 수 있습니다:

TWAMM

위에서 설명한 모든 AMM에서는 한 번에 한 방향으로만 거래할 수 있습니다. 최근에 양방향 거래를 동시에 할 수 있는 알고리즘이 나왔다고 하면 어떻게 될까요?

TWAMM¹⁴(시간 가중 자동 시장 메이커, "티왐"으로 발음) 알고리즘은 일정 기간에 걸친 장기 주문을 무한히 작은 가상 주문의 적분으로 변환합니다. 주문은 동시에 양방향으로 진행될 수 있습니다. 또한 동일한 시간 범위에서 동일한 거래 방향으로 체결된 주문은 계산을 단순화하기 위해 함께 합산됩니다. 결과적으로 일정 기간에 걸친 장기 주문은 해당 기간의 시간가중 시장가와 동일한 가격으로 체결됩니다.

현재로서는 CPMM과 LMSR(로그 시장 점수 규칙)이라는 두 가지 유형의 AMM을 위한 폐쇄형 TWAMM 솔루션만 존재합니다.

일정 기간 동안 토큰 X의 총 판매량이 다음과 같은 일반적인 경우를 고려해 보겠습니다. xin 이고 Y의 총 판매량은 yin. X의 판매율은 f(t) 이고 Y의 판매율은 g(t). 토큰 X의 수에 대한 순 변화는 시간 t 에서 t + dt 는 토큰 X의 판매 수에서 이 기간 동안 구매한 토큰 X의 수를 뺀 값으로 계산할 수 있으며, 환율은 dy/dx. 이 기간 동안 토큰 Y의 판매 수량은 무한히 적기 때문에 현물 가격을 실제 환율로 사용할 수 있습니다.

따라서 비선형 일차 미분 방정식에 도달합니다. 형태에 따라 dy/dx, f(t)g(t)를 사용하면 방정식은 폐쇄형 해를 가질 수도 있고 그렇지 않을 수도 있습니다.

CPMM에 적용하면 다음과 같은 경우 방정식을 적분할 수 있습니다. f(t)/g(t) 는 상수이며, 이는 토큰 X와 Y의 판매 전략이 동일하다는 것을 의미합니다. 식을 더 단순화할 수 있습니다:

적분의 분석적 표현이 있습니다. 쌍곡선 함수의 속성을 사용하면 풀의 원래 위치에만 의존하는 멋진 최종 솔루션(거래 후 풀의 토큰 X 숫자)을 얻을 수 있습니다(x0, y0) 및 xin, yin. 최종 토큰 Y 번호는 위치를 전환하여 xinyin, x0 y0 의 최종 표현식에서 xend에 대해 완전히 대칭이기 때문에 CPMM의 시장 조성자 함수는 xy. 토큰 X 번호와 토큰 Y 번호의 곱은 다음과 같습니다. k 와 같습니다.

CPMM에서 파생된 이 형태의 미분 방정식은 실제로 "리카티 방정식"이라는 기술적인 이름을 가지고 있습니다. 리카티 방정식의 일반적인 형태는 다음과 같습니다:

리카티 방정식에 대한 일반적인 폐쇄형 해는 존재하지 않습니다. 그러나 리카티 방정식을 풀 수 있는 특별한 경우가 있습니다. 이러한 경우에 대해 논의하는 논문¹⁵이있습니다. 리카티 방정식의 계수가 이 조건을 만족하는 경우입니다:

그런 다음 리카티 방정식을 베르누이 유형 방정식으로 변환할 수 있습니다. 베르누이 유형 방정식은 아주 쉽게 풀 수 있습니다. 이렇게 하면 이전과 동일한 결과를 얻을 수 있습니다. 위에서 볼 수 있듯이, 이 조건을 만족하는 것은 다음과 같습니다. f(t)/g(t) 를 일정하게 유지하는 것과 같다는 것을 알 수 있습니다.

언제 f(t)/g(t) 가 상수가 아닐 때, 어떤 형태의 f(t)g(t) 의 미분 방정식이 어떤 형태의 닫힌 형태의 해를 갖도록 선택할 수 있는지는 여전히 미해결 과제입니다. 이러한 해를 찾으면 더 많은 옵션이 주어질 것입니다(토큰 X와 Y의 판매 전략이 동일할 필요는 없습니다).

이제 TWAMM을 LMSR에 적용해 보겠습니다:

다시 말하지만, 판매 전략이 동일하다고 가정합니다. 그러면 미분 방정식을 적분할 수 있습니다. 최종 토큰 X와 Y 숫자 식을 다음과 같이 더 단순화할 수 있습니다:

마찬가지로 판매 전략이 다른 경우 미분 방정식이 닫힌 형태의 해를 갖는다는 보장은 없습니다.

일단 우리가 xendyend를 구하면 양쪽이 각각 얼마나 많은 토큰 X와 토큰 Y를 받게 될지 계산할 수 있습니다:

이 기간 동안 동일한 거래 방향의 모든 주문이 함께 풀링되기 때문입니다. 각 개별 트레이더는 자신이 기여한 비율에 따라 토큰의 공정한 몫을 받게 됩니다. xinyin.

장점: TWAMM은 거래 상대방이 동시에 대량 주문에 대해 거래할 수 있도록 허용하여 대량 주문의 가격 변동폭을 줄여줍니다. 가장 이상적인 경우(xin/yin = x0/y0), 제로 슬리피지 트레이딩을 달성할 수 있습니다. 이 경우 xend = x0, yend = y0TWAMM은 기본적으로 유동성을 제공하지 않고 양측 간에 토큰을 교환하는 오더북 역할을 합니다. 장기 주문은 무한히 작은 주문으로 나뉘며, 블록 사이에 가상으로 실행됩니다. 이러한 특성으로 인해 공격자는 한 블록의 끝에 주문을 넣고 다음 블록의 시작에 다른 주문을 넣어야 하기 때문에 샌드위치 공격에 덜 취약합니다.

단점: 주문이 언제든지 만료되도록 허용하면 가스 요금이 매우 높아질 수 있습니다. 이는 적분 결과(논문에서는 이를 "게으른 평가"라고 부름)를 여러 번 계산해야 하기 때문입니다. 최악의 시나리오에서는 모든 단일 블록에 대한 결과를 계산해야 합니다. 따라서 실제로는 계산을 단순화하기 위해 특정 블록에서 주문이 만료되도록 해야 합니다. 게다가 TWAMM이 사용하는 유동성 풀은 가상 주문과 지연 평가의 개념이 없기 때문에 기존 유동성 풀과 달라야 합니다. 일반 트레이더는 TWAMM과 상호작용할 때 지연 평가로 인해 발생하는 추가 가스 수수료를 지불하고 싶지 않습니다(풀은 누군가가 상호작용할 때마다 업데이트됩니다).

또한 YieldSpace¹⁶와같은 시간 종속적 AMM에도 TWAMM을 적용할 수 있습니다:

시장 조성 함수에는 두 가지 형태가 있으며, 두 가지 형태 모두 현재로서는 풀 수 없는 미분 방정식으로 이어집니다. 두 번째 형태의 경우 미분 방정식은 하나의 미분 방정식으로 축소될 수 있습니다.

결론 및 향후 작업

이 포괄적이고 입문적인 스터디 노트 형식의 문서가 AMM 알고리즘에 대해 전혀 모르는 분들과 경험이 많은 분들 모두에게 인사이트를 제공할 수 있기를 바랍니다.

요약하자면, AMM 알고리즘의 핵심은 기본적으로 시장 조성자 함수의 설계와 곡률 분포의 조작에 관한 것입니다. 이에 대해 자세히 설명하는 Guillermo Angeris와 Tarun Chitra¹⁷의논문을 읽어볼 필요가 있습니다. 이 외에도 DEX 애그리게이터와 같은 효율적인 가격 솔루션과 가격 범위와 같은 효율적인 유동성 공급 솔루션이 있습니다. 최근 TWAMM 알고리즘은 중앙화된 거래소에서 흔히 볼 수 있는 오더북 유형의 매치메이킹을 달성하기 위해 AMM 알고리즘을 어떻게 사용할 수 있는지에 대해 조명하고 있습니다. 앞으로 AMM 알고리즘의 미래는 오더북 스타일에 가까워질 것이라고 생각합니다.

향후 작업은 이 논문에서 언급된 몇 가지 문제를 더 깊이 파고들 계획입니다. 여기에는 논문 [4], [5], [7], [16], [17] 읽기, 다른 AMM에 대한 비영구적 손실 공식 도출, 다른 AMM에 대한 유동성 분포 도출, 퍼징 작동 방식 이해, 우리가 질문한 3가지 질문에 대한 답변이 포함됩니다. Xcp에 대한 3가지 질문에 답하고, 가장 효과적인 가격 오라클을 선택하는 방법과 s 값, 커브 리페깅 프로세스의 애니메이션 제작, 단면 유동성에 대한 혁신에 대해 자세히 알아보고, 더 나은 동적 가중치 설계를 시도했습니다. K를 더 잘 설계하고, 다른 AMM에 가격 범위를 적용하고, 다른 AMM에 TWAMM을 적용하고, 더 많은 폐쇄형 솔루션을 찾습니다.

감사

저자들은 이 백서의 주제에 대해 유용한 토론을 해주신 Fangyuan Zhao, Showen Peng, DW에게 감사드립니다. 또한 저자들은 후오비 리서치의 리안슈안에게도 감사를 표합니다. 저자들은 특별히 TWAMM 토론 그룹에 초대하고 통찰력 있는 토론을 해주신 패러다임의 데이브 화이트와 댄 로빈슨에게 감사드립니다.

참조

[1] 방코르 프로토콜, 스마트 컨트랙트를 통한 암호화 토큰의 지속적인 유동성 확보

https://storage.googleapis.com/website-bancor/2018/04/01ba8253-bancor_protocol_whitepaper_en.pdf

[2] 뱅코르 시스템 공식

https://drive.google.com/file/d/0B3HPNP-GDn7aRkVaV3dkVl9NS2M/view?resourcekey=0-mbIgrdd0B9H8dPNRaeB_TA

[3] 유니스왑 V2 코어

https://uniswap.org/whitepaper.pdf

[4] 유니스왑의 금융 연금술

https://research.paradigm.xyz/uniswaps-alchemy

[5] SoK: 자동화된 시장조성자(AMM) 프로토콜을 사용하는 탈중앙화 거래소(DEX)

https://arxiv.org/abs/2103.12732

[6] 유니스왑 V3 코어

https://uniswap.org/whitepaper-v3.pdf

[7] 유니스왑 V3: 범용 AMM

https://www.paradigm.xyz/2021/06/uniswap-v3-the-universal-amm/

[8] 비수탁 포트폴리오 매니저, 유동성 공급자 및 가격 센서

https://balancer.fi/whitepaper.pdf

[9] 스마트 오더 라우터 V2

https://docs.balancer.fi/developers/smart-order-router

[10] 스테이블스왑 - 스테이블코인 유동성을 위한 효율적인 메커니즘

https://curve.fi/files/stableswap-paper.pdf

[11] 동적 페그를 통한 자동 시장 조성

https://curve.fi/files/crypto-pools-paper.pdf

[12] https://twitter.com/dken_w/status/1422623679150649345

[13] 자동화된 시장 조성을 위한 새로운 불변성

https://github.com/shipyard-software/market-making-whitepaper/blob/main/paper.pdf

[14] TWAMM

https://www.paradigm.xyz/2021/07/twamm/

[15] 임의의 함수로 적분 또는 미분 조건을 만족하는 계수를 가진 리카티 방정식의 해석적 해법

https://arxiv.org/abs/1311.1150

[16] 일드스페이스: 고정 수익률 토큰을 위한 자동화된 유동성 공급자

https://yield.is/YieldSpace.pdf

[17] 가격 오라클 개선: 상수 함수 시장 조성자

https://arxiv.org/abs/2003.10001

면책 조항: 본 백서는 일반적인 정보 제공만을 목적으로 합니다. 투자 자문이나 투자 매매 추천 또는 권유가 아니며 투자 결정의 장점을 평가하는 데 사용해서는 안 됩니다. 회계, 법률 또는 세무 자문이나 투자 추천에 의존해서는 안 됩니다. 본 백서는 저자의 현재 의견을 반영한 것이며, 앵커다오랩 또는 그 계열사를 대신하여 작성된 것이 아니며, 앵커다오랩, 그 계열사 또는 앵커다오랩과 관련된 개인의 의견을 반드시 반영하는 것은 아닙니다. 여기에 반영된 의견은 업데이트 없이 변경될 수 있습니다.