데이터와 인프라 아키텍쳐 - 정답

Lumi·2021년 12월 5일
0
post-thumbnail

💡 머클트리가 무엇인가요? 머클 패트리샤 트리와는 어떤 차이가 있나요?

머클트리는 일단 기본적으로 머클 패트리샤 트리를 포함하고 있는 개념입니다.

머클 트리란 말 그대로 트리 형식으로 데이터를 저장하는 것을 말합니다.

기존의 데이터를 받을떄는 100 이라는 데이터를 한번에 받게 되었습니다.

하지만 머클 트리를 사용하면 100이라는 데이터를 20, 30, 10, 15, 25처럼 부분으로 나눠서 받을수 있게 됩니다.

좀더 세부적으로 가면 이러한 단위 데이터들을 해싱하고 합치고 해싱하는 것을 반복한뒤 최종적으로 100을 만듭니다.

이러한 머클 트리를 이더리움에서는 머클 패트리샤 트리라는 이름으로 사용하고 있습니다.

MPT라고도 하며 블록헤더에 존재하게 되며 블록 헤더의 트리 항목에는 트랜잭션들을 해싱화한 루트 노드 하나만 존재하게 됩니다.

왜냐하면 블록을 채굴할 떄에는 블록의 데이터 부분 즉 트랜잭션부분은 일정하기 떄문에 굳이 계속해서 데이터를 활용하는 것 보다는 데이터 부분을 해싱화한 루트 노드 값만을 활용한다.

  • 만약 트랜잭션이 바뀌면 루트 노드의 값도 바뀌기 떄문에

💡 이더리움에서 블룸필터는 왜 사용되나요?

불룸필터는 이더리움 에서만 사용하는 것이 아닙니다.

다양한 분야에서 활용이 되고 있고 블룸필터를 사용하는 목적은 쉽게 말해

불필요한 데이터를 제외하기 위해서 사용이 됩니다.

불필요한 데이터를 제외함으로써 단순히 필요한 데이터를 가져오고 그로 인해 속도가 향상!

💡 비트코인에서 SPV는 블룸필터를 왜 사용되나요?

기본적으로 SPV는 라이트 노드가 풀노드에게 정보를 요청하는 것을 말합니다.

즉 라이트 노드는 풀 노드처럼 고성능의 시스템을 구성하지 못하기 떄문에 불룸필터를 사용하지 않고 단순히 검증시에 SPV를 활용하여 데이터를 요청하면

모든 데이터를 받아와야 할 것입니다.

하지만 블룸필터를 사용하면 오로지 필요한 데이터만을 받아올수 있기 떄문에 모든 데이터를 받아오는 것보다 효율적이라고 할 수가 있습니다.

💡 비트코인에서 Segwit은 무엇인가요?

비트코인의 확장성을 개선하기 위한 소프트 포크입니다.

즉 업데이트를 말합니다.

트랜잭션은 타원곡선알고리즘을 활용하여 서명을 하게 되고

사용자의 개인키로 암호화한것을 사용자의 공개키를 통해서 복호화 할수 있는 서명을 활용합니다.

비트코인에는 수많은 트랜잭션이 담기게 됩니다

그러면 그 트랜잭션마다 각 사용자들의 서명이 존재 하게 될 것이고 이 또한 수많은 서명이 존재하게 될 것 입니다.

대칭키의 경우에는 많은 용량을 차지하지 않지만 비트코인의 경우 비대칭키를 활용한 서명을 진행하기 떄문에 많은 부피를 차지 하게 됩니다.

  • 대략적으로 62%차지 하는 것으로 알고 있습니다.

즉 트랜잭션이 더 들어 갈수 있는 자리에 서명 데이터가 들어 가는 것 입니다.

세그윗은 이 서명 데이터를 witness라는 공간으로 제외 시켰습니다.

  • 즉 블록에는 더이상 서명데이터가 들어가지 않는 것 입니다..

그러면 이제 블록에는 더 많은 데이터를 담을수 있게 되며 이로인해 TPS가 증가하게 되었습니다.

이떄 일부 채굴자들은 이러한 업데이트로 인해 자신들의 채굴 기술 한부분을 사용할수 없게 되었고

일부 채굴자들이 모여 만들어낸 알트코인이 바로 비트코인 캐시입니다

💡 비트코인과 비트코인 캐시, 비트코인 골드의 차이점은 무엇인가요?

일단 비트코인을 부모 나머지를 자식으로 생각하면 됩니다..

앞서 말했듯이 비트코인의 세그잇 소프트 포크로 인해서 비트코인 캐시가 생겨나게 되었습니다.

비트코인 골드는 비트코인 캐시에 대항하기 위해서 등장한 알트코인 입니다.

특징으로는 기존의 채굴기와 다르게 GUI를 통해서도 채굴이 가능한 특징이 있습니다.

하지만 대표적으로 51%공격을 당한 코인으로 알려져 있습니다.

💡 이더리움에서 머클패트리샤 트리란 무엇인가요?

윗 부분에 설명 하였습니다.!

💡 이더리움에서 RLP는 무엇인가요? 왜 필요한가요? Protocol Buffer와는 어떤 차이가 있나요?

RLP는 이더리움에서 사용하는 직렬화 기법이라고 합니다.

이러한 기법을 활용한 형식을 바이트 스트림이라고 하며 데이터를 저장하거나 전송하기 위해서는 바이트 스트림 형식으로 변환이 되어야 한다고 합니다.

Protocol Buffer과의 차이점은 RLP는 문자열 탕비을 직렬화 하는 방식이 아니고 타입 정보가 내부에 존재하지 않는다는 차이가 있습니다.

💡 이더리움에서 저장용량을 줄이기 위한 prunning은 어떻게 할 수 있을까요?

이 부분은 상당히 범용적인 질문 같습니다.

일단 기본적으로 프루닝은 비트코인에서도 활용이 되며 개발자가 지정해 놓은 데이터의 양만큼 쌓이게 되면 일종의 최적화를 진행하는 것을 말합니다.

제가 아는 바로는 일정 데이터가 프루닝 되었을떄 만약 최근 데이터 파일에 노드가 참여한 이력이 없다면

그 노드를 제외함으로써 프루닝을 진행하는 것으로 알고 있습니다.

중요한 점은 원본 데이터를 삭제하면 안되는 것 입니다.

  • 이는 매우 애매한 상황을 유발하지만 이전의 상태에 사용자가 접근을 할 수도 있기 떄문입니다.

추가적으로 MPT를 활용하기도 합니다.

💡 하이퍼레저 패브릭에서 블룸 필터는 어떻게 사용 되나요?

이 부분은 아직 잘 모르겠습니다.. ㅠ

💡 하이퍼레저 패브릭에서 저장용량을 줄이기 위한 prunning은 어떻게 할 수 있을까요?

이 부분은 아직 잘 모르겠습니다.. ㅠ

💡 B+tree 는 무엇인가요?

이 부분은 아직 잘 모르겠습니다.. ㅠ

💡 대용량 처리를 위해서 고려해야 하는 요소는 무엇이 있을까요?

이 질문은 너무나도 방대한 질문이 아닌가 싶다...

네트워크 상태, 가스비, 코드 등등 그냥 모든 요소를 고려해야 하지 않을까...??

아니면 머클트리 같은 형식을 이용??

💡 비트코인이 사용하는 머클 트리와 이더리움이 사용하는 머클 패트리샤 트리의 차이점은 무엇이고, 왜 다른 자료구조를 사용하나요?

머클 트리는 트리를 만들고 루트 해시를 통해서 데이터의 무결성을 검증하게 됩니다.

반면에 MPT는 연관된 배열을 저장하기 위해 키를 사용하며

노드는 키와 연결되며 이것은 각 노드의 실제 비밀키를 맡긴다는 것이 아니라 일종의 노드의 위치를 말하는 것 입니다.

즉 트리에 저장하는 데이터의 종류가 다릅니다.

💡 블록체인 데이터베이스에 존재하는 레코드에는 어떤 종류가 있나요?

블록레코드와 트랜잭션 레코드가 존재하게 됩니다.

이 데이터는 모두 접근 가능하며 서로 통합이 가능합니다.

💡 CAP 이론이란?

DLT를 기반으로 작동하는 시스템에서 가용성과 일관성에 대한 이론입니다.

일반적으로 분산 네트워크가 보장이 되지 않는다는 전제 하에 가용성과 일관성이 완벽하게 보장되는 시스템은 존재하지 않다는 것을 가정으로 깔고 있습니다.

가용성이란 문제가 발생을 하여도 반드시 데이터는 전송된다는 의미로 FLP이론에서 Liveness와 비슷합니다.

  • 실제로는 같게 보면 안됩니다.

일관성이란 항상 같은 최신 데이터 상태를 유지한다는 의미로 FLP이론에서는 Safety와 비슷합니다.

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글