[Ethereum] 스마트 컨트렉트로 "Hello, World"를 출력하자.​

in ethereum •  7 years ago  (edited)

이더리움의 계정은 사용자 계정과 스마트 컨트렉트 계정이 있다.
사용자 계정은 private key를 통해서 생성하지만 스마트 컨트렉트 계정은 계약언어를 컴파일한 바이트코드를 블럭체인에 배포함으로써 생성할 수가 있다.

Code ---> Compile ---> Byte Code, ABI ---> Deploy ---> Smart Contract

스마트컨트렉트를 위한 계약언어가 몇가지 있지만 가장 많이 쓰이는 Solidity를 이용한다.

Solidity를 사용하기 위해서 직접 컴파일해서 배포할 수도 있지만 Remix-Ide(https://github.com/ethereum/remix-ide)를 이용하면 웹브라우저에서 바로 코딩이 가능하고 배포도 손쉽게 할 수가 있다.

Remix-ide를 직접 설치해서 사용하도 되지만 ​https://remix.ethereum.org 에 접속해서 개발하면 별도의 설치없이 바로 사용이 가능하다. 또한 웹브라우저 내에 파일이 저장되기 때문에 나중에 다시 접속하더라도 개발하던 파일을 그대로 이용할 수가 있다.

그러면 ​https://remix.ethereum.org 에 접속해보자

2018-04-25_17-02-50.png

최초에 접속하면 ​browser/ballot.sol 이라는 파일의 코드가 편집기에 나온다.

왼쪽 상단에 + 모양의 아이콘을 누르면 파일이름을 입력할 수가 있는 새로운 창이 뜨는데 HelloWorld.sol 이라고 변경하고 OK를 클릭한다.

2018-04-25_17-09-02.png

이제 깨끗한 화면의 편집기가 뜨면 다음과 같이 작성한다.

pragma solidity ^0.4.23;

contract HelloWorld {
     string public str;

     constructor() public {
              str = "Hello, World";
     }

     function setName(string _str) public {
             str = _str;
     }

     function run() public view returns(string) {
             return str;
     }
}

모두 작성하고 화면 우측에 Compile 탭으로 가서 Start to compile 버튼을 클릭하면 컴파일을 한다.
Auto compile 옵션을 체크하면 수동으로 컴파일 하지 않아도 자동으로 계속 컴파일을 하게 된다.

2018-04-25_17-44-25.png

컴파일이 정상적으로 완료되면 녹색박스에 컨트렉트 이름이 표시된다.

컴파일이 정상적으로 완료되었으면 블럭체인에 배포하고 스마트 컨트렉트에 접근해보자.
화면 우측 박스에서 이번엔 Run 탭을 클릭한다.

2018-04-25_17-51-39.png

Run 탭을 클릭하면 몇가지 설정항목과 컨트렉트 리스트 박스가 나온다.

Environment 항목은 ​JavaScript VM, Injected Web3, Web3 Provider를 선택할 수가 있다.
JavaScript VM을 선택하고 개발하면 별도의 이더리움 네트워크나 채굴작업 필요없이 코드를 테스트할 수가 있어서 매우 편리하다.

이번에는 JavaScript VM을 선택하고 나머지 설정항목은 따로 손대지 않아도 된다.

HelloWorld가 선택되어있는 리스트박스 아래에 Create버튼이 있다.
생성자를 실행하는 것인데 예제에서는 생성자에 아무런 인자를 받지 않기 때문에 별도의 입력없이 바로 버튼을 클릭한다.

creation of HelloWorld pending...
[vm] from:0xca3...a733c, to:HelloWorld.(constructor), value:0 wei, data:0x608...00029, 0 logs, hash:0x529...1899c

하단의 콘솔화면에 Transaction이 일어났음을 보여주고 Details 버튼을 클릭하면 세부정보가 보이게 된다.

정상적으로 Transaction이 완료되면 Create 버튼 아래쪽에 스마트 컨트렉트에 접근 할 수 있는 박스가 보인다.

2018-04-25_18-03-02.png

run 버튼을 누르게 되면 스마트 컨트렉트의 function run을 실행하게 된다.

0: string: Hello, World

가 나오는 것을 확인 할 수가 있다.

str 버튼은 string public str; 의 변수를 보여주는 버튼으로 run과 동일하게 나온다.​

setName은 빨간색 박스로 나오는데 Transaction이 일어난다는 의미이다. Transaction이 일어나게 되면 gas가 소비된다.
옆의 입력 박스에 "Hello, Harry"라고 입력한다. 이때 큰따옴표(")도 함께 써야한다.
그리고 setName을 클릭한다.

transact to HelloWorld.setName pending ... 
[vm] from:0xca3...a733c, to:HelloWorld.setName(string) 0xec5...e2137, value:0 wei, data:0xc47...00000, 0 logs, hash:0x2e0...ca0ba

Console 박스에 transaction이 있어난 내용이 보인다.
JavaScript VM을 이용하기 때문에 별도의 채굴없이도 곧장 Transaction이 일어난다.

이제 다시 run버튼을 눌러보자.

0: string: Hello, Harry

나중에 입력한 글자로 변경되는 것을 볼 수가 있다.

Remix-ide를 이용해서 Solidity 언어를 작성하고 JavaScript VM을 통해 스마트 컨트렉트를 테스트해보았다.
다음번엔 이전 시간에 했던 Private Network on Docker​에 접속해서 배포해보고 Ethereum TestNet에 배포해보도록 한다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @ohk5004! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Do not miss the last post from @steemitboard:

Carnival Challenge - Collect badge and win 5 STEEM
Vote for @Steemitboard as a witness and get one more award and increased upvotes!

Congratulations @ohk5004! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

Use your witness votes and get the Community Badge
Vote for @Steemitboard as a witness to get one more award and increased upvotes!