블록체인 TIL-8Week-54Day(휴강일)

디오·2023년 5월 5일
0

개인공부

목록 보기
15/28

⛓️블록체인 합의알고리즘 복습.

✅합의 알고리즘(내부에서 일어나는 일)

🔸비트코인 생성된 이유.

  • 중앙화된 금융 시스템에 대한 환멸(리먼, 모기지 사태 그 이후 대형 금융사 중심의 구제금융 정책)

🔸비트코인이 제시한 해결책.

  • 탈중앙화된 시스템을 기반의 전자 결제 시스템 만들기.

🔸탈중앙화의 장점과 단점.

  • 장점 : 네트워크 안정성(Single point failure 회피)
    • 중앙화 시스템의 경우 중앙화 시스템에 문제가 생기면 모든 시스템에 문제가 생김.
  • 단점 : 비효율성
    • 중앙화 시스템은 한곳에서 모든 시스템을 관리하기 때문에 효율성이 탈중앙화보다 좋음.

🔸중앙화와 탈중앙화 시스템의 차이.

  • 참여 주체(노드들)간의 권한 차이. 탈중앙화 시스템의 경우에는 모든 노드가 평등함.
    • 중앙화된 시스템은 가운데있는 노드에 의지를 한다.

🔸모든 노드가 평등하다라는 의미.

  • 누구나 데이터를 쉽게 읽거나 쓸 수 있다는 것을 의미한다.
    (permissionless) => 이는 공유되는 데이터 품질과 직관적으로 연결된다.
    • 누구나 데이터를 쉽게 읽어나 쓸 수 있기 때문에 데이터의 품질이 떨어질 수 있다.

🔸그렇다면 누구나 데이터를 쉽게 접할 수 있지만 데이터의 품질을 높은 퀄리티로 유지하려면 어떻게 해야할까.

  • 모두가 지켜야만 하는 규칙을 만들기
  • 규칙: 옳은 정보만 공유될 수 있음
  • 그것을 달리 표현하면 합의 알고리즘이라고 표현할 수 있다.

🔸합의 알고리즘은 어떠한 특징을 가져야 할까

  • 누구나 참여할 수 있지만 이행하는 것이 쉽지 않고 동시에 결과물의 유효성은 쉽게 확인할 수 있어야 한다.
  • 도전은 누구나 할 수 있지만 해내는 것은 어렵고 검토는 쉽게.

🔸어떻게 하면 합의 알고리즘을 구현할 수 있을까?

  • input 값의 규칙성과 전혀 무관한 output 값을 내는 일대일 함수인 hash함수(sha256)를 도입.

🔸hash 함수로 무엇을 할 수 있을까?

  • Block header와 body에 있는 대부분의 정보들은 결국 16진수 숫자이니, header들의 정보를 input 값으로 하고 추가로 nonce라는 임의의
    수를 넣어서 최종 결과값이 특정 조건을 만족하도록 하는 규칙을 도입.

🔸특정 조건이라고 하면 어떤 것일까?

  • 최종 결과값을 block header hash라고 하고 이 값이 타켓값보다 낮게 나온다면 성공한 것으로 간주한다.
    • nonce값을 얻어내는것은 쉽지만 그걸 검증하는 사람들은 쉽게 검증할 수 있다.

🔸타겟값은 어떻게 구할까?

  • 평균 10분마다 1개씩 블록이 생성되도록 설정하고 이보다 빨리 블록이 생성되면 난이도를 높이고 타겟값을 낮추고 이보다 늦게 블록이 생성되면 난이도를 낮추고 타겟값을 높이는 방식으로 구한다.

🔸난이도와 타겟값은 왜 음의 상관관계를 가질까?

  • 주사위를 예시로 설명하면 이해하기 쉽다.
    • 주사위를 던졌을 때 나올 수 있는 수는 1,2,3,4,5,6이다.
    • 주사위를 던졌을 때 6 이하일 확률을 구한다면 100%
    • 하지만 4이하일 확률, 2이하일 확률을 각각 구한다면 점점 확률이 작아진다.

🔸주사위를 던졌을 때 나오는 무작위의 숫자.

= input값과 관계없이 무작위로 나오는 hash 함수의 output값이라고 생각해보자.
즉, 나올 수 있는 숫자가 낮을수록 확률은 낮아짐.
= 타겟값이 작을수록 난이도가 올라간다.

🔸난이도는 어떤 주기로 바뀌게 될까?

  • 2016개의 블록마다 바뀜. 각 블록은 평균 10분마다 생성되도록 조정된다.
  • 2016*10분 = 20160분 = 336시간 = 14일 -> 즉, 약 14일 기준으로 바뀐다. 2016개의 블록 생성이 14일보다 오래 걸리면 난이도가 어렵가는 것이기 때문에 난이도가 내려가고 짧게 걸리면 난이도가 쉽다는것이기 때문에 난이도가 올라간다.

🔸합의 알고리즘은 이게 끝인가?

  • 지금까지 한 것은 로컬 노드(내부)에서만 일어나는 일을 설명한 것. 보통 채굴이라고 불리우고 이러한 종류의 합의 알고리즘을 PoW(Proof of Work)라고한다.
  • 합의 알고리즘은 로컬에서 채굴로 시작하여, 네트워크에서 타 노드들과의 비교 후 동기화로 마무리된다.






✅합의 알고리즘(타 노드들과 어떤식으로 비교하고 동기화 하는지.)

  • 합의 알고리즘의 궁극적인 목표는 옳은 정보(공유되는 정보)를 정하는것.
  • 합의 알고리즘의 시작은 채굴(올바른 블록 해시값 추출)을 하는 것.
  • 합의 알고리즘의 최종 완성은 다른 노드들과 체인 정보를 동기화하는 것으로 이루어짐.
  • 이웃 노드들과 지속적으로 통신을 주고 받음.
  • 이웃 노드들과의 통신과정에서 비교를 통하여 규칙에 따라서 한 쪽 노드의 정보로 동기화 과정을 이룬다.
    이러한 과정을 지속적으로 반복하여 네트워크내 모든 노드들이 같은 체인 정보를 갖게됨.
  • 가장 긴 체인이 옳은 체인이라는 규칙을 산정된다면 서로 다른 두 노드가 길이를 비교한 후,
    더 긴 체인을 지닌 노드가 더 짧은 체인을 지는 노드에게 자신의 체인 정보를 넘겨줌.
  • 최종적으로 두 노드는 같은 체인 정보를 지니게 됨.




<강사님께서 수업중 설명해주신 내용을 TIL을 작성해 두었기에 나만의 스토리를 만들어봄.>


🔸 파랭이들이 사는 마을에 채굴에 성공한 노랭이네가 침공함.

🔸 파랭이와 마지막 블록헤더를 비교하고 일치하지 않음을 확인한 노랭이는 길이를 비교함. 자신이 더 길어서 쌔다는걸 안 노랭이는 그렇게 전쟁시작.

🔸 열심히 전쟁하며 세력확장

🔸 노랭이가 통일을 이룸.

🔸 새로운 채굴로 빨갱이네가 침공.

🔸 강력한 빨갱이가 세력을 확장.

🔸 거침없이 노랭이네를 침공.

🔸 빨갱이네는 동기화가 된 이후에도 주기적으로 자신들을 비교함.

🔸 빨갱이가 전쟁에서 승리.

🔸 새로운 세력 초록이네 등장. 세력 확장 중 반대쪽에 보랭이네 등장.

🔸 서로의 존재를 모른체 열심히 세력 확장.

🔸 세력확장 중 서로의 존재를 확인. 마지막 블록헤더를 비교했으나 다름을 인지. 길이를 비교했으나 같음을 인지. 서로 이길 수 없음을 감지하고 휴전상태

🔸 그 사이 다른 지역에 세력확장을 하던 중 다른지역에서 또 만남.

🔸 그 와중에 보랭이네서 쿠테타가 일어나고 신진세력 남색이네가 탄생.

🔸 남색이네는 길이가 길어서 다른 세력을 압도하면 거침없이 세력을 확장함.

🔸 세력들이 추풍낙엽처럼 쓸려나가며 점령당함.

🔸 세력을 확장해 나가던 중 초록이네를 만나는데 남색이네가 보랭이네를 흡수하고 세력을 확장해 초록이네는 그게 마음에 안듦. 전쟁에서 졌는데도 초록이네가 차라리 죽이라고 흡수될 생각이 없음. 남색이네는 초록이네를 회유하고 싶어서 원하는걸 물어봄. 초록이는 보랭이네를 넘겨주면 흡수되주겠다고 말함. 알고보니 초록이네와 보랭이네는 선대인 빨강이네와 같은 핏줄임. 보랭이네를 넘겨받은 초록이네는 보랭이네에 흡수되며 보랭이네가 되고, 최종적으로 남색이네 흡수됨.

🔸 남색이네가 삼국통일을 이뤄내고 전쟁의 역사마저 통일시켜버림. 끝!






🔸근데 합의 알고리즘에 따라서 내가 블록을 만들려면 어떻게 해야할까?

  • 일단 채굴을 하기 위해서는 컴퓨터를 계속 작동시켜야 함. 논스값을 남들보다 빨리 계산해야 하기에 끊임없이 계산을 시켜야함.

🔸그렇다면 비용이 발생하지 않나요?

  • 컴퓨터를 계속 사용한다면 전기비가 발생하고, 더불어 컴퓨터 기능이 퇴행되기 때문에 새로운 장비로 지속적으로 교체도 시켜줘야함.

🔸그러면 이 일을 왜 하나요?

  • 사실 이 일을 할 요인은 따로 존재하지 않음. 그래서 이를 유인하기 위하여 경제적인 보상을 주어야함.

🔸그 경제적인 보상이 무엇인가요?

  • 블록 채굴 보상(50->25->12.5->6.25->0.00000.....0) 그리고 거래 수수료의 합. 이 2가지를 채굴자는 얻어감.

🔸거래 수수료란?

  • 내가 거래를 진행하는데 있어서 , 채굴자에게 지불하는 수수료. 거래를 고르는 것은 채굴자의 마음이기에 높은 수수료를 책정할수록 거래 처리 속도가 빨라짐.
    • 블록채굴보상 : 보내는 사람은 없고 받는 사람만 있는 거래 (coinbase)
    • 거래수수료 : 유저에게서 얻을 수 있음.

🔸합의 알고리즘의 목표와 미치는 영향은?

  • 합의 알고리즘의 목표는 네트워크의 모든 노드들이 같은 정보(옳은 정보 = 공유되는 정보 = 블록 = 거래 내역)를 갖는 것.
  • 사용자는 본인의 거래 완료 보장, 채굴자는 보상을 그리고 시스템은 지속적인 발전을 이룸.

🔸만약 모든 채굴자가 일시적으로 채굴을 멈춘다면?

  • 거래는 결국 영원히 완료되지 못하고 대기 상태로 머뭄. 시스템이 마비됨.






🧟cryptozombies

  • 은찬매니저님이 게임으로 솔리디티를 공부해보면 재미있게 해볼 수 있다고 말씀해주셔서 한번 해보았다. 확실히 생각보다 재밌었는데 문제는 강사님께 배운 부분이랑 뭔가 다른 부분들이 있어서 좀 헷갈리는 부분이 있었다. 그래도 머리 식힐때 해보면 재미있을 것 같다 😊









profile
개발자가 되어가는 개린이"

0개의 댓글