들어가기에 앞서
오랜만에 글을 쓴다. 왜냐면.. 어쩌다보니 블록체인을 2달 정도 공부하게 되어서 웹 공부를 할 시간이 많이 없었다.
처음에는 분산환경에 관심이 있어서 지원한 외부 활동이였는데.(물론 내가 지원할 때 자세히 안 알아봤다..)
직접 가보니 블록체인을 연구하는 곳이였고 처음에는 어리둥절 했지만 공부하니 안되는 건 없었다.
처음시작하니 당연히 블록체인이 어떻게 연결되고 어떻게 합의, 검증을 하는지 아무 것도 몰랐다. 솔직히 그냥 합의, 검증이라는 단어 자체도 프로그래밍으로 합의, 검증?.. 이라는 생각이 들었다. 보안 쪽을 전공한 것도 아니어서 좀 더 어려웠던 것 같다.
하지만 참고할 문서들은 많았고 오늘은 그중에서 Blockchain_go, 비트코인을 기반으로 작성된 Golang 오픈소스를 소개하고, 처음 시작할 때 가장 필요한 이론부분에서 도움을 받았던 글을 소개할려고 한다.
먼저 유명한 오픈소스인데 Golang으로된 오픈소스이다. Github를 사용했다보니 Blockchain에 당장 gRPC, Reed-Solomon을 적용해야 하는데 참고할 코드 없이 내가 코드를 작성하는 것은 말도 안된다 해서 Github에서 찾아보았다.
운이 좋게도 좋은 오픈소스를 찾는데 며칠 안 걸렸다.
먼저 이론부터 보자
https://steemit.com/kr/@yahweh87/1-consensus-problem
스팀잇에서 어미새님이 쓴 글인데 기본적인 퍼블릭 블록체인에 대한 설명을 그림과 함께 이해하기 엄청 쉽도록 해주신다.
시리즈로 있다 1~27까지
기본적으로 이론을 알고 코드를 보는게 훨씬 낫다고 생각한다. 코드를 분석해야하기 때문에 이론을 모르면 분석이 안됐다.
이제 이론을 알았다면 Golang으로 짜여진 오픈소스가 있다 자신이 원하는 방향으로 코드를 수정해보면 된다.
물론.. 나는 코드 전체를 분석하는 시간이 좀 걸리긴 했다.
https://github.com/Jeiwan/blockchain_go
해당 오픈소스는 기본적인 합의, 검증 등등이 포함되어 있고 소켓환경에서 블록을 서로서로 전달한다.
해당 오픈소스를 공부하면서 많은 도움이 되었다. 그리고 해당 코드들을 Chapter1~7으로 설명해주기 때문에 이론을 알고 있는 상태에서 코드로 공부한다면 큰 도움이 된다.
https://mingrammer.com/building-blockchain-in-go-part-1/
한글로 번역하신 분도 있다.
나는 이렇게 공부했다. 많은 도움이 되었고 어느 정도 이론과 코드를 이해할 수 있었고 내가 원하는 방향대로 코드를 수정할 수 있었다.
블록체인에 대한 유료영상들이 많지만, 영상 말고도 혼자 코드 분석하는 게 좋다면 이방법도 나쁘지 않은 것 같다.
코드를 분석하고 완벽하진 않지만 내것으로 만들고 내가 원하는 기술을 적용시키는 시간은 나는 약 두달 정도 걸렸다.
처음 하는데 막막한 분들에게 도움이 되길 바라는 마음으로 글을 쓰긴 했지만 모든 건 자신의 몫인 것 같다. 재미가 있어서 열심히 분석하고 더 긴 코드로 짜여진 오픈소스를 분석할 수도 이론을 더 공부할 수도 내가 원하는 기술을 적용할 수도 있다.
그럼에도 혹시 아직 자료 찾는게 힘들다면 글을 읽는 누군가에게 많은 도움이 됐으면 좋겠다.
마지막으로 Blockchain_go 오픈소스에 gRPC와 Reed-Solomon(소거코드)를 적용시킨 코드를 남기고 마무리할려고 한다.
https://github.com/sleeg00/blockchain
'Go' 카테고리의 다른 글
[Go] gRPC Basics tutorial 예제 분석 (0) | 2023.07.08 |
---|---|
[Go] Go Clean Architecture란 무엇인가? (0) | 2023.05.01 |
[Go] Go의 웹 프레임워크 Gin이란? (0) | 2023.04.29 |
[Go] Go로 로그 패키지 만들기 (1) (1) | 2023.03.07 |
[Go] golang slice안에 특징 (0) | 2023.02.16 |