관리 메뉴

코딩하는 락커

[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 1~5강 본문

⛓ 블록체인

[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 1~5강

락꿈사 2022. 2. 5. 18:05

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)방식

  1. 블록체인에 블록을 추가하기 위해서 문제를 품 - Hash 값 찾기
    (여러 node들이 서로 경쟁을 하면서 문제를 품)
  2. 그런데 이때 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까지 시간이 오래 걸리는게 단점
Comments