마이크로소프트, 기업용 블록체인 ‘코코 프레임워크’ 신문기사를 보고 MS의 COCO framework에 대해서 알아보았다.
간략하게, COCO framework는 기업을 위한 용도이고, 자체적인 블럭체인은 아니고, 이더리움, R3 코다 등의 블럭체인을 지원한다. 아래는 신문기사 중 일부이다.
"이 프레임 워크는 디지털 분산원장 자체는 아니지만, 이더리움(Ethereum)과 같은 기존 블록체인을 보다 기업에서 활용하기 쉽게 트랜잭션(Transaction) 처리량과 속도, 그리고 트랜잭션에 대한 액세스 제어를 기업이 쉽게 관리하는 것을 제공한다. 블록체인 네트워크와 통합 된 경우 코코 프레임워크는 초당 1,600개 이상의 트랜잭션 처리속도를 자랑한다.
이 프레임워크는 모든 디지털 분산원장 프로토콜과 호환된다. 현재 코코 프레임워크 구현에는 R3 코다(Corda), 인텔 하이버레저 쏘우투스(Intel Hyperledger Sawtooth), JP모건 쿼럼(JP Morgan Quorum) 및 이더리움(Ethereum) 등 10여 개 디지털 분산원장 기술을 지원한다."
COCO framework의 특징은 다음과 같다.
아래는 Coco 프레임워크의 백서에 있는 그림을 중심으로 간단히 설명한 것이다.
Coco 프레임워크의 구조는 1) TEE (trusted execution environments, 신뢰 실행환경), 2) Coco 프레임워크, 3) 기존 블럭체인 및 DApp(분산 어플)로 구성된다.
TEE는 기존에 있던 것으로, 분산 레저(블럭체인)을 운영하는 노드를 신뢰할 수 있는 네트워크를 만드는 역할을 한다. 아래의 설명을 참조.
그리고 맨위에는 기존의 블럭체인 및 DApp이 위치한다.
그리고, 이들 중간에 Coco 프레임워크가 위치한다.
Coco는 아래의 기능을 제공한다.
아래의 빨간 부분이 Coco에서 제공하는 부분이며 기능은 아래 그림과 같다.
그리고, 이것에서 제외된 부분은 1) 분산 원장(블럭체인) 모델, 2) VM(EVM), 3) 거래 처리 이고, 이 부분을 기존의 이더리움 등이 제공한다.
Coco 시스템은 신뢰할 수있는 검증 노드 (validating nodes, VN)가 분산된 네트워크이며, 각 노드는 Coco Framework 및 통합 블록체인 프로토콜을 실행한다.
VN은 거래를 받아들이고 네트워크의 합의 알고리즘에 참여한다. 선택한 합의 알고리즘에 따라 하나 또는 일부 VN이 트랜잭션을 처리하고 스마트 계약 코드를 실행한다.
Coco 프레임워크는 1) host (잠재적으로 신뢰할 수없는 hypervisor 또는 virtual machine monitor이라함, 및 노드의 운영 체제)와 2) TEE 내의 보호되고 안전한 컨테이너인 enclave로 나누어진다.
시스템의 모든 민감한 구성 요소는 enclave에서 실행되며 무결성, 기밀 유지 및 원장 보안을 유지 관리한다.
Coco 네트워크에는 1) 멤버와 1)참가자의 두 가지가 있다.
멤버: 네트워크의 멤버, TEE에서 실행되는 코드 및 네트워크 정책의 정의를 포함하여 누가 네트워크에서 거래 할 수 있는지, 그리고 거버넌스를 통제 할 수있다.
참가자: 회원과 달리 투표를 할 수 없으므로 누가 네트워크 또는 그 지배 구조에 직접 액세스 할 수 있는지에 대한 운영 통제 권한이 없다. 참가자는 네트워크 구성원에 의해 결정되며, 구성원과 마찬가지로 참가자는 네트워크에서 거래를 할 수 있다.
모든 멤버과 참여자는 비밀/공개키 쌍 (PrivKeyMi, PubKeyMi 및 PrivKeyPi, PubKeyPi)을 가지며, X.509 인증서로 Coco 네트워크에서 식별된다.
그림 5는 응용 프로그램 트랜잭션의 작업흐름을 보여준다.
거래를 보내기 전에 응용 프로그램 (예 : Ethereum DApp)이 네트워크의 VN과 인증되고 암호화 된 연결을 설정한다.
Coco 프레임 워크는 트랜잭션을 수신하면, 암호해독한 다음 프로토콜의 해당 블록체인 어댑터로 보낸다.
어댑터는 트랜잭션 세트를 시작하고 블록생성 로직 및 Ethereum 가상 머신 (EVM)과 같은 블록체인 프로토콜의 하위 시스템의 구성 요소와 상호 작용하여 트랜잭션을 처리한다.
어댑터는 구성된 합의 알고리즘을 사용하여 네트워크를 통해 모든 상태 변경 사항을 유지하고 복제하는 분산 저장소를 통해 트랜잭션 세트를 커밋합니다.