[이더러움/솔리디티] 06 - 솔리디티 언어 맛보기
솔리디티의 확장자는 sol이며 자바스크립트와 유사합니다..
대부분의 에디터와 호환이 가능하다. 자바스크립트와는 다르게 데이터형이 자유롭지는 않습니다.
(Strongly Typed)
컨트랙트 작성에 있어 모든걸 솔리디티로 작성할 필요는 없습니다. 솔리디티와 통신한 모듈을 원하는 언어로 작성해준 후 솔리디티에서 이더러움 트랜잭션 등만 작성을 해주면 됩니다.
시작하기
이더러움 IDE를 아래 주소에서 웹버전으로 사용해볼 수 있습니다.
https://remix.ethereum.org/
접속 후 모든 소스코드를 지워준 후 아래와 같이 작성합니다.
1//사용할 솔리디티 버전2pragma solidity ^0.4.17;34//컨트랙트 클래스 선언5contract Inbox{67}
인박스 계약 구현
1contract Inbox{23 //타입명과 접근 수준 그리고 변수명을 선언4 string public message;56 //생성자7 function Inbox(string initMsg) public{8 message = initMsg;9 }1011 //메세지 setter12 function setMsg(string newMsg) public{13 //새로운 메세지로 세팅14 message = newMsg;15 }1617 //메세지 getter18 function getMsg() public view returns (string){19 //기존 메세지 리턴20 return message;21 }2223}
대부분 이해가 가실테지만 메세지 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은 선언될 경우 꼭 이더러움의 전송이 이루어져야합니다. 때문에 대부분 계약의 결과로 많이 사용되어집니다.