블록체인 BlockChain - 1

sumi_chip·2023년 6월 9일
0

블록체인

목록 보기
1/4
post-thumbnail

개념

  • 트랜잭션의 묶음 + 데이터의 연결 ⇒ 기술
  • 암호화한 데이터 저장을 위해 사용하는 DB의 일종
  • 데이터는 ‘읽기’와 ‘저장’만 가능하고 ‘수정’ 및 ‘삭제’는 불가능함
  • 데이터가 들어있는 수많은 블록이 체인으로 연결되어 있고, 블록 내에는 쪼갤 수 없는 업무 처리의 최소 단위인 트랜잭션이 여러 개 들어감
  • 항상 정보가 오픈되어 있음 → 누구나 확인 가능
  • 실시간 서비스 불가능 → 검증 및 확인이 필요하기 때문 → 온라인 상태에서만 동작 가능
  • 검증 대상이 많아질수록 (한 서비스에 참여자가 많아질수록) 느려짐

    블록체인 =/= 비트코인
    블록체인은 기술이고, 비트코인은 블록체인 기술을 이용한 기능(서비스)이기 때문
    따라서, 블록체인 기술은 중앙 통제가 필요하지 않고 실시간으로 데이터를 전송하지 않아도 될 때 사용하는 것이 좋음

예를 들어, A가 은행을 통해 B에게 1000원을 송금하는 경우
1) 중앙 통제 방식

1. A가 은행 (중개자)에 B에게 1000원을 송금하겠다고 요청함
2. 은행이 송금 요청을 확인함
3. 은행이 B에게 1000원을 송금함

2) 블록체인 방식

1. A가 B에게 1000원을 송금함
2. 동일한 네트워크에 속한 사용자가 해당 트랜잭션이 올바른지 확인함
3. 올바르다면 성공 → 새로운 블록을 추가함

🔴 수정 및 삭제가 안 되는 이유 : 해시값을 구성해 블록을 체인으로 연결했기 때문
🔴 실시간을 보장하지 않음 → 비트코인은 10분에 하나씩 블록이 생성되는데, 10분 간 모인 거래와 암호 연산을 한 결과값을 블록에 담고, 이 데이터를 기반으로 다음 블록의 해시를 구성해 연결하기 때문
🔴 블록체인 관리는 자체적으로 부담해야 함 → 중앙 집권이 아니기 때문


집중 저장 System VS 블록체인 System

집중 저장 System : 중앙 DB가 털리면 모든 데이터가 털림
블록체인 기반 저장 System : 해커가 해당 system을 해킹하려면 모든 블록체인의 정보를 변경해야 함 (탈중앙화)

즉, 블록체인 방식은 중개자 및 통제자가 존재하지 않기 때문에 중앙 통제가 불가능함. 또, 동일한 DB를 동일한 네트워크 상의 모든 사용자가 가지고 있고 (동기화된 DB), 그 사람들이 새로 추가된 블럭의 유효성을 검사하기 때문에 해킹이 불가능함.

비트코인의 경우

  • 오픈 소스로 소유 및 조종이 불가능함.
  • 누구나 참여할 수 있음
  • 유효한 거래일 때만 블록이 체인으로 연결되며, 체인 연결 시 데이터를 수정하거나 삭제할 수 없음 (체인 연결 소요 시간 : 대략 10분)
  • 중개자가 없음
  • 블록체인 연산에 참여한 채굴자에게 리워드를 제공하기 위해 코인을 거래할 때 수수료를 부담하도록 함
  • 개인정보 보호를 위해 블록 내에는 지갑 주소만 저장함
❗️ 블록체인 해킹
블록체인 기술은 해킹이 불가능하지만 코인을 거래할 때 입력해야 하는 비밀번호는 거래소에 저장이 됨
거래소는 중앙 통제 방식을 사용하기 때문에 해킹이 가능함
즉, 해커는 거래소의 비밀번호(자신만 알고 있는 정보)를 터는 것
블록체인은 익명성을 보장하기 때문에 전자 지갑 주소만을 가지고 있어 누군가 비밀번호를 해킹해 다른 사람에게 코인을 이체해도 그 사람이 누군지 알 수 없음

체인 연결 방식

Hash 코드를 사용함

이전 블럭(A)의 해시값과 만들어진 블록(B) 내 거래 내용을 이용해 만들어진 블록(B)의 해시값이 결정됨 만약 A의 블록을 수정하면 A의 해시값을 수정하는 것이기 때문에 B의 해시값과 달라짐 → 연결이 끊김 ⇒ 데이터 정확성을 파악할 수 있음
❗️ 블록체인의 블록 내에 개인정보를 기술적으로 넣을 수는 있음 (사실 의미 없음)
❗️ 블록의 최대 개수는 제한적이지 않고, 설정 또한 가능함
❗️ 공개된 공개된 알고리즘은 좋은 알고리즘 ⇒ 취약점을 찾을 수 없다는 의미이기 때문 (ex) sha256)
    ★ sha256은 현재 해시값을 구할 때 사용하는 암호화 알고리즘임

Hash 방식

One Way Function : 결과값이 주어졌을 때 입력값을 구하는 것이 어려운 함수
아래 예시처럼 "안녕"을 "A"로 출력했을 때 "A"를 가지고 "안녕"을 파악하기 어려움

1. 이진으로 표현된 데이터를 입력
2. Hash 알고리즘 (ex) sha256 등)을 사용
- sha256 사용 시 어떤 데이터든 256bit (32byte)의 문자열을 반환함
- Hash 알고리즘을 사용하면 문자열로 원본 데이터를 파악할 수 없음
- 원본 데이터가 약간만 수정돼도 완전히 다른 문자열을 반환하기 때문
- 한정된 크기이기 때문에 충돌이 발생할 수 있지만 충돌은 서로 다른 데이터가 충돌함
- 즉, A와 a는 서로 다른 문자열이 출력되지만 A와 B는 크기 제한으로 인해 충돌할 수 있음

  1. 변환된 문자열을 출력함

블록체인 사용 예시

  1. 투표 시스템
    • 블록체인 기술을 사용할 경우, 중간 블록을 수정하면 체인이 끊어질 수 있고 모든 투표자가 같은 블록을 가지고 있기 때문에 조작 가능성이 낮음
  2. 게임
    • 게임 내에서 퀘스트 클리어 시 게임 회사 내 모든 게임에서 공통적으로 사용할 수 있는 코인을 지급하면 모든 게임의 코인 값어치가 동일해짐
    • 블록체인은 실시간이 불가능하기 때문에 코인 관련 정보만 블록체인에 저장하고 실시간성이 필요한 몬스터 소환 등은 일반 DB에 저장하는 방식을 사용하는 경우가 많음

0개의 댓글