#6. 메타버스와 블록체인 2
이전 글에 이어서 이번에는 조금 더 상세하게 블록체인 기술 요소들을 살펴보고 '신뢰'가 어떻게 형성될 수 있는지를 이야기해보고자 한다. 블록체인이 무엇인지 알고 싶은 독자들은 이전 글을 먼저 참고한 후 이번 포스팅을 읽는 것을 추천한다. 아래부터는 블록체인과 더불어 비트코인, 그리고 지갑에 대한 이야기도 조금씩 다루어 보겠다.
https://metawriters.tistory.com/33
#5. 메타버스와 블록체인
메타버스 생태계가 완전히 구성되기 위해서 필수적으로 적용되어야 하는 기술이 바로 블록체인이다. 가상화폐와 코인 그리고 NFT의 거래와 메타버스가 결합한 형태로 Economy, 즉 경제 활동이 가
metawriters.tistory.com
블록체인의 조건
블록체인의 '신뢰'가 작동하기 위해서는 아래 조건들이 모두 충족되어야 한다.
- 한 번 기록되거나 승인된 데이터는 수정과 삭제가 불가능하다
- 데이터를 저장하는 경우 꼭 그 출처가 함께 기록되어야 한다
- 참여자들이 직접 데이터의 무결성을 검증할 수 있어야 한다
- 모든 참여자의 합의를 통해 데이터의 최종 승인과 저장이 이루어져야 한다
위 조건들 하나 하나는 블록체인 기술 그 자체의 근간을 이루고 있는 요소들과 다름이 없다.
이전 포스팅에서 P2P에 대해 잠깐 언급을 했는데, 먼저 위 조건들의 중심에 P2P라는 탈중앙화된 시스템이 존재한다는 것을 인지한 채로 기술을 들여다 봐야 한다.
P2P 네트워크의 특징과 유형
클라이언트 서버 네트워크와 달리 P2P는 참여자들이 직접 데이터를 운반하는 서버와 확인을 하는 클라이언트의 역할을 함께 담당하는 것이 가장 큰 차이점이다.
클라이언트 서버 네트워크 | P2P 네트워크 |
- 다수의 클라이언트를 갖고 하나 이상의 중앙 서버로 구성 - 대부분의 data와 applications는 서버에 설치되어 있음 - 클라이언트는 서버를 통해 자원에 접근 가능 - 서버에 의해서 보안이 처리되므로 보안성이 높음 - 서버에 소프트웨어를 설치하고, 클라이언트는 서버 컴퓨터와 연결하는 소프트웨어만 설치함 장점: 시스템 설계나 유지가 용이함 단점: 장애 발생에 취약. 사용자가 급증하면 속도저하 우려 존재 |
- 개별 정보를 갖고 있는 2대 이상의 컴퓨터로 구성 - 각각의 컴퓨터들은 네트워크 내 모든 컴퓨터들과 data를 공유 가능 - 각각의 컴퓨터는 서버, 클라이언트 역할을 모두 수행 - 각각의 컴퓨터들이 보안을 처리하기 때문에 Client-Server Network에 비해 보안 수준이 낮음 - 각각의 컴퓨터들은 연결을 위한 소프트웨어를 설치해야함 장점: 노드 증가에 대한 부하가 적음 단점: 설계나 구현이 복잡하고 어려움 |
이런 P2P 네트워크에도 유형이 존재한다.
Pure P2P model |
- 중앙성버 사용하지 않음 - 네트워크 참여자들의 컴퓨터가 각기 서버와 클라이언트 역할을 담당 - 데이터 전송 시 모두가 같은 책임과 권한을 가짐 장점: 전체 네트워크를 일괄적으로 공격 혹은 파괴하는 것이 불가능에 가까움. 네트워크 확장성이 매우 높고, 증가에 따른 비용이 제로에 가까움 |
Hybrid P2P model |
- 기존 서버/클라이언트 모델을 완전히 벗어나지 못한 형태 - 중앙 서버가 존재하고, 여기서 중개와 검색을 제공함. - 단, 데이터의 전송은 개인 PC들이 서로 주고 받는 방식으로 진행 장점: 중앙서버가 존재하기 때문에 검색이 빠름. 단점: 네트워크가 커질수록 중앙서버의 부담이 늘어나며, 중앙서버를 공격하거나 문제가 생길 때 전체 네트워크가 무너질 수 있다 |
Super P2P model |
- 하이브리드와 순수 P2P 방식의 장점을 결합한 형태 - 중앙서버의 존재 유무에 따라 장단점을 지닌 옆의 두 네트워크와 달리 슈퍼 피어 방식은 네트워크 안에 중앙서버 역할을 담당하는 Super Peer를 여러 개 운영하며 네트워크를 구성한다 장점: 하나의 중앙서버가 공격 받아도 그 외에 존재하는 Super Peer가 온전하면 네트워크는 유지된다 단점: 구현이 매우 어렵고 구현 방싱에 따라 성능의 차이가 크다 |
위 세가지 유형에서 공통적으로 보이는 요소는 바로 '참여자들의 데이터 확인과 전송'이다.
즉, P2P네트워크의 가장 주된 목적은 탈중앙화 방식으로 구현하여 무작위 개인들이 참여한 공간 안에서 서로를 언제나 탐색 가능하도록 하는 환경을 구축하는 것이다.
이런 블록체인의 특징은 비트코인 거래에서 신뢰를 확보할 수 있도록 한다.
비트코인 지갑과 블록체인의 연관성 (개인키, 공개키)
비트코인을 거래하기 위해서는 먼저 지갑을 개설해야 한다.
이때 필요한 것이 개인키와 공개키이다.
둘은 언제나 한 짝(pair)으로 상호작용하고 모두 무작위 숫자의 조합의 형태를 띈다.
자, 하나의 열쇠가 반으로 쪼개어진 형태를 상상해보자.
개인키는 쉽게 말하면 나만 알 수 있고, 남들에게 알려줘서는 안되는 열쇠의 아주 비밀스러운 반쪽이라고 생각하면 된다.
공개키는 개인키와 하나의 세트로 존재하지만, 남들에게 공개되는 열쇠의 또 다른 반쪽이라고 이해하면 쉽다.
이 반쪽짜리 열쇠들이 딱 하나로 맞아 떨어지는 순간, 모든 거래가 일어난다.
그리고 모든 거래가 이루어지기 위해서는 암호화된 정보를 '해독'하는 과정을 거쳐야 하는데
이 해독의 과정은 간단하게 두 가지 방향이 존재한다.
- 공개키로 암호화된 정보를 개인키로 해독하는 것
- 개인키로 암호화된 정보를 공개키로 해독하는 것
이해를 위해서 아래 이미지를 참고해 보자.
위 그림에서처럼 나만 알 수 있는 '개인공간', 모두가 볼수 있는 '공개된 공간' 그리고 나와 비트코인을 주고 받는 '친구'의 개인공간이 있다. 그리고 개인키와 공개키는 거래에 참여하는 모든 사람들이 지니고 있다.
내가 만약 '친구에게만' 전달하고 남들은 보지 않았으면 하는 사랑고백을 데이터로 저장해 보낸다고 가정한다면,
- 내 러브레터를 데이터화 하여 친구가 공개공간에 오픈한 '친구의 공개키'로 해당 정보를 암호화 한다.
- 그리고 이 정보를 친구에게 전달하면, 친구는 자신이 공개한 '공개키'와 세트로 딱 맞아 떨어지는, 자신만 지니고 있는 '개인키'를 사용해서 이 정보를 해독하는 것이다.
- 그렇게 암호화된 데이터가 해독이 되면, 내 러브레터를 확인할 수 있게 된다.
반대로, 내가 친구와 내기를 해서 질 경우에 커피를 산다는 약속을 했다고 가정해보자.
나는 내가 거짓말쟁이가 아니라는 것을 보여주기 위해서 이 약속을 이행할 것을 당당히 모든 사람들에게 공표하고 내기에 대한 신뢰를 확보하려고 한다.
- 그래서 내기에 대한 약속을 '나의 개인키'로 암호화 하여 공개된 공간에 오픈한다.
- 이렇게 모든 사람들이 내가 공개했던 '공개키'를 사용해 해당 데이터를 해독하여 약속에 대한 정보를 확인할 수 있게 되었다.
- 내 공개키를 알고 있는 친구 역시도 이 약속을 확인하게 된다.
'누구에게', '어떤 정보를', 제한적으로 열람할 수 있게 할것인가?
약속의 이행에 대한 신뢰를 어떻게 확보할 것인가?
이런 고민을 해결하는데 바로 개인키와 공개키가 사용이 된다.
그리고
이 '암호화'와 '해독'의 과정에 사용되는 것이 '해시'라고 하는 블록체인 기술이다.
해시 또는 해시값(hash value)은 단순하게는 원본의 고정된 길이의 요약본(fixed length value)이다.
해시는 해시함수(hash function)를 이용하여 만드는데 일반적으로 원본으로 해시를 만드는 것은 쉽지만 반대로 해시로부터 원본을 만들어 내는 것은 불가능하다.
따라서 특정한 해시값을 만들어내는 원본을 찾기 위해서는 모든 경우의 수를 확인해 보는 수 밖에 없다.
또한 위 그림과 같이 원본이 조금만 변형되어도 완전히 다른 요약본이 나오도록 되어있다.
따라서 두 문서의 원본을 대조하지 않고 해시만 대조하여도 두 문서가 같은지 확인할수 있다.
아까와 비슷한 이미지이지만, 이번에는 원본들이 모두 해시값으로 변환이 된 것을 확인할 수 있다.
- 내 약속의 원본이 해시함수를 통해 해시값으로 변환된다.
- 내 개인키를 사용해 이 해시값을 암호화 한다.
- 이것을 원본과 붙여서 함께 저장하고 공개된 공간을 통해 친구에게 전달한다.
- 친구는 내 공개키를 알고 있기 때문에 이것을 이용해 암호화된 해시를 복원한다.
- 이 복원한 해시와 내 원본이 지니고 있는 해시를 비교했을 때 일치하는지를 확인하여 진짜로 '내'가 보낸 '원본'이 해당 내용임을 확인하다.
5번의 '진짜', 쯕 찐인지의 여부를 가리기 역할이 바로 해시의 메인 역할이다.
중간에 개인키를 사용해 해시를 암호환 것을 '서명'이라고 설명하기 때문에 이는 디지털 서명이라고도 불린다.
▶해시를 사용하면 데이터가 전달 되는 과정에서 어떠한 위조나 변조가 발생하지는 않았는지, 정말 원본을 가졌던 사람이 보낸것이 맞는지를 확인하는 과정이 가능하다.
즉, '신뢰'를 확보하는 것이 가능하다는 뜻이다.
포스팅의 가장 처음에 블록체인의 조건에 대해서 작성을 한 것을 다시 살펴보자.
- 한 번 기록되거나 승인된 데이터는 수정과 삭제가 불가능하다
- 데이터를 저장하는 경우 꼭 그 출처가 함께 기록되어야 한다
- 참여자들이 직접 데이터의 무결성을 검증할 수 있어야 한다
- 모든 참여자의 합의를 통해 데이터의 최종 승인과 저장이 이루어져야 한다
이 조건들을 이전 포스팅과 이번 포스팅에서 다룬 내용을 토대로 한 번 더 찬찬히 살펴보면 이제 얼추 위 조건들이 어떤 방식으로 충족될 수 있는지 납득이 조금은 되리라 생각된다.
여기까지 P2P와 개인키, 공개키 해시에 대한 간략한 설명을 마쳤다.
정말 기본적인 개념 정리를 위한 정도로만 작성을 한 포스팅이기 때문에 추후에 기회가 된다면 비트코인 작업증명과 이중지불 방지에 대한 내용을 덧붙여 추가적으로 블록체인을 더 상세하게 살펴보겠다.