그래서 remix를 이용하여 개인 토큰을 하나 만든다. 그리고 DEX2 Contract에 토큰을 전송하고, approve를 하면 준비는 끝났다.
그럼 얼마나 보내고 얼마나 가지고 있어야 할까??
getSwapAmount() 함수의 공식을 보면 amount * to.balanceOf(this) / from.balanceOf(this)다. 여기서 DEX2에 있는 자원은 token1 100개, token2 100개이다.
DEX2 contract에 있는 ATK 코인이 n개, 내가 소유하고 있는 ATK코인이 k개라고 가정하면, 100 * 100/n = 100, (k-100) * 100/(n+100) = 100 2개의 연산이 나온다. 계산을 해보면 100/n = 1, n = 100 (k-100) * 0.5 = 100, k-100 = 200, k = 300
n=100, k=300이라는 결과가 나온다. 그래서 initialSupply를 400으로 하고 100을 DEX2 컨트랙트에 주고 300을 가지고 token을 훔치면 된다.
표로 나타내면 위 그림과 같이 진행된다. 실제로 저렇게 되는지 확인해 보자.
기본 세팅을 하고 시작하면 된다.
이렇게 token1한테 100을 주고 token2한테 200을 주면 DEX2의 잔고가 0이 되고 atk 토큰이 400이 된다.