전체 글

저번 글에서 geth 클라이언트를 실행하면 크게 세 가지 함수인 prepare, makeFullNode, startNode가 실행되는 것을 보았다. 이번 글에서는 makeFullNode 함수를 볼 예정이다. // makeFullNode loads geth configuration and creates the Ethereum backend. func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) makeFullNode 함수의 주석을 보면 geth 설정을 불러오고 이더리움 백엔드를 만든다고 한다. 이더리움 백엔드는 타입에 대해 다룬 두 번째 글에서 살펴본 backend 타입을 생각하면 된다. cli.Context를 받아서 node.Node와 eth..
최근(2024년 2월 5일 기준) 가장 핫한 키워드라 하면 "파캐스터" 근데 사람들이 하고 있는 앱이름은 "Warpcast" (워프캐스트) 왜 사람들이 파캐스터라고 할까보니 워프캐스트는 파캐스터의 클라이언트다.. Farcaster(파캐스터)가 뭘까? https://www.farcaster.xyz/apps -> 공홈 https://docs.farcaster.xyz/ -> 공식 문서 참고해서 정리해보겠다.. 파캐스터는 이더리움에 만들어진 탈중앙화된 소셜 네트워크라고 한다. 그리고 오픈소스 프로토콜이라 누구나 가져다가 데이터를 읽고 쓰는 앱을 만들면 된다. 파캐스터 = 이더리움에 만들어진 탈중앙화된 소셜 네트워크이자 오픈소스 프로토콜 사용자들은 그들의 계정을 갖고 있고, 다른 유저들과 상호작용하며 다른 앱으로..
이제부터는 코드를 가져올 예정이기 때문에 글 하나하나가 굉장히 길 것 같다. 그럼 geth 클라이언트의 시작점은 대체 어디일까? main.go 파일을 찾아야 하는데 다양한 패키지가 있고 많은 main.go가 있다. geth 클라이언트를 실행할 때 터미널에서 geth ~~~ 명령어를 입력하게 된다. 이것과 관련된 명령어를 치는 부분인 cmd/geth/main.go 가 바로 시작점이다. 본격적인 흐름을 보기 전에 자주 나오는 타입에 대해서는 한 번 보고가는게 좋을 것 같다. main() 첫 시작 함수인 main() 여기서는 app.Run 을 실행하고, 에러가 있으면 에러 출력과 함께 종료한다. 이 때 app.Run의 argument인 os.Args 는 geth 명령어를 입력할 때 들어오는 값이다. func ..
지난 글에서 geth 클라이언트를 실행할 때 어떤 일이 일어나는지, 시작점부터 실행 순서대로 보도록 하겠다고 했다. 하지만 코드를 살펴본 결과 들어가기에 앞서 geth에서 사용하는 몇 가지 타입에 대해 살펴보면 이해가 더 쉬울 것 같다. 이번 글 부터는 이해를 위해 필요한 코드가 있으면 전부 가져올 예정이라 앞으로의 글들은 좀 길 예정이다. cli 패키지를 살짝 알아보고 아래 4가지 타입을 먼저 확인해보도록 하겠다. - cli 패키지의 App, Context - Node 패키지의 node - ethapi 패키지의 Backend cli 패키지 import 문을 보면 https://github.com/urfave/cli/v2 에서 가져온 것을 확인할 수 있는데,, # https://cli.urfave.org..
Geth 소스코드 분석을 해볼까 한다. Geth 소스코드를 분석한 한글 자료가 있긴 하지만 오래된 자료들이 많다. 게다가 대부분의 자료가 중요한 업데이트 중 하나인 '더 머지' 업데이트 전 자료기 때문에 바뀐 점이 꽤나 많을 것 같다. 이더리움은 계속해서 업데이트 되기 때문에 그런 자료들을 참고해서 나도 한 번 코드를 살펴보려고 한다. 아마 최신 자료가 별로 없는 건, 블록체인 업계에 신규 유입되는 개발자들이 많지 않고 또 과거에 비해 다양한 체인들이 많아져서 골고루 분포하기 때문이지 않을까 생각해본다.. 좋은 자료 및 참고 자료 https://github.com/NAKsir-melody/go-ethereum-korean https://docs.google.com/presentation/d/1kKwMyi..
uzzam
uzzam.dev