블록체인
다수의 거래내역을 묶어 블록을구성하고, 해시를 이용하여 여러 블록들을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 알고리즘이다.
생성자의 주소부터 현재 소유자의 주소까지 모든 암호화 기록을 갖게 된다.
-> 이미 사용한 돈을 재사용하려고 하면, 네트워크가 거래를 거부할 수 있다.
블록체인 기술을 통해 누구나 신뢰할 수 있는 안전한 거래를 할 수 있다.
비트코인 - 가치의 저장과 전달 기능을 가진 전자화폐 기능에 제한
이더리움 - 블록체인 기술을 이용하여 각종 계약서 등을 위변조 없이 관리할 수 있는 획기적인 기술.
블록의 구성
거래의 최소 단위는 트랜잭션이다.
A라는 사람이 B라는 사람에게 1,000원을 지급하고 B가 그 돈을 받은 경우 이 거래 기록은 더이상 쪼갤 수 없다.
A가 돈을 보내는 행위와 B가 돈을 받는 행위 2개는 별개로 분리될 수 없다.
온라인에서 거래가 발생한 경우, 각각의 트랜잭션별로 하나의 거래내역을 구성한다.
이는 해시함수를 통해 암호화된다.
[거래내역1] "A가 B에게 1,000원을 주었다." --> [해시 1]
EAB8ACE7E11E451938B516334D43100575DC7CC0793DD0CAAC7DA4D5A4D994B5
[거래내역2] "A가 C에게 3,000원을 받았다." --> [해시 2]
63D6BEA36D33EDE6F0CF663A82F239181F2AD3AA3B707A6AD5C2FF6C19BDAA8C
블록체인에서 다수의 거래내역을 묶어 하나의 블록을 구성한다.
하나의 블록에는 하나의 루트해시가 존재한다.
1:1로 대응하는 해시값을 생성한다. 홀수개라면 남은 하나는 자기 자신과 해시
-> 결욱에는 루트해시 하나 값만 남게됨
거래 내역이 하나라도 위,변조 된다고 해도.
루트해시값이 바뀌기 때문에 위변조 되었는지 확인이 가능하다.
그렇게 새로 만들어진 블록은 타임스탬프 서버에 의해 생성된 시간이 기록된다.
타임스탬프 서버
특정한 시점에 존재하고 있었다는 증명
데이터가 변경되지 않았다는 내용증명
루트해시 : 모든 하위 해시들을 다시 해시 함수로 변환한 최종 해시값
체인 연결
하나의 새로운 블록을 구성한 경우
체인처럼 이어져 내려오던 블록체인의 맨 끝에 새로운 블록을 연결시켜야 한다.
블록을 연결시키려면 해당 블록의 이름에 해당하는 해시값을 찾아내야 한다.
새로 구성한 블록의 이름에 해당하는 해시를 찾아내는 일은 수없이 많은 시도를 반복해야 되는 일이다.
해시는 반드시 프로그램에 의해 미리 정해진 목표값보다 작아야 한다는 조건을 충족해야 하기 때문이다.
작업증명 : 특정 블록에 대해 목표값 이하의 해시값을 찾음으로써 새로운 블록을 생성하는 행위
채굴 : 작업 증명의 대가로 일정한 개수의 암호화폐를 지급받는 것
P2P 분산 저장
이런 체인 연결하는 작업을 여러 노드가 경쟁하며 만들어 낸다.
여러 노드 중 가장 먼저 블록 해시값을 찾아낸 노드가 다른 노드에게 완성됨을 알리고, 다른 노드들도 이를 검증하는 작업을 통해, 검증이 완료되면 승인되어 블록체인에 추가된다.
블록체인에는 해당 원본 데이터를 변환한 해시값만 기록하고, 원본 데이터는 별도의 서버에 저장하게 된다.
해커가 서버를 공격하여 데이터를 위,변조 하더라도 다른 사용자들이 갖고 있는 해시값과 다르기 때문에 정상적인 데이터로 인정받지 못하게 된다.
출처 : http://wiki.hash.kr/index.php/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8