SSAFY 4기 박상우
블록체인
-
중앙집권 방식이 아닌 분산 방식으로 진행
-
모든 거래 정보를 특정 제 3 기관이 아닌 거래를 하는 개인(Peer)이 감독 및 소유 및 배포
대표적인 블록체인 사용 범위- 비트코인
- P2P (Peer to Peer) : Server - Client 중앙 집중 관리 방식이 아닌 상호 연결된 노드들이 자원을 공유하는 형태
- 분산원장 : 분산 DB 환경
-
노드에 자료를 분산
- 특징
- 누구나 장부를 만들 수 있다.
- 누구나 장부를 볼 수 있다.
- 문제점
- 해당 장부를 믿을 수 있는가?
- 2개의 장부가 다르면 누굴 믿을 것인가?
-
- 합의 알고리즘 : 채굴을 통한 합의 알고리즘 진행
-
공개되있는 데이터를 각각의 노드 모두가 업데이트를 진행할 수 있다. 그렇다면 누가 그 업데이트를 주관할 것인가 라는 문제점이 발생한다.
- POW(Proof Of Work) - 비트코인 채굴 형태
- 해시파워(그래픽카드) 에 의한 합의
- 전기세
- POS(Proof Of Stake)
- 보유지분에 의한 합의
- POA(Proof Of Authority) - IBM이 대표적인 방식
- 관리자에 의한 합의
- 하이퍼레져
-
- 개인키 공개키 시스템
- 개인키
- 예) 통장의 비밀번호
- 코인의 소유권 입증
- 공개키
- 예 ) 통장의 공개적인 계좌번호
- 코인 주소
- 개인키
- 이더리움
- Smart Contract
- 비트코인
블록체인의 장점 / 단점
장점
- 제 3 개입이 필요가 없음 (분산화 된 네트워크)
- 해킹 안전 (암호화 / Hash)
- 거래 투명 (블록체인에 기록, 언제나 누구나 열람)
- 비용절감 (시스템 유지 보수 , 보안)
- 메인 서버를 가져다놓고 보안하는 부분이 없어지기 때문에 비용 절감 효과
단점
- P2P 방식 속도 저하
- 신속한 대응 불가 / 기술속도 (향후 5 - 10년정도 이후 정착가능 예상)
- 잘못된 송금이 이뤄질 경우 대응이 힘듬.
향후 예상
- 현재는 중앙 집중 형태로 복사본이 움직인다면, 블록체인을 통해서 미래에는 원본을 통해 움직이는 형태가 될것이다.
블록체인의 구조
- Hash를 통해서 다음 블록을 가리키도록 한다.
- 각각의 형태가 이전 블록의 Hash값을 가지고 있고 해당 블록의 고유 Hash값을 나타낸다.
SHA256 Hash
- SHA 256 은 서명이라 생각하면 된다.
- 해당 해시값이 해당 블록을 나타내는 증명하는 서명의 역할을 하게 된다.
- Secure Hash Algorithms 256 - 2의 256승을 나타냄
- 쇄도 효과(avalanche effect) - 어떤 암호 알고리즘이 입력값에 미세한 변화를 줄 경우 출력값에 상당한 변화가 일어나는 성질을 의미
- Key 값을 넣으면 Hash Function에 의해서 hash값이 지정된다.
- 간혹 hash값이 중복되더라도 동일한 hash값 위치에 저장공간을 마련하여 중복을 피한다.
개인키 공개키
- 본인의 개인키를 이용하여 암호화를 진행
- 암호화를 진행한 수신자에게 전송
- 수신자는 송신자의 공개키를 가지고 암호화된 데이터를 열 수 있음
- 개인키 - 256 비트 -> 32 바이트 -> 16진수로 표기하여 64자리 문자열로 나타남
- 공개키 - 타원을 중심으로 개인키 건너편에 공개키가 있다는 타원 곡선 알고리즘을 통하여 암호 알고리즘이 진행된다.
- message : a->b 1000 이라는 메세지를 적는다.
- 해당 메세지를 Private Key를 이용하여 Sign을 진행한다.
- Sign이 진행되면 Message Signature가 생성된다
- 이후 Verify 증명 단계에서 를 이용하여 Public Key를 이용해서 받아온 Message를 온전히 잘 받아왔는지 확인한다.
- 만약 받아온 message를 임의로 수정을 할 경우 증명이 불가능 한 상황을 확인 할 수 있다.
위의 상황을 도표화 하면 위와 같이 나타난다.
- 1번째 소유자의 개인키가 서명을 통해서 전자서명을 진행하고
- 1번째 소유자의 공개키를 이용하여 검증을 한다.
Transaction
- 트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻한다.
- 예) 은행
- ATM기에 카드를 넣는다.
- 어떤 거래를 할지 선택을 한다.
- 비밀번호를 눌러 인증을 받는다.
- 거래를 완료한다.
- 이 경우 전체의 거래 과정을 트랜잭션이라 볼 수 있다. 만약 하나의 과정에서 문제가 생기면 원복을 시키며 해당 문제를 인식하고 초기화로 돌려보내는 과정이 이뤄지는 일련의 과정 또한 트랜잭션의 조건이라 할 수 있다.
- 예) 은행
- Transaction에서 In / Out put이 있다는게 중요하다.
- 이 Input / Output을 이용하여 Transcation에서 작업이 이뤄진다.
- genesisTransaction : 최초의 트랜잭션은 IN이 없더라도 Out으로 최초 시작을 할 수 있다.
- UTXO (unspent transaction output) : 소비되지 않은 거래 출력값
- 일반적으로 은행에는 고객의 계좌잔고가 존재하며 비트코인에는 자신의 주소에 잔고가 존재 안함.
- 소비되지 않는 거래 출력값만 존재한다.
- Transaction 기능
- Spent
- UnSpent : 미사용 트랜잭션
- Spent : 사용 트랜잭션
- Confrimed : OutPut이 이뤄지게 된다면 블록에 저장이 되어야 한다.
- Unconfirmed : 블록에 미 저장
- 블록이 저장이 안될경우 롤백을 처리
- Confirmed : 블록에 저장된 상태
- 올바르게 output이 되었을 경우
- Unconfirmed : 블록에 미 저장
- Spent
블록체인 구조
LinkedList
- 자료구조 관점
Hash
- SHA256 암호화, Digital Signature 관점
- Key값이 Hash를 통해 암호화를 이뤄짐.