직접 해보는 클레이튼

민식킴·2021년 3월 19일
0

내가 개발자

목록 보기
1/3
post-thumbnail
사족

3월 3주차
스터디를 진행하면서 계속 2프로 부족한 느낌을 받고있었다.
이번주 수요일, EOM의 블록체인 세미나를 열었을 때 그는 내가 '공부에 흥미가 없어보인다, 정해진 공부루트를 그저 따라가는 것 같다' 라고 일침을 가했다. 맞는 말이었다. 여태 내 공부는 그저 강의를 듣고 하라는대로 따라했다는 느낌이 컸다.
그러니까 공부인듯 공부아닌 공부같은 공부를 하고 있었던 것이다. 나는 42서울에 힘들게 들어와놓고 42공부법을 버리고 다시 정해진 학교 공부법으로 돌아가려 했던 것이다!!
결국은 내 자신에 대한 동기부여가 부족했음이 컸던 것 같다. 뭔가 하려고 공부하는 것이 아닌 뭔가 하기위해선 공부해야하는 쫒기는 듯 공부를 했던것 같다.(마음의 문제?)
그래서 이번엔 어디 얽매이지 않고 내가 주체가 되어 뭔가 해보자 해서

비트코인 > 블록체인 > NFT > 이더리움 > 클레이튼 > 솔리디티
즉, 클레이튼에서 솔리디티를 통해 NFT를 이용해 서비스를 구현하는 것

목표를 명확히 하였고,

솔리디티로 직접 무언가를 만들어보자! (지금막 생각나는 것은 게임)

흥미로운 마구잡이 목표를 설정하여 이를 수행하기로 하였다.

뭐, 이래저래 자기비판을 좀 했지만 내가 여태 공부한 것들이 오늘 내게 큰 도움이 되었다. 어쩌면 재밌는 공부를 하기전 익혀야 하는 원론같은 재미없는 공부를 했던 것일지도..

Klaytn시작에 앞서

http://ide.klaytn.com/ // 클레이튼 IDE
https://baobab.wallet.klaytn.com/ // 클레이튼 Wallet
예전에 클레이튼에서 테스트 서버로 코딩할 수 있는 유용한 사이트들을 저장해 놓았다. (테스트 클레이튼 코인도 좀 받아놨었다.)
바로 들어가서 막상 해보려니 머리속이 막 새하얘지는게 아닌가(한국식 교육의 폐해)
그래서 찾아보다가 좋은 인프런 강의를 찾았다. https://www.inflearn.com/course/%ED%81%B4%EB%A0%88%EC%9D%B4%ED%8A%BC/dashboard (솔리디티를 조금은 알아야 편하다)

Klaytn Wallet

클레이튼 지갑 생성은 여기에 잘 설명되어있다. https://steemit.com/sct/@happyberrysboy/klaytn-4-1 (지갑당 하루에 한번 5테스트코인을 받을 수 있다. 테스트하는덴 뻘짓 안하는이상 충분하다.)

Klaytn IDE

클레이튼에서 솔리디티를 작성할 수 있는 사이트다. 인프런 강의와 함께 작성해보았다.
테스트 서버는 baobab으로, Account에서 개인키나 키스토어로 로그인하면 잔액이 나온다. (24.95개 있었으나 몇번 테스트 해봄)
모두 작성 후 deploy(배포)를 누르면 토큰을 소모하고 트랜잭션에 올라가게 된다.
이후 결과는 Transactions recorded에 나오게 된다.
msg.sender는 컨트랙트를 실행시킨 사람의 주소. (월렛의 주소와 같다.)


public으로 변수를 설정한 덕분에 함수처럼 getter함수가 만들어져 recorded에서 볼 수 있게 해준다. 가려진건 내 주소이다. (호옥시 몰라 가려놨다.)
constructor는 컨트랙트가 처음 실행될 때 단 한번 실행되므로 다른사람이 이 컨트랙트를 실행할 땐 이것이 작동하지 않는다. (이를 통해 이 컨트랙트의 주인이 누구인지 확실하게 할 수 있다.)


만일 public으로 변수를 설정하지 않은 경우 나타나지 않는다. (증명 끝)


이번엔 컨트랙트에 저장되어있는 토큰을 리턴하는 함수를 만들어 보았다. this는 이 컨트랙트의 주소를 의미한다.
현재는 아무것도 안넣어주었으니 0값이 나온다.
나의 코인이 소량 줄어들었음을 확인하라.


그리고 컨트랙트에 토큰을 입금(?)할 함수이다.
이처럼 payable로 하면 토큰을 주고 받을 수 있게된다. (없으면 안됨)
결과창에 diposit함수 이름이 뜨는데 이때 value에 숫자를 입력하고 diposit을 클릭하면 이 컨트랙트에 토큰이 저장된다!
다시 getbalance함수를 클릭하면 입금된 것을 확인할 수 있다!
근데 값이 뭔가 이상하다. 1이 아닌 엄청난 숫자가 리턴되었는데 사실 클레이튼의 가장 작은 단위는 1peb이며 10^9peb은 1ston, 10^18peb은 1클레이 이다. 즉 저 숫자는 10^18(peb)로서 1클레이가 입금된것이 맞다.(한순간 무너진 부자의 꿈)
*value위에 가스리밋은 함수의 복잡성에 따라 변동된다.


*마지막으로 컨트랙트에서 msg.sender에게 지불하는 함수를 만들었따.
처음에 _value를 선언하지 않아서 이게 되나 생각했는데 되네, 오른쪽에 보면 받는 인자로 _value가 있음을 확인할 수 있다. (peb단위로 적어야 한다.)


*deposit버튼 위에 주소는 꼭! 저장해놓아야 한다. 이후 새로고침등으로 다시 들어올때 주소를 입력하여 컨트랙트를 불러올 수 있다.

이로써 컨트랙트에 나만이 코인을 지불할 수 있고 누구에게나 _value에 해당되는 코인을 지급할 수 있는 이름바 '아낌없이주는 컨트랙트'가 완성되었다. (내 성격과 맞지 않지만 강의내용이라 어쩔수 없었다.)


그래서 만들었따!

0xB6a06A36f60F11AC6F62564657399bA54D71c3BA
이 컨트랙트의 주소이니 복사해서 편하게~ 편하게 접근해라

profile
우리의 꿈, 우리의 희망

1개의 댓글

comment-user-thumbnail
2021년 3월 19일

ㅋㅋㅋㅋㅋㅋ아낌없이주는 컨트랙트 재밌네요

답글 달기