책에서는 엄청 간단하게 나오는데, 생각보다 물밑 작업이 많이 필요하다.
이건 리눅스로 하는 버전이다.
일단, 컴퓨터에 go가 설치되어있는지 확인해본다.
$ go version
안 깔려 있으면 다음과 같이 설치한다.
$ sudo apt-get update
$ sudo apt-get install golang -y
우분투로 들어간다.
$ cd ~
$ sudo apt-get install -y build-essentail libgmp3-dev golang git tree make
$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ git checkout refs/tags/v1.5.5
$ make geth
그런데 이러한 에러가 떴다.
알아보니 내 컴퓨터에 깔린 go version이 1.31이어서 1.4이상으로 업데이트를 해주어야만 했다.
간단하게 다음과 같이 하면 go version update가 진행이 된다.
$ git clone https://github.com/udhos/update-golang
$ cd update-golang
$ sudo ./update-golang.sh
나는 안되었다....ㅠㅠ
그래서 해결책을 찾았다.
$ go env
를 터미널창에 친다.
여기서 GOROOT라고 된 부분을 복사한다. 나같은 경우는 /usr/lib/go-1.13
이다.
그리고 여기에서 linux 용을 다운받는다.
https://go.dev/dl/
그리고 그 다운로드 폴더를 ubuntu로 열고 진행한다. 나는 1.18버전을 받았다.
$ sudo rm -rf /usr/lib/go-1.13
$ sudo tar -C /usr/local -xzf ./go1.18.linux-amd64.tar.gz
$ echo $PATH | grep "/usr/local/go/bin"
$ export PATH=$PATH:/usr/local/go/bin
$ go version
여기서 echo
를 하면 다음곽 같은 화면이 나온다.
드디어 1.18버전이 되었다.🤣
$ cd ~
$ cd go-ethereum
$ make geth
또 오류가 나온다... 제발 언제까지...
$ sudo apt-get remove golang-go -y
$ sudo apt-get remove --auto-remove golang-go -y
$ sudo add-apt-repository ppa:gophers/archive
$ sudo apt update
$ sudo apt-get install golang-1.9-go
$ geth version
을 터미널에 치면 다음과 같이 나온다.
$ geth console
을 입력하여 콘솔 모드로 들어가자.이렇게 콘솔 모드로 들어가면 에러 메세지들이 콘솔창에 출력이 되어 명령어 작업을 할 수 없다.
그래서 표준 에러를 /dev/null
디바이스에 연결된 파일로 보내서 화면에는 에러가 출력되지 않도록 한다.
$ exit
을 입력하여 빠져나간다.
$ geth console 2 >> /dev/null
root@DESKTOP-GOU39IJ:/mnt/d/download# geth --http --http.port "8545" --http.corsdomain "*" --datadir "private-data" --port "30303" --nodiscover --http.api "db,eth,net,web3" --networkid 15 console
$ geth --dev console
$ eth.accounts
$ eth.blockNumber
eth.accounts
는 계좌의 배열을 나타낸다.
$ personal.newAccount("Jay")
입력하면
다음과 같이 알아서 만들어진다;;
이제 계좌주소가 2개가 되었다.
또 만들어준다.
그리고 잔액을 확인하면 0이 나온다.
$ eth.getBalance(eth.laccounts[1])
$ miner.start(1)
eth가 옮겨지지 않았다. 계정을 unlock시켜보자.
안된다. ....비밀번호 까먹음....
처리되지 않은 트랜잭션을 알아보자.
$ eth.pendingTransactions
트랜잭션을 완료하기 위해 다시 마이닝 작업을 수행한다.
$ miner.start() //마이닝 시작
...
$ miner.stop() // 마이닝 종료
그리고 이더가 이렇게 늘었다...