[INBEX(인벡스) BLOCKBUSTERS][서울대 Decipher : 김재윤] 플라즈마 스타일의 사이드체인 기술

in #kr7 years ago

블록체인의 확장성 문제를 해결하기 위한 또 하나의 방법으로 합의 알고리즘을 간단하게 만드는 대신 메인 체인을 통해 유효성을 담보하는 사이드체인 기술이 있다. 극단적으로 합의 알고리즘을 없애고 운영자(operator)라 불리는 하나의 주체가 사이드체인에서 별도로 발생하는 트랜잭션들을 처리하고, 그 요약본을 이더리움 메인 체인에 업로드하는 플라즈마(Plasma)[1] 기술이 가장 유명한 사이드체인 기술이다. 플라즈마 기술은 블록체인의 확장성 문제를 해결하는 가장 현실적인 대안이라고 평가받으면서도 아직 해결하지 못한 문제들이 있어서 쉽게 상용화되지 못하고 있다. 이번 글에서는 플라즈마에 대한 설명과 함께 기술 동향을 소개하고자 한다.



운영 메커니즘

1) PoA(Proof-of-Authority) 합의 알고리즘

플라즈마에 참여하는 참여자들 간에는 위계가 존재한다. 운영자(operator)가 모든 권한을 가지고 트랜잭션을 모아서 블록을 만들기 때문이다. 대신 나머지 참여자들이 운영자의 행동을 감시하고, 이상을 감지했을 때 플라즈마 체인을 나감(exit)으로써 자산을 지킬 수 있도록 하는 메커니즘을 만듦으로써 무 신뢰(trustless) 시스템을 구축할 수 있다. 이를 위해 플라즈마 체인을 운영하는 운영자는 일정한 주기로 플라즈마 체인에서 발생한 데이터의 요약본을 이더리움 메인 체인에 업로드 해야 한다. 이를 위해서는 데이터의 요약본을 기록하는 스마트 콘트랙트가 필요하다. 그리고 플라즈마 체인의 참여자들은 언제든지 이더리움 메인 체인에 기록된 데이터의 유효성을 검증할 수 있어야 한다.


2) 입금(deposit)과 출금(withdrawal)

플라즈마 체인에 참여하기 위해서는 그 플라즈마 체인의 유효성을 담보해주는 이더리움 메인 체인 상에 배포된 스마트 콘트랙트에 해당 플라즈마 체인에서 유통되는 디지털 자산(digital asset)을 입금해야 한다. 스마트 콘트랙트에 입금이 완료되면 운영자가 이를 확인해서 플라즈마 체인에 그 자산만큼의 가상 자산을 발행해준다. 예를 들어, 스마트 콘트랙트에 이더리움(ETH)을 입금했다면 플라즈마 체인에 같은 양의 플라즈마 이더리움(PETH)이 발행되어 입금자의 주소에 할당된다.

플라즈마 체인 상에서 자금을 사용하다가 메인 체인으로 출금하고 싶다면 출금하고 싶은 만큼 자산을 소각하는(burn) 트랜잭션을 발생시킨다. 이를 운영자가 블록에 담으면 그 트랜잭션의 존재를 증명하는 머클 증명(Merkle Proof)을 이더리움 메인 체인에 있는 스마트 콘트랙트에 전송하면 된다. 스마트 콘트랙트에서 머클 증명이 검증되면 그만큼의 자산이 참여자에게 전송된다.



탈출(exit)

플라즈마 체인에서는 운영자가 트랜잭션의 유효성을 검증하기 때문에 플라즈마 체인 내부에서 발생하는 트랜잭션을 이용한 공격은 성공할 수 없다. 하지만 플라즈마 체인 내부와 이더리움 메인 체인 사이에서 모순을 발생시키면 공격에 성공할 수 있는데, 이는 이 글에서 다루고자 하는 범위를 벗어나므로 여기서 설명하지는 않겠다. 마지막으로 운영자에 의한 공격이 발생할 수 있다. 실제로 플라즈마 체인을 설계하고 구현하는 사람들은 운영자에 의한 공격을 막기 위해 노력하고 있다. 운영자와 참여자 간 운영하는 노드의 위계가 다르므로 운영자가 공격하기도 쉽고, 공격할 유인이 충분하기 때문이다. 플라즈마 구현체들은 이를 막기 위해서 탈출 메커니즘을 만들었다. 참여자들에게 블록을 생성할 권한이 없는 대신 운영자가 블록을 공개하도록 하고 참여자들이 이를 매번 감시하는 방법이 기본적인 플라즈마 체인의 메커니즘이다. 이때 어떤 참여자가 유효하지 않은 블록을 발견한다면 이더리움 메인 체인에 마지막으로 유효한 블록에서 탈출 요청을 하고, 다른 참여자들도 따라서 탈출해야지 자신의 자산을 지킬 수 있다.


해결되지 못한 문제와 기술 동향

운영자가 블록을 만들어서 그 요약본을 이더리움 메인 체인에 올리고, 다른 참여자들에게 블록을 보여주지 않으면(withhold) 어떻게 될까? 어떤 노드가 오프라인 상태일 때 운영자가 공격을 시도해서 제때 탈출하지 못하면 어떻게 될까? 혹은 운영자가 운영하는 노드가 죽었을 때 플라즈마 체인의 운영은 어떻게 될까?

플라즈마 체인의 기본적인 매커니즘은 오래전에 정의되었고, 수많은 변형(variant)이 있지만, 현실적으로 제대로 구현된 플라즈마 체인은 아직 하나도 없다. 플라즈마 체인을 구현하는 많은 팀이 있지만 대부분 스마트 콘트랙트의 구현을 제외하고 자산을 이동시키는 기본적인 트랜잭션만 대상으로 하고 있다. 그런데도 아직 해결하지 못한 문제들이 많아서 온전한 플라즈마 체인이 실험실 밖으로 나오지 못했다.

최근 들어서는 Plasma Snapp[2]나 Ignis[3]와 같이 이더리움 메인 체인에 업로드하는 데이터의 요약본을 영지식 증명(Zero-Knowledge Proofs)을 이용해서 원본 데이터 없이 검증할 수 있도록 하는 변형이 주목을 받는 추세이다. 원본 데이터 없이 증명만으로 유효성을 검증할 수 있다면 참여자들의 관찰 비용(observation cost)을 줄이거나 애초에 운영자가 유효하지 않은 요약본을 올리지 못하게 막을 수 있기 때문이다. 처음 개념이 제시되었을 때부터 한동안 플라즈마 체인의 기술 발전이 쉽지 않았는데 영지식 증명의 도입으로 하루빨리 플라즈마가 세상에 나와서 블록체인 기술을 활용할 수 있길 기대한다.


[1] https://plasma.io. (Feb, 2019).

[2] https://ethresear.ch/t/plasma-snapp-fully-verified-plasma-chain/3391. (Feb, 2019).

[3] https://medium.com/matter-labs/introducing-matter-testnet-502fab5a6f17. (Feb, 2019).



  INBEX 바로가기

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.082
BTC 60785.45
ETH 1557.47
USDT 1.00
SBD 0.47