오픈 제플린의 ERC-20을 이용하여 간단한 스왑을 만들었다. 토큰의 교환비가 결정되도록 하는 알고리즘인 많은 AMM(Auto Market Maker)중에 가장 간단한 CSMM(Constant Sum Market Maker)으로 만들었다. CSMM은 다음과 같은 공식을 가진다. > x+y=k 항상 합이 K로 일정하게 하는 알고리즘이다. x, y는 유동성 풀에 있는 각각 토큰의 개수. x, y의 양이 변해도 k의 양은 고정 A토큰을 넣으면 B토큰으로 동일한 양을 받는다. 한쪽만 일방적으로 넣거나 할경우 한쪽이 0이될수도 있다. CSMM의 기본 특징은 five1star님 블로그에서 참고했다. 특징이 정리가 잘되어있다.
오픈제플린을 이용해 erc20토큰을 초간단하게 발행후 하드헷으로 다른 지갑으로 보내보는 아주아주 간단한 실습 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol 참고 remix에서 파일 생성 후 베포 (당연히 테스트넷으로 베포) 이렇게 베포된걸 볼수있다. (베포할 때 민팅 개수 100개로 설정함) 이제 터미널에서 하드헷을 진행하자 (install 등 세팅은 되어있는 상황) 토큰을 잘 보냈는지 확인 하려면 메타마스크 지갑에 들어가(아까 보낸 주소) ; 이나 a
truffle 실습 Remix에서만 solidity를 진행 하다가 드디어 truffle을 시작하게 되었다. Truffle이란? > Truffle은 스마트 컨트랙트 개발, 컴파일, 배포 그리고 테스팅을 쉽게 할 수 있도록 도와주는 프레임워크입니다. 실습 시작전 체크사항 Node.js Truffle vsCode Ganache Node.js는 설치가 되있어서 패스. truffle부터 설치하자. 참고로 본인은 윈도우 환경이다. PowerShell을 이용 해서 명령어 입력(관리자 권한으로 실행) Truffle 설치 truffle 설치 명령어 truffle 설치가 완료되면 명령어로 확인할 수 있다. 여기서 설치는 잘되는데 트러플 버젼을 확인하려고 하면 계속 다음과 같은 오류가나서 엄청 해맸다. 천천히 오류를 읽어봐서 https://go.microsoft.com/fwlink/?LinkID=135170 요 사이트에서 읽어보면 > PowerS
receive() 해당 컨트랙트를 payable하게 바꿔주는 코드 컨트랙트 A의 transferTo로 돈을 보내면 받는 기능을하는 함수라고 생각하면 될듯 Array 오류 함수 내부에 uint[] memory a; 로 선언후 push하면 메모리에서는 푸쉬를 못하기 때문에 push말고 a[i] = n; 식으로 위치에 값을 넣어주는 방식으로 함. 처음 배열 선언시 길이를 안정해주고 하면 당연히 오류. array vs map and array 코드를 짜다가 어떤 struct구조를 관리해야할 일이 생겼는데 Array로 관리할지 Map으로 관리할지 고민이 생겼다. Array로 관리시 전체를 관리할수있다는 장점이 있지만 특정 하나를 조회시 전체적인 for문을 돌려봐야하고 Map시 조회는 편하지만 전체 관리가 힘들다. map을 쓰려면 전체적으로 관리도 해야하는 상황이면 map, array를 둘다 써야하는데 어떤 방식이 가스비가 더 나올까 하는 실험을 했다. A는
Assembly 쓰는 이유 > * 세밀한 조작 가스비용 줄이기 솔리디티에서 할수없는 일을 할때 어셈블리어를 사용한다고 한다. 솔리디티 라이브러리 작성할떄 많이 사용한다고 한다. Assembly 종류 > * inline assembly : 솔리디티 안에 쓰인다. Standalone Assembly : 솔리디티 없이도 쓸 수 있다. 오늘 배운것은 인라인 어셈블리. 그치만 사용법이 어렵기 때문에 자주 오류가 날수있고 문서에도 자신이 있을떄만 사용할것을 권고. 오피코드 참조용 사이트 https://www.evm.codes/?fork=merge