암호화폐 (비트코인, cryptocurrency, bitcoin)

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

이더리움의 계정은 사용자 계정과 스마트 컨트렉트 계정이 있다.
사용자 계정은 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 에 접속해보자

그림입니다.
원본 그림의 이름: mem000063bc6ce1.png
원본 그림의 크기: 가로 1326pixel, 세로 996pixel

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

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

그림입니다.
원본 그림의 이름: mem000063bc0001.png
원본 그림의 크기: 가로 640pixel, 세로 236pixel

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

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;

     }

}

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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

그림입니다.
원본 그림의 이름: mem000063bc0002.png
원본 그림의 크기: 가로 400pixel, 세로 291pixel

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

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

그림입니다.
원본 그림의 이름: mem000063bc0003.png
원본 그림의 크기: 가로 395pixel, 세로 387pixel

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 버튼 아래쪽에 스마트 컨트렉트에 접근 할 수 있는 박스가 보인다.

그림입니다.
원본 그림의 이름: mem000063bc0004.png
원본 그림의 크기: 가로 394pixel, 세로 179pixel

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에 배포해보도록 한다.

[출처] https://steemit.com/ethereum/@ohk5004/ethereum-hello-world

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 25084
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 24563
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 25942
13 [데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기 file 졸리운_곰 2023.12.09 3
12 [데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기 file 졸리운_곰 2023.12.08 2
11 [데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기 file 졸리운_곰 2023.12.08 0
10 [데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기 file 졸리운_곰 2023.12.08 2
9 [데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data file 졸리운_곰 2023.03.07 37
8 [데이터 수집 및 전처리] Crawling, Scraping file 졸리운_곰 2022.05.21 31
7 [데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기 file 졸리운_곰 2021.09.30 124
6 카프카 설치 시 가장 중요한 설정 4가지 졸리운_곰 2021.07.13 46
5 Prometheus Query(PromQL) 기본 이해하기 file 졸리운_곰 2020.12.17 126
4 [인프라 모니터링 오픈소스] Prometheus 를 알아보자 file 졸리운_곰 2020.12.17 547
3 Prometheus + Grafana 대시보드 file 졸리운_곰 2020.12.17 43
2 Grafana란? file 졸리운_곰 2020.12.17 279
1 Importing wikipedia dump to MySql 졸리운_곰 2020.10.04 41
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED