일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 윤곽선검출
- 가운데를말해요
- java
- 2019카카오코테
- 백준평범한배낭
- 냅색알고리즘
- 백준가운데를말해요
- 코드트리
- 합성곱연산
- 백준괄호
- 코테
- 카카오코테
- 딥러닝
- BOJ1655
- 이것이자바다확인문제
- 백준스택
- 컴퓨터비전
- 코딩테스트실력진단
- 백준
- KT포트포워딩
- 스파르타코딩클럽
- 백준10828
- 운영체제
- 이것이자바다9장
- 백준온라인저지
- 이것이자바다
- BOJ
- 웹개발기초
- 확인문제
- 백준9012
- Today
- Total
코딩하는 락커
[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 1~5강 본문
Klaytn 소개
- 기존의 블록체인의 속도, 완결성을 보완
- 블록 생성시간 1초
- 초당 트랜잭션 처리시간(TPS) 3000개 이상
- 트랜잭션 비용(TX) 저렴
- 확장성과 Privacy 고려
- solidity 언어 지원
- Truffle Framwork 지원
Scalability
- Scalability : 확장성. 얼마나 많은 일을 신속히 처리할 수 있는지.
- 비트코인과 이더리움이 가진 문제점.
- TPS + Block Interval
TPS(Transaction Per Second) : 초당 처리할 수 있는 거래의 수
Block Interval : 블록 하나를 생성할 때 생기는 시간 간격
- 비트코인의 TPS - 7 / Block Interval - 10분
- 이더리움의 TPS - 15~20 / Block Interval - 15초 ~ 20초
- => 20 tps + 15초 block interval => 20 * 15 = 300 transaction => 이더리움의 한 블록에 300개의 트랜잭션이 들어감.
- 예를 들어 tps가 10,000이고 Block Interval이 10분이라고 했을때, 1초에 10,000개의 트랜잭션을 처리하는데 트랜잭션을 담은 블록이 완성되는데까지 10분이 걸림 => 사용자의 불편을 초래
기존 블록체인 플랫폼의 약점
기존의 블록체인이 느린 이유
- 블록체인 네트워크의 특성상 참여하는 node가 많아진다고 더 빨라지지는 않는다
- 일반적인 네트워크는 사용자가 많아지면 서버를 증가시키고, 다량의 request가 들어오면 분산해서 처리함
- 그러나 블록체인 네트워크를 구성하는 node라는 서버는 100개의 일을 분산하지 않고 100개의 일을 다 처리함 (즉, 모든 node들이 똑같은 일을 함)
- => 전체 네트워크의 퍼포먼스가 제일 느린 node에 맞게 하향평준화 됨
- 컴퓨터 한대로 구성된 네트워크나, 다수의 컴퓨터로 구성된 네트워크나 퍼포먼스가 다르지 않음
- 비트코인과 이더리움은 많은 양의 트랜잭션을 처리하기에 부족하고 네트워크 자체 속도가 느림
Finality
- Finality : 변경 불가능한 최종적인 상태. TX(거래)가 변경 불가라는 합리적인 보장을 받기까지 기다려야 되는 시간.
- 블록이 Final 하다 == 블록에 담긴 TX가 바뀔 수 없다는 것을 보증
- 비트코인과 이더리움은 Finality가 부족함 (완벽한 보증이 아니라 결국엔 보증이 될거라는 확률론적 최종성만 제공)
- 검증단계를 많이 거칠수록 거래한 내용이 신뢰할만 하다는 것이 판명됨
- 그러나 검증단계를 많이 거칠수록 시간이 오래 걸림 => 암호화폐가 상용화 되기 어려운 이유
Fork
- Fork : 블록들의 연결이 2개 이상의 분기로 갈라지는 현상
- Fork가 발생하는 이유는 블록체인 p2p 네트워크에서 모든 참여자들이 독립적으로 체굴을 할 수 있기 때문
블록체인 & 이더리움의 작업증명(PoW)방식
- 블록체인에 블록을 추가하기 위해서 문제를 품 - Hash 값 찾기
(여러 node들이 서로 경쟁을 하면서 문제를 품) - 그런데 이때 2개의 node들이 비슷한 시기에 문제를 푼 경우, 블록체인에 추가될 후보자로 2개의 node가 올라감 => 분기 발생
Longest Chain Rule
1. 2개의 node에서 채굴한다고 가정 A,B
2. 거래 발생시 트랜잭션 풀(TX POOL)에 들어감
3. A, B node에서 블록을 만들기 위해 TX POOL에 있는 TX를 블록에 담음
4. node들은 각자가 만든 블록을 기존의 블록체인에 추가하기 위해 문제를 품 (Hash값 찾는 연산)
5. A, B 둘다 문제를 풀었음
6. 다른 node들에게 블록 전파
7. 어떤 node들은 A node의 블록을, 어떤 node들은 B node의 블록을 받음
8. 전파 과정에서 먼저 보라색 블록을 받은 node들이 나중에는 검정색 블록도 받음. 그러나 검정색 블록이 왔을 때 동일한 트랜잭션이 포함되어 있기 때문에 무시해버림.
9. 이때 C node에서 문제를 풀고 4번째 블록을 만들어 다른 node들에게 전파함.
(이때 4번째 블록을 만든 C node는 3번째 B node의 검정 블록을 받은 node임. 그러므로 3번째 검정 블록의 부모 해시를 갖고 있기 때문에 검정색 라인으로 추가됨)
(3번째 보라색 블록을 갖고 있던 node들은 4번째 검정 블록이 도착 했을 때 받을 수 없음. 왜냐면 4번째 블록의 부모 해시가 3번째 보라색 블록의 해시가 아니라 3번째 검정색 블록의 해시이기 때문)
(이럴 때 보라색 블록을 받았던 node들은 가지고 있었던 보라색 블록을 버리고 3번째 검정색 블록부터 다운받아서 다시 시작함)
10. 이렇게 더 분기 때 더 길게 형성된 라인이 결국 다음 블록으로 인정이 되고 블록체인에 추가가 됨(Longest Chain Rule)
Longest Chain Rule 악용 사례
- 만약 누군가 전체 컴퓨팅 파워의 51% 이상을 가지고 있다고 했을 때, 다른 채굴자들에 비해 더 빨리 채굴을 할 수 있게 되고 더 많은 블록을 만들어 낼 수 있게 됨
- 위 그림에서 3번째 검정색 블록을 만들었다고 할 때, 4번째 블록을 기다리지 않고 블록을 만들어서 추가함. (해싱 파워가 더 세서 블록을 더 빨리 만들 수 있기 때문)
- 이런 식으로 블록을 다른 node들에게 전파를 안하고 혼자 몰래 이어나감
- 이 과정에서 내 코인을 팔아서 현금화 시켰다는 기록을 블록에 넣지 않은 채 이 라인을 전체 네트워크에 포함 시킴
- 이러한 분기가 발생할 때마다 누구 라인이 더 긴지 검증 단계를 거쳐야 하므로 Finallity까지 시간이 오래 걸리는게 단점
'⛓ 블록체인' 카테고리의 다른 글
[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 12~14강 (2) | 2022.02.13 |
---|---|
[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 8~11강 (0) | 2022.02.13 |
[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 6~7강 (0) | 2022.02.05 |