Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
[Ethereum Study_01] 이더리움 개발 환경 구성
## Ethereum Network ##
- TestRPC
개발 단계에서 실제 이더없이 시뮬레이션 테스트 환경을 구성할 수 있게 해주는 툴. 원래 이더리움 메인넷에서 테스트를 하려면 실제 이더가 필요하지만,
TestRPC 를 사용하면 마이닝 없이 가상환경에서 리소스, 트랜잭션에 대한 제한 없이 이더리움을 만들어내서 테스트를 할 수 있음.
- TestNet
이더리움의 퍼블릭 테스트 네트워크. 현재 아래와 같은 3개의 퍼블릭 테스트넷을 제공.
- Ropsten (Proof of Work): 프로덕션 환경이 실제 메인넷이랑 가장 비슷하여 (PoW 이기 때문에) 현재 가장 많이 쓰여지고 있는 테스트 네트워크.
Geth 와 Parity 클라이언드 둘다 지원. 이전에 스팸 어택을 당한 이력이 있음… 이더 마이닝이 가능하며, 테스트 이더를 요청할 수 있다.
- Kovan (Proof of Authority): Parity 팀이 랍스텐의 문제를 해결하기 위해 개발한 테스트 네트워크. 스팸어택으로부터 안전하며,
Parity 클라이언트만 지원. 이더 마이닝 불가능하며, 테스트 이더 요청 필요.
- Rinkeby (Proof of Authority): Rinkeby 역시 스팸 어택을 방지하고자 만들어졌으며, 이더리움 팀이 개발한 테스트넷. Geth 클라이언트만 지원.
이더 마이닝 불가능하며, 테스트 이더 요청 가능.
- Mainnet
실제 거래가 이루어지는 이더리움의 메인 네트워크.
## Ganache ## (https://truffleframework.com/ganache)
개발 편의를 위하여 test RPC를 손쉽게 구동시켜 주는 어플리케이션.
어플리케이션을 실행하면 7545번 포트로 test RPC가 구동되며, mining이 활성화되어있기 때문에 바로 contract를 배포하거나 transaction을 실행할 수 있는
환경이 갖춰짐
( 설치방법 ) (https://github.com/trufflesuite/ganache-cli/blob/master/README.md)
https://github.com/trufflesuite/ganache/releases 에서 윈도우(또는 각OS별) 파일을 받아 설치하면 끝!
Using npm:
npm install -g ganache-cli
or, if you are using Yarn:
yarn global add ganache-cli
( 구동 )
- 실행하면 바로 구동되며 기본으로 10개의 Account가 생성된다.
- 기본설정 포트가 7545이지만 8545로 변경 후 재구동을 하면 Chrome의 Metamask를 이용하여 접속이 가능하다.
- Localhost 8545 : Private Network
- 구동 후 로그 현황
[오후 1:42:31] Starting server (version 1.2.3) with initial configuration: {"hostname":"127.0.0.1","port":8545,"network_id":5777,
"default_balance_ether":100,"total_accounts":10,"unlocked_accounts":[],"locked":false,
"vmErrorsOnRPCResponse":true,"verbose":false,"gasLimit":6721975,"gasPrice":20000000000}
[오후 1:42:31] eth_blockNumber
[오후 1:42:31] Ganache started successfully!
[오후 1:42:31] Waiting for requests...
[오후 1:42:31] eth_getBlockByNumber
어플리케이션의 상단에 4개의 탭
Accounts: account들의 주소, 잔고, 트랜잭션 수
Blocks: block 번호, 생성시점, 사용된 가스, 포함된 트랜잭션
Transactions: 전체 트랜잭션
Logs: EthereumJS VM의 로그
ganache-cli을 electron으로 wrapping하는 형태로 제작되어있어, GUI가 필요없다면 ganache-cli을 사용해도 무방함.
ganache-core가 EthereumJS을 기반으로 제작되어있기 때문에 의도하지 않은 동작이 발생할 땐 EthereumJS 관련한 이슈를 확인하는 것이 좋다.
( Metamask )
사용자가 이더리움 블록체인 네트워크와 편하게 통신을 하게해주는 DApp. Chrome의 경우 chrome extension으로 설치하여 간편하게 접근 및 다룰 수 있슴.
설치 : https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?utm_source=chrome-ntp-icon
Transaction 발생
- 비밀번호 입력 후 접속한다.
- (사람모양아이콘) Import Account를 선택한 후 Ganache에서 생성해준 Private key를 복사하여 붙여넣기 한다.
- Account가 Import 되어서 Transaction 생성이 가능하다.
- Ganache가 AUTOMINING 상태이기 때문에 곧 바로 이더 전송이 가능
- Ganache에서 Transaction을 조회할 수 있다.
--------------------- BLOCK VIEW -----------------------
BLOCK 1
GAS USED
21000
GAS LIMIT
6721975
MINED ON
2019-01-23 13:53:24
BLOCK HASH
0x4f29b0b0b05ca6f93d91a61d3600322d4f446d9653aec21d0dfa21fff374291f
TX HASH
0xfa042b50a66e6787d8963ec2b66a26452bfdbd366ac9cc2f6eca64c663be4557
FROM ADDRESS
0xc53a3cdfC483D716b68Ec55d496E726eeB055E3D
GAS USED
...
VALUE
10000000000000000000
## Truffle ##
Truffle Famework는 솔리디티 코드(스마트 컨트랙트)를 로컬 환경에서 보다 쉽게 컴파일하고 배포할 수 있는 프레임워크.
초보자들을 위한 이더리움 DApp 만들기 에서 소개한 바와 같이, DApp 개발은 큰 단위로 Front-end와 Back-end로 나눌 수 있으며
Truffle Framework는 Back-end 컨트랙트 작성에 사용할 수 있다.
( 설치 방법 )
- Truffle은 node.js플랫폼 설치 후 가능함. (https://nodejs.org/ko/)
- npm명령어를 통해 설치
C:\> npm install truffle -g
.........
+ truffle@5.0.2
added 90 packages from 305 contributors in 61.435s
## Tutorial ##
#. 사전준비 (선택사항)
- ATOM 설치 : 개발 편의성 (https://atom.io/)
- ATOM Package 설치 : Solidity 코드 편집 기능
Menu: Packages > Setting View > Install packages/Themes
linter-solidity, autocomplete-solidity 설치 (solidity로 검색하면 바로 나옵니다.)
- Truffle Boxes : example applications and project templates. https://truffleframework.com/boxes
# MetaCoin Example # - https://truffleframework.com/boxes/metacoin - https://github.com/truffle-box/metacoin-box
- Creating a Project
> mkdir MetaCoin
> cd MetaCoin
> truffle unbox metacoin (truffle만 입력하면 Command에 대한 설명이 표시됨)
√ Preparing to download
√ Downloading
√ Cleaning up temporary files
√ Setting up box
Unbox successful. Sweet!
Commands:
Compile contracts: truffle compile
Migrate contracts: truffle migrate
Test contracts: truffle test
- netwrok configration 설정
truffle-config.js 파일을 수정 : Ganache 를 통한 local 환경에서 deploy를 할 것이기 때문에 localhost 주소와 8545 포트로 설정
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
},
- ganache 실행 또는 ganache-cli 실행
- metacoin 예제 compile
> truffle compile ==> build 디렉토리가 생성됨
- contract compile 및 deploy
> truffle migrate
Summary
=======
> Total deployments: 3
> Final cost: 0.01510414 ETH
: Local network에 deploy된 결과를 볼 수 있음.
- Ganache에서 Blocks이 생성되고 Contract creation의 Transaction이 생성된 것을 확인 할 수 있음
------------- TRANSACTION VIEW ----------------
TX 0xfa9b89af1da4437d062bde09582a08bea19d0a6cd5500cb2f91282f5b9a14100
SENDER ADDRESS
0xc53a3cdfC483D716b68Ec55d496E726eeB055E3D
CREATED CONTRACT ADDRESS
0x7FE3E04a05D6c434fe8585f2a957504A76D1f5ad
CONTRACT CREATION
VALUE
0.00 ETH
GAS USED
284908
GAS PRICE
20000000000
GAS LIMIT
6721975
MINED IN BLOCK
1
TX DATA
0x608060405234801561001057600080fd5b50336000806101000a81548173.....049eb6cef0fc9c75a311464d54a2871dd62314ddba9fc7be94138ea7ea90029
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment