블럭체인이란
블럭체인이란 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술이다.
풀어서 이야기하면 P2P 방식을 기반으로 하여 소규모 데이터들이 체인 형태로 무수히 연결되어 형성된 '블록'이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있게끔 만드는 기술을 의미한다.
즉 다수의 거래내역을 묶어 블록을 구성하고, 해시를 이용하여 여러 블록들을 체인처럼 연결한 뒤, 다수의 사람들이(노드들이) 블록의 내용을 복사하여 분산 저장하는 알고리즘이다.
블럭체인의 거래 과정
🔻 거래과정
1. 트랜잭션 발생
2. 해당 트랜잭션에 대한 정보를 담은 블록 생성
3. 블록이 네트워크상 모든 참여자들에게 전송됨.
4. 참여자들이 해당 블록(거래정보)의 유효성에 대해 검증
5. 참여자 과반수의 데이터와 일치시 해당 블록 유효성 입증됨.
6. 유효성이 입증된 블록은 다른 블록들과 연결되어 해당 트랜잭션에 대한 정보가 참여자들의 컴퓨터에 분산 저장됨.
블록체인에 추가된 새 블록은 네트워크를 통해 모든 노드에 전달되며, 채굴자들은 유효한 해시값을 생성하기 위해 경쟁한다.
블록의 구성
출처(https://steemit.com/kr/@yahweh87/3)
블럭은 크게 hash header body 로 구성된다.
Hash
블록의 버전, 이전블록해시, 머클루트, 타임, 난이도, 논스 즉 header 정보를 모두 더한 것을 sha256 해시함수를 적용하여 출력된 해시값.
Header
- version : 해당 블록을 생성한 비트코인 프로그램의 버전
- previous block hash : 이전 불록의 주소값(즉 이전 블록의 block hash)
- merkle root : 블록체인의 원소역할을 수행하는 블록의 바디부분에 저장된 트랜잭션들을 머클 트리한 최종 결과 값으로 머클루트는 거래정보의 유효성을 검사하는 역할을 한다.
- timestamp : 블록의 생성시간
- 난이도 : 해시 목표 값을 의미하는 지표
- nonce : 채굴자가 해시 계산의 출력을 반복하는 데 사용하는 난수(임시값)로 풀어서 이야기하면 해시값 앞에 특정 자릿수만큼 0이 있을 때까지 연산하여 찾은 난수.
이미지출처https://media.vlpt.us/images/algml/post/20442e4a-2ee2-4397-a868-c3dd7caa2752/image.png
출처https://media.vlpt.us/images/algml/post/396cf23c-edb2-48f1-b38f-3237111f2799/image.png
Body
거래 즉 트랜잭션에 대한 기록.
- 비트코인 트랜잭션에는 송신인의 공개키 값
- 수신인의 비트코인 주소
- 전송하려는 비트코인 금액
- 송신인의 전자 서명
- 송신인이 지출하려는 비트코인의 출처에 대한 정보가 담겨있다.
블럭체인의 종류
☑︎ 퍼블릭 블럭체인
퍼블릭 블럭체인은 참여자 수의 제한없이 누구나 채굴 및 거래에 참여 가능한 블럭체인 생태계를 의미한다.
☑︎ 프라이빗 블럭체인
특정한 기관이나 기업이 자신들의 목적・특성에 맞게 설계한 블록체인을 의미한다. 해당 블럭체인 네트워크는 허가된 참가자들만 노드가 될 수 있다.
암호화
❏ 대칭키 암호(SKC: Symmetric Key Cryptography)
문서를 암호화하는 키와 복호화하는 키가 같다.
❏ 공개키 암호(PKC: Public Key Cryptography)
공개키와 비밀키가 키와 쌍으로 존재한다. 공개키와 비밀키가 달라 비대칭키 암호라고도 한다. 공개키를 이용하여 암호화하고 비밀키를 이용하여 복호화한다. 블럭체인에서는 보통 공개키 암호화방식이 주로 사용되며, RSA방식과 타원곡선암호(Elliptic Curve Cryptography)방식이 존재한다.
❏ 해시함수
입력받은 메시지의 길이에 상관없이 항상 고정된 길이의 값을 출력하여주는 함수이며, 메시지의 위변조를 탐지하여 준다.
- 해시함수의 특징 -
- 어떠한 길이의 메시지가 입력되든 출력되는 해시값의 길이는 고정되어 있다.
- 입력값의 일부만 변해도 출력값을이 완전히 달라진다.
- 출력된 해시값을 토대로 하여 원래의 메시지로 복호화하는 것은 사실상 불가능하다. 이때문에 해시함수는 일방향 함수로도 불리운다.
해시함수의 위와 같은 특징으로 인해 해시함수는 블록체인 암호화에 사용되며, 블록체인은 해시를 사용해 블록을 연결한다.
합의알고리즘
다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘을 의미한다.
‣ 작업증명(PoW : Proof of Work)
컴퓨터로 복잡한 수식을 풀어 조건에 맞는 해시값을 찾으면 블록생성에 참여가능하다. 즉 논스값을 찾는 것이 작업 증명의 핵심이다. 때문에 컴퓨터의 성능에 따라 더 많은 블록 채굴이 가능하다.
ex) 비트코인 / 라이트코인
‣ 지분증명(PoS : Proof of Stake)
해당 암호화폐를 보유하고 있는 지분율에 비례하여 의사결정 권한을 주는 방식으로, 보유한 지분에 따라 블록 생성에 참여할 기회를 부여한다.
‣ 위임지분증명(DPoS : Delegated Proof of Stake)
참여자들의 투표를 통해 상위 노드를 선정하고 해당 노드에게 권한을 위임하여, 선정된 노드가 일종의 대표자가 되어 블록 생성과 관련한 권한을 가지는 것이다. 권한을 위임한 참여자들은 선정한 상위 노드로부터 이자를 받음.
✔️ 블록체인은 블록과 블록을 체인형태로(링크드 리스트)로 연결한 자료구조이다.
✔️ 암호화폐는 블록체인의 데이터 모델을 활용한 예이다.
- 거래의 연속성을 보장하는 UTXO(Unspent Transaction Output)라는 삼식부기 데이터 구조로 가치 유통을 구현하였다.
✔️ 블록체인상 화폐의 거래는 지갑주소를 통해 이루어진다.
- 지갑주소는 공개 키 암호를 기반으로 하며, 해당 지갑주소에 있는 화폐는 해당 지갑주소의 공개키와 일치하는 비밀키를 통해서만 이용할 수 있다. 공개키는 일종의 계좌번호 비밀키는 계좌의 비밀번호라고 볼 수 있다.
✔️ 트랜잭션은 지갑주소를 통해 일어난 거래를 의미한다.
✔️ 각각의 블록에 기록된 데이터는 인위적인 수정 변조가 불가능하다.
✔️ 모든 트랜잭션은 우선 트랜잭션 풀에 저장된 후, 채굴자가 승인했을 때 블록체인에 포함된다.
✔️ 블록체인은 노드끼리 트랜잭션을 복사해 버킷릴레이방식으로 전세계 유포한다.
✔️ 블록체인 트랜잭션의 무결성은 해시함수와 전자서명을 통해 구현된다.
✔️ 해시함수 sha256은 비트코인 블럭체인에서 사용된다.
- 해시함수 sha256의 출력값은 항상 256비트(32바이트)로 고정되어 있다.
- 비트코인은 sha256을 두번 연속 적용한 해시 값을 사용한다.
✔️ 비트코인 블럭체인은 송신자의 공개키를 이용해 암호화해 전송하고 수신자는 공개키의 쌍이 되는 개인키를 통해서 해당 내용을 열람할 수 있다.
[ 가상화폐: Virtual Currency ]
블록체인 내에서 유통되는 화폐로 암호화폐(Crypto currency)라고도 한다.
[ 제네시스 블럭 ]
최초에 생성된 블럭
[ 거래소 ]
실제 화폐와 가상화폐(암호화폐) 또는 가상화폐간 교환하는 서비스를 제공해주는 공간을 의미한다.
[ 포크: fork ]
블록체인을 업그레이드하기 위한 목적으로 기존의 블럭체인에서 분기하여 나가는 것을 의미하며,
하드포크와 소프트포크 두 가지로 구분된다.
[ 하드포크 ]
이전 블록과 호환성을 가지지 않는 포크방식을 의미한다.
[ 소프트포크 ]
이전 블록과 호환성을 가지는 포크를 의미하는 것으로, 기존의 블록체인을 그대로 유지하면서 새로운 기능을 도입한
형태이다.
[ 트랩도어 함수 ]
일방향함수의 한 종류로, 함수의 역을 구하는 것은 어렵지만, 트랩도어라고 부르는 특수한 정보가 있으면 쉽게 역을
구할 수 있는 함수를 의미한다. 예를 들면 어떤 비밀값 y가 있어서, 어떤 x에 대해서 y가 없을 때는 f(x)를
구하기 어렵지만 y가 주어진다면 f(x)에서 x 값을 쉽게 찾을 수 있는 함수를 트랩도어 함수라고 한다.
트랩도어 함수는 암호학에서 주로 사용된다.
[ 공개키기반구조: PKI(=Publice Key Infrastructure)]
인증기관(CA: Certification Authority)이 보인임을 확인해 전자 인증서를 발급하고 유효성을 관리하는 구조.
[ 타임스탬프: timestamp ]
파일을 새로 만들거나 내용을 변경했을 때 운영체제가 자동으로 부여하는 시각을 의미하며, 협정 세계시 1970년
1월 1일 0시 0분 0초를 기준으로 한다.
[ 블록 ]
블록체인의 요소, 다수의 거래 정보의 묶음
[ TXID ]
ransaction ID를 의미하는 것으로, 각각의 트랜잭션에 대하여 부여하는 식별 번호
[ DLT: Distributed Ledger Technology = 분산원장기술 ]
거래 정보를 기록한 원장데이터를 중앙 서버가 아닌 참여자 모두가 기록 및 관리하는 것.
[ hot wallet ]
인터넷을 통해 연결된 지갑
[ cold wallet ]
인터넷이 연결되지 않은 지갑
[ 브루트포스:brute force ]
원하는 결과가 나올 때까지 계속해서 다른 값을 입력하는 기법.
[ 분산원장: distributed ledger ]
중앙 서버나 중앙관리자의 젱없이 분산화된 네트워크의 각 노드들이 데이터베이스를 공유하고 계속 동기화하는 기술.
[ UTXO: Unspent Transaction Output ]
비트코인을 수령한 후 사용되지 않고 블록에 남았는 항목을 UTXO라 하는데, 즉 잔액이라고 볼 수 있다.
[출처]
- 한권으로 끝내는 블록체인 교과서
- 하프포크와 소프트포크 관련 https://namu.wiki/w/%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8#s-6
- 블록구조 https://steemit.com/kr/@yahweh87/3
- 합의알고리즘 http://wiki.hash.kr/index.php/%ED%95%A9%EC%9D%98_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
- 블록의 구성요소
https://steemit.com/kr/@yahweh87/3