우리가 블록체인을 신뢰할 수 없다고 할 때 이는 무엇을 의미하는가?
우리가 블록체인을 신뢰할 수 없다고 할 때 이는 무엇을 의미하는가?
원문: What do we mean by “blockchains are trustless”? by Preethi Kasireddy
아래 글은 미디엄에서 활동하는 블록체인 엔지니어인 Preethi의 글을 번역한 것입니다. 다소 길지만 블록체인의 의미와 블록체인은 신뢰할 수 없다(trustless) 라고 말할 때 이것이 무엇을 뜻하는지에 대해 잘 설명하고 있습니다. 한번 읽어보시길 바랍니다.
*
서문
우리 중 대다수는 블록체인을 "신뢰할수 없는 시스템"이라고 표현할 때 죄책감을 느낀다. 그러나 나는 "신뢰할 수 없는"이라는 용어가 모호하고 혼란스러운 것이며 무엇보다도 이것이 정확하지 않다는 것을 깨달았다.
실제로 블록체인은 신뢰를 배제하는 것이 아니다. 블록체인은 시스템에서 단일 행위자가 요구하는 신뢰도를 최소화하는 것이다. 이는 행위자들이 프로토콜에 의해 규정된 규칙에 따르도록 유도하는 경제적 게임의 시스템을 통해 행위자들 간에 신뢰를 분배함으로써 기능한다.
좀 더 자세히 알아보자.
정말로 신뢰할 수 없는 트랜잭션 시스템은 이러한 형태로 보이기도 할 것이다.
거래하려는 의사가 있는 두 사람이 직접 소유권을 이전시킨다. 이는 물리적으로 존재하므로 쉽게 검증할 수 있다.
1. 신뢰 : 실제 발신자는 돈을 건넨다. 그리고
2. 이중지불(double spending) 방지: 그 돈은 거짓이 아니며 실제 10달러이다.
이론적으로는 완벽하지만 이 트랜잭션 시스템은 제한적이다.
다음을 고려해보라: 두명의 개인들은 물리적으로 근접할 경우에만 거래할 수 있다. 경제규모가 커지기 위해서는 물리적 거리와 관련 없이 전 세계 누구와도 거래할 수 있어야 한다.
따라서 우리가 정말로 원하는 것은 다음의 것이다.
위의 다이어그램에서 알 수 있듯이 이 목표를 달성하는 방법은 실제 송신자가 돈을 송금하고 그 돈이 실제로 있는지 확인하기 위해 거래를 용이하게 할 수 있는 중개자가 있어야 한다.
이는 다음의 문제를 제기한다: 누가 전적으로 믿을 수 있을만한 중개자 역할을 할 것인가?
오늘날의 트랜잭션 시스템에서 중개자는 은행들(예: Chase Bank)이나, 지불 제공자(예: Paypal), 송금회사(Western Union), 신용카드사(Visa) 등이 될 수 있을 것이다.
이 중앙집중식 모델에서 은행은 당신을 검증하고, 수령인이 실제 돈을 받는 것을 보증한다.
다시 말해서 한 개인에서 다른 개인으로 직접적으로 가치를 전달하지 않는 한, 여기에는 우리가 '신뢰할 수 있는' 어떤 형태이든 간의 중개자가 반드시 있어야 한다.
블록체인 또한 다르지 않다.
블록체인은 두명의 개인들이 인터넷에서 '피어 투 피어'(peer-to-peer) 방식으로 서로 거래하는 프로토콜을 말한다. 블록체인에서 하나의 계정에서 다른 계정으로 디지털 방식으로 가치를 전송할 때 이는 당신이 그 기초된 블록체인 시스템에 해당 전송을 가능케 하고 '발신인의 진위여부' 및 '통화의 유효성(currency validity)'을 보장하는 것에 대해 신뢰하게 된다.
'중앙 집중식'시스템에서 우리는 단일의 제3자(예: Chase Bank)가 그 둘의 재산을 보증하는 중개자로 행동하는 것을 신뢰한다. '분산화된' 시스템에서 우리는 소위 공개 키 암호기술(public-Key Cryptography)과 진위를 결정할 수 있는 '합의 메커니즘'(consensus mechanism)을 신뢰한다.
공개 키 암호기술(public-Key Cryptography)
공개 키 암호기술(또는 비대칭 암호화 Asymmetrical Cryptography)은 다음을 사용한다
1. 누구나 볼 수 있는 공개 키 세트(a set of public keys visible to anyone)
2. 소유자만 볼 수 있는 개인 키 세트(a set of private keys visible only to the owner)
개인 키(private key)는 사용자가 보내는 각 블록체인 트랜잭션에 대한 '전자 서명'을 생성하고 서명은 다음을 통해 진위를 보증하게 된다.
1. 트랜잭션이 사용자로 부터 오고 있음을 확인한다
2. 트랜잭션이 생성되면 누구든지 이를 변경하는 것을 방지한다.
어떠한 방식으로든 트랜잭션 메시지를 변경하면 검증을 실패하게 된다.
이제 우리는 공개 키 암호기술이 피어 투 피어 시스템에서 사용자를 인증하는데 도움이 된다는 것을 알게 됐다. 그러나 이중 지불(double spending)을 방지하기 위해서 누가 무엇을 가지고 있는지 추적하여 디지털 돈을 실제로 보내는지 혹은 거짓으로 보내는지 여부를 확인해야 한다.
이것이 바로 디지털 방식으로 공유될 진실을 보존하게 하는 '합의 시스템(consensus system)'이 반드시 필요한 이유이다.
머신 컨센서스 Machine Consensus(암호경제 프로토콜 The Cryptoeconomic Protocol)
블록체인에는 시스템의 상태에 대한 절대적인 진실만을 알려주는 공유 원장이 있다. 이는 수학, 경제적, 게임이론을 통해 모든 시스템 참여자들의 합의를 이끌어 내거나 이 원장의 단일 상태에 대한 동의를 유도한다.
비트코인을 예로 들어보자. 비트코인 프로토콜에는 시스템을 유지하는 작업 증명(Proof of Work)라는 합의 알고리즘이 있다. 두 고객간의 트랜잭션이 이뤄지려면 복잡한 알고리즘을 해결하여 트랜잭션의 유효성을 검증하기 위해 경쟁하는 노드들(채굴자라고 불리는 miners)이 필요하다. 다시 말해서, 비트코인은 복잡한 문제를 컴퓨팅 파워를 이용하고 이를 해결하는 채굴자들을 위해 경제적 인센티브를 부여하게 된다. 이러한 인센티브는 다음을 포함한다.
1.채굴자들은 사용자들이 트랜잭션을 수행하기 위해 내는 수수료를 통해 수익을 얻게되고
2. 이러한 경제적 인센티브 덕분에 채굴자들은 성공적으로 문제를 해결하여 새로운 비트코인을 얻게 된다.
이는 네트워크를 지속적으로 감시하여 일련의 트랜잭션이 새로운 블록에 포함되게 한다. 그런 다음 컴퓨팅 리소스를 이용하여 복잡한 알고리즘을 해결함으로써 해당 작업을 증명하게 된다.
알고리즘을 해결한 첫번 째 채굴자는 증명과 새로운 블록(그리고 그 안에 포함될 모든 트랜잭션)을 블록체인에 추가하고 네트워크에 중계하게 된다. 이점에서 네트워크의 참여자 모두는 가장 최신의 블록체인에 동기화 하게 되는데 이는 모두가 신뢰하는 진실이기 때문이다.
채굴자들이 컴퓨팅 자원으로 경쟁하고 있기 때문에 동시에 여러 블록들을 해결해야 하는 때가 있다. 이것은 즉 여러 체인의 포크(fork)를 생성하게 된다.
여기에 이러한 포크가 발생하면 네트워크의 정식(canonical) 체인은 '가장 긴 체인'이 되게 되고 이는 대부분의 채굴자들이 가장 신뢰하고 계속해서 작업을 수행하게 되는 체인이 된다.
이러한 방식으로 블록체인에 추가된 모든 새로운 블록은 시스템에 보안성을 강화하게 된다. 과거 블록을 덮어 쓰고 새로운 블록을 작성하려는 공격자가 네트워크에서 일관되고 다른 누구보다 빠르게 퍼즐을 풀어야 하기 때문이다. 이는 실질적으로 불가능하다. 이러한 블록들의 내부의 데이터를 역설계하고 변경하는 것은 불가능하다. 이러한 점 때문에 사용자들이 시스템을 계속해서 신뢰할 수 있다.
따라서 우리가 블록체인에서 서로 거래할 때 우리는 이중 지출(double spending)을 방지하기 위해 그들의 컴퓨팅 리소스를 사용하고 있는 채굴자들에 대한 신뢰가 굳건해 지게 된다.
사회적 합의 Social Consensus (거버넌스 Governance)
물론 머신 컨센서스(Machine Consensus)가 완벽히 작동하더라도 네트워크에 대한 신뢰를 유지하기 위해 필요한 다른 중요한 면에 대한 100%의 확률에 도달할 수는 없다. 예를 들어 네트워크가 업그레이되거나 개선, 정비될 필요가 있을 때 네트워크와 모든 구성요소가 변경 사항을 적절히 처리할 수 있는 방법을 필요로 하게 된다. 그 경우 구성요소 간에 또는 내가 사회적 합의(예 거버넌스)라고 부르는 방식의 조정 노력이 필요하다.
예를 들어 블록체인이 개선이 필요할 때(예 트랜잭션 로그 개선) 모든 관련 당사자(사용자, 개발자, 투자자 등)의 이해관계를 조정할 관리 메커니즘이 필요하다. 또는 최선의 방식에 대한 논쟁이 있는 경우(예: 논란이 되는 포크), 커뮤니티는 앞으로의 방향에 대한 합의가 필요하다. 만약 합의가 이뤄지지 못하면 네트워크는 포크되게 되고(나뉘게 되고) 사람들은 이미 공유되고 있는 사실을 믿는 대신에 어느 한쪽 방식을 강제적으로 선택해야만 한다. 이런 결과로 사용자들은 시스템에 대한 신뢰를 잃을 수도 있을 것이다. 왜냐하면 그들은 어떤 체인이 유효한 체인인지 합리적인 판단을 할 수 없게 되기 때문이다.
내가 이전의 글에서 말한 바와 같이 블록체인 거버넌스에 대한 다양한 모델이 존재하며 그것들은 커뮤니티에서 적극적으로 연구해야 할 영역으로 남아 있다. 블록체인 거버넌스는 상당히 까다로운 문제이며 모든 사람의 시스템에 대한 신뢰를 유지하기 위해 중앙집중식 제어와 분산식 제어간의 균형을 찾는 것이 필수적이다.
결론
우리가 블록체인에 신뢰를 잃었다고 말할 때 이는 시스템의 모든 당사자가 어떤 체인이 기준이 될 것인지(즉 권위있다고 인정받을지)에 대한 합의에 도달할 수 있는 적절한 방식이 있음을 의미한다. 자원과 신뢰는 단일 개인 혹은 단체(예: 은행, 정부, 금융기관)에 집중되지 않고 네트워크의 이해관계자(예 개발자, 채굴자, 사용자)간에 분산(혹은 공유)된다.
아마 블록체인을 묘사하기 위한 더 정확한 방법은 "신뢰할 수 없다"기 보다 분산된 신뢰를 토대로 구축되었다고 하는 것이 바람직할 것이다. 즉 분산된 신뢰란 말에서 우리는 모든 사람을 전적으로 신뢰하고 있다는 것을 뜻한다.
물론 이것은 시스템이 보유한 자원의 대부분이 특정 가치를 공유하는 이해관계자에게 속해있다는 것을 당연히 여기게 되기도 한다. 불행히도 나는 아직까지 우리가 이러한 가치들이 무엇으로 구성되있는지 정확히 파악하지는 못했다고 생각한다. 블록체인과 논란의 여지가 있는 포크들이 작년 내내 벌어졌기 때문이다. 그러나 이는 끝이 나지 않는 장황한 이야기다.
(끝)
Trustless 가 "신뢰가 없는"이 아니라 "신뢰 할 필요 없을 만큼 신뢰가 있는" 으로 해석되야 된다는 말인 것 같네요:)
네 결론적으론 신뢰가 분산되있기에 블록체인이 역설적으로 훨씬 더 신뢰할 수 있다는 의미를 원저자는 표현하려 했던 것 같습니다. 좋은 말씀 감사합니다 ^^
좋은글과 댓글 감사합니다. trustless 용어를 쉽게 이해하게 되었습니다
Congratulations @ssan! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!