09년초에비트코인네트워크탄생
비트코인은 왜만들었나 ? : 전자화폐시스템을 만들어보자
기존 시스템과 차별점? : 완전히 분산화된 전자화폐 시스템을 만들어보자
블록체인이라는 기술이 같이 개발이 되어 들어감
블록체인이라는 기술은 비트코인이 정상적으로 돌아갈 수 있게하는 하나의 핵심 기술
블록체인의 관점에서 봤을 때는 가상화폐에서만 쓰이는 기술은 아니다.
그니깐 블록체인 기술을 사용한 하나의 app이 비트코인이다.
블록체인에 기록이 남게 되면 누구도 지울수 없음
기록들을 누구나 볼 수있도록 기록 -> 투명성 보장
비트코인은 암호화폐
비트코인은 코인이라는 개념이 없다.
앨리스가 1비트코인을 사겠다고 요청을했을때, 앨리스가 그 비트코인의 소유권자가 맞는지 확인하기 위해 공개키암호시스템을 사용하여 전자서명을 생성하여 이 address의 주인이 맞으니깐 내가 이 비트코인의 소유자가 맞다라는 과정을 거친다.
전자서명을 하기 위해서는 개인키가 필요
키가 있어야만 화폐사용가능(소유권주장가능하니깐)
그래서 키는 보통 wallet에 저장해서 사용한다.
비트코인은 탈 중앙화된 네트워크이다.
peertopeer 시스템
보통우리는 서버클라이언트 시스템이익숙
클라이언트는 항상 서버와만 통신하는구조
그거와는 반대로 서버클라이언트 개념없이 참여자들끼리 구성하는 네트워크: 분산 신스템, ptp시스템
비트코인의 경우, 분산된 형태로 만들어주기위해 중앙서버라는애가 존재하지 않게 구성
왜 이렇게 만들었나? 기존에 시도됐던 가상화폐의 문제점들을 해결하기 위해
지금 포인트시스템은 서버 클라이언트 구조
서버안에는 사용자들의 account가 있을거고 그 account에 포인트를 올려야지
중앙서버안에 각 account를 관리하는 형태
중앙서버통해 관리하면 문제점 생김
1. 만약에 카드사의 서버 장애, 공격받을 경우 카드사에 기록되어있던 포인트들이 다 날라가서 쓸 수 가 없다
서버가 중지가 되버리면 다 날라가버리는 문제
2. 우리는 카드사가 불법을 저지르지않을거라고 하지만 카드사가 나쁜맘을 먹어 포인트를 소량 감소시켰을경우 이를 알아채지 못하고 넘어갈 수 있는 경우 존재할 수 있다.
다른사용자들이 중앙서버가 나쁜 짓을 하는 것을 알 수 없다.
그래서 이런 문제점들이 있기때문에 중앙서버로 관리하는 형태는 문제가 있어
모든참여자가 동등하게 관리 및 참여할 수 있는 분산 네트워크 형태로 구성
탈중앙화된 형태를 만들어주면 위 문제점들해결가능
하지만 중앙에 믿고 맡길 수 없는 상태인데 이때 신뢰성을 어떻게 만들것이냐
신규 가입자는 어떻게 관리하나
그래서 비트코인이 이를 해결가능
모든 사용자가 공유하는 일종의 공유물이라고 봀 있다.
확인할 수 있되 변조불가, 정상적인 애들만이 miing에성공한 사람들만 관리가능
누구나 mining과정에 참여할 수 있도록 오픈시켜놓음
이런식으로 구성해서 분산된 환경이라서 각자는 신뢰하기 어렵지만 전체에 대한 신뢰성 획득 가능
새로운 비트코인 발행
비트코인에서는 mining과정을 통해서 새로운 비트코인 획득
mining은 난이도 조절을 통해 전체 비트코인 내에서 10분마다 한번씩 채굴성공하는사람나토록 조절
보상규모는 대략4년주기로 절반으로 감소
비트코인의 구성요소
1. 프로토콜
참여자들이 ptp방식으로 데이터 주고받을 수있도록 만들어짐
2. blockchain
데이터 스트럭쳐(구조) / 실제로 데이터가 저장되고 기록되는 방식
3 .합의 과정
transactoin을 다르게 판단 할 수 있다.
트랜지션을 만들었다고 하자, 사람들 사이에 전파가되기는 하지만, 전파되는 트랜지션이 모든 사용자들에게 다 배분을 하지 못한다. 사람들마다 개별적으로 바라보는 관점이 달라 서로서로 어긋나게 되버려
이를 합쳐주기 위한 합의 과정이 필요
이를 합의 알고리즘이라고 한다.
이 룰안에는 트랜진션이 어떻게 전파되서 할거냐라는 룰이 정해져있다
이룰에 맞춰서 트랜지션이 관리
4.pow
누구나 신뢰할수있는 사람이 없는 상태
비트코인은 pow라는 합의 알고리즘을 쓰고 있다.
이를 이용해서 신뢰성을 확보하고 블록체인을 확장하는 방식을 사용하고 있다.
비트코인이라는 애가 암호화폐가 될려면 만족해야하는 조건들이 존재한다.
1. 내가 화폐가 하나 있어, 만원이있어, 이 만원짜리가 진짜 화페인가 위조 화폐인가를 구별할수있는게 필요하다.
가상화폐의 경우에도 이 가상화폐를 아무나 만들고 발행하는 것이아니라 공식적으로 생산이 가능하게 발행이되어야하고 위조 변조 불가해야한다.
2. 더블 스탠드 - 물리적인 화폐의 경우 이중지불의 문제가 발생하지 않는다. 하나의 화폐를가지고 두곳에 동시에 쓰는 경우를 이중지불
하지만 가상화폐세계의 경우 문제가 될 수 있다.
받는 시점에는 저사용자의 소유자니깐 만원가져도되겠지라고 받는데 두곳중한 가게는 이 돈을 못쓰겠지
그래서 이런 더블 스팬드가 중요한 문제
이를 막을 수 있어야한다.
3. 화폐를 지불할 때, 이 화폐의 주인이 맞는지 확인가능한 수단이 필요하다.
누군가가 나에게와서 지불하겠다고 만원을 내밀었는데 이 만원이 자기게맞는지 구별하지 못하면 문제가 생긴다.
사용자가 가상화폐를쓸때는 사용자가 가지고있는게 맞는가 라는 검증 방법이 필요하다.
비트코인월렛
사용자와 비트코인시스템을 연결해주는 인터페이스 역할
지갑같은 역할
실제 지갑의 기능이랑은 달라
개인키 등 중요한 키들을 보관하는 애
꽤 다양한 형태로 존재
풀노드 클라이언트 : 적극적으로 비트코인에 참여 , 모든 것들에 열심히 참여하는 노드를 지칭
얘가 비트코인을 체계성으로 안정적으로 운영하게 도와줌
일반사용자들입장에서는 풀노드는 부담스럽다.
라이트웨이트 : 일부에만 참여
third party : 직접적인 연결이아닌 신뢰할 수있느 ㄴ서비스테 연결요청하여 third party 시스템을 이용하여 비트코인에 연결
중앙화된 서버클라인언트의 구조에서는 새로운 클라인언트의 정보가 중앙서버에 기록되고 관리됨
하지만 등록을 받아주는 중앙서버가 없어서 앨리스가 account를 만들었다고해서 다른사용자가 이를 인식하고 아는 방식이 아니라서 직접 내 address가 이거야라고 알려줘야한다.