관련글
2019/04/15 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 1 번 - Geth 실행 및 디버깅 방법
2019/05/06 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 2 번 - 시작 Log 분석하기
2019/06/14 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 3 번 - geth Main 함수 살펴보기
2019/06/24 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 4 번 - geth 함수 살펴보기
환경
- Ubuntu 18.04.2
사용툴
- VSCode 설치
- vscode에 GoExtension 확장 프로그램 추가
계획
1. golang 설치
2. geth 소스 내려받기 ( using Git )
3. go install 하여 geth 실행 파일 생성
4. 소스 확인을 위한 tool 설치 ( VSCode )
5. geth main 소스 확인
준비과정
1. golang 설치
2. geth 소스 내려받기
- Go 언어는 외부 저장소와의 통신으로 소스를 가져올 수 있다. (GitHub, BitBucket,Launchpad, IBM DevOps Services )
- 각 저장소와의 통신을 하기 위해선 Git, Mercurial, Bazaar 중 선택적으로 우선적으로 설치 하여야 한다.
- 필자는 GitHub에서 가져올 것이기 때문에 Git 을 설치한 후에 아래 명령어를 실행하였다.
- 총 용량이 1.1 기가로 전체 다운로드 받는데 일정 시간이 걸린다
go get -d github.com/ethereum/go-ethereum
3. go install 하여 geth 실행 파일 생성
- 소스를 내려받았으니 해당 소스를 install 하여 geth 실행 파일을 생성해야 한다.
- install과 build의 차이점은 install 시에 라이브러리 파일들을 build 과정에서 재사용할 수 있도록
go/pkg 폴더에 실행파일로 생성한다.
- 라이브러리 파일들은 건들일 일이 없으니 install 하자
go install github.com/ethereum/go-ethereum/cmd/geth
- 생성된 geth를 실행해보자
bin/geth
- 실행 되는 것을 확인했다
4.소스 확인을 위한 tool 설치
- 여러가지 tool이 있지만 vscode 로 진행하겠다.
- vscode를 설치한다. (https://code.visualstudio.com/download)
- view > Command Palette or Shift + Ctrl + P
go 언어 사용을 위해 go Extension을 설치한다.
5. geth main 소스 확인
- 툴을 열고 main 소스를 찾아보자
- main.go 를 확인해보자
- geth의 시작점을 찾았다.
//line 283
func main() {
if err := app.Run(os.Args); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
6. log 찍어보기
- geth 실행시 "Hello, world" 를 출력하고 끝내는 문장을 추가 한뒤
- Debug > start Debugging 을 눌러 디버깅을 시작하자
func main() {
fmt.Println("Hello, world");
return;
if err := app.Run(os.Args); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
- 아래와 같이 콘솔창에 Hello, world 가 출력되고 geth 가 종료되는 것을 확인할 수 있다.
- 혹은 라인 왼쪽에 Debugging Point를 찍어서 소스를 확인할 수 있다.
지금까지 geth 초기 세팅과 디버깅 방법에 대해서 확인하였다.
Go 문법에 대해 부족한 점을 학습하며 소스를 천천히 확인해 보도록 하자
'Blockchain > Ethereum' 카테고리의 다른 글
[ Geth ] RPC 통신 Nginx 인증 보안 처리 (0) | 2019.10.29 |
---|---|
[ Geth ] 파헤치기 4 번 - geth 함수 살펴보기 (0) | 2019.06.24 |
[ Geth ] 파헤치기 3 번 - geth Main 함수 살펴보기 (0) | 2019.06.14 |
[ Geth ] import metamask account into geth (0) | 2019.05.30 |
[ Geth ] 파헤치기 2 번 - 시작 Log 분석하기 (0) | 2019.05.06 |
댓글