채굴과 노드 - 정답

Lumi·2021년 12월 2일
2
post-thumbnail

💡 채굴이란?

가장 이해가 빠른 설명은 바로 블록을 생성하는 행위라고 하는 것이 가장 빠를것 같습니다.

블록체인 생태계를 만들어 나가는데에 반드시 필요한 행위이며 채굴을 하는 노드를 채굴자 라고 합니다.

참고로 채굴을 하는 노드는 풀노드라고 부르게 됩니다.

이러한 노드들은 채굴이라는 행위를 통해서 보상을 받게 됩니다.

  • 코인 또는 수수료

이러한 보상이 필요한 이유는 채굴자 입장에서는 아무런 이유없이 생태계에 이바지 할 이유가 없기 떄문에 보상을 통해서 이유는 만들어 내는 것입니다.

추가적인 내용

이러한 점에서 우리는 코인이라는 것을 한번 생각해 볼 수가 있습니다.

앞서 말했듯이 코인이 보상으로 주어짐으로써 채굴자들이 채굴이라는 행위를 하게 만듭니다.

이러한 의미에서 코인이 존재하는 이유는 어떻게 보면 블록체인 생태계가 어떻게 돌아가는지 목적을 의미한다고 할 수가 있습니다.

예를들면 비트코인에서는 거래 기록을 블록에 기록함으로써 채굴을 하게 되고 이로인해 보상이 주어집니다.

그러면 코인을 통해서 거래기록이라는 행위를 의도한 것이라는 의미가 됩니다.

하고싶은 말은 단순히 보상이라는 목적도 있지만 추가적으로 특정 행위를 유도해 낼수 있다는 목적도 있습니다.

💡 이더리움에서의 블록싱크 방식

블록 싱크라는 것을 분기가 발생을 하였을떄 처리하는 방식이라고 이해를 하여 대답을 해보겠습니다.

일단 이더리움의 합의 알고리즘은 BFT계열이 아니기 떄문에 분기가 발생 할 수가 있습니다.

분기는 쉽게 말해 비슷한 시간대에 블록이 생겨나 체인이 트리 구조로 퍼지는 것을 말합니다.

이더리움 같은 경우에는 GHOST프로토콜이라는 메커니즘을 사용함으로써 이를 해결합니다.

이를 간단하게 말하자면 가장 많은 연산이 이루어진 경로를 유효한 경로로 선택한다는 원칙입니다.

참고로 비트코인의 경우에는 가장 긴 체인을 선택함으로써 분기를 해결합니다.

가장 많은 연산이 이루어진 경로를 선택한다는 말은 간단하게 가장 최근의 블록 넘버를 사용 한다는 소리입니다.

왜냐하면 가장 최근의 블록넘버를 사용하면 분기가 일어났다는 가정하에 다른 블록보다 더 많은 데이터를 가지고 있게 되기 떄문에 더 많은 연산을 하게 됩니다.

어떻게 보면 가장 긴 체인을 선택하는것과 비슷하다고 생각합니다.

💡 이더리움에서 이벤트는 어떻게 발생되며, 클라이언트에서는 어떻게 감지하나

이 부분에 대해서는 저도 잘 모르겠지만 아는한에서 적어보겠습니다.

이더리움에서 이벤트가 구체적으로 어떤것을 의미하는지를 잘 이해를 하지 못했습니다.

제가아는 블록체인에서 이벤트라는 것은 컨트랙트 로그를 말합니다.

즉 특정 상태변화에 대한 컨트랙트 또는 솔리디티 함수가 실행되면 그에 대한 인자값들을 로그를 기록하는 것을 이벤트 라고 알고 있습니다.

클라이언트에서도 코드에 따라서 이 이벤트를 보이게 하면 감지할수 있다고 생각합니다.

💡 이더리움에서 Receipts정보는 용도가 무엇이며 언제 prunning되나요

receipt는 말 그대로 영수증을 의미합니다.

블록의 헤더에 들어가 있는 정보고 이는 블록에 포함된 모든 트랜잭션에 대한 거래가 값들이 담겨 있습니다.

그러기 떄문에 용도는 후에 라이트 노드에서 풀 노드에게 해더값을 요청하여 머클 패트리샤를 활용할떄 사용되는 것으로 알고 있습니다.

prunning은 일종의 검색할 가지수를 줄이는 것을 말합니다.

즉 생태계에 A와 B의 정보가 담겨 있는데 A라는 정보만이 바뀌게 되면

새로운 A와 B를 만드는 것이 아니라 A는 갱신하지만 B는 전에있는 것을 사용하는 원리라고 이해하면 될것 같습니다.

이러한 프루닝은 현재 이더리움의 머클패트리샤 트리에 적용되어 있는것으로 알고 있습

💡 genesis.block는 무엇인가

최초의 블록이라고도 불리며 네트워크 상에서 단 1개의 트랜잭션이 발생하지 않은 상태를 말합니다.

즉 맨 처음의 블록을 말합니다.

💡 하이퍼레저 패브릭에서 리더피어와 앵커피어란 무엇인가

리더피어는 쉽게 말해 오더피어로부터 받은 트랜잭션을 다른 피어로 배포하는 역할을 하는 피어를 말합니다.

만약 이 리더피어가 정상적인 작동을 하지 못하면 남아있는 다른 피어들 간에 투표를 통해서 재 선출 하게 됩니다.

앵커 피어는 다른 조직에 있는 피어와 통신을 하는 피어입니다.

채널 구성에서 정의 가능하며 0개 이상의 앵커피어가 존재하게 됩니다.

피어는 노드라고 생각하시면 될것 같습니다. [실제로는 다르다고 하는데 저는 잘...]

💡 트랜잭션에서 Two Phase Commit이란?

분산 네트워크에서 트랜잭션을 처리하기 위한 방법입니다.

2단계로 트랜잭션 커밋이 진행이 되기 때문에 2단계 커밋이라고 부르는 것입니다.

1단계는 일단 관리자가 다른 노드들에게 트랜잭션 처리를 할수 있는 지를 물어보게 됩니다.

이떄 가능하다면 트랜잭션을 전송하고 불가능하다면 트랜잭션을 전송하지 않습니다.

즉 1단계를 통해서 일단 검증을하고 2단계에 직접적으로 트랜잭션을 전송하는 것 입니다.

명시적으로 말씀드리면 이는 결혼식과 비슷합니다.

주례자가 신랑 신부에게 결혼을 할 것인지 묻게 되고 서로동의가 되어야만 결혼이 되는 것처럼

트랜잭션도 서로 동의하에 이루어 지게 되는것으로 이해하면 됩니다.

💡 RPC방식과 스트리밍 방식의 차이점

두가지의 공통점부터 알아보면 일단 분산되어 데이터를 전송한다는 점에서 일치합니다.

RPC같은 경우에는 예를들어

기존 클라이언트-서버 모델에서는 100만개의 데이터를 처리하라면 하나의 서버가 100만개의 데이터를 처리하여야 했습니다.

하지만 RPC모델을 적용한다면 해당 작업을 분산되어 작업이 가능합니다.

예를들면 10개의 서버를 만들고 10만개씩 맡아서 처리를 하는 것을 말합니다.

이러면 기존 시스템 모델과는 다르게 더 빠르게 데이터를 받을수 있게 됩니다.

스트리밍 서비스도 이와 비슷합니다.

저희가 대표적으로 넷플릭스를 생각해 볼 수가 있습니다.

넷플릭스에서 처음볼떄에는 화질이 좋지 않다고 시간이 갈수록 화질이 좋아지는 것은 넷플릭스를 경험해보신 분이라면 누구나 알고 있을 것이고 이러한 것이 가능한 이유는 스트리밍 서비스 떄문이라고 할 수가 있습니다.

예를들어 넷플릭스가 영상을 저장해둔 곳에서 저희에게 데이터를 보낼떄까지는 시간이 소요되게 되고 그로인해 버퍼링이 걸리게 되는 것보다는

일부분을 먼저 보내어 일단 화질이 안좋게라도 화면을 보이게 하는 것 입니다.

그후 서서히 원본 데이터들도 보내줌으로써 시간이 갈수록 화질이 좋아지게 되는 것으로 이해를 하시면 될것 같습니다.

💡 채널 MSP와 네트워크 MSP란?

기본적으로 우리는 MSP가 무엇인지를 알아야 합니다.

MSP는 하이퍼레저에서 사용하는 일종의 인증 기관을 말합니다.

저희가 현재 주민등록증으 발급받고자 한다면 공인된 인증 기관에 찾아가야 하는 것과 같은 역할을 한다고 이해를 하시면 될것 같습니다.

일단 크게 두가지로 나뉘게 됩니다.

로컬 MSP와 채널 MSP로 나뉘게 되는데 이 두가지의 차이는 적용되는 범위로 생각하시면 될것 같습니다.

이중 좀더 세부적으로 나뉘게 되면 다양한 MSP가 등장하게 되고 이러한 것은 현 사회에서 특정 기업에 여러가지의 부서가 있다는 것으로 이해를 하시면 될것 같습니다.

채널 MSP는 일반적으로 채널에 참여하는 사용자와 노드들 사이에서의 권한을 정의하고 있고

네트워크 MSP는 네트워크 참여자들에 대한 권한을 정의한다고 이해하면 될것 같습니다.

💡 블록체인에서 블록을 제거 할수 있나요?

음... 이 부분은 가능하기도 하고 불가능 한 것으로 알고 있습니다.

처음에는 무결성이라는 특징떄문에 불가능하다고 알고 있지만 개발자들의 롤백을 통해서 가능하다는 것을 알게 되었습니다.

대표적으로는 DAO의 해킹사건으로 인해 롤백이 이루어 졌고 그로인해 이더리움과 이더리움 클래식이 나타나게 되었죠

기존에는 불가능 합니다.

왜냐하면 블록은 이전 블록을 가르키고 있고 이러한 체인이 제네시스 블록에서부터 계속해서 이어져 왔기 떄무에 중간에 블록을 제거하거나 일정 부분 블록을 삭제하는 것은

블록체인이 가지고 있는 특성을 어긋나는 행위이기 떄문입니다.

💡 오프체인이란 무엇인가? 오프체인 트랜잭션은 어떻게 구성되어 있나요?

오프체인은 말 그대로 블록체인 생태계를 벗어난 곳을 말합니다.

그러한 의미에서 온체인은 블록체인 생태계 내를 뜻합니다.

기본적으로 블록체인이 아니기 떄문에 수수료가 따로 발생을 하지 않고 쉽게 말해 기존의 제 3자가 존재하는 서버라고 생각을 하면 될것 같습니다.

오프체인에서 발생한 데이터중에서 중요한 데이터만을 온체인에 업로드 함으로써 확장성을 늘릴수 있습니다.

대표적으로 라이트닝 네트워크가 존재하며 동시 잠금 키, 시간 제약을 활용하여 오프체인의 거래를 보장하게 됩니다.

💡 블록체인 데이터는 immutable한가요?

네 블록체인의 데이터는 무결성이라는 큰 특징을 가지고 있습니다.

이는 한번 저장되면 원하는대로 누군가가 변경을 할 수가 없다는 특징입니다.

이러한 기능이 가능한 이유는 모든 데이터를 각 노드들이 분산되어서 저장을 하고 있기 떄문입니다.

만약 다른 노드에게 데이터의 변화가 일어나면 해당 변화가 유효한지를 노드들이 판별을 하고 유효하지 않다면 그 노드를 거부하게 됩니다.

💡 P2P네트워크에서 피어검색은 어떻게 동작하나요?

이 부분에 대해서는 정확하게 모르겠습니다.

아는한에서 대답을 해보자면

분산 해시 테이블을 사용 하는것으로 알고 있습니다.

비트코인의 경우 종자 노드로부터 새로운 노드들의 정보를 받고 그 노드들에게 데이터를 전송을 하면서 자신의 이름또한 전송을 하는 식으로 노드가에 통신이 이루어 지는 것으로 알고 있습니다.

💡 하드 포크와 소프트 포크는 무엇인가요?

하드포크와 소프트 포크는 매우 간단합니다.

소프트 포크 부터 다루어 보자면 쉽게 말해 업데이트 입니다.

기존의 시스템에서 잘못된 부분을 고치고자 잠시 다른 체인으로 진행을하여 오류를 수정하고 기존의 체인으로 돌아오는 경우를 말합니다.

에러를 잡는다고 표현할 수도 있을것 같습니다.

반대로 하드 포크는 완전히 새로운 생태계를 만들어 내는 것을 말합니다.

대표적으로 ERC-20토큰을 이용하여 하드 포크가 가능하며 처음에는 단순히 토큰으로 이루어 지다가 이후 메인넷을 발표하여 코인으로 인식이 되는것을 말합니다.

예를 들어

이오스의 경우에는 처음에는 ERC-20토큰 이였습니다.

하지만 자신만의 메인넷을 개발하고 그후 ERC-20토큰이 아니라 이제는 이오스라는 코인으로 변화하게 된 것입니다.

💡 블록은 어떻게 식별하나요?

블록을 식별한다는 의미가 정확하게는 이해가 되지 않지만 제가 나름대로 이해한 부분에 대해서 대답을 해보겠습니다.

블록을 식별한다는 것은 이전 블록을 어떻게 인식한다는 것으로 이해를 하였습니다.

블록에는 고유의 해시값이 있습니다.

이러한 해시값은 현 사회에서 자신의 이름과 같습니다.

이렇게 부여된 이름은 그 다음 블록이 가지게 됩니다.

예를 들면

a - b - c 이렇게 a,b,c라는 블록이 체인으로 이어지게 된다면

a의 이름을 b도 가지고 있고 b에 대한 이름을 c가 가지고 있는 식으로 진행이 됩니다.

즉 블록에는 자신의 이름과 자신 이전의 블록에 대한 이름을 가지고 있는 것입니다.

이런 이름 즉 해시값은 블록에 담긴 정보에 대한 해시값이기 떄문에

만약 공격자가 의도적으로 블록의 정보를 수정한다면 서로 연결되어있는 부분에서 오류가 발생을 하게 될것이고 즉각적으로 알아차릴수 있게 됩니다.

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

0개의 댓글