I am not specialist of blockchain..
저는 코인도 안하는 블새싹입니다.ㅎ🌱
틀린게 있을 수 있는 점 양해 부탁드립니다.
저번 Write Contract 2편(swapTokens)에 이어서
3편 swap 펑션들 갑니다.
실 Contract: 0x10ED43C718714eb63d5aA57B78B54704E256024E
Testnet Contract: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
https://docs.uniswap.org/protocol/V2/reference/smart-contracts/library#getamountsout
https://docs.pancakeswap.finance/code/smart-contracts/pancakeswap-exchange/router-v2
❗ DEX에서 자주 쓰일 것 같은 펑션.
A↔B 토큰 swap하기
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
amountIn: A토큰 swap할 양
amountOutMin: 최소한 swap 원하는 B토큰의 양
path: A토큰 contract address, B토큰 contract address
to: swap한 토큰을 받는 지갑 주소(내 지갑 주소)
deadline: 트잭의 데드라인. 현 Unix Timestamp에서 적당히 200~300 더해주면 된다.
example)
1JNB를 KB로 바꾸려고 합니다.
최소 0.00001 KB는 받아야겠어! 했더니
0.4997 KB 가 swap되었다.
내가 유동성풀에 1:1로 넣어두고 BNB swap 하면서 KB를 0.5KB 뺐더니 1:0.5 비율이 되었나보다.
토큰 대 토큰 swap, 참 쉽죠?🎨
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
또나왔다 SupportingFeeOnTransferTokens
이 수수께끼의 정답을 아시는 분은 댓글 달아주세요..
구글링 해봐도 다 모른다고 함
그냥 첫번째꺼 실패하면 SupportingFeeOnTransferTokens 붙여진거 부른다고 함 ㅋㅋㅋㅋ
0.01 BNB를 받기 token을 swap
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
amountOut: swap하고자 하는 BNB 양
amountInMax: 최대한 넣을 수 있는 A토큰
path: A토큰 contract address, WBNB contract address
example)
0.005 WBNB 를 swap 요청,
최대 100JNB까지 낼 수 있다고 했고,
path에는 JNB, WBNB contract address를 차례대로 넣었다.
트잭 성공 후, 0.005BNB를 받기 65.34 JNB가 나갔다.
드뎌 마지막 function!!!!
특정양의 B토큰을 얻기 위해 A토큰과 swap~
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
amountOut: swap하고자 하는 B토큰 양
amountInMax: 최대한 넣을 수 있는 A토큰
path: A토큰 contract address, B토큰 contract address
example)
5KB를 받고 싶었고, 최대 100 JNB까지 쓸 수 있다고 했음
5KB 바꾸는데 24.86JNB 지출 완!
swap과 liquidity를 반복한 내 지갑...(ㅋㅋㅋㅋㅋ 아주 바쁜 지갑 같다)
이렇게 pancake router 분석 완료했으니
다음 편은 나만의 smart contract 만들어보겠습니다!🎡🎠