[연재] 솔리디티의 Hello World 버전인 Storage.sol 프로그램

솔리디티의 Hello World 버전인 Storage.sol 프로그램


간단한 예제 코드 보자. 솔리디티의 Hello World 버전인 Storage 코드이다.

솔리디티 문법에 대해서는 다음 기회에 살펴보기로 하고 코드만 보도록 하자.

pragma solidity ^0.4.0;

contract SimpleStorage {
    uint storedData;

    function set(uint x) public {
        storedData = x;
    }

    function get() public constant returns (uint) {
        return storedData;
    }
}


이 프로그램은 storedData라는 변수에 값을 set, get하는 코드 밖에 없다.

이것이 무슨 데이터 베이스이고 데이터저장소인가? 이런 의문이 들것이다.

결론부터 말하면 storedData가 데이터베이스의 테이블과 같은 역할을 한다.

"에잉, 그러면 변수 하나에 값 하나밖에 못 넣잖아!"

맞다. 위 예제는 그렇다.

어느 한 시점에 하나의 값 밖에 저장할 수 없다.

일단 프로그램이니 컴파일해서 실행해보자.

온라인에서 솔리디티를 컴파일해서 실행해볼 수 있는 리믹스(Remix)라는 웹 사이트를 이용하도록 하겠다.

리믹스에 대한 자세한 얘기는 다음으로 미루자. 여기서는 전체 구조가 어떻게 돌아가는지 감을 잡는 것에 주안점을 두자.


RPC 서버 실행


제일 먼저 RPC 서버를 터미널에서 실행한다.

testrpc


RPC 클라이언트 리믹스 실행


그 다음 브라우저를 실행하여 다음 url을 입력한다.

http://remix.ethereum.org

반드시 http로 접속하여야 한다. testrpc는 아직 https 요청을 처리하지 못한다.

그러면 아래와 같은 화면이 나올 것이다.

좌상단에 있는 "Create New File"을 클릭하여 위의 코드를 입력한다.

오른쪽을 보면 코드는 자동 컴파일되므로 따로 컴파일 할 필요는 없다.


RPC 서버 접속

컴파일된 코드를 실행하기 위해서는 우상단 "Run" 탭을 클릭하여 "Environment" 탭에서 "Web3 Provider"를 선택한다.

이는 접속할 RPC 서버를 선택하는 것으로 다음과 같이 입력한다.


OK 버튼을 누르고 모든 것이 정상이라면 바로 아래 Account에 첫번째 값이 testrpc 를 실행하면 나오는 첫번째 계정으로 자동 설정될 것이다.


그리고 터미널 상에서 실행한 testrpc 화면에도 아래와 같이 브라우저가 계정 정보를 읽기 위하여 코드를 실행한 로그가 출력될 것이다.



이제 서버와 연결되었으니, "Create" 버튼을 클릭하여 프로그램을 생성해보자.

그러면 아래에 SimpleStorage at 0xcd4efef3e8d37ae68126e619f69c99867ee1b667로 시작하는 모듈이 생성된다.

주소는 생성할 때마다 변경된다.

이것이 의미하는 바는 0x로 시작하는 주소로 새로운 스마트 컨트렉트가 생성되었다는뜻이다. 나중에 At Address에 이 주소를 넣어 해당 모듈을 호출하여 실행할 수도 있다.


스마트 컨트렉트 실행

자, 이제 생성된 스마트 컨트렉트 모듈이 제대로 작동하는지 실행해 보자.

set에 값을 입력하고 'set' 버튼을 클릭하면 해당 값이 블럭체인에 저장된다.

그 다음 get을 클릭해보자.

방금 저장한 값을 읽을 수 있는가?

여기까지다.


가장 간단한 스마트컨트렉트 프로그램을 작성해보았다.

다음은 한 단계 더 나아가 하나의 값이 아닌 여러값을 저장하는 예제를 해보겠다.