비트코인
비트코인의 거래 원리, 블록구조(블록해더), 채굴, SHA-256, 머클트리(머클루트)
* 비트코인의 거래 *
– SHA256, 단방향 암호화
– 소유자가 비트코인을 송금할 때 수신자의 주소, 거래내용, 디지털 서명과 송금자의 공개키를 함께 채굴자(노드)들에게 거래내역를 올린다.
디지털 서명은 송금자의 개인키로 만들어지며 채굴자들은 이를 통해 소유주인지, 거래의 주체인지 확인한다.
– 채굴자들은 거래가 유효한지 확인후, 다른 거래들과 함께 묶어서 하나의 블록에 채굴을 시도한다.
– 채굴은 블록을 SHA256 알고리즘 방식을 이용하는데, 무작위 입력값을 넣어 일정한 개수의 0으로 시작하는 값이 나올 때까지 시도한다.(이 0의 개수가 난이도와 관련있다.)
값이 나온다면 네트워크에 해당 블록을 전파하고 전파받은 채굴자들은 블록의 진위여부를 확인하고 블록체인에 포함시킨다.
그럼 거래완료.
– 각각의 블록들은 직전 블록 출력의 해시값을 포함하기 때문에 모든 블록들이 묶이게 된다.
만약, 채굴자가 블록의 거래내역을 바꾸려하면 출력된 해시값이 바뀌고 이후의 블록들도 전부 해시값이 바뀌게 된다.
그래서 다른 사람들이 바뀐 거래내역을 믿게 하려면 바꾼 블록 이후의 모든 블록을 다시 계산해야한다.
결국 네트워크의 50%가 넘는 연산처리능력을 보유해야하기에, 불가능에 가깝다.
이러한 네트워크 공격을 51%로 공격이라고 한다.
* 채굴과정 3줄 요약 *
(1) 채굴자들은 비트 코인 거래들을 묶어서 블록으로 만든다.
(2) 거래내용, 이전 해시, 시간 정보등의 고정된 값 + nonce 라는 바꿀 수 있는 값(이 모든 것을 블록해더라라고 한다)을 double SHA-256(해시함수에 넣고 나온 값을 또 넣는다는 의미)하여
(3) 규칙을 만족하는 (몇 개이상의 0으로 시작하는 해시) 해시값을 찾는다.
– 채굴자들이 해시값을 찾는 방법은 nonce의 숫자를 바꾸는 것이다.
* Blockchain structure *
* Block Header *
해더 종류 |
설명 |
버전 |
버전별의 일종의 규칙이 달라진다. |
이전 블록의 해시값 |
연결된 블록의 해시값 |
해시머클루트 값 |
트랙잭션의 값을 통합해서 가지고 있는 값 |
타임스탬프 |
시간값을 보여준다 |
Bits |
난이도값 |
Nonce |
채굴자가 이 값을 하나씩 늘려가서 정답을 찾는다. |
* 머클 트리, 머클 루트 *
– 모든 거래의 정보를 빠르고 효율적으로 검증할수 있도록 하는 여러 해시 계층으로 분할된 데이터 구조
– 밑에서 위로 올라간다.
– 데이터 구조를 전체적으로 확인할 수 있는 주요 식별자
– 블록이 포함하는 모든 거래정보를 나타내는 최종 데이터
– 최초 데이터를 해시값으로 변환 -> 가장 가까운 노드 2개 합친 후 해시값으로 변환 -> 하나만 남을 때까지 반복
– 블록해더의 머클루트 값은 블록바디의 거래내역 정보(TXID) 해시트리 결과값(즉, 머글루트)이다.
– 머클루트의 역할은 각 거래 정보의 정보들이 변경되었는지에 대한 유효성을 검사하는 역할을 한다.
– 머클루트의 결과값을 통해 블록 해시의 정보가 구성된다. 그렇기에 결과값으로 유효성 검사할 수 있다.
– 멤풀: 후보블록에 포함될 거래들이 모여있는 곳. 채굴자들이 멤풀에서 거래를 선택한다.
트래픽이 높을 경우 높은 수수료를 주는 거래들이 선택됨
아래에 레퍼럴 링크를 통해 가입을 하시면 20% 수수료 할인 혜택을 적용 받으실 수 있습니다