Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
[STEP 5] Blockchain Structure (Types, Genesis, Header, body, Life Cycle, TPS, OFF-CHAIN, ON-CHAIN, SIDE-CHAIN)
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2022-08-09
2022-08-03
1517
## Blockchain structure 블록체인은 말 그대로 데이터를 저장하고 있는 블록들이 연속적으로 연결된 데이터 형태를 의미합니다. 자료구조로 보면 딱 **링크드 리스트**입니다. 링크드 리스트 자료구조를 보면 각 데이터 덩어리(노드)는 다음 순서의 자료가 있는 위치를 데이터를 포함하고 있습니다. 블록체인도 근본적으로 링크드 리스트이기 때문에 이러한 자료들을 포함하고 있습니다. 블록체인을 이루고 있는 여러가지 정보들에 대해서 자세히 다뤄보려 합니다. ### Types 블록체인은 크게 퍼블릭 블록체인, 프라이빗 블록체인 그리고 컨소시엄 블록체인으로 나눌 수 있습니다. 각 블록체인의 특징은 아래 테이블에 정리했습니다. | 구분 | 퍼블릭 블록체인 | 프라이빗 블록체인 | 컨소시엄 블록체인 | | --- | -------- | --------- | --------- | | 개념 | 거래하는 모든 노드가 기록을 보유 | 특정 노드만 기록을 보유 | 소수의 관리주체가 노드를 관리 | | 거버넌스 | 한번 정해진 법칙을 바꾸기가 매우 어렵다 | 중앙기관의 의사결정에 따라 변경 할 수 있다. | 컨소시엄 참여자의 합의에 따라서 변경 할 수 있다. | | 데이터 접근 | 누구나 접근 가능 | 승인된 사용자만 접근 가능 | 승인된 사용자만 접근 가능 | | 거래증명 | 알고리즘으로 동작, 익며의 거래 증명자 | 중앙기관에 의하여 거래 증명 | 사전에 합의된 규칙에 따라 거래검증, 인증된 증명자가 존재 | | 암호화폐 | 필요 | 불필요 | 불필요 | | 장점 | 안정성, 신뢰성, 익명성, 투명성 | 높은 효율성과 확장성, 빠른 속도, 기업특화 가능 | 높은 효율성, 확장성, 빠른 속도, 투명성 | | 단점 | 낮은 확장성, 느린 속도 | 상대적으로 낮은 보안성 | 관리자의 개입이 필요할 수 있음 | | 활용 예 | 비트코인 | Linq | R3 CEV | ### Genesis Block 제네시스블록은 블록체인의 첫 번째 블록이다. 이후 만들어지는 블록은 이 첫번째 블록에 연결되어서 "연속된 블록"이 만들어진다. 즉 제네시스블록이 만들어졌다는 것은 블록체인 네트워크가 시작되었다는 것을 의미한다. 실제 세상에서 사용하는 원장의 첫번째 페이지 혹은 원장의 첫표지 라고 생각하면 된다. 비트코인의 경우 블록은 약 10분을 주기로 생성되며, 거래 기록을 끌어 모아 블록을 만들어 신뢰성을 검증하면서 이전 블록에 연결하여 블록체인 형태가 된다. 여기서 처음 시작된 블록을 제네시스 블록이라고 부른다. 즉, 제네시스 블록은 그 앞에 어떤 블록도 생성되지 않은 최초의 블록을 말한다. 블록은 평균적으로 10분에 하나씩 생성이 된다. 민주적인 합의를 거쳐 블록이 생성된다. 블록은 바디(body)와 헤더(header)로 구분된다. 바디에는 거래 내용이, 헤더에는 머클해시(머클루트)나 넌스(nounce, 암호화와 관련되는 임의의 수) 등의 암호코드가 담겨 있다. * 제네시스블록은 최초로 만들어진 비트코인 블록의이름이다. * 2009년 Satoshi Nakamoto라는 개발자가 Genesis Block를 만들었다. * 제네시스 블록은 비트코인 거래 시스템의 시작이며 비트코인 블록체인에 있는 다른 모든 블록의 프로토타입이다. ### Creation Process Blockchain 위에 장부가 작성되는 기준은 해당 네트워크에 참여하고 있는 Node or Participant 들이 해당 기록이 참인지 거짓인지 과반수 동의하에 기록될 수 있다. 해당 Node 들은 전세계적으로 분산되어 있고, 전세계를 아우르는 하나의 거대한 장부를 형성한다. 따라서 특정하 신뢰 필요없이 Consensus를 통하여 기록이 작성된다. ![image](https://docs.google.com/drawings/d/e/2PACX-1vQlr_COFqNapOZZluxz9eoK0oBFRvEer7fyZUokU0CTr0lzsb7ivHquNbQM0ZyttdHINZiaaY9-umZI/pub?w=1422&h=804) 가령 블록 생성 합의과정은 하나의 노드가 하나의 투표권을 가지지 않는다. 가장 많고 가장 빨리 작업을 한 사람이 블록에 기록하고 블록을 생성할 수 있는 투표권을 더 많이 갖는다고 할 수 있다. POW (작업 증명) 작업이란 수학 문제를 푸는 것을 말한다. 다시말해 가장 빠르고 많은 수학문제를 푸는 사람이 블록을 생성할 수 있는 권한을 더많이 갖게된다. 그런데 이 수학문제는 사람의 머리로는 풀 수 없다. 고도의 연산능력을 갖춘 슈퍼컴퓨터가 계산할 수 있는 수학문제이다. 수학문제를 풀기 위해 해시 라는 개념이 필요하다 문구가 조금만 달라져도 해시값이 전혀 달라지게 된다. 이는 거래내용을 해시값으로 저장하게 되면서 블록체인 장부의 보안에 큰 역할을 한다. 박스당 걸리는 시간은 대개 일정하고, 거래원장이 담긴 박스를 봉인하는 시간은 명백히 말하면 특정 다수의 거래원장이 블록에 쓰여지는 시간이라고 볼 수 있다. ### Creation Routine 블록(block)이란 다수의 트랜잭션을 모아서 하나로 관리하기 위한 묶음이다. 예를 들어, 비트코인의 경우 10분간 진행된 약 2,000건의 거래내역을 하나의 블록으로 묶어서 관리한다. 라이트코인의 경우 약 2분 30초 동안 진행된 거래내역을 하나의 블록으로 만들어 관리한다. 하나의 블록을 다음 블록과 이어주기 위해 해시를 이용하여 체인 구조를 만들 수 있다. 이처럼 **다수의 트랜잭션을 블록으로 묶은 후 시간 순서에 따라 체인으로 엮은 것을 블록체인 (blockchain)** 이라고 한다. * 비트코인 : 약 10분, 약 2,000 건의 거래내역을 하나의 블록으로 한다. * 라이트코인 : 약 2분 30초, 진행된 거래내역을 하나의 블록으로 한다. * 이더리움 : 약 15초 * 클레이튼 : 약 1초 ### Header 각 블록은 크게 Header와 Body로 구성이 된다. 블록헤더와 블록바디는 서로의 정보를 비교하면서 위변조 가능성을 확인하며 무결성을 높인다. * definition * **[버전](http://wiki.hash.kr/index.php?title=%EB%B2%84%EC%A0%84&action=edit&redlink=1)**(version, 4바이트) : 말 그대로 이 블록헤더의 버전이다(윈도우 7,8, 10과 같은). 현재 이 블록헤더를 만든 비트코인 프로그램의 버전 번호가 된다. * **[이전블록해시](http://wiki.hash.kr/index.php/%EC%9D%B4%EC%A0%84%EB%B8%94%EB%A1%9D%ED%95%B4%EC%8B%9C)**(previous block hash, 32바이트) : [블록체인](http://wiki.hash.kr/index.php/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8)이 검증 가능한 [체인](http://wiki.hash.kr/index.php/%EC%B2%B4%EC%9D%B8)이 되는 중요한 이유이다. 백서 글에서 설명했듯이 각 블록들은 이 이전 블록해시를 통해서 연결된다. 각 블록들이 이전 블록의 내용을 확인하고 저장하고 있으니 그 검증이 최초 블록인 [제네시스 블록](http://wiki.hash.kr/index.php/%EC%A0%9C%EB%84%A4%EC%8B%9C%EC%8A%A4_%EB%B8%94%EB%A1%9D)(genesis block)까지 이어지는 것이다. 블록 중 중간에 하나를 고치려면 그 뒤에 모든 블록을 고쳐야 하므로 각 블록의 거래내역들은 변경할 수 없는 영원한 기록이 되는 것이다. * **[머클루트](http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%EB%A3%A8%ED%8A%B8)**(merkle root, 32바이트) : 백서 글에서 설명한 [머클트리](http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC)의 루트 부분이다. 이 루트 부분이 SPV 노드를 가능하게 만들고 거래내역 검증을 쉽게 해준다. * 머클트리는 블록 내에서 다수의 원장(ledger)들을 암호화하고 합치는 과정을 반복하여 최종적으로 하나의 유닛(Unit)으로 암호화하는 방법이다.[\[1\]](http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC#cite_note-1) 머클트리의 형태는 블록이 보유하고 있는 거래 내역들의 [해시값](http://wiki.hash.kr/index.php/%ED%95%B4%EC%8B%9C%EA%B0%92)을 가장 가까운 거래내역끼리 쌍을 지어 해시화하고, 쌍을 지을 수 없을 때까지 해당 과정을 반복하여 완성되는데, 이 과정을 통해 다수의 [데이터](http://wiki.hash.kr/index.php/%EB%8D%B0%EC%9D%B4%ED%84%B0)를 하나로 묶어 용량을 절약할 수 있다. * 머클트리에서는 모든 거래내역들을 해시화한 [머클루트](http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%EB%A3%A8%ED%8A%B8)를 통해 거래내역의 변동여부를 쉽게 확인할 수 있고 이 머클루트를 헤더에 담아 [트랜잭션](http://wiki.hash.kr/index.php/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98)의 유효성을 보장한다. 또한 머클 경로(Merkle path)를 제공받아 특정한 트랜잭션이 블록에 유효하게 있는 효율적인 검사가 가능하다. 즉, 머클트리는 모든 정보를 압축하여 간단하게 표현한 데이터로서 머클트리를 통해 데이터의 간편하고 확실한 인증이 가능하다.[\[2\]](http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC#cite_note-2) * **[타임스탬프](http://wiki.hash.kr/index.php/%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84)**(timestamp, 4바이트) : 블록의 대략적인 생성 시간을 뜻한다. * **[채굴 난이도](http://wiki.hash.kr/index.php/%EC%B1%84%EA%B5%B4_%EB%82%9C%EC%9D%B4%EB%8F%84)**(해시 목표값, bits, 4바이트) : 블럭 생성은 약 10분에 하나씩 만들어지는 것으로 블록체인 네트워크에 설정되어 있다. 그러나 다른 중앙화된 시스템처럼 관리자가 있는 것이 아니므로 네트워크 안에서 이 시간이 조정되게 만들어져 있다. 그 시간을 조정하는 장치가 바로 이 비트(bits)라고 불리는 채굴 난이도(採掘難易度, mining difficulty)이다. * **[논스](http://wiki.hash.kr/index.php/%EB%85%BC%EC%8A%A4)**(nonce, 4바이트) : **논스는 블록을 만드는 과정에서 적절한 해시값을 찾는 재료**이다. 1씩 올려주면서 적절한 해시값을 찾게 해주는 재료가 된다. [작업증명](http://wiki.hash.kr/index.php/%EC%9E%91%EC%97%85%EC%A6%9D%EB%AA%85) 방식의 유일한 변수가 된다. ### Body * definition * 바디는 많은거래 내역이 들어간다. 거래내역의 크기에 따라 블록 하나에 들어가는 거래내역의 수도 달라진다. **바디에는 머클트리를 따로 저장하지 않는다.** 바디에는 INPUT , OUTPUT같은 거래 그 자체만 들어 있다. ### TPS * definition * Transactions per second 로 초당 거래처리량을 말한다.블록체인 성능을 가늠하는 중요 기준이기는 하지만 **절대지표는** 아니다. * **블록체인 속도 = TPS, 블록 생성 시간 (Creation Time), 확정 시간 (Confirm time) 결정된다**\*\*\*\* * TPS는 Software 설계, Hardware 및 Network 성능, Transaction 종류에 따라 속도 차이가 발생한다. 가령, 스마트 계약 Transaction은 단순 송금 대비 더 많은 연산을 요구하므로 TPS가 낮다. 그리고 같은 기능을 수행하더라도 실제 코드 구현에 따라 TPS 차이가 발생한다. **가령**, Bitcoin \~7 TPS, Ethereum 15 \~ 20 TPS, EOS 1000 TPS 정도까지 개선되었지만, Visa 카드의 Visanet 1만 TPS 비교하면 아직 한계가 크다. 은행권의 송금용으로 개발된 리플도 현재 1500TPS이다. | | TPS(초당 트랜잭션 수) | 블록 생성 시간 | 확정시간 | | --- | -------------- | -------- | ---- | | 블록체인 시스템 | 초당 처리되고 저장되는 트랜잭션의 수 | 블록이 생성되는데 걸리는 시간<br>(네트워크의 Latency에 해당) | 내 트랜잭션이 최신 블록(메이저 포크)에 들어 있다는 것을 보증해주는 시간 | | 회사업무에 비유하면 | 거래원장을 받아서 처리하는 직원의 업무 속도 | 거래원장이 담긴 박스를 봉인하는 시간 | 결재 라인을 따라 계속 도장을 찍어가는 시간 | | | 속도가 빠른 직원은 같은 시간 더 많은 원장을 처리 | 박스당 걸리는 시간은 대개 일정 | 거래소마다 컨펌수가 다름 | * example * 여기서 속도란, 내 행동이 블록체인에 저장되기까지의 시간을 의미하며, 특히 블록 생성 시간과 확정 시간은 블록체인에만 존재하는 특정 요소로, TPS가 아무리 높아도 이 2 요인에 따라 처리속도가 늦어질 수 있다. 가령, TPS 아무리 높아도 블록 생성 시간이 10분이면, Trasnaction 저장시간은 최소 5분 소요된다. 최근에는 거래소들이 보안성 강화 사유로 컨펌 수를 높이면서 거래 속도가 더욱 늦어지고 있다. * Ethereum 플랫폼 위에서 구동하는 DApp은 1850개, 수 많은 서비스가 Ethereum 이라는 플랫폼에서 돌아가면서 각자 거래 처리를 위한 Transactions 보낸다. 다만 Ethereum의 초당 처리속도는 20 TPS 정도이므로, 만약 1800여개 DApp이 1초에 하나의 거래가 일어나더라도 이 가운데 20개밖에 처리하지 못한다. | 사례 | 적용분야 | 합의 알고리즘 | 거래처리속도 | 블록 생성시간 (블록크기) | | --- | ---- | ------- | ------ | -------------- | | Bitcoin | 암호화폐 | PoW (SHA-256 기반) | 7TPS | 10분(1MB) | | Litecoin | 암호화폐 | PoW (Scrypt 기반) | 56TPS | 2.5분(4MB) | | Ripple | 국제송금 | 리플 프로토콜(노드들간 직접 합의) | 1,500TPS | 당사자끼리 직접 거래 | | Stellar | 국제송금 | SCP(Stellar Consensus Protocol) | 1,000TPS | 당사자끼리 직접 거래 | | Monero | 암호화폐 | PoW(Cryptonight 기반) | Unknown | 2분 (크기 제한 없음) | ### ON-CHAIN, OFF-CHAIN, SIDE-CHAIN * [https://medium.com/@dbl.mains/dbl의-klaytn-스터디-2주차-2a270ab31e5d](https://medium.com/@dbl.mains/dbl%EC%9D%98-klaytn-%EC%8A%A4%ED%84%B0%EB%94%94-2%EC%A3%BC%EC%B0%A8-2a270ab31e5d) [그라운드X 성기준 시니어매니저.pdf](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/49c6c8a8-ec54-4bae-bbed-022ab811af8e/%E1%84%80%E1%85%B3%E1%84%85%E1%85%A1%E1%84%8B%E1%85%AE%E1%86%AB%E1%84%83%E1%85%B3X_%E1%84%89%E1%85%A5%E1%86%BC%E1%84%80%E1%85%B5%E1%84%8C%E1%85%AE%E1%86%AB_%E1%84%89%E1%85%B5%E1%84%82%E1%85%B5%E1%84%8B%E1%85%A5%E1%84%86%E1%85%A2%E1%84%82%E1%85%B5%E1%84%8C%E1%85%A5.pdf) 블록체인의 구조에 대해서 대략 이해가 가시나요 ? 복잡하게 생각할 필요가 없습니다. **Body**와 **Header**로 구성된 데이터의 **링크드 리스트**로 이해하시면 됩니다. 이 간단한 원리로 부터 블록체인 기반의 많은 기술, 서비스들이 생겨난 겁니다. 링크드리스트다 라고 생각하고 접근하면 블록체인을 이해하기가 훨씬 쉬워질 겁니다. ### Reference 1. [http://wiki.hash.kr/index.php/블록](http://wiki.hash.kr/index.php/%EB%B8%94%EB%A1%9D) 2. [https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ehdtmdcouple&logNo=221183650560](https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ehdtmdcouple&logNo=221183650560) 3. [https://coinpipe.tistory.com/149](https://coinpipe.tistory.com/149) 4. [https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gojump0713&logNo=221473324379](https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gojump0713&logNo=221473324379) 5. [https://medium.com/@dbl.mains/dbl의-klaytn-스터디-2주차-2a270ab31e5d](https://medium.com/@dbl.mains/dbl%EC%9D%98-klaytn-%EC%8A%A4%ED%84%B0%EB%94%94-2%EC%A3%BC%EC%B0%A8-2a270ab31e5d)
Recent Posts
AI / LLM에 대한 친절한 소개
SLA 다운타임 계산기
Docker로 GitLab 설치하기
Ubuntu Linux에 NVIDIA 드라이버 설치
Gemini를 이용한 E-commerce 제품 설명서 생성
프롬프트 엔지니어링 101
Llama3와 MySQL을 이용한 Text2SQL
Llama3.1 설치한 김에 Few-Shot 프롬프팅
Llama3.1 설치 및 프롬프트 테스트
신뢰할 수 있는 AI 앱을 설계하기 위한 LLM 개발원칙
Archive Posts
Tags
BlockChain
블록체인
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags