profile
개발 취준생
post-thumbnail

간단한 CSMM 스왑 만들기

오픈 제플린의 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님 블로그에서 참고했다. 특징이 정리가 잘되어있다.

2022년 12월 28일
·
0개의 댓글
·
post-thumbnail

초간단 실습 erc20 발행 후 전송

오픈제플린을 이용해 erc20토큰을 초간단하게 발행후 하드헷으로 다른 지갑으로 보내보는 아주아주 간단한 실습 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol 참고 remix에서 파일 생성 후 베포 (당연히 테스트넷으로 베포) 이렇게 베포된걸 볼수있다. (베포할 때 민팅 개수 100개로 설정함) 이제 터미널에서 하드헷을 진행하자 (install 등 세팅은 되어있는 상황) 토큰을 잘 보냈는지 확인 하려면 메타마스크 지갑에 들어가(아까 보낸 주소) ![](https://velog.velcdn.com/images/keepmin/post/727b1135-da76-4d2c-9eb0

2022년 12월 26일
·
0개의 댓글
·

Truffle 실습2 ( local 다른 컨트랙트 import, Goerli 테스트넷에 베포하기)

다른 컨트랙트 import해보기 A.sol, B.sol을 각각 만든후 상태변수 선언 후 C.sol에서 둘의 상태변수 더한값 리턴하기 A.sol, B.sol 작성 후 C.sol작성 이때 constructor에 들어갈 두 주소는 Deploy용 js파일에서 작성한다. 3Csol.js 먼저 A, B를 Deploy한후 C를 Migrate하면 된다. 그럼 A, B만 Migrate하는 방법은 > truffle migrate --f n --to m 하면 n번부터 m번까지 Migrate하겠다는 뜻. 그래서 deploy용 js파일을 작성할때는 접두어로 순서를 쓰라고 공식문서에도 나와있다고 한다. 만약 주소를 저렇게 하드코딩으로 쓰지 않고 자동으로 불러오고 싶으면? 이런식으로 require로 정보를 가져와서 deployed된 아리를 가져와 .address로 작성하면 된다. 마지막 return deployer.deploy(C, a.address, b.address); 이나 a

2022년 12월 14일
·
0개의 댓글
·
post-thumbnail

Truffle 실습

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

2022년 12월 13일
·
0개의 댓글
·

Solidity receive, array vs map and array

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는

2022년 12월 8일
·
0개의 댓글
·
post-thumbnail

Solidity Assembly

Assembly 쓰는 이유 > * 세밀한 조작 가스비용 줄이기 솔리디티에서 할수없는 일을 할때 어셈블리어를 사용한다고 한다. 솔리디티 라이브러리 작성할떄 많이 사용한다고 한다. Assembly 종류 > * inline assembly : 솔리디티 안에 쓰인다. Standalone Assembly : 솔리디티 없이도 쓸 수 있다. 오늘 배운것은 인라인 어셈블리. 그치만 사용법이 어렵기 때문에 자주 오류가 날수있고 문서에도 자신이 있을떄만 사용할것을 권고. 오피코드 참조용 사이트 https://www.evm.codes/?fork=merge

2022년 12월 6일
·
0개의 댓글
·