• 블록체인과 해쉬
    DEV 2024. 7. 21. 20:17

    사진: Unsplash 의 Michael

    라이스톤

    태평양 한가운데 있는 미크로네시아의 얍(Yap) 섬에는 라이스톤(Rai stones)이라는 가운데가 뚫린 거대한 돌이 전통적 화폐로 사용된다.

    이 돌들은 가로길이가 약 3미터에 이르고 픽업트럭정도의 무게가 나간다.

    얍 마을에는 수십 개의 라이스톤이 흩어져 있다.

    라이스톤
    라이스톤

    사람들은 이 돌들을 갖고 다니면서 쓸 수 없기 때문에 얍 섬의 사람들은 모두가 각 돌의 주인이 누구인지를 기억하며,

    지난 거래에 대한 기록을 머릿속에 남긴다.

    예를 들어 족장의 딸이 목수에게 배 한 척을 사고자 한다면, 그녀는 자신이 소유한 라이스톤 한 개가 목수의 것이 되었다고 마을 사람들에게 알린다. 그러면 마을 사람들은 족장의 딸이 목수에게 라이스톤 한 개를 주었다고 서로 간에 말을 퍼뜨린다.

    다음에 목수가 다른 사람에게 그 돌을 주고 싶어 할 때 마을 사람들은 이를 허락할 것이다.

    집 반대편 마을에 있는 돌이라 해도 소유가 가능하고, 라이스톤을 실은 배가 바다에 가라앉은 적이 있는데, 마을 사람들은 그 돌이 해저 어딘가에 있을 것으로 생각하고 계속해서 서로에게 그 돌로 값을 치렀다.

    라이스톤 시스템은 무형인 동시에 중개인이 없다. 

    사토시가 비트코인을 개발할 때 얍 섬에 대해 알고 있었는지는 모르겠지만, 그가 꿰뚫어 본 것은 라이스톤과 매우 비슷했다.

    블록과 체인

    블록체인은 블록을 선형으로 연결한다. Txn은 트랜잭션(transaction:거래)의 줄임말

    블록과 체인
    블록과 체인

    해싱(hashing)

    블록은 해시를 이용하여 서로 연결되며, 각 해시는 이전 블록의 해시로부터 계산된다.

    가장 많이 사용되는 알고리즘은 MD5, SHA-256

    hash
    hash

    논스(nonce)

    해시 함수는 세 개의 입력값을 사용해 블록에 대한 해시를 생성

    • 마지막 블록 해시값
    • 거래 기록
    • 논스

    문제는 논스값을 집어넣을 때마다 해시값이 달라지고, 해시가 올바른 개수의 0으로 시작하는 경우에만 체인에 블록을 추가할 수 있음

    따라서 입력한 논스값이 조건에 맞는 해시값으로 이어지지 않으면 사용자는 계속 다시 시도해야 한다. = 채굴

    출력값으로 입력값을 찾기 위해 해시 함수를 크래킹 할 수 있는 유일한 방법은 가능한 모든 출력값을 하나하나 확인하는 것

    nonce

    이 시스템이 낭비적인 것으로 보이지만, 공격자들을 힘들게 하려고 고안된 것

    채굴의 가장 어려운 부분은 적합한 논스값을 찾는 것

    합법적 체인보다 더 긴 사기 체인을 만들려는 악의적인 채굴자들이 더 빠르게 블록을 채굴하기 위해서는 전 세계 해시 파워의 50% 이상을 통제해야 가능하다.

    공격자가 51%의 해시 파워를 통제할 수 없다면, 블록체인을 조작할 가능성은 사라진다.

    728x90
go.