[가상화폐 동향] 완전 무능 개발자가 만든 거래소도 해킹 피할 수 있다는 ‘플라즈마 캐시’는 무엇?

이더리움 창시자인 비탈릭 부테린이 지난 3월 9일(현지시각) 프랑스 파리에서 열린 이더리움 커뮤니티 컨퍼런스(Ethereum Community Conference)에서 블록체인 확장성 문제를 개선할 솔루션 ‘플라즈마 캐시(Plasma Cash)’를 발표했다. 자세한 내용은 ‘Plasma: Scalable Autonomous Smart Contracts’에서 확인할 수 있다.

플라즈마 캐시는 무엇일까? 비탈릭 부테린이 파리에서 발표한 영상을 통해 살펴봤다.

플라즈마 캐시란?


Plasma Cash is plasma, but more scalable

플라즈마 캐시는 플라즈마지만 확장성이 있다.

이더리움 블록체인은 한 번에 처리할 수 있는 용량의 한계 때문에 13~15초마다 블록이 생성된다. 이 때문에 사용자가 급증하면 블록에 전송하는 데이터가 몰려 병목현상이 발생하는 문제를 앉고 있었다. 이 문제를 해결하고자 지난해 8월에 비탈리과 조셉 푼이 ‘플라즈마(Plasma)’ 프로젝트를 진행했다.

– Each deposit creates a “coin” with a unique ID (각 저장소 고유한 ID로 “코인” 생성)
– Coins cannot be split or merged (코인은 분리되거나 병합되지 않음)
– A transaction spending a coin must be included in the position in the Merkle tree corresponding to the coin ID (코인 거래 시 코인 ID에 상응하는 Merkle tree의 위치를 반드시 포함해 보내야 한다)

구조적으로 보면 이용자가 1ETH를 구매하게 되면 그 사이에 플라즈마가 있어 이력을 관리해 주는 셈이 된다.

Sending someone a coin does require also sending them “proof data” for its history
There is overhead that will go up linearly; we can fix this by checkpointing each coin on-chain once a year(think: withdraw and immediately re-deposit)

누군가에게 코인을 보내려면 “자료 증명”에 대한 기록을 함께 보내한다.
오버 헤드가 발생하는 문제는 1년에 한 번씩 각 코인을 체크해 이를 해결할 수 있다.

Only coin IDs that have been deposited can be withdrawn
Any attempt to withdraw a fake coin leads to a specific victim that will complain
Can’t “inflate coins” to steal from “everyone” in the abstract

예금된 코인 ID만 인출할 수 있다.
가짜 코인을 찾으려는 시도가 있다면 특정 피해자가 불만을 제기할 수 있다.
개념적으로 “모든 사람”을 훔치려 코인을 늘릴 수는 없다.

Exit challenge process:
1. Exiter provides Merkle proof of most recent UTXO
2. Challenger challenges with either:
a. Merkle proof of UTXO spending that coin
b. An earlier UTXO
3. If challenger chose(b), user must challenge with a child of that UTXO that before or the same as the original exit

작업을 종료하려면 가장 최근의 UTXO에 대한 머클 증명을 제공해야 한다. 그러기 위해서는 해당 코인의 UTXO 머클을 증명하거나 이전 UTXO를 증명해야 한다.

UTXO는 ‘Unspent Transaction Output’ 거래 출력을 말한다. UTXO는 ‘An Unspent Transaction Output (UTXO) that can be spent as an input in a new transaction’이라고 정의되어 있다. 즉 새로운 트랜잭션에서 입력으로 사용될 수있는 트랜잭션이다.


No “confirm” mechanism required!

Though be careful not to spend a coin until you’ve authenticated its full history.

확인 메커니즘이 필요 없다. 전체 이력을 검증받기 전까지는 코인을 사용하지 않도록 주의할 것.

정리하자면 비탈릭 부테린이 서두에 언급했듯이 플라즈마 캐시는 플라즈마지만 확장성이 더 뛰어나다라고 언급했다. 기존 이더리움은 한 번에 처리할 수 있는 용량이 작아 트랜잭션이 늘어나면 병목현상이 발생했다. 그것을 해결하고자 작년 8월에 시작한 것이 ‘플라즈마 프로젝트’였다.

플라즈마는 머클 증명을 통해 거래에 대한 이력을 찾아가도록 구성해 병목현상도 해결하고, 처리 용량 문제까지 잡으며 확장성을 향상시켰다. 하지만 플라즈마 단계까지는 이를 위해 모든 블럭을 다운로드 받아서 체인의 유효성을 증명해야 했기 때문에 여전히 비효율적으로 운영될 수밖에 없었다. 이런 비효율성을 개선해서 등장한 것이 플라즈마 캐시다.

사용자의 이더(ETH)에 고유ID를 부여한 플라즈마 코인이 만들어지는데 여기에 거래에 대한 이력이 기록된다. 이 때문에 사용자가 이더를 거래하고자 할 때 전체가 아닌 관련된 거래 내역만 찾으면 되는 구조다. 업무량이 대폭 줄어든 셈이다.

플라즈마는 해킹에도 안전하다고 강조하고 있는데, ‘플라즈마 엑시트’라는 절차를 통해서만 출금이 가능하기 때문이다. 개발자가 무능하더라도 안전하게 자산을 지킬 수 있게 했다는 의미로 분석된다.

이더리움 창시자, 블록체인 문제 개선할 ‘플라즈마 캐시’ 제안
플라즈마는 이더리움의 확장성 이슈를 개선하기 위해 제시된 프레임워크다. 처리해야 할 데이터양이 늘어도 무리 없이 처리하는 것을 확장성이라고 하는데 이것이 담보되지 않으면 블록체인이 편리하게 대규모로 쓰이는 미래가 요원하다. 현재 이더리움 스마트 계약은 다양한 계약 시나리오를 시간 지연 없이 빠르게 해결할 수 있는 수준이 아니다. 즉 제한적인 확장성을 갖고 있다. 이는 블록체인이 계속 발전하기 위해 풀어야 할 과제로 꼽힌다.

비탈릭, 거래소 해킹 막는 확장성 솔루션 ‘플라즈마 캐시’ 제안
만약 해당 플라즈마 캐시 코인이 무단으로 인출되면 플라즈마 캐시의 ‘증거 데이터(Proof Data)’를 이용해 이의를 제기할 수 있다. 해킹 사건의 경우, 해당 플라즈마 캐시의 주인은 분쟁조정 절차를 통해 플라즈마 캐시와 연동된 이더를 돌려받을 수 있다.

비탈릭은 “플라즈마 캐시는 무능력한 개발자들의 실수로 인한 해킹 사건으로 자산을 잃게되는 문제를 해결할 것이다”라고 말했다.

부테린, 이더리움 확장성 잡은 ‘플라즈마 캐시’ 프로젝트 공개
부테린은 “이번 프로젝트의 가장 큰 장점은 사용자들이 처리해야 하는 데이터의 양이 줄었다는 것”이라며 “이제 사용자들은 플라즈마 코인을 통해 자신이 관심 있는 코인의 플라즈마 블록체인만 확인하면 된다”고 설명했다. 부테린은 또 플라즈마 캐시 솔루션을 사용하게 되면 거래소가 해킹당하는 상황에도 투자자들의 자산은 안전하다고 설명했다. 플라즈마 코인의 고유 ID를 해커가 일일이 해킹하기 어렵기 때문이다. 그는 “거래소에 어떤 상황이 발생해도 사용자들은 자신의 자산을 ‘플라즈마 엑시트’ 절차를 통해 출금할 수 있다”며 “수십억 달러를 운용하는 완전 무능한 개발자가 만든 대규모 거래소에서도 돈을 잃지 않을 것”이라고 전망했다.