본문 바로가기
블록체인/이더리움

[이더리움 dApp] 이더리움으로 간단한 상품관리 dApp 만들기

by dev_mac-_- 2019. 5. 9.

-- 수정 19.11.18 --

Github 소스코드 약간의 오류를 수정하였습니다.

 

이더리움의 꽃은 바로 스마트컨트랙트를 이용한 dApp입니다.

비트코인과 다르게 이더리움의 스마트 컨트랙트는 강력한 차별점으로 뽑을 수 있고, 블록체인 기술이 단순한 화폐기능을 넘어서 프로그래밍을 할 수 있게 하여 다양한 활용 어플리케이션들을 만들어 낼 수 있다.

이번에는 이더리움 dApp을 처음만들어 보는 사람 기준으로 설명을 해보았다.

 

Requirement

  • Visual code
  • Geth
  • 약간의 javaScript 지식
  • git

 

1. 초기 설정

먼저 Geth를 동작시켜 이더리움 private Network를 구성한다.

Geth private Network 구성은 이 게시물을 참고하면된다.

https://developer-mac.tistory.com/44

 

[이더리움]Geth를 이용해 multi node Private network 구성하기

Ethereum Multi node Private network 구성하기 Ethereum을 이용해 dApp을 만들어 배포하기 전에 Ethereum Client의 Private Network를 만들어서 테스트 한 후 배포를 해야 불필요한 비용을 줄일 수 있다. 해당 Tu..

developer-mac.tistory.com

geth --networkid 1004 --datadir ~/workspace/geth --nodiscover --port 30303 --rpc --rpcport "8545" 
--rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth, net, web3, miner, debug, personal, rpc" console

그 다음에 소스코드를 다운받는다.

https://github.com/dongw00/product_dApp

 

dongw00/product_dApp

공산품 관리 이더리움 dApp. Contribute to dongw00/product_dApp development by creating an account on GitHub.

github.com

git clone https://github.com/dongw00/product_dApp

깃을 이용해 위 코드를 이용해서 clone을 하거나, 링크로 들어가 직접 다운로드하면된다.

그 다음으로 Visual Code를 실행시킨다.

2. Geth 클라이언트에 스마트 컨트랙트 deploy

http://remix.ethereum.org/

Solidity 코드를 이용해 자신의 Geth에 스마트 컨트랙트를 deploy하기위해 Remix를 이용한다.

먼저, solidity 폴더에 있는 smartContract.sol 코드를 remix에 붙여넣는다.

solidity를 컴파일 하기 위해 0.5.1 컴파일러 버전을 선택한다.

컴파일 성공을 하면 아래 사진과 같이 초록색으로 ProducrContract 메시지가 출력된다.

그 다음 자신의 Geth에 배포하기 위해서 아래 그림과 같이 Run 탭을 눌러 이동을 한다음 Environment에 Web3 Provider을 선택한다.

Web3 Provider을 선택을 하면 아래와 같이 선택버튼이 나오는데 OK를 눌러 정상적으로 진행한다.

정상적으로 Geth와 Remix가 연결이 되면 Account정보를 받아오면서 Deploy 준비는 끝났다.

그 다음 Deploy 버튼을 누른다.

Deploy를 눌렀을 때 아래와 같은 메시지가 뜬다면 해당 명령어를 자신의 Geth에 입력을 해 계정 락을 풀어준다.

personal.unlockAccount(eth.accounts[0], "eth")

계정 Unlock을 한 다음에 Deploy를 누르면 아래와 같은 메시지가 출력되고, Geth에서는 정상적으로 트랜잭션을 받는다.

정상적으로 Deploy 요청되었다는 메시지
Geth 출력화면

Geth로 이동을 한다음 Mining을 시작한다.

miner.start()

마이닝을 시작하고 트랜잭션이 정상적으로 블록에 담겼다면 아래와 같은 사진들을 볼 수 있다.

그 다음 Deploy한 스마트 컨트랙트의 주소와 우리가 실습하고자 하는 dApp과 연결을 해주어야한다.

2번째 사진에 문서버튼을 누르면 컨트랙트 주소가 복사된다.

저장을 한 뒤에 index.html을 실행시킨다.

그럼 위와같은 화면이 나오는데 자신의 Ethereum 계정과 패스워드를 입력한 다음 등록하고자 하는 공산품을 입력한다.

댓글