지능이라는 이름의 게임(18): 집단지능과 블록체인(10)

관련 이미지

블록체인은 분산원장(distributed ledger)이다. 즉, 블록체인이라는 원장을 구성원 모두에게 공유토록 하는 시스템이다.

그런데, 블록 체인의 거래가 크게 증가하고 참여자가 아주 많아지면 블록과 블록체인에 담긴 데이터의 양–대부분 거래 기록(transaction list)이겠지만–이 폭발적으로 증가할 것이다. 그러면 데이터의 유효성이나 무결성 검증에 있어 효율성 확보가 심각한 문제로 대두될 수 있다.

더구나 구성원들의 블록체인 참여는 인터넷에 연결된 단말기를 통해서 이루어지는데 단말기의 성능이 제각각일 것이다. 어떤 참여자들은 스마트폰 앱을 사용하기도 할 것이다. 거래 원장의 공유라는 원칙을, 그런 참여자들까지 포함해서 블록체인 참여자 모두가 과연 어떻게 따르게 할 수 있을까?

그러한 문제를 해결하는 요소 기술이 머클 루트(Merkle root)–루트 해시(root hash)라고도 부름–이다. 머클 루트는 해싱을 이용하여 누적된 거래 기록을 최대한 가볍게, 그러면서도 신뢰를 창출하는 원래 기능을 유지하게 해주는 데이터 축소 방법이다. 아래 그림은 모의 블록체인이고, 각 블록의 헤더(block header)는 머클 루트를 가지고 있다.

관련 이미지

머클 루트는 다음과 같은 방식으로 생성된다. 아래 그림을 가지고 설명한다.

나무–이 나무를 Merkle tree라고 부른다–의 가장 바닥에 있는 각 거래(Transaction A, B, C, D)는 해싱되어 Hash A, B, C, D가 된다. 그런 다음 그 해시들은 두 개씩 짝을 지어 다시 해싱된다. Hash A와 B는 Hash AB로 해싱되고, Hash C와 D는 Hash CD로 해싱된다. 그리고 그 두 해시는 다시 결합, 해싱되어 머클 루트(Merkle Root/Root Hash)를 형성하게 된다. 머클 루트에는 나무의 바닥에 있는 거래 기록 자체는 포함되지 않고 해시들만 포함되어 있다. 이렇게 사다리 타기 하듯이 연쇄적으로 해싱하면 아무리 많은 데이터라도 매우 가벼운 머클 루트로 변환될 수 있다.

이 머클 루트가 블록 헤더(header)에 포함되어 있으면 블록 바디(body)에 있는 거래 기록을 빼고 블록 헤더만 포함시켜 해싱을 해도 데이터의 무결성과 유효성이 충분히 검증될 수 있다. 그리고 블록 헤더에 담긴 머클 루트는, 그 블록에 포함된 거래 기록들의 머클 루트를 계산해서 비교해 보면, 그것의 유효성을 확인할 수 있다.

머클 루트는, 많은 거래 기록을 효율적으로 해싱하는 기술이며 다수의 참여자들이 많은 거래 기록을 손쉽게 공유할 수 있게 해주는 기술이기도 하다. 머클 루트는 블록체인에서 해시함수가 참으로 중요한 요소 기술임을 다시 한번 확인시켜 준다.

이상으로 블록체인이라는 집단지능을 구현하는 요소 기술들을 살펴보았다. 아마도 블록체인에 대해 낯설었던 독자들도 이제 그 기술과 조금은 친숙해 지지 않았을까 생각된다.  다음에는 블록체인의 다양한 구현체–아직은 주로 암호화폐들이지만–와 그것이 지닌 사회적 잠재성에 관해 성찰해 보기로 하자. (윤영민, 2015-05-14)