암호화폐 (비트코인, 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;

     }

}

 

모두 작성하고 화면 우측에 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 22629
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 22576
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 23974
972 암호화폐 (비트코인, cryptocurrency, bitcoin) [Ethereum] Remix 를 이용하여 이더리움 솔리디티(Solidity) 개발 연습 하기! file 졸리운_곰 2021.10.19 1
971 암호화폐 (비트코인, cryptocurrency, bitcoin) [Ethereum] Remix IDE를 이용한 Solidity 프로그래밍 file 졸리운_곰 2021.10.17 3
970 [오라클][Oracle] ORA-00904: 부적합한 식별자 졸리운_곰 2021.10.13 0
969 [오라클][Oracle] 대소문자 구분 없이 검색하는 경우에 WHERE 조건 file 졸리운_곰 2021.10.13 1
968 [오라클, Oracle] 오라클 비밀번호 만료(Oracle password has expired) file 졸리운_곰 2021.10.10 2
» 암호화폐 (비트코인, cryptocurrency, bitcoin) [Ethereum] 스마트 컨트렉트로 "Hello, World"를 출력하자.​ file 졸리운_곰 2021.10.09 2
966 [데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기 file 졸리운_곰 2021.09.30 0
965 [MySQL] 관리자 root , admin 계정 추가 : MySQL 관리자 계정 추가 졸리운_곰 2021.09.26 0
964 [MySQL] mysql 에서 컬럼과 로우 바꾸기, 행과 열 바꾸기 How to Transpose Rows to Columns Dynamically in MySQL file 졸리운_곰 2021.09.13 2
963 [Oracle] rollup 쿼리 , 오라클 부분합 구하기 file 졸리운_곰 2021.09.01 3
962 [MySQL] MySQL ROLLUP , summary, 부분합 구하기 file 졸리운_곰 2021.09.01 3
961 [python][tensorflow - gpu] [파이썬] 텐서플로(TensorFlow) 설치하는 방법, 딥러닝 환경 구축하기 file 졸리운_곰 2021.08.17 7
960 [tensorflow 설치] windows에서 tensorflow-gpu 1.x 버전 설치, python - 이전 버전의 Tensorflow GPU 설치 졸리운_곰 2021.08.17 4
959 [한글 처리][tensorflow] 한글 자연어처리를 위한 도구들, 자료들, 정보들을 정리해 보았습니다. 졸리운_곰 2021.08.11 4
958 카프카 설치 시 가장 중요한 설정 4가지 졸리운_곰 2021.07.13 4
957 [데이터분석][파이썬][python] Awesome Dash Awesome file 졸리운_곰 2021.07.10 15
956 [데이터분석][파이썬][python] ???? Introducing Dash ???? file 졸리운_곰 2021.07.10 91
955 [딥러닝] [텐서플로우][SSAC X AIFFEL] 작사가 인공지능 만들기 file 졸리운_곰 2021.07.10 15
954 [Kafka] Kafka 한번 살펴보자... Quickstart file 졸리운_곰 2021.06.18 5
953 Java Kafka Producer, Consumer 예제 구현 Java를 이용하여 Kafka Producer와 Kakfa Consumer를 구현해보자. file 졸리운_곰 2021.06.18 12
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED