I am not specialist of blockchain..
저는 코인도 안하는 블새싹입니다.ㅎ🌱
틀린게 있을 수 있는 점 양해 부탁드립니다.
실 Contract: 0x10ED43C718714eb63d5aA57B78B54704E256024E
Testnet Contract: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
실 bscscan에서의 contract는 단일 파일의 solidity로 이뤄졌다.
아마 flattener로 만든게 아닐까 싶다.
(flattener: solidity 플젝 내 참조하는 여러 파일들을 하나의 파일로 압축해주는 모듈)
https://docs.pancakeswap.finance/code/smart-contracts/pancakeswap-exchange/router-v2
여기에서 PancakeRouter V2 버젼에 대해 function 소개가 잘 나옴
ETH를 ERC-20 기준으로 쓸 수 있게 WETH라는 토큰으로 바꿔야 하는데, 그것의 contract address임.
이더리움 메인넷에서는 WETH, BSC에서는 WBNB
PancakeFactory(아마 주요 펑션을 모아놓은 contract 같음)의 address
직접적으로 call하진 않고, getAmountsOut 펑션에서 쓰임.
아마 토큰 A↔B를 swap한다고 할 때, 50 A 토큰을 바꾸고 싶은 경우 B 토큰이 얼만큼일지 예상해주는 듯
이것도 getAmountOut과 마찬가지로 직접적으로 call하진 않고, getAmountsIn 펑션에서 쓰임.
토큰 A↔B를 swap한다고 할 때, 얼만큼의 A 토큰을 바꿔야 50 B 토큰이 나올지 예상해주는 듯
function getAmountsOut(uint amountIn, address[] memory path) internal view returns (uint[] memory amounts);
토큰 A↔B를 swap한다고 가정.
amountIn에는 A토큰 swap할 양, address[]에는 ["A토큰 address", "B토큰 address"]
그러면 리턴값은 B토큰 swap된 양이 나온다.
function getAmountsIn(uint amountOut, address[] memory path) internal view returns (uint[] memory amounts);
토큰 A↔B를 swap한다고 가정.
amountOut에는 B토큰 swap되었으면 하는 양, address[]에는 ["A토큰 address", "B토큰 address"]
그러면 리턴값은 A토큰 swap할 양이 나온다.
function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB);
"일정량의 자산과 쌍 준비금이 주어지면 다른 자산과 동일한 금액을 반환"
이라고 번역되는데 뭔소린지..? ㅎ
직접 PancakeLibrary.sol을 보니
amountA * reserveB / reserveA 가 리턴값이다
그냥 직접적으론 쓰지 않고, 다른 펑션들에서 쓰이는 것 같다.
Write Function은 다음 포스팅에서~