- 기존 암호 화폐의 문제점
- 기존 암호화폐 시스템은 보증 기관에서 암호화페를 발급받고, 이를 발급받은 사용자가, 누군가와 거래를 할 때 상대방이, 유효성을 보증 기관에서 증명받아야 하는 시스템이다.
-
- 이는 신뢰하는 기관이 있어야 한다.
-
- 보증 기관은 거짓을 하지 않아야 한다.
- 두 조건을 필요로 한다.
- 에스크로(Escrow) 서비스
- 구매자와 판매자 간의 전자상거래가 원활히 이루어질 수 있도록 중계하는 매매보호 서비스
- 고객이 쇼핑몰로부터 주문한 상품에 대해 고객의 결제 대금을 PG사가 예치하고 있다가 배송이 최종 완료되었을 때 쇼핑몰에게 입금해 주는 매매보호 서비스
- 이 또한 중앙 기관의 신뢰성을 필요로 한다.
- 비트 코인의 탄생
- 기존 암호화폐의 문제점을 보증 기관을 과정에서 제외시킴으로써 해결하려 하였다.
- 보증 기관 대신, 블록 체인을 도입하였고,
- 블록체인에 정보를 세기고, 확인하는 과정을 통해, 신뢰성을 확보하고자 하였다.
- 기존 암호화폐의 문제점을 보증 기관을 과정에서 제외시킴으로써 해결하려 하였다.
- 블록체인이란?
- Linked LIst이다.
- Replicated
- linked List를 필요로 하는 유저는 복제가 가능하다.
- Distributed
- 즉 여러 유저한테 분산되어 있다.
- Consistency maintained by Consensus
- 분산된 데이터들의 일치성은 누군가가 해결해 주는 것이 아니라, 개인의 이득을 위해 대세에 대세와 일치시키는 것.
- Cryptographically lineked
- 링크를 변경하면 이는 반드시 들통난다.
- Cryptographically assured integrity of data
- 데이터 무결성, 이전의 기록한 내용을 바꿀 수 없다.
- Replicated
- 블록에 저장되는 것은 digital signature로 볼 수있다. 즉 public key
- Linked LIst이다.
- 부인 봉쇄
- 만약 누군가가, 이 결제 내가 하지 않았다 주장한다면,
- 아니야. 이거 너가 한 거 맞아라고 증명하는 것.
- 공개키 시스템
- public key
- private key
- 예시1
- 두 쌍을 이용하여, 사용자가 private key로 서명을 하였다면, 추후 이 서명이 내 서명이 맞는 지 확인할 필요가 있다.
- 이 때, 공개되어 있는 public key를 통해, private key를 증명하면, 내 서명인지 알 수 있다.
- 예시2
- 내가 접속하는 사이트가 신뢰할 수 있는 지 어떻게 알까?
- 믿을 수 있는 기관에서 인증서를 발급받는다.
- 이 인증서에는 내가 들어가고 싶은 사이트에 대한 공개키가 적혀있다.
- 이 후 내가 들어가고자 하는 사이트에게 개인키로 서명한 것을 요구하고
- 이를 받아, 내가 가지고 있는 공개키로 확인한다.
- 즉 private key의 비밀 유지는 개인의 몫이다.
- 만약 누군가가, 이 결제 내가 하지 않았다 주장한다면,
- Bitcoin이란 무엇인가
- 비트코인은 protocols의 뭉치이다.
- 즉 비트코인 자체는 비트코인을 정의하는 규칙이다.
- 비트코인 소프트웨어가 이를 작동시킨다.
- 비트코인은 10분 주기로 발굴되게 하며, 비트코인이 발굴된다는 것은, 한 계좌의 비트코인을 다른 계좌로 보내는 transaction들을 담은 block을 기존 블록체인에 이어붙이는 것이다.
- 비트코인은 protocols의 뭉치이다.
- Bitcoin은 어떻게 작동하는 가
- censorship resistant
- 문제:
- 중앙 bookeeper(거래를 관리하고 유효성을 검사하는 기관)이 없어야한다.
- 해결:
- DB를 중앙 bookkeeper가 아닌, 누구든지 상관없이 가질 수 있다.
- 모든 book keeper들은 자신의 이익을 위해 다른 사람들과 동일한 DB를 가져야 한다.
- 자신이 원하는 데로 DB를 조정할 수 있다. 허나 다른 사람들이 자신의 이익에 반하기 떄문에 이를 무시한다.
- 아무나 허락업이 참여하고 나갈 수 있다.
- 문제:
- Accounts need premission to set-up
- 문제
- 내 계좌를 만들어 줄 누군가가 필요하다.
- 해결
- public key를 해쉬한 값을 계좌로 사용하고 password 대신 digital signature를 사용 한다.
- address
- account number와 같은 말이고, public key를 해쉬한 값
- 한 사람이 여러개의 address를 누군가의 허락없이 만들 수 있다.
- 이는 wallet software가 관리한다.
- 이 address에 입금된 돈은 private key없이 절대 사용 못한다.
- 좀 더 설명하자면, 누군가가 송금을 하려할 때 address로 내 public key를 넣고
- 나중에 내가 사용하려면 private key로 증명하고 사용하는 것.
- # 왜 public key를 해쉬하지?
- 문제
- Transaction Ordering
- 문제
- book keeper들은 서로의 정보를 어떻게 일치시키지?
- 네트워크의 전파되는 데에는 속도가 달라, 상호 완벽히 같은 정보를 갖고 있는 것은 불가능하다.
- 이러한 차이를 인정해야 하므로 sink를 맞추는 난이도를 낮춰야한다.
- book keeper들은 서로의 정보를 어떻게 일치시키지?
- 해결
- Block으로 해결한다.
- 한번에 많은 transaction을 모아 block을 만든 뒤 전달한다.
- 즉 bitcoin은 10분에 한 번 만들어지니, 10분에 한번씩 block이 추가된다.
- block이 추가되는 텀이 길기에, 모든 bookkeeper에게 정보가 전달될 수 있다.
- book keeper가 하는 일
- 보류중인 transaction들을 타당한지 확인한 후 전파안다.
- blocks들을 타당한지 평가하고, 저장하고, 전파한다.
- 즉 채굴자가 block들의 타당성을 평가하는데, 이는 사용한 적이 있는 계좌인지등을 평가한다.
- 문제
- Who can create blocks, and how aften?
- 문제:
- block-creater를 어떻게 정할까?
- 어떻게 그들이 너무 블럭을 빨리, 늦게 생성하지 않도록 할까?
- 누구나 block을 만들고 주위에 전달할 수 있어야하며,
- 아무도 누가 다음 블럭을 만들지 선정하면 안된다. 즉 랜덤하게 해야한다.
- 해결:
- block 채굴자들은 게임을 하며, 이 게임은 평균 10분정도 들어아한다.
- 게임은 cheating이 불가능해야한다.
- 누가 이겼는 지 표시할 수 있는 증거가 있어야 한다.
- 게임을 이기면 보상이 있어야 한다.
- proof of work(작업 증명)
- , 네트워크 상의 노드들이 어떤 일련의 작업을 수행하여 블록체인의 보안을 유지하고 새로운 블록을 생성하는 합의 메커니즘입니다.
- 채굴자들은 한 블럭안에 아직 채결되지 않은 transaction을 넣고, 상단(special part)에 임의의 값을 넣는다.
- 이 블럭을 해쉬 함수에 넣어서, 특정 요구한 값 이하가 되면 valid하며, 이를 광고하면 다른 채굴자들이 받아들인다.
- 만약 특정 값보다 크면 special part를 수정하여 다시 cryto hash에 넣는다.
- 여기서 특정 요구한 값이 크면, 쉽게 풀 수 있는 거고, 작으면 쉽게 풀 수 없는 거다.
- Cryto hash
- 여기서 해쉬 함수이다.
- 블럭을 넣는 것
- 이의 입력은 사이즈 제한이 없고. 결과는 고정된 크기 이다.
- Mining
- cryto hash에 값을 넣어, 특정 수 이하가 나오도록 하는것, 이를 채굴이라 한다.
- 이렇게 채굴자가 채굴을 하면 block을 다른 사람들에게 전파한다.
- 그럼 다른 채굴자들은 이의 타당성을 확인하고 받아들인다.
- 문제:
- Incentivizing Block-Creators
- 문제
- 채굴자들은 mining을 하면 보상이 있어야 한다.
- 해결
- Transaction Fees(채굴 보상), Block Rewards
- Transaction Fees
- 이는 transaction을 원하는 사람이 채굴자에게 주는 금액
- 대기하는 transaction이 많을수록, block에 실리기 위해, fee는 높게 책정된다.
- 초기 비트코인의 block size는 1MB로 제한되어 있다
- 문제
- how to bootstrap?
- 문제
- transaction이 느슨할 때는 어떻게 채굴자에게 보상을 주지?
- 해결
- Block Rewards
- 이는 비트코인을 새로 생성해서 채굴자에게 보상으로 주는 것이다.
- 즉 유일하게 기존 존재하지 않은 비트코인을 생성한다.
- 이는 from은 필요없다. to만 있으면 된다.
- block rewards는 초기부터 점점 줄어들고 있다. 이를 transaction fee가 대신하기에.
- Block Rewards
- Block Reward는 초기 50비트로 시작했으면 210,000block마다 절반으로 감소한다.
- 그렇다면 나중에 시중에 존재할 최대 비트코인 수는?
- 210000 * (50 + 50 * 0.5 + ...) = 210000 * 100
- 즉 2100만
- Block Rewards
- 문제
- More Hashing, Faster Blocks, More Monetary Supply
- 문제
- 만약 hashing power가 증가하여 더 빠르게 비트가 채굴되면?
- 해결
- Adjusting Difficulty
- 즉 난도 조절을 한다.
- hash calculation에서 target number를 조정을 하면된다. 이를 작게 하면 난도가 올라간다.
- 난도는 2주마다 갱신된다.(2016 blocks가 생기면)
- next difficulty = current difficulty * (2주/걸린시간)
- 걸린 시간이 길면 난도 하락, 걸린시간이 짧으면 난도 상승
- 문제
- Block Ordering
- 문제
- 앞서서 채굴하려는 사람을 어떻게 막지?
- 예를 들어 지금 100번 블럭이 채굴 됐는데, 101번을 채굴하려하지 않고 102번을 채굴하려 한다면?
- 해결
- Block chain을 이용한다.
- 각각의 block은 이전 블럭을 가리키는 pointer를 갖도록 한다. 여기서 이전 블럭을 가리키는 것은 이전 블럭을 hash한 값이다.
- 즉 block은 이전블럭의 해쉬값을 넣는 것.
- 그럼 이전 블럭이 채굴될 때까지 이 pointer값을 알 수 없고, 이 pointer 값을 block에 넣는 순간 해쉬값은 변할테므로, 다음 block에만 집중할 수 밖에 없다.
- 이를 통해 immutability를 얻을 수 있다.
- Block chain
- 각 블럭은 이전블럭의 해쉬값을 갖는다.
- 이로 인해 불변성을 얻을 수 있다.
- 만약
- 기존의 블럭의 값을 새로 바꾸려 든다면?
- 기존의 블럭 값을 바꾸면, 이를 가리키는 다음 블럭의 해쉬값이랑 달라진다.
- 혹은 한 블럭 이후의 값들을 모두 바꾸려 든다면?
- 다른 채굴자가 받아들이지 않는다.
- 또한 뒤를 모두 바꾸려면 연속적으로 채굴을 성공해야 한다.
- 기존의 블럭의 값을 새로 바꾸려 든다면?
- 만약
- 문제
- Block Clashes/Consensus
- 문제
- 만약 두 사람이 동시에 채굴을 한다면, 어떤 쪽을 채굴자들은 받아들어야 할까
- 해결
- Longest Chain Rule
- 두 채굴이 동시에 일어났다면 채굴자들은 둘 중 하나를 선택해서 다음 채굴을 시도한다.
- 그러다보면 양 쪽으로 chain이 길어 질 수 있는데.
- 이 중 하나는 반드시 더 길어질 것이고
- 그럼 채굴자들은 더 긴 chain을 따른다.
- 이렇게 버려진 block을 orphan이라고 한다.
- 문제
- Double Spend
- 문제
- 만약 내 계좌의 돈을 상인한테 지불하면서, 동시에 내 계좌의 돈을 다른 내 계좌로 보내는 transaction도 넣는다면?
- 해결
- 상인의 transaction이 chain에 안정적으로 연결될 때까지 기다려야함
- 이는 적어도 6 block(즉 한시간)을 권
- 문제
- censorship resistant
'블록체인' 카테고리의 다른 글
[블록체인] 비트코인 메커니즘-난도조절, coinbase트랜잭션,hard fork, soft fork (0) | 2023.12.17 |
---|---|
[블록체인] 비트코인-머클트리(Merkle tree) (1) | 2023.12.17 |
[블록체인] 이더리움이란? (0) | 2023.11.24 |
[블록체인] 정리3 (1) | 2023.10.26 |
[블록체인] 정리2 (3) | 2023.10.26 |