오늘은 Solidity에 대한 개발을 간단히 준비해 보고,
기본적인 코드를 익혀보려고 합니다.
1. 개발문서
제일 중요한 개발문서는 아래 링크에서 확인할 수 있는데요.
https://solidity.readthedocs.io
solidity는 C++, Python 그리고 자바스크립트의 영향을 받았다고 공식문서에 소개되어 있으므로,
아무래도 위의 언어를 다 다뤄본 분들에게는 훨씬 적응이 빠를 것 같네요.
Solidity로 할 수 있는 일들도 나와있는데요.
보팅이나, 크라우드 펀딩, 경매, 월렛들을 생성할 수 있는 Contract를 디플로이 할 수 있다고 나와있습니다.
2. 개발 툴
온라인 상으로는 리믹스와 같은 온라인 개발툴을 이용할 수 있는데요.
이툴은 이더리움에서 개발한 것으로 실제 테스트하고 디버깅하는데 유요합니다.
오프라인 툴로는 ATOM을 사용할 수 있을 것 같은데요.
설정에서 solidity를 검색하면, linter-solidity가 나오는데,
이 package를 설정해서 사용합니다.
3, 기본적인 구조를 실행해 보기
3-1. compiler 버전 정의
Solidity는 가장 먼저, 버전 몇인지 정의하는 구문으로 시작하는데요.
pragma 라는 키워드를 사용하여서 아래와 같은 형식으로 구현합니다.
아래에서는 0.4.0버전의 compiler를 사용하도록 명시하였습니다.
pragma solidity >=0.4.0 <0.7.0;와 같이 0.4이상 0.7이하 버전에서 컴파일 할 수 있도록 설정할 수도 있습니다.
위의 이미지에서 pragma밑에 보시면 contract라는 키워드를 볼 수 있는데요.
흡사 class를 만드는 것과 비슷한데요.
Ethereum에서의 의미를 기준으로 한다면,
어떠한 이름의 (smart) Contract가 있다는 것은,
Solidity코드나 그 상태를 저장한 데이터가 이더리움 블록체인의 어느 특정주소에 존재한다는 것을 의미합니다.
3-2. getter와 setter
Java같은 객체지향 언어를 다루어 보신 분들에게,
contract는 Class와 비슷하다고 하면 조금 이해가 편하실텐데요.
class를 만들었으니, getter와 setter 사용법에 대해서도 알아보겠습니다.
TestStorage라는 Contract를 만들고,
그 안에 storedData라는 변수와 getter그리고 setter를 만들었습니다.
참고로 아래에서 나오는 uint는 부호가 없는 128비트의 정수를 가르키는데요.
solidity에서 많이 사용합니다.
set은 public이라는 키워드가 java등에서 사용하던 것과 다르게,
함수명이 나온이후에 사용하는 것이외에는 그렇게 특별할 것은 없습니다.
get을 보면, 다양한 키워드를 사용하는 것을 볼 수 있는데요.
하나하나 알아보겠습니다.
- public
이 키워드는 누구나 접근해서 호출할 수 있다는 의미 입니다.
이 외에도, external, public, internal, private 등이 있습니다.
3. Compile and Run
위에서 간단하게 getter와 setter로 구성하여,
간단하게 블록체인에 데이터를 저장하고 불러오는 코드를 작성해 보았는데요.
이것을 기계가 알수있는 언어로 compile하고 실행하는 과정을 해 보도록 하겠습니다.
Remix에서 실행하도록 할 텐데요.
우측의 Compile탭을 보도록 하겠습니다.
Start to compile이라는 버튼을 볼 수 있는데요.
이것을 실행시키면 됩니다.
에러가 있다면 컴파일 과정에서 에러를 보고 디버깅도 할 수 있습니다.
에러없이 Compile이 되었다면 Run탭으로 이동해서 실행해 보도록 하겠습니다.
위와 같이 Contract명이 녹색배경박스안에 나오게 됩니다.
이제 Run탭에 가보면 Compile 된 contract명이 들어와 있는 것을 보실 수 있습니다.
Compile을 하지 않았다면 contract명이 보이지 않을 것이구요.
이제 빨간색 deploy버튼을 눌러보면 deploy된 contract가 보이구요.
Deployed Contracts에서 드롭다운 화살표를 눌러보면,
위에서 정의한 get과 set을 할 수 있습니다.
88을 set한후 get을 하면 88을 얻을 수 있습니다.
4. 정리
오늘한 것은 변수를 선언하고, 그 변수에 값을 넣고 읽어올수 있는,
getter와 setter를 선언해서 실행해 보는 것이었습니다.
아주 기본적인 구조이지만,
Compile하고 Run까지 해보았습니다.
다음글에서는 Solidity에 대해 좀더 깊이 들어가보도록 하겠습니다.