의견.png

"코다"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(합의)
(특징)
30번째 줄: 30번째 줄:
 
R3 코다 팀은 모든 참여자가 같은 사업 원리를 공유하지만 서로 다른 앱들이 통하거나 맞츨을 빚을 가능성을 애초에 차단해버린 이더리움의 비전에 큰 영향을 받았다. 그러나 상대적으로 단순한 원리의 비트코인이라면 모를까 굵직한 금융기업은 이러한 퍼블릭 블록체인을 전 세계적인 규모의 비즈니스에 사용하기는 쉽지 않다. 리차드 겐달 브라운의 언급을 빌려보자면 “기업들이 운영하는 블록체인은 누구에게나 제한 없이 데이터를 공유하는 플랫폼의 영향을 받아서인지 몰라도 너무 많은 것을 공유하는 경향이 있다.‘
 
R3 코다 팀은 모든 참여자가 같은 사업 원리를 공유하지만 서로 다른 앱들이 통하거나 맞츨을 빚을 가능성을 애초에 차단해버린 이더리움의 비전에 큰 영향을 받았다. 그러나 상대적으로 단순한 원리의 비트코인이라면 모를까 굵직한 금융기업은 이러한 퍼블릭 블록체인을 전 세계적인 규모의 비즈니스에 사용하기는 쉽지 않다. 리차드 겐달 브라운의 언급을 빌려보자면 “기업들이 운영하는 블록체인은 누구에게나 제한 없이 데이터를 공유하는 플랫폼의 영향을 받아서인지 몰라도 너무 많은 것을 공유하는 경향이 있다.‘
  
이와 같은 이유로 코다는 참가자들끼리 공유하는 데이터를 최소화하기 위해 참가자들 사이에서 데이터의 일부만 보여주고도 진본임을 입증하는 방식을 도입했다. 그것이 금융 거래든, 예약에 쓰이는 확인증이든 코다에서는 데이터 전체를 먼저 확인할 수 없으며, 거래 사실의 일부만 보여주는 시스템을 통하여 확인하지 못한 나머지 정보도 사실임을 확인하고 거래를 진행할 수 있다.
+
이와 같은 이유로 코다는 참가자들끼리 공유하는 데이터를 최소화하기 위해 참가자들 사이에서 데이터의 일부만 보여주고도 진본임을 입증하는 방식을 도입했다. 그것이 금융 거래든, 예약에 쓰이는 확인증이든 코다에서는 데이터 전체를 먼저 확인할 수 없으며, 거래 사실의 일부만 보여주는 시스템을 통하여 확인하지 못한 나머지 정보도 사실임을 확인하고 거래를 진행할 수 있다.<ref name="코인데스크">Ian Allison, 〈[https://www.coindeskkorea.com/%EA%B8%88%EC%9C%B5%EC%9D%84-%EB%84%98%EC%96%B4-%EA%B8%80%EB%A1%9C%EB%B2%8C-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8%EC%9D%98-%ED%91%9C%EC%A4%80%EC%9D%84-%EA%BF%88%EA%BE%B8%EB%8A%94-r3/ 금융을 넘어 글로벌 블록체인의 표준을 꿈꾸는 R3]〉, 《코인데스크코리아》, 2018-04-18</ref>
  
 
===강력한 보안===
 
===강력한 보안===
39번째 줄: 39번째 줄:
 
이러한 문제를 해결하기 위해 코다 노드가 선택한 방법은 은행, 제조업체, 항공사 등 거래 당사자의 시스템에서 가까운 곳, 즉 이러한 회사들이 운영하는 자체 서버나 소유하고 있는 클라우드 내부에서 코다 노드를 운영하는 것이다. 해당하는 서버와 클라우드 컴퓨터를 가장 잘 운영하는 것은 코다도, 더 큰 규모의 기업도 아닌 그것을 소유하고 있는 기업이다. 이러한 방법에도 거래상대방이 합의를 내리고 거래를 진행하기 위해 접속하여 확인해 볼 수 있는 데이터의 일부분은 공공 인터넷에 올려야 한다는 점은 변하지 않는다.
 
이러한 문제를 해결하기 위해 코다 노드가 선택한 방법은 은행, 제조업체, 항공사 등 거래 당사자의 시스템에서 가까운 곳, 즉 이러한 회사들이 운영하는 자체 서버나 소유하고 있는 클라우드 내부에서 코다 노드를 운영하는 것이다. 해당하는 서버와 클라우드 컴퓨터를 가장 잘 운영하는 것은 코다도, 더 큰 규모의 기업도 아닌 그것을 소유하고 있는 기업이다. 이러한 방법에도 거래상대방이 합의를 내리고 거래를 진행하기 위해 접속하여 확인해 볼 수 있는 데이터의 일부분은 공공 인터넷에 올려야 한다는 점은 변하지 않는다.
  
리차드 겐달 브라운의 표현을 빌리자면, “코다는 노드의 극히 일부분을 떼어내 전체 노드에서 흘러나와 비무장지대라고 부르는 곳에 떠 있게 한다.” 그는 부표(float)라고 불리는 떼어낸 노드 일부분이 정말 작고 단단하며 보안에 있어 매우 강력하다고 강조한다. 코다에서 거래에 필요한 노드는 이러한 방식을 통해 거래당사자 사이에서 공유된다. 기본적인 비즈니스는 해당하는 개관의 내부에서 진행되며 합의와 거래가 필요할 때는 데이터의 일부만을 안전하게 처리해 부표로 띄워 보내 상대방과 정보를 안전하게 공유하고 합의하여 거래를 진행한다.
+
리차드 겐달 브라운의 표현을 빌리자면, “코다는 노드의 극히 일부분을 떼어내 전체 노드에서 흘러나와 비무장지대라고 부르는 곳에 떠 있게 한다.” 그는 부표(float)라고 불리는 떼어낸 노드 일부분이 정말 작고 단단하며 보안에 있어 매우 강력하다고 강조한다. 코다에서 거래에 필요한 노드는 이러한 방식을 통해 거래당사자 사이에서 공유된다. 기본적인 비즈니스는 해당하는 개관의 내부에서 진행되며 합의와 거래가 필요할 때는 데이터의 일부만을 안전하게 처리해 부표로 띄워 보내 상대방과 정보를 안전하게 공유하고 합의하여 거래를 진행한다.<ref name="코인데스크"></ref>
  
 
==블록체인과의 비교==
 
==블록체인과의 비교==

2019년 4월 25일 (목) 16:32 판

코다(Corda) 로고
코다(Corda) 로고와 글자

코다(Corda)는 세계 최대의 블록체인 컨소시엄인 R3가 만든 분산원장 기술이다.

개요

코다는 핀테크 스타트업으로 80여 개 이상의 금융기업이 참여하는 글로벌 분산원장 컨소시엄의 운영주체인 R3의 분산원장 기술이다. 코다가 블록체인의 한 종류인지에 대한 여부는 끊이지 않고 있는데 코다는 블록체인이 아닌 분산원장 기술이다. 코다가 분산원장 기술인 이유는 블록체인이 R3에 많은 영향을 미쳤음에도 불구하고 코다 자체는 블록체인 개념과 상당한 차이가 있기 때문이다.

코다는 “기존의 블록체인이 금융권의 니즈를 충족시킬 수 없다”라는 판단에서 시작되었다. 코다는 애초에 기존의 블록체인 기술을 변경하는 수준이 아닌, 금융기관들의 요구를 충족하는 무엇을 만들기 위해 개발되었기 때문이다. 그도 그럴 것이 블록체인 기술은 탈중앙화 방식의, 즉 금융기관 없이 자유롭고 평등한 참여자들에 의해 자율적으로 유지되고 운영되는 거래를 가능하게 하는 기술인데 금융기업들이 참여하여 블록체인 기술을 개발할리 없다. 그래서 R3는 IBM에서 블록체인을 담당하던 리차드 겐달 브라운(Richard Gendal Brown)과 비트코인 코어 개발자 출신의 마이크 헌(Mike Hearn)을 영입하여 코다의 개발에 착수한다. 즉 코다는 블록체인 기술이 아닌, 분산원장 기술로서 기본적으로 금융산업에 최적화 된 기술이다.

주의해야 할 점은 비트코인과 이더리움은 코다와 경쟁관계에 있거나 상충하는 개념이 아니다. 비트코인, 이더리움, 코다 각자는 서로 다른 문제를 해결하기 위해 개발된 암호화폐 및 기술이다. 비트코인은 신뢰가 불가능한 익명 간의 가치이전의 역할을 수행하며 이더리움은 분산 프로그램이라는 역할을 훌륭히 이행하고 있다. 코다는 거래당사자 간의 합의를 통해서 계약 상태의 변화를 동일하게 기록 및 보관하는 분산 데이터베이스 기술이다.

이와 같이 코다는 블록체인 기술이 해결하고자 하는 문제와는 별개의 문제를 해결한다. 기존의 블록체인은 개인 또는 기관의 탈중개화(disintermediation) 혹은 탈중앙화(decentralization)를 통한 거래를 구현하고자 한다. 이와 다르게 코다는 데이터 보관 위치와는 관계없이 다수가 금융계약의 변화를 상호 간 컨트롤 하는 플랫폼을 구현하고자 한다. 오랫동안 유지되어 왔던 중개기관의 역할을 일방적으로 파괴하는 것이 아닌 역할의 변화를 통해 금융산업의 전반적인 효율성을 재고시키는 것이 더 현실적이라는 판단에서이다. 비트코인이나 이더리움과 같은 블록체인 기술이 파괴적 혁신으로 금융혁명을 꾀한다면, R3의 코다는 금융산업의 변화에 더욱 초점을 맞춘다.

많은 사람들이 냅스터(Napster)나 토렌트(Torrent)를 범용적으로 사용하고 있음에도 지적재산(IP)와 같은 규제로 인해 제도권 안으로 들어오지 못하고 있는 것처럼 비트코인과 이더리움도 암흑속의 금융으로 남을 가능성을 배재할 수는 없다. 급진적 혁명이냐 효율적 변화냐 꼭 어느 것이 무조건 옳다고 볼 수는 없지만 금융 역시 규제산업임을 간과해서는 안 된다. 그럼에도 여전히 블록체인 기술이 발전하면서 확장성, 프라이버시, 분산처리와 관련된 면이 지금보다 훨씬 개선된다면 규제산업, 즉 제도권 내에서도 받아들일 여지는 존재한다.

등장배경

기업형 블록체인을 엔터프라이즈 블록체인이라고 하는데, 이를 통해 해결하려고 하는 문제는 퍼블릭 블록체인으로 해결되는 문제와 분명한 연관성은 있지만 매우 다르다. R3를 통해 얻고자 하는 것은 “내가 보는 정보가 곧 네가 보는 정보임을 확실히 안다”는 것을 기술적으로 가능하게 하여 좀 더 효율적인 기업운영을 가능하게 하는 것이다. 즉, 한 기업이 거래하고 있는 파트너들과 완벽하게 동기화 된 정보를 갖고 있고, 이러한 사실을 인지함으로써 주어지는 새로운 기회를 포착하는 것이다. “내가 보는 정보가 곧 네가 보는 정보임을 확실히 안다”는 것은 물론 기존에도 가능했다. 하지만 “나”와 “너” 사이에는 항상 정보를 동기화해주는 중개자가 있어왔다.

중앙에서 관리감독 하는 기관 없이 참가자들이 자신의 컴퓨터만 보고 “내가 보는 것이 곧 네가 보는 것”이라는 것을 처음 알 수 있도록 한 것은 퍼블릭 블록체인의 근본적인 기술혁신 중 하나이다. 이것이 비트코인의 탄생에 있어 가장 획기적인 기술 중 하나라는 것은 누구도 부정할 수 없는 사실이며 기존의 비즈니스 프로세스에 존재했던 높은 비용, 복제, 낭비 및 오류 위험을 없앨 수 있는 열쇠였다. 물론 퍼블릭 블록체인에 대한 매우 긍정적인 전망이 다음 크립토키티(Cryptokitties)를 발명하여 수십억 달러를 버는 것보다는 훨씬 시시하겠지만 그렇다고 흥미롭지 않은 것 또한 아니다.

예를 들어 금리 스왑(IRS)에 블록체인을 적용했다고 생각해보자. 만약 당사자의 기록이 거래상대방의 기록과 동일할 뿐만 아니라 모든 이벤트(변동금리 정산 등)가 사전에 합의된 담보약정(CSA)과 스왑 파생상품 계약(ISDA Agreement)에 따라 모든 참가자들에 의해 동일하게 수신되고 처리된다는 것을 확신할 수 있다면 금융산업은 훨씬 더 큰 발전을 이룰 것이다. 또한 이러한 과정에서 발생하는 비용 절감 효과 또한 상당할 것이다. 현재 모든 은행의 시스템은 각자가 다른 방식으로, 다른 가정 하에 작동하고 서로 다른 버그를 가지고 있다. 당사자와 거래상대방이 가지고 있는 기록이 항상 동기화되어 있다는 것에 대한 확신을 가질 수 있다면 이를 통해 은행의 거래방식에도 커다란 진전이 생길 것이다.

금융을 참가자들 간의 계약으로 보면 금융 산업에서의 블록체인에 대한 기회는 분명해지며 이를 통해 계약을 기록하고 관리하며 자동화하는 것으로 많은 비용을 절감할 수 있어 결과적으로 새로운 비즈니스 기회를 창출할 수 있을 것이다.

특징

오픈소스

R3는 회원으로 등록된 사람만 공유하는, 이른바 프라이빗 블록체인을 처음으로 시도한 곳 중 하나이다. 현재 R3가 더 많은 사람을 포함하는 분산원장 기술을 향해 나아가고 있지만 그렇다고 해도 여전히 모두가 참여는 퍼블릭 블록체인과는 다르다. 리차드 겐달 브라운의 표현을 빌리자면, R3는 “공개된 공유 네트워크이지만, 여전히 승인된 사람들만 볼 수 있는 보안이 뛰어난 프라이빗 플랫폼”이다.

R3 코다 팀은 모든 참여자가 같은 사업 원리를 공유하지만 서로 다른 앱들이 통하거나 맞츨을 빚을 가능성을 애초에 차단해버린 이더리움의 비전에 큰 영향을 받았다. 그러나 상대적으로 단순한 원리의 비트코인이라면 모를까 굵직한 금융기업은 이러한 퍼블릭 블록체인을 전 세계적인 규모의 비즈니스에 사용하기는 쉽지 않다. 리차드 겐달 브라운의 언급을 빌려보자면 “기업들이 운영하는 블록체인은 누구에게나 제한 없이 데이터를 공유하는 플랫폼의 영향을 받아서인지 몰라도 너무 많은 것을 공유하는 경향이 있다.‘

이와 같은 이유로 코다는 참가자들끼리 공유하는 데이터를 최소화하기 위해 참가자들 사이에서 데이터의 일부만 보여주고도 진본임을 입증하는 방식을 도입했다. 그것이 금융 거래든, 예약에 쓰이는 확인증이든 코다에서는 데이터 전체를 먼저 확인할 수 없으며, 거래 사실의 일부만 보여주는 시스템을 통하여 확인하지 못한 나머지 정보도 사실임을 확인하고 거래를 진행할 수 있다.[1]

강력한 보안

코다 네트워크 안에서 승인된 이들에게만 데이터를 공유할 때, 데이터가 필요해 인터넷을 통해 공유하려고 해도 당장 문제가 발생한다. 대부분의 회사는 “보안”을 최고의 목적으로 둔 자체 데이터센터를 만들고, 각종 어플리케이션과 보안을 위한 시스템을 겹겹이 쌓아 놓은 방화벽 안에 구축한 인프라 위에서 운영되고 있다. 합의를 통해 거래를 진행하기 위해서는 같이 공유해야 하는 바로 그 데이터가 지금 은행과 대기업 각자가 만들어놓은 철통같은 데이터센터 안에 고이 모셔져 있다. 결국 은행과 기업들이 서로 필요한 데이터를 공유하는 작업은 공공 인터넷상에서밖에 할 수 없다.

이때, 모두가 들여다 볼 수 있는 인터넷상에 비트코인이나 이더리움 노드 같은 기업 블록체인 노드를 올려놓고 데이터를 공유하면 보안에 있어 매우 문제가 생길 수도 있다. 우선 기업 자체의 데이터도 아닐뿐더러 해킹이라도 당하는 날에는 매우 위험한 상황에 놓일 수 있다. 그럼에도 불구하고 인터넷으로 데이터를 주고받는 것은 공격의 표적이 될 가능성이 매우 높다.

이러한 문제를 해결하기 위해 코다 노드가 선택한 방법은 은행, 제조업체, 항공사 등 거래 당사자의 시스템에서 가까운 곳, 즉 이러한 회사들이 운영하는 자체 서버나 소유하고 있는 클라우드 내부에서 코다 노드를 운영하는 것이다. 해당하는 서버와 클라우드 컴퓨터를 가장 잘 운영하는 것은 코다도, 더 큰 규모의 기업도 아닌 그것을 소유하고 있는 기업이다. 이러한 방법에도 거래상대방이 합의를 내리고 거래를 진행하기 위해 접속하여 확인해 볼 수 있는 데이터의 일부분은 공공 인터넷에 올려야 한다는 점은 변하지 않는다.

리차드 겐달 브라운의 표현을 빌리자면, “코다는 노드의 극히 일부분을 떼어내 전체 노드에서 흘러나와 비무장지대라고 부르는 곳에 떠 있게 한다.” 그는 부표(float)라고 불리는 떼어낸 노드 일부분이 정말 작고 단단하며 보안에 있어 매우 강력하다고 강조한다. 코다에서 거래에 필요한 노드는 이러한 방식을 통해 거래당사자 사이에서 공유된다. 기본적인 비즈니스는 해당하는 개관의 내부에서 진행되며 합의와 거래가 필요할 때는 데이터의 일부만을 안전하게 처리해 부표로 띄워 보내 상대방과 정보를 안전하게 공유하고 합의하여 거래를 진행한다.[1]

블록체인과의 비교

코다의 구조를 알기 위해서는 분산원장을 금융산업에 적용하기 위한 필수요건을 먼저 알아야 하는데, 다음은 금융권 대상의 분산원장을 개발하기 위해 기반이 되어야 하는 기능이다.

  • 분산원장의 기록은 계약상 용인되는 증거로 채택될 수 있어야 하며 분쟁이 있을 경우를 대비해 법적 구속력을 지녀야 한다.
  • 분산원장의 기록은 그 자체로서 권위성이 있어야 하며, 원장에 기록된 정보는 다른 곳에 구비되어 있는 기록의 복사본일 수 없다. 즉 기록의 처리는 반드시 분산원장에서 직접 일어나야 한다.
  • 분산원장의 기록은 완결성과 비가역성을 지녀야 한다. 만약 오류가 있을 경우 기록의 삭제 또는 변경이 불가능하기 때문에 신규거래를 발생시켜 수정해야 한다.
  • 원칙적으로 모든 참여기관은 원장에 직접적으로 연결해야 하고 원장은 거래상대방과 체결한 계약을 기록하는 용도로 사용해야 한다. 어떠한 참여기관도 거래상대방에게 거래를 강요할 수 없다.
  • 금융거래의 상세 내용에 대한 열람권은 그 거래에 직접적으로 참여한 기관이거나 거래를 열람할 이유가 있는 기관에 한해 주어져야 한다.

정보전파

기본적으로 블록체인은 정보의 위변조 및 삭제가 불가능하기 때문에 최대한 많은 참여자의 합의를 받기 위해 모든 정보를 거래에 참여하고 있는 모든 참여자에게 공유한다. 간단한 예를 들어, A가 B에게 돈을 지급했을 경우 그 거래의 정보를 전체 네트워커에 공개함으로써 거래를 검증하는 것이다. 비트코인 및 이더리움과 같은 퍼블릭 블록체인은 거래를 검증하는 주체는 전 세계에 분포된 익명의 컴퓨터인 반면에 프라이빗 블록체인은 거래 검증의 주체를 특정한 네트워크의 참여자로 제한한다.

블록체인 기술과 같이 정보를 연관성이 없는 참여자에게까지 전달하고 그들에게 검증까지 받게 되면 낮은 확장성은 너무나도 당연한 결과이다. 다수의 합의를 도출해야 하는 구조이기 때문에 블록체인 네트워크의 속도는 항상 하향평준화, 즉 가장 느린 컴퓨터의 속도에 맞춰지게 된다. 따라서 초당 수천, 수만 건이 일어나는 금융산업에서 블록체인은 적합하지 않다. 그 외에도 거래당사자와 관련이 없는 불필요한 정보를 기록하고 검증하며 관리해야 하기 때문에 업무가 많고 보안이 중요한 금융사 간 이해관계에도 블록체인 기술은 적합하지 않다.

블록체인과 다르게 코다는 해당 정보와 관련이 있는 당사자들에게만 정보를 전달한다. A와 B의 거래를 관련 없는 C와 D에게 공유하지 않으며 해당 거래가 유효한지에 대한 검증을 요청하지도 않는다. 모든 거래를 모든 개체가 공유하는 블록체인 방식과 다르게 코다는 관련이 있는 거래만 참여자에 한해서 공유한다.

합의

코다는 거래의 합의를 거래당사자 간의 딜(deal) 단위에서 일으킨다. 앞서 언급한 것과 같이 블록체인 네트워크에서는 모든 참여자가 거래를 검증하는 반면에 코다는 합의를 유효성과 유일성으로 나눈다. 여기서 유효성이란 거래당사자 간의 거래내용을 만족하고 각각 서명하여 거래가 유효함을 확인하는 것이고, 유일성이란 그 거래가 두 번 쓰이지 않았는지에 대한 검증을 의미한다. 기존 블록체인은 합의의 유효성과 유일성을 구분하지 않아 거래의 유일성이 곧 유효성이다.

현실에서 금융거래의 유효성은 비즈니스적인 측면에서 이루어진다. 즉 금융거래에서는 거래당사자 A와 B가 모두 동의한 거래여야만 체결될 수 있다. 하지만 기존의 블록체인에서는 과반수이상의 합의를 도출하면 거래의 유효성이 인정되어 거래가 체결된다. 이를 금융시장에 대입해보면, 다섯 개의 은행이 참여한 동일한 거래에서 두 은행이 동의하지 않더라도 과반수에 의한 합의를 무조건 따라야 하는 강제성을 지닌다는 뜻이다. 이는 금융 비즈니스의 성격과는 매우 거리가 멀다.

코다는 거래의 유효성과 유일성을 분리한다. 거래의 유효성은 거래당사자 간의 합의이고 거래의 유일성은 노터리(Notary)라는 개념을 도입하여 보장한다. 거래당사자 간 거래가 두 번 사용되지 않았다는 사실은 보장할 수 있지 않기 때문에 노터리가 대신 검증하는 것이다. 노터리는 국가마다 다르지만 결제원이나 중앙은행과 같은 산업기구나 규제감독기구가 단독적으로 될 수도 있고, 금융기관들이 그룹(pool)을 구성하여 탈중앙화 된 형태로 직접 유일성을 검증할 수도 있다. 만약 금융기관들이 그룹을 구성하는 후자의 경우, 과반수의 선택에 따르는 프랙티컬 비잔틴 장애 허용(PBFT)이나 래프트(RAFT) 기반의 합의 알고리즘을 선택할 수 있으며, 코다는 이 밖에도 다양한 합의 알고리즘을 지원할 예정이다.

프라이버시

기존의 블록체인은 앞서 얘기한 것과 같이 거래를 거래당사자뿐만 아니라 모든 네트워크 참여자에게 공유한다. 제도권 블록체인을 개발하는 몇몇 기업들은 이러한 정보들을 암호화하여 공유하는 방식을 사용하지만 이러한 방식에도 여러 문제점들이 있다. 확장성, 금융정보의 기밀성, 키 분실과 같은 보안 문제가 발생할 수 있으며 암호화 된 정보들을 복호화 할 가능성도 배제할 수 없다. 또한 관련 없는 데이터를 저장 및 관리하는 문제 또한 발생할 수 있다. 한편 블록체인 및 분산원장에서 기밀성은 1) 계좌(고객정보) 프라이버시, 2) 거래기록(역사) 프라이버시, 3) 잔고(자산) 프라이버시의 세 가지 영역으로 나눌 수 있다. 코다는 이 세 가지 프라이버시를 모두 보호한다. 현재 시스템과 마찬가지로 기밀성이 보장되는 정보들은 거래당사자 간 need-to-know 기반으로 전달된다. 이러한 정보의 프라이버시를 보호할 수 있는 이유는 합의 과정에서 거래의 유효성과 유일성을 분리해놓았기 때문이다.

법적 구속력

법적 구속력이란 체결된 거래가 법적으로 용인될 수 있고 이 거래 과정에서 문제가 발생했을 경우 법적으로 해소할 수 있음을 뜻한다. 블록체인에서의 법적 구속력은 법률 계약 기반의 금융거래에 대한 이해와 체결, 실행을 스마트 계약으로 대신할 경우를 법적으로 인정하느냐의 문제이다. 자연어로 작성되는 계약서를 컴퓨터 언어로 바꾸는 것이 현재 기술로 완벽하게 구현하지 못했을 뿐더러 설령 이를 완벽하게 구현했다고 하더라도 법정이서 인정하기가 어렵다는 문제가 있다. 법은 계약의 참여자와 판단하는 사람이 공통의 언어를 사용해야 하기 때문이다.

따라서 R3는 블록체인의 개발자들이 주장하는 “코드가 곧 법이다(Code is law)”라는 개념에 동의하지 않는다. 코다는 ‘코드=법’보다 ‘코드+법’이라는 개념 하에 개발된다. 코다에서 금융계약은 법률언어를 컴퓨터 코드와 유기적으로 연결하여 계약의 상태에 두 개의 레퍼런스(컴퓨터 코드와 법률문서)를 담는다. 법률문서는 계약으로서의 법적 구속력을 담당하며 컴퓨터 코드는 계약의 실행을 담당한다. 여기에서 더욱 흥미로운 점은 거래당사자 간 금융계약을 상호적으로 단 한 번만 기록 및 보관하고, 계약의 상태가 변화는 과정에서 계약의 체결과 실행이 자동으로 이루어진다는 것이다. 기존처럼 계약을 맺고 대사를 하거나 계약의 상태가 변한 후에 또 다시 같은 과정을 거칠 필요가 없어진다.

구성

원장

기존의 블록체인은 모든 데이터를 거래에 참여하는 모든 참여자에게 전파하기 때문에 각 노드의 관점에서 원장은 객관적이기 때문에 내 원장에 기록된 데이터가 나와 관계가 있든 없든 객관적인 사실로서 받아들여진다. 반면 코다의 원장은 일부의 데이터를, 제한된 참여자에게 전파하기 때문에 기본적으로 각 노드의 관점에서 매우 주관적이다. 때문에 자신과 관련 있는 정보에 대해서만 보관한다.

코다의 원장은 크게 on-ledger와 off-ledger로 나뉘는데, 이는 말 그대로 데이터가 안과 밖, 양쪽에서 관리될 수 있음을 의미한다. 데이터가 원장의 안에 기록되어 있다고 해서 데이터가 누군가와 공유되고 있다는 것을 뜻하지는 않지만, 누군가와 공유되고 있는 데이터라면 반드시 on-ledger에 기록되어야 하며 마찬가지로 원장의 밖에 기록된 정보는 반드시 혼자만 관리되어야 한다.

즉 코다의 원장 구조에서는 어느 곳에도 중앙 집중적인 원장이 존재하지 않고 각 네트워크 참여자는 팩트(fact)가 기록된 원장을 독립적으로 관리하며 거래에 관련이 있는 당사자 간의 정보는 항상 동일한 가운데 on-ledger에 기록된 데이터라고 하더라도 반드시 공유되어야 하는 것은 아니다.

상태

금융거래에 있어서 계약은 두 거래당사자의 관점에서 사실로 받아들여져야 하고 가장 최신 상태를 서로 보관해야 한다. 여기에서 사실이란 두 개체 간의 공통된 데이터를 의미하는데 그 예로 금융계약, 금융자산 등이 있다. 상태는 그 사실의 현재 상태, 즉 최신 버전을 의미한다. 상태는 특정 시간에 공유된 사실에 대한 데이터를 보관하는 객체로서 복잡하고 다양한 계약 또는 자산을 표현하는 데 사용된다. 현금, 어음, 채권 등의 자산이나 금리스왑, 신디케이트 등과 같은 금융상품 및 다자간 계약까지도 구현할 수 있다. 상태객체에는 다양한 속성이 포함될 수 있는데, 예를 들어 채권은 발행날짜, 상환날짜, 명목금액 등이 포함된다. 상태는 비가역성이라는 특징을 가지고 있기 때문에 특정 유형으로 작성되면 다른 유형으로의 변경이 불가능하다. 즉 채권 형태의 상태 객체가 생성되면 항상 채권의 형태이어야 한다.

하지만 계약과 자산의 상태는 항상 변화하기 때문에 관련된 상태의 업데이트 또는 진화는 가능하다. 특히 금융업계에서는 계약이 새로 생성되고 기존의 계약은 파기되는 일련의 과정들이 계속해서 반복되기 때문에 이 계약의 현 상황을 나타내는 상태라는 개념은 매우 중요하다. 하나의 상태는 특정 시점에서 트랜잭션의 참여자들끼리 공유된 정보를 나타내는데 이는 장부에 올라가므로 수정이 절대 불가능하다. 모든 상태는 임의의 정보를 포함할 수 있으며 주식 정보나 채권정보, KYC데이터, 신원확인 정보 등 어떠한 종류의 정보도 반영할 수 있다. 주의해야 할 점은 하나의 정보를 담기로 정했으면 다른 정보를 담아 해당 상태를 변경할 수 없다는 것이다. 예를 들어, 여러 상태를 담은 하나의 그룹(pool)이 시큐리티 코인에 대한 소유권을 보여주는 상태들로 구성되어있다. 이 묶음(Vault)이 갑자기 KYC 데이터나 신원확인 정보를 담은 상태들의 묶음으로 바뀌는 것은 불가능하다.

  • 상태의 변화 과정
앞서 말한 것과 같이 모든 상태는 수정되거나 삭제될 수 없기 때문에 하나의 상태 자체는 현실 세계의 변화를 직접적으로 반영할 수 없어 상태가 누적되는 과정을 통해 현실을 드러낸다. 만약 하나의 상태가 새롭게 반영되어야 할 때 이전 상태를 그대로 복사하여 새로운 상태를 생성하고 이전의 상태는 처리됨으로 표시된다. 대신 새로운 상태에는 이전의 상태에서 어떻게 변화되었는지에 대한 기록을 해야 하고 상태의 묶음(Vault)에서 맨 위에 보여지도록 해야 하며 이러한 상태를 최신의 상태라고 기록한다. 이러한 과정을 통해 상태의 모든 변화 과정을 장부에서 확인할 수 있게 된다. 따라서 장부상에 기록된 이전 상태를 하나씩 뜯어보면 최신 상태를 드러내는 상태를 검증할 수 있다.
  • 상태의 기록 묶음
모든 네트워크의 노드는 각자의 상태를 기록하는 묶음(Vault)을 가지고 있어 묶음을 확인하여 최신 현황을 반영하는 상태가 어떠한 변화를 겪어왔는지에 대한 정보를 얻을 수 있다. 이 묶음은 금고 또는 볼트(Vault)라고 불리기도 한다. 이는 암호화폐를 지갑에 보관하는 것과 같이 코다 네트워크에서 발행되고 유통되는 다양한 금융계약 또는 금융자산들이 저장되고 관리되는 관계형 데이터베이스이다. 볼트는 상태 시퀀스의 헤드(최신 버전)를 추적하고 보관하며 거래 참여자 간의 상태 헤드는 항상 일치한다.

각주

  1. 1.0 1.1 Ian Allison, 〈금융을 넘어 글로벌 블록체인의 표준을 꿈꾸는 R3〉, 《코인데스크코리아》, 2018-04-18

참고자료

같이 보기


  의견.png 이 코다 문서는 블록체인 플랫폼에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.