블록체인 & WEB3.0

서린·2024년 3월 15일

혼자개발

목록 보기
69/82

웹 2.0은
플랫폼이 데이터를 중앙서버에 저장하는 방식
이용자가 소유하고 있는 모든 정보와 자산의가치를 회사가 임의로 변경하거나 처분할 수 있다는 불안감이 있었다
중앙집중화된 시스템의 문제를 인식하게 되었다

웹 3.0은
블록체인 기술을 통해 데이터를 분산 저장하는 방식
블록체인: 네트워크에 참여하는 모든 사용자가 데이터를 분산, 저장하는 기술
이 기술을 위조하거나 변조하려면 과반수의 장부를 해킹해야 하므로 사실상 불가능하다 그래서 데이터를 안전하게 보관할 수 있다
개방적, 안전, 탈중앙적 특징으로
사용자의 데이터를 독점하는 것이 불가능하며 일방적으로 정보를 변경,삭제가 불가능

블록체인 기술을 통해 중앙은행이나 정부의 간섭을 받지 않는 암호화폐에 사용하는 것

블록: 데이터를 저장하는 단위(용량의 단위)
체인: 블록들을 계속 엮어놓는 것

어떻게 엮인 순서를 알수있는가?
해시함수라는걸 쓴다
y = f(x)에서
f(x)는 함수이고, 해시함수는 그 f(x)중에서 특별한 성질을 가지고 있는 함수들
x를 넣으면 y는 빨리 찾을 수 있는데
y를 주면 x를 찾기에는 굉장히 어렵다
이것을 비가역성이라고 한다

좋은점? 블록 1 2 3 4 5 6 이 있다고 한다면
블록1은 잘못된거다, 다른게 블록1이다 라고 거짓말 하기가 어렵다
왜냐면 해시는 1 -> 2로 가기는 쉽지만 2->1, 더구나 6->5->4->3->2->1로 가기는 아주 어렵다

우리가 블록체인을 가장 많이 쓰고있는곳은 거래장부
만약 'A가 B에게 비트코인 1개를 주었음' 이라는 블록2가 있다고 할때
A가 비트코인 주기 싫어져서 블록 2.1을 만들어서 비트코인 1개를 준다는 사실을 없었던걸로 하고 싶으면
포크(블록체인이 둘로 나뉘는 현상, 한 블록에서 해시함수로 이어진 블록이 두개 이상일 때 발생)가 발생하는데
포크가 일어나지 않기 위해서는 블록체인을 만든 모든 사람들에게 블록2에는 'A가 B에게 비트코인 1개를 주었음'이 맞는지 확인이 되어야한다
이렇게 합의가 필요한 과정을 합의 알고리즘 이라고 한다
이렇게 합의를 해 나가다 보면 하나의 체인이 남는데, 이 마지막으로 남은 하나의 체인을 정격체인(Canonical Chain)이라고 한다
이 정격체인에 들어가 있는 거래만 실제 일어난 거래라고 인정을 한다
이렇게 정직한 사람들끼리는 합의에 성공할 수 있다는 것을 비잔틴 오류 허용(Byzantine Fault Tolerance, BFT)이라고 한다

처음에는 투표를 통해서 합의를 하려고 했으나
익명성이 보장되지 않고
동시에 투표하기 불가능하고
개표는 누가하느냐 등의 문제로

각 블록당 반장을 뽑아서 그 반장이 맞다고 하는 블록으로 하자
라는 반장선거 방식의 합의를 시작했다

반장을 뽑는 방법은
지분증명(Proof of Stake)
작업증명(Proof of Work)
Proof of Authority
Proof of Influence
Proof of Believability 등이 있다

0개의 댓글