본문 바로가기

go언어 블록체인

노마드코인 12-30 리뷰

이번 강의는 새로운 블록을 받았을 때 그 블록이 가진 Tx를 보고 mempool에서 지워주는 기능의 함수를 만들어 봅니다

 

여기서 드는 의문은 새로운 블록을 만들면 모든 노드에서 그 mempool은 모두 지워주면 되는 것 아니냐고 할 수 있는데

제가 생각하는 그러지 않는 이유는

1. 블록이 생성됨과 동시에 혹은 0.001초 뒤에 Tx가 발생되어 노드 3000에서는 안지운 mempool을 노드 4000에서는 지울 수도 있음

2. 수수료를 더 많이 내면 빠르게 체인에 추가된다고 하는 것과 연관있어 보임(정확히는 모르겠음)

 

쨋든 시작해봅니다

 

AddPeerBlock() 함수에서 block의 Tx.ID를 for loop으로 일일이 가져와서 mempool Tx.ID와 일일이 대조해보고 일일이 지우고 mempool의 []*Tx는 배열이라 바꾸기 까다로워 새로 만들어주어야 하여 굉장히 비효율적일 수 있다고 합니다

그러므로 mempool의 Tx의 구조를 바꿔서 건강한 코드를 짜는 것 같습니다

Txs map[string]*Tx 구조로 만들어서 Tx.ID를 통해 Tx를 금방 찾고 금방 삭제하여 수정에 용이하게 하기 위함인것 같고 또한 

 

 

새로 알게된 점은 go 언어의 map을 초기화해줄 때 nil을 사용하게 되면 map이 아예 지워지므로 make(map[string]*Tx) 처럼 아예 초기화된 맵을 새로 만들어주어야 한답니다

 

살짝 오류가 났었습니다 

https://yyth.tistory.com/70

 

assignment to entry in nil map 오류

쾅점수는 2점 정도 드리겠습니다 구글링하면 쉽게 나오지만 문법을 모르고 있었다면 당황했을 문법이고, 조금 주긴 아쉬우니 1점 추가하여 2점으로 넉넉히 주었습니다 panic serving : assignment to entr

yyth.tistory.com

 

이렇게 완료하고 나면 노드 3000에서 블록을 생성했을 때 노드 3000뿐만 아니라 노드 4000의 mempool에서도 새로운 블록의 Tx들이 말끔히 지워지는 걸 볼 수 있습니다

 

이제 다음 강의에선 노드가 2개를 초과하여 많아졌을 때 사용할 수 있는 글로벌한 메모리풀을 만들어본다고 합니다

 

그럼 끝!

 

'go언어 블록체인' 카테고리의 다른 글

노마드코인 12-32  (0) 2021.08.19
노마드 코인 12-31 리뷰  (0) 2021.08.19
노마드 코인 12-29 리뷰  (0) 2021.08.19
노마드코인 12-28 리뷰  (0) 2021.08.19
노마드 코인 12-27 리뷰  (0) 2021.08.18