본문 바로가기

연재내용/이더러움-솔리디티

[이더러움/솔리디티] 06 - 솔리디티 언어 맛보기


[이더러움/솔리디티] 06 - 솔리디티 언어 맛보기

솔리디티의 확장자는 sol이며 자바스크립트와 유사합니다..
대부분의 에디터와 호환이 가능하다. 자바스크립트와는 다르게 데이터형이 자유롭지는 않습니다.
(Strongly Typed)

컨트랙트 작성에 있어 모든걸 솔리디티로 작성할 필요는 없습니다. 솔리디티와 통신한 모듈을 원하는 언어로 작성해준 후 솔리디티에서 이더러움 트랜잭션 등만 작성을 해주면 됩니다.

시작하기

이더러움 IDE를 아래 주소에서 웹버전으로 사용해볼 수 있습니다.
https://remix.ethereum.org/


접속 후 모든 소스코드를 지워준 후 아래와 같이 작성합니다.

1//
2pragma solidity ^0.4.17;
3
4//
5contract Inbox{
6
7}

인박스 계약 구현

1contract Inbox{
2
3 //
4 string public message;
5
6 //
7 function Inbox(string initMsg) public{
8 message = initMsg;
9 }
10
11 // setter
12 function setMsg(string newMsg) public{
13 //
14 message = newMsg;
15 }
16
17 // getter
18 function getMsg() public view returns (string){
19 //
20 return message;
21 }
22
23}

대부분 이해가 가실테지만 메세지 getter 부분은 다소 특이합니다.
"function getMsg() public view return (string){"

크게 세부분으로 나누어 아래와 같이 되어있습니다.

부분 설명
getMsg() 함수명
public view 함수타입
returns (string) 리턴타입

솔리디티의 function types

용어 설명
public 어느곳에서나 접근 가능
private 컨트랙트 내에서만 접근 가능
view 수정되지 않는 데이터를 리턴하며 상수와 같은 의미
constant 수정되지 않는 데이터를 리턴하며 상수와 같은 의미
pure 데이터수정을 하지 않는 함수
payable 함수가 호출될 경우 이더를 전송

View 와 Constant

위에서 getMsg가 public view를 하는 이유는 message에 대한 변형 없이 오직
message 데이터만 리턴을 하기 때문입니다. 하지만 setMsg의 경우 데이터를
수정하기때문에 view나 constant를 사용하지 않습니다.

pure와 payable

pure는 잘 사용하지 않는 내용이기때문에 생략하겠습니다. 데이터의 순수성을 위한 내용입니다.
payable은 선언될 경우 꼭 이더러움의 전송이 이루어져야합니다. 때문에 대부분 계약의 결과로 많이 사용되어집니다.