블록체인 기술 관련 질문입니다.

비트코인을 예를 들자면, 비트코인의 모든 거래내역이 누적되어 지갑을 보유하는 사용자에게 분산저장되고
각각에 저장되는 데이터는 동일하다고 알고있습니다.

그렇다면 A와 B가 코인 C라는 신규거래를 하게되면 이 신규거래에 대한 정보가
모든 저장장치에 동시에 싱크되어야 데이터의 완결성이 유지될 수 있을것같은데요

모든 저장장치간에 네트워크에 온라인으로 연결되어야 동시 업데이트가 가능할것같습니다
일부 저장장치가 네트워크에 연결되어있지 않은경우 해당 업데이트를 못받을테고
새로운 거래들은 계속 발생하게되니,
결국 중앙 서버가 없는 이상 "어느 데이터가 가장 최신의 완결데이터인가"라는 문제가
발생할것이라고 생각됩니다.

이런 문제가 기술적으로 혹은 어떤 논리를 통해 해결되는지 알고 싶습니다

    3개의 답변이 있어요!

    • 안녕하세요

      비트코인이 어떻게 중앙 서버없이 데이터의 무결성을 검증하는가에 대해서 질문주셨네요.

      비트코인은 중앙 서버가 없지만 서버를 대신하는 수많은 노드를 가지고 있습니다.

      이 노드가 서버의 역할을 하는 것인데요.

      풀노드(Full Node)는 블록체인의 최초 제네시스 블록부터 가장 최근에 생성된 블록까지

      모든 블록들의 정보를 가지고 있습니다.

      풀노드는 모든 블록체인의 데이터를 저장하고 모든 거래를 검증하고 실시간으로

      데이터를 업데이트하며 검증된 데이터를 다른 노드들에게 전달하는 일을 합니다.

      채굴자들은 블록을 마이닝할 때 데이터의 검증을 해야하기 때문에 풀노드입니다.

      가장 먼저 최신 블록을 채굴한 채굴자의 풀노드에 새로운 블록 데이터가

      업데이트되고 이 풀노드는 업데이트 된 정보를 다른 노드들에게 전달합니다.

      그렇기 때문에 네트워크에 연결되지 않은 노드가 있다고 해도

      다른 노드들에 의해서 최신 데이터가 계속 업데이트되고,

      최신 데이터를 가지고 있지 않은 노드는 네트워크에 연결 시에

      가장 최신의 모든 블록 데이터를 가지고 있는 다른 노드에게 정보를 수신하므로

      중앙 서버없이도 데이터 무결성 검증이 가능하게 됩니다.

    • 안녕하세요.

      말씀하신 부분을 해결하기위해 PoW에서는 가장 먼저 Nonce값을 찾은 노드를 최신으로 정합니다. 난수의 해답을 가장 빨리 찾은 노드가 '나 찾았어! 맞는지 확인해줘'라고 다른 노드에게 전파를 합니다. 이후 다른 노드들은 해당 값이 옳은지 확인하는 과정을 치르게 됩니다. 해당 Nonce가 맞다면 해당 블록은 마감이 되고 새로운 Nonce값을 찾는 문제가 나오며 노드들끼리 서로 경쟁을 하게 됩니다.

      블록이 생성된 뒤에도 해당 블록이 옳다는 것은 사실 증명하기 어렵습니다. 따라서 6 confirmation rule을 도입하여, 6개의 블록이 채워진 후에야 완전한 확정을 하게 됩니다.

    • 안녕하세요, 굉장히 좋은 질문 주셨는데요.

      부족하지만 답변 드리겠습니다.

      블록체인 기술의 핵심인 DLT, 즉 분산원장 시스템에서는 암호화된 키값을 통해 어떤 정보가 가장 우선적이며 완성된 정보인지를 알 수가 있습니다.

      결국 로깅을 통해 추적해보면, 문의 주신 "어느 데이터가 가장 최신의 완결데이터인가" 를 알 수 있는 것이지요.

      이는 변조 불가능한 부분이기에 블록체인 기술이 굉장히 안전하고 신뢰할 만한 강점을 가지고 있어서

      투표, 의료 분야 시스템에서 블록체인을 적용하는 곳이 점차 늘어나고 있는 추세입니다.

      도움이 되셨길 바라겠습니다. ( _ _ )