etc

블록체인 특강 1회차

닝닝깅 2021. 7. 14. 16:09

비트코인으로부터 최초의 블록체인 개념 탄생

분산환경에서 모르는 사람끼리 거래 가능!

 

블록체인 거래방식

거래기록을 10분마다 담아놓은 블록을 하나하나 연결해서 거래장부에 담아놓음

비트코인을 시작하면 암호화된 거래장부를 공유 -> 공공거래장부 (거래자 모두 거래장부 공유)

따라서 거래내역 위조가 어렵다

 

모든 거래내용을 비교하고 과반수 이상 동의한 데이터를 모아서 블록화를 시킨다.

요청에 바로 응답하는 것이 아니라 트랜잭션을 묶어 블록을 만들고 다른 블록체인 노드에 연결되면 그때 처리가 된다.

=> 실제 화폐처럼 사용할 수 없는 이유 중 하나

 

10분단위로 일어나는 내용대조에서 과반수 이상의 동의를 얻지 못할 경우 폐기가 된다

위조하기 위해서는 블록체인 사용자 컴퓨터보다 높은 연산력이 필요하다.

 

비트코인 프로세스

1. A가 B에게 비트코인 보낼 때 트랜잭션 생성

2. 거래정보 담은 블럭 생성

3. 해당 블록체인 네트워크에 참여하는 서버들(클라이언트 프로그램 설치해서 블럭 자동 다운받고,,)에게 블럭 전송

4. 서버들은 독립적으로 블록 검사

5. 이상이 없다 판단할 경우 블록체인에 연결

 

블록체인 종류

퍼블릭 블록체인

각각의 암호화폐를 갖고 있다.

(블록을 만들 때 리워드가 필요할 것 아닌가)

 

프라이빗 블록체인 (기업파트너끼리 사용)

블록을 만들 이유가 분명하기 때문에 리워드가 필요없어 암호화폐 필요없다.

 

와 한국은행이랑 디지털 화폐를 어떻게 사용할지 결정하는데 멘토님도 참여했댕,,

 

 

'패스'앱의 운전면허 서비스는 3사가 슈퍼 노드형 p2p로

각각의 기업이 peer을 두대 이상 보유하여 안정성 확보

슈퍼노드가 서버들의 인덱스 정보로 서버의 응답도 확인하고 서비스 포트도 확인

peer가 죽었다 살아났는데 블록의 갯수가 맞지 않는다면 슈퍼노드의 도움을 받아 갯수를 맞춘다.

 

 

분산합의

분산된 환경에서 각각 다른 컴퓨터들이 특정 데이터값에 동의하는 프로세스

자신이 누구와 합의를 하는지 알 수 없음

실패요인

1. Crash failure: 정상적으로 동작하던 프로세스가 기능을 멈추는 경우

2. Byzantine failure: 갑작스런 공격자의 행위 등 어떤 조건없이 합의에 실패하는 경우

 

악의적인 서버가 합의를 실패하도록 하는 경우에 어떻게 해결할 것인가?

 

블록체인에서 분산합의가 어려운 이유

1. 블록체인을 구성하는 네트워크가 완벽하지 않아 네트워크 fault발생 가능 & Letency발생(global time문제)

2. 악의적인 노드의 존재 가능성

 

해결법

Proof-of-Work(작업증명) (비트코인 사용)

열심히 작업을 하여 악의적인 노드가 아님을 증명하는 기법

블록을 만드는 사람은 보상을 받는다. 

Hash puzzle을 푸는 사람에게 블록을 만들 기회를 준다. -> 어마어마한 전기가 필요하당..

 

* Hash function

- 주어진 입력 데이터를 고정된 길이의 데이터로 바꾸어 출력하는 함수

동일한 입력에 대해 동일한 결과값을 보장

역산이 불가능

 

기업 엔터프라이즈 프라이빗 블록체인들은 악의적인 네트워크가 들어올 수 없기 때문에 두번째 비잔틴 문제는 존재하지 않는다. 

 

머클트리

블록체인에서는 많은 트랜잭션을 위.변조, 손상여부 확인하기 위해서 머클트리 사용

해시함수 사용

트랜잭션의 해시값을 각각 내고 최종적으로 Top Hash 값을 비교하여 트랜잭션의 무결성 보장

 

PKI

공인인증서를 위한 개인키 기반의 암호화 방식을 사용

//공인인증서가 사용자에게 책임을 전가하기 위해서 사용된 거였다니....

개인키 암호화 방식은 거래의 부인방지를 위해서 사용된다.

공개키 암호화 방식은 

 

블록체인에서는 PKI를 트랜잭션 부인방지를 위해 사용한다

 

해킹을 의심해보고 싶다면 이전블록을 해시한 후 현재블록의 이전 블록 해시값과 비교

 

퍼블릭 블록체인에서는 동시에 다른 나라에서 생성된 두개의 블록을 받았는데 둘 다 해시 맞았을 경우 블록이 나누어져서 체인이 여러개 생긴다. 그 때 먼저 블록이 많이 연결된 체인 하나를 선택한다. => 포크화

문제는 선택된 체인을 만든 사람에게만 보상이 돌아간다는 것

 

 

비트코인 데이터구조

트랜잭션 - 비트코인 송금의뢰

이더리움 데이터구조

계약(속성 + 코드)

계약에 대한 명령 + 매개변수만 포함

이더리움 송금의뢰

 

Hyperledger fabric 데이터구조

블록체인 외부에 서버에 도커 컨테이너로 배포된다.

트랜잭션에 

 

 

데이터의 최종값을 DB에서 바로 가져온당.

비트코인이나 이더리움은 모든 트랜잭션 다 비교 

 

 

 

 

 

# DID서비스

개인이 자신의 신원정보를 완전히 통제할 수 있도록 하는 서비스

self sovereign identity 모델 기반으로 만들어졌다. 

 

정보 주권의 변화의 시작으로 MyData프로젝트 한국에서 진행중

 

기존엔 verifier가 issuer에게 발급 확인을 받았으나 DID에서는 블록체인에서 확인하여 verifier와 issuer의 연관이 없어짐

 

내년부턴 금융권에서의 활성화 기대

비대면 계좌 개설 등 본인인증 간편화 될 것

 

ZKP기술 = 보안기술

정보를 알려주나 위치를 알려주지 않아 사용시 프라이버시를 강화시킬 수 있다.

 

- Uport(이더리움 기반 엔진 , 질병청 백신 증명 앱)

- Hyperledger Indy(Indy기반 엔진,