Ethereum (4) - geth install & dev test(Mac m1)
geth 설치
먼저 m1 전용 homebrew가 설치 되어 있어야 한다. 설치 후 터미널에서 아래와 같이 입력한다.
brew install ethereum
설치 후 버전 확인 방법은 아래와 같다.
geth version
geth Test(Dev)
geth 실행
설치가 다 됬다면 geth를 테스트 해볼 차례이다. geth를 실행하고, 두 계좌를 만들어 간단하게 송금 테스트 및 블록체인 실행을 해 보려고 한다. geth를 dev로 실행하는 방법은 다음과 같다.
geth --dev --identity "블록체인 네트워크 이름" --datadir "블록체인 저장 폴더" --port "30303" --nodiscover --networkid 15 console
- dev : dev 모드로 실행
- identity : 블록체인 네트워크 이름 지정
- datadir : 블록체인이 저장될 폴더 경로, 만약 지정하지 않으면 블록체인은 메모리 상에서만 저장되있다가, 프로그램이 꺼지면 없어진다.
- port : 네트워크 포트(Default:30303)
- nodeiscover : peer을 찾는 기능을 사용하지 않고 수동으로 추가한다.
- networkid : 이더리움 네트워크의 id 값
- console : console로 출력함
아래와 같은 화면이 나오면 geth가 제대로 실행된 것이다.
전체 계좌 조회
해당 콘솔에서 아래와 같은 명령으로 체인에 연결되어있는 현재 계좌들을 조회할 수 있다.
eth.accounts
지금 현재 0xd9bf541f7ee7fdcdad69d95302e9bd878d058336 주소로 계좌가 존재한다.
계좌 생성
계좌를 하나 더 추가해보자. 계좌 추가는 아래와 같은 명령으로 실행할 수 있다.
personal.newAccount()
personal.newAccount("Tim")
둘 중 어떤 방식으로 해도 상관없다. 아래는 계좌의 비밀번호를 Tim으로 설정한다는 뜻이다.
추가된 계좌의 주소는 0xfde949fac585453dfe1aad9c5a70a67667983f440aab070991af637bb9165aa4 이다.
계좌를 추가하고 나서 전체 계좌를 조회해보면 계좌가 하나 더 생겨져있는걸 볼 수 있다.
계좌 잔고 조회
특정 계좌에 잔고를 조회하는 방법은 다음과 같다.
eth.getBalance(eth.accounts[0])
위의 명령어는 계좌 리스트에서 0번째 계좌에 대한 Balance를 조회한다는 의미이다. 해당 명령어를 실행해보면 아래와 같은 결과가 나온다.
0번째 계좌에는 엄청나게 많은 이더가 들어있고, 2번째 계좌에는 0개의 이더가 들어있다.
계좌 이체
0번째 계좌에서 1번째 계좌로 송금해보는 방법을 알아보려 한다. 명령어는 다음과 같다. (가스 수수료는 생략했다.)
eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value: web3.toWei(10000000, "ether")})
10000000개의 이더를 1번계좌로 보내보자.
Tx를 정상적으로 실행하고나서 계좌를 다시 조회해보자.
트랜잭션은 성공했는데, 계좌는 그대로다. 이유는 무엇일까?! 왜냐하면 블록체인을 아무도 실행하고 있지 않기 때문이다.
eth.pendingTransactions
위의 명령어로 조회하면 실행되지 않은 트랜잭션을 조회할 수 있다.
채굴 실행
실행하기 전 코인베이스를 지정해야하는데, 코인베이스란 노드가 채굴에 성공했을 때 이더를 저장할 기본 계좌를 의미한다.
miner.setEtherbase(eth.accounts[0])
해당 계좌를 베이스로 지정하고 채굴을 시작한다. 시작하는 명령어는 다음과 같다.
miner.start(1)
start 뒤에 숫자는 스레드 수를 의미한다.
마이너가 채굴을 시작하면 위에서 실행되지 않았던 Tx가 실행된다.
다시 계좌를 조회해보자.
정상적으로 Tx가 실행됬음을 볼 수 있다.
채굴을 중지하는 명령어는 아래와 같다.
miner.stop(0)
블록 개수를 확인하는 명령어는 아래와 같다.
eth.blockNumber
이 명령어로 현재 블록 개수를 확인할 수 있다.
만약 계좌가 lock되어 있다면 아래와 같은 명령어로 Unlock이 가능하다.
personal.unlockAccount(계좌)
참조
Dev mode | Go Ethereum
Dev mode Geth has a development mode that sets up a single node Ethereum test network with options optimized for developing on local machines. You enable it with the --dev argument. Starting geth in dev mode does the following: Initializes the data directo
geth.ethereum.org