[Master of Obyte] 블록체인에서 DAG의 시대로: Middlemen 제거하기

in #sct7 months ago (edited)

logo.png

누군가 저에게 블록체인 프로젝트를 추천해달라고 물었을때 항상 언급되었던 프로젝트 중 하나가 바로 Obyte 입니다. 스팀 커뮤니티에는 상당히 익숙한 이름일지도 모르겠네요. 2018년도에 스팀 커뮤니티를 대상으로 대규모 에어드랍 계획을 밝혔던 바이트볼의 새로운 브랜드 이름이 Obyte 니까요.

Obyte의 매력에 대해서는 다음 번 글에서 살펴보기로 하고, Obyte의 전반적인 이해를 돕기 위해 최근 Obyte 창립자인 Tony가 발표한 글을 먼저 소개해드리겠습니다.

이 글의 원문은 https://medium.com/obyte/from-blockchain-to-dag-getting-rid-of-middlemen-28afa7563545 이며 Obyte Foundation 동의하에 번역을 진행했습니다.


이 글은 Obyte 창립자 Tony가 지난 10월 31일 그리스 아테네에서 개최된 Decentralized 컨퍼런스에서 발표한 내용을 요약 정리한 것입니다. 이번 발표에서 Tony는 DAG 개념과 DAG가 블록체인보다 뛰어난 이유에 대해 설명했습니다.

Obyte 재단은 Decentralized 컨퍼런스를 주관하고 DLT를 홍보하기 위해 애쓰고 있는 Nicosia 대학교(UNIC)에 특별히 감사 인사를 전했습니다. Obyte와 UNIC는 파트너쉽을 맺기로 결정했으며 UNIC는 향후 Obyte 네트워크의 독립 증인 후보가 될 것입니다. 또한, UNIC 연구 부처(department)에서는 Obyte 네트워크 및 합의 메커니즘 관련 연구, 테스트, 검증을 수행할 예정입니다.


방향성 비순환 그래프(Directed Acyclic Graph, DAG)를 이용한 분산 원장 구축과 DAG와 블록체인 간의 차이점에 대해 이야기를 나눠볼까 합니다.

암호화폐 영역에서 DAG는 새로운 개념이 아닙니다. DAG에 대해 이미 들어보신 분들이 있을 것 같습니다. DAG가 블록체인 확장성 문제에 대한 해결책 중 하나로 주목을 받았으니까요.

저는 확장성보다는 암호화폐가 존재하지 않았던 시기와 비교했을 때 암호화폐가 지닌 차별성에 대해 이야기해보려 합니다. 즉, 탈중앙화, 직거래, 검열 저항성(decentralization, disintermediation, censorship resistance)에 대해서요.

DAG는 블록체인보다 직거래(disintermediated, 역자 주: middleman이 없다는 뜻)와 검열 저항성 측면에서 더 우수합니다.

블록체인에서는 사용자가 원장에 직접 접근할 수 없습니다. 원장에 트랜잭션을 추가하는 것은 블록 프로듀서, 채굴자를 통해서만 가능하죠. 즉, 다음 번 블록에 여러분의 트잭션을 추가하는 것을 결정하는 것은 채굴자입니다. 채굴자는 블록에 대한 독점적인 접근 권한을 가지고 있으며, 여러분의 트랜잭션을 받아들일지 여부를 결정할 수 있는 권한도 가지고 있습니다.

따라서, 채굴자는 여러분과 원장 사이에 존재하는 middlemen(중개인)이라고 할 수 있습니다.

실제로도 소수의 채굴자 또는 채굴풀이 채굴 파워의 절반 이상을 차지하고 있는 상태죠. 비트코인의 경우 4 개의 풀이, 이더리움의 2개의 풀이 강력한 지배력을 행사하고 있습니다. 이들이 공모한다면 특정 트랜잭션이 블록에 추가되지 못하게 막을 수도 있는 것이죠.

수 년간, 많은 블록체인 프로젝트의 설계는 블록 프로듀서를 선택하는 방법에 집중되었습니다. 하지만 여전히 블록 프로듀서는 gatekeepers로서의 역할을 수행합니다. 즉, 모든 트랜잭션을 블록 프로듀서를 거쳐야하며, 블록 프로듀서가 해당 트랜잭션을 받아들이지 않는다면 그 트랜잭션은 존재할 수 없습니다.

이것은 모든 블록체인 프로젝트가 가지고 있는 문제입니다. 이 문제를 해결하기 위해서는 블록 프로듀서를 선택하는 새로운 방법을 만드는 대신, 블록과 블록 프로듀서를 완전히 제거하는 방식으로 설계 방법을 근본적으로 변경해야 합니다. DAG는 블록에 연결하는 것이 아니라 트랜잭션을 직접 연결합니다. 각각의 트랜잭션은 1 개 이상의 이전 트랜잭션 해시를 포함하고 있습니다. 그 결과, 트랜잭션은 수학적으로 방향성 비순환 그래프(Directed Acyclic Graph, DAG)라고 알려진 구조로 서로 연결됩니다.

이제 완전히 직접적이며, 직거래(direct, disintermediated) 방식으로 원장에 접근할 수 있습니다. 어떠한 서드 파티나 middlemen에 의존하지 않아도 됩니다. 여러분이 트랜잭션을 원장에 추가하고 싶다면, 그저 트랜잭션을 추가하면 됩니다. 부모 트랜잭션이 몇 개 선택되고, 여러분의 데이터가 추가되고, 서명하고, 다른 개체(peers)에 브로드캐스트됩니다. 그 누구도 여러분의 이런 행동을 막을 수 없으며, 여러분의 트랜잭션은 이미 원장에 추가되어 있습니다.

다른 누군가의 허락을 구하지 않고도 누구든지 자신의 트랜잭션을 원장에 추가할 수 있기 때문에 DAG는 트랜잭션을 원장에 받아들이는 가장 탈중화적이며, 검열 저항적이며, 직거래 방식에 가까운(disintermediated) 방식입니다.

DAG를 기존 원장보다 진화한 3세대 원장 방식이라고 생각하시는 분도 있을 것 같네요. 처음에는 단일 개체(single party)가 gatekeeper 역할을 수행하던 중앙화된 원장 방식이었죠. 이후, 몇몇 gatekeeper가 트랜잭션을 원장으로 받아들이는 블록체인이라는 것이 등장했습니다. 그리고 마침내 gatekeeper가 존재하지 않고, 사용자가 직접 자신의 트랜잭션을 추가할 수 있는 DAG가 소개되었습니다.


이제 많은 자유를 얻게 되었는데 혼란으로 이어지면 안되겠죠? 이를 위해, 모든 노드는 여전히 원장 상태에 대해 동의를 해야합니다. 동의 또는 합의는 일반적으로 아래 두 가지 사항에 대한 합의를 의미합니다:

  • 무슨 일이 발생했나? (what happened)

  • 발생 순서는? (in what order)

첫 번째 사항은 간단합니다: 누군가가 적절하게 구성된 트랜잭션을 원장에 추가하면, 트랜잭션이 발생하게 되는 것이죠(it happened). 서로 다른 시기, 서로 다른 노드에 도달(reach)하더라도 결국에는 모든 노드에 도달할 수 있게될 것이며, 모든 노드는 해당 트랜잭션이 발생한 것을 알게될 것입니다.

블록체인이라면 채굴자가 무슨 일이 발생했는지 결정했을 것입니다. 채굴자가 블록 안에 포함하기로 결정한 것들은 트랜잭션이 발생하고, 그렇지 않은 것들은 트랜잭션이 일어나지 않습니다.

또한, 블록체인에서는 합의의 두 번째 사항인 순서 역시 채굴자가 결정합니다. 채굴자는 블록 안의 트랜잭션 순서를 그들의 의도대로 배치합니다.

DAG에서는 어떻게 순서를 결정할까요?

DAG이기 때문에 이미 많은 순서를 가지고 있습니다. 모든 트랜잭션은 1개 이상의 부모를 참조하고 있습니다. 부모는 또 다른 부모를 참조하고 있구요. 부모는 반드시 자식보다 먼저 앞에 나와야 합니다. 특정 트랜잭션이 자식-부모 간의 링크를 통해 다른 트랜잭션에 도달할 수 있다면, 우리는 이들 트랜잭션 간의 순서를 알 수 있습니다.

DAG에서 두 개의 트랜잭션이 병렬(parallel) 브랜치에 놓여있다면 DAG 구조에서 이들의 순서를 직접 유추하기 어렵습니다.

이러한 애매모호함을 해결하기 위해, Obyte에서는 순서 제공자(order providers)를 이용합니다. 증인(witnesses) 이라고 불리기도 하죠. 순서 제공자는 보통의 사용자와 거의 비슷하지만 자신의 트랜잭션을 순서대로, 그리고 주기적으로 포스팅해야 합니다. 순서대로 트랜잭션을 포스팅한다는 말은 자신이 생성하는 다음 번 트랜잭션에서 자녀-부모 링크를 통해 이전 트랜잭션에 도달할 수 있어야 한다는 뜻입니다. 순서 제공자는 이 규칙을 위반하지 않는 믿을 수 있는 대상이어야합니다. Obyte에서는 이들에 대한 신뢰를 합리적으로 구축하기 위해, 순서 제공자 자격 조건을 신원이 확인된 단체나 개인으로 제한하고 있습니다. 이들이 잘못된 행동하면 신뢰를 기반으로 진행하고 있는 자신들의 비지니스나 명성을 하루 아침에 잃을 수 있습니다.

순서 제공자는 사용자가 선택하며, 사용자가 생성하는 모든 트랜잭션에는 자신이 신뢰하는 순서 제공자 목록이 포함됩니다. 이 목록에는 12 개의 순서 제공자가 나열되어 있습니다. 12개로 정한 이유는 사용자가 모든 순서 제공자의 정체성을 한 눈에 파악하기에 적당하고, 순서 제공자 중 일부에서 문제가 생기더라도 시스템에 영향을 주지 않을 만한 수준이기 때문입니다.

순서 제공자 목록이 사용자 별로 약간 다를 수 있지만 인접한 트랜잭션의 순서 제공자 목록은 순서 제공자가 2 개 이상 다르면 안됩니다.

DAG 상에서 순서 제공자의 트랜잭션을 구별할 수 있으며, 순서 제공자에 의해 생성된 순서를 통해 다른 트랜잭션의 순서를 알 수 있습니다. 알고리즘으로 만드는 것도 가능하죠. (기술적인 부분은 Obyte 백서를 참고하세요)

순서가 바로 정해지지 않기 때문에, 순서 제공자가 과거 트랜잭션 순서를 확실히 정할 수 있는 충분한 트랜잭션을 포스팅하기 전까지 약간 기다려야 합니다.

DAG 상에서 순서 제공자 트랜잭션의 위치(positions) 에 의해 순서가 정해지기 때문에, 결국 전체 노드는 모든 트랜잭션을 받을 수 있고, 동일한 트랜잭션 순서를 가진 곳에 도달하게 될 것입니다.

자, 우리는 무슨 일이 발생했는지에 대해 합의했습니다. 포스팅된 모든 트랜잭션을 받아들이기로 합의했죠. 또한, 이벤트 순서에 대해서도 합의했습니다. DAG 구조에서 증거를 찾거나 순서 제공자가 포스팅한 트랜잭션을 통해 찾는 방식으로요. 그러므로, Obyte는 합의 체계(consensus)를 가지고 있다고 말할 수 있습니다.

위의 표는 Obyte 컨센서스의 종류 나타낸 것입니다. 원장에 들어가는 것(admission)은 완전히 탈중앙화되어 있지만, Obyte의 순서 제공자 12 개 중 10 개가 여전히 Obyte 창립자인 Tony에 의해 운영되고 있으며 독립(independent) 순서 제공자는 2개뿐입니다. 순서 제공자의 탈중앙화 속도를 높이기 위해 순서 제공자 후보를 계속해서 찾고 있는 중입니다.

참고로, Nicosia 대학이 순서 제공자 노드를 설정하고 있으며 조만간 순서 제공자 후보가 될 예정입니다.

다음으로, Obyte에서 이중 지불(double-spends) 문제를 어떻게 해결하고 있는지 알아보겠습니다.

Obyte에서는 동일한 코인을 지불하려고 시도하는 2 개의 트랜잭션이 있는 경우, 확정된 합의 순서(established consensus order) 상에 먼저 도착한 것이 승리하는 것으로 합의했습니다. 나머지 1 개의 트랜잭션은 합의 알고리즘에 의해 무효화됩니다(invalidated).

이중 지불 사이에 부분 순서 관계(partial order)가 있는 경우, 순서 관계는 바로 확실하게 알 수 있으니 모든 사용자는 이중 지불 시도를 거부할 수 있습니다.

이들 사이에 부분 순서 관계가 없는 경우라면, 이들의 순서 관계를 바로 알 수는 없습니다. 프로토콜은 2개의 트랜잭션 모두를 받아들이고, 순서 제공자가 생성한 트랜잭션을 중심으로 그들의 순서가 확정될 때까지 기다리는 방식으로 규정되어 있습니다. 순서 상으로 먼저 오는 것이 승리하며, 나중에 오는 것은 무효 처리됩니다.

실패한 이중 지불 트랜잭션은 무효화된 트랜잭션일지라도 이미 인접한(neighboring) 트랜잭션과 연결되어 있기 때문에 여전히 원장에 유지됩니다. 이런 방식을 취한 이유는 다음과 같습니다. 우선, 인접한 트랙잭션들은 어떠한 기본 규칙도 위반하지 않았고, 연결된 트랜잭션이 향후 이중 지불이 될 수도 있다는 사실을 몰랐기 때문이죠. 또한, 이렇게 아무 잘못도 없는 트랜잭션을 고아(orphaning)로 만드는 것은 모든 유효한 트랜잭션 받아들인다는 Obyte의 기본 규칙을 위반하는 것이기 때문입니다.

이것은 전체 시스템이 강력한 검열 저항성 갖게 만드는데 매우 중요한 규칙입니다.

모든 순서 제공자가 공모해 특정 트랜잭션(A라고 칭하겠습니다)에 대한 검열을 계획했다고 가정해보겠습니다. 이들이 부모로서 그들이 가진 트랜잭션에 트랜잭션 A를 받아들이는 것을 거부할 수 있습니다. 하지만, 그것만으로는 충분하지 않습니다. 트랜잭션 A는 검열에 참여하지 않은 다른 사용자에 의해 생성된 트랜잭션의 부모로 간접적으로 포함될 수 있기 때문입니다. 트랜잭션 A가 포스팅되고나면, 이 트랜잭션은 빠르게 많은 자식들과 손자들을 획득하게 되며, 이들의 숫자는 눈덩이(snowball)처럼 늘어날 것입니다. 공모에 가담했던 순서 제공자들은 원래 의도했던 트랜잭션 A를 검열하기 위해서는 트랜잭션 A와 연결되어 있는 수많은 트랜잭션을 모두 검열해야 하는 상황에 처합니다. 결국, 전체 네트워크를 검열해야 하는 상황에 놓이게 되고, 공모자들이 검열이 아니라 파괴(sabotage) 행위를 수행하는 결과를 낳게 됩니다.

정리하자면, DAG는 순서 제공자가 공모하더라도 검열 저항성을 유지할 수 있으며, 그렇기 때문에 블록체인보다 검열 저항성이 우수하다고 말할 수 있습니다. 블록체인은 비슷한 사례에 대해 DAG처럼 검열 저항성을 유지할 수 없으니까요. 그리고 이것은 원장에 들어가는(admission) 것은 직거래 방식(disintermediated)이며 비가역적(irreversible)이라는 DAG의 중요한 특성을 따르고 있습니다.


Obyte 주요 링크

Sort:  

lucky2님이 dakeshi님의 이 포스팅에 따봉(7 SCT)을 하였습니다.

Hi, @dakeshi!

You just got a 0.42% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.