Plasma 102 : Detail Structure and Use Cases
“we seek to design a system whereby computation can occur off-blockchain but ultimately enforcible on-chain which is scalable to billions of computations per second with minimal on-chain updates.”
- Vitalik Buterin, Joseph Poon -
안녕하세요 온더의 Danny 입니다 :) 플라즈마 프로젝트의 기본적인 내용을 소개했던 Plasma 101은 잘 읽어보셨나요? 오늘은 Plasma MVP와 백서를 기준으로, 플라즈마 체인의 구체적인 구성 요소와 그 작동 과정을 이야기하고자 합니다.
플라즈마의 기본적 요소들은 이미 이해하고 있음을 전제하고 작성하였으니, 아직 개념이 잡히지 않은 분들은 Plasma 101를 읽고 오시면 좋을 것 같습니다.
Series of Plasma
일반적 동작 구조
Plasma 101에서도 말씀드렸다시피, Scaling과 관련된 플라즈마의 가장 기본적인 컨셉은 플라즈마 체인에서 TX를 모두 처리하고 루트 체인에서는 최소 단위의 연산만 수행하는 것입니다. TX 해싱의 최종 결과인 MerkleRoot만을 상위체인에 기록하게 되는 것이죠.
저번 글에서도 MerkleRoot가 플라즈마 체인에서 매우 중요한 역할을 한다고 말씀드렸는데요. 그 쓰임새는 다음과 같습니다.
i) 플라즈마 체인으로부터 발생하는 TX들의 MerkleRoot값만이 RootChain에 주기적으로 커밋됩니다.
ii)특정 Exit에 대해 부정행위 여부를 증명(Fraud Proof)하는 Challenge 과정에서, MerkleRoot(
_proof
)값을 활용하여 이중 지불 여부를 검증합니다.
기본적으로 플라즈마 체인에 참여하기 위해서는 N
ETH 만큼을 루트 체인에 예치해놓아야 합니다. 예치된 N
ETH는 플라즈마 체인에서 N
PETH로 전환되고, 해당 체인의 TX에서 활용되는 화폐 단위는 ETH가 아닌 PETH로 변경됩니다. 이에 따라 플라즈마 체인에서는 RootChain 컨트랙에 Deposit된 ETH의 TX가 기록될 것입니다. 그리고 PETH의 TX MerkleRoot는 루트체인에 주기적(periodic)으로 기록됩니다.
플라즈마의 PETH와 메인 체인의 ETH를 청산하는 Exit 기능이 빈번하게 발생하지 않음을 전제한다면, 메인 체인과의 추가적인 커뮤니케이션은 플라즈마 체인 네트워크에서의 비잔틴 상황에서만 이루어질 것입니다. 플라즈마 체인에서의 비잔틴 상황, 그리고 이 때 발생하는 Challenge와 Fraud Proof 기능에 대해서는 후반부에서 상술하도록 하겠습니다.
PETH의 TX가 플라즈마 체인 내에서 반복적으로 운용됨에 따라, 특정 dApp에서 발생하는 개별 TX들은 루트 체인의 블록 안에 기록될 필요가 없어집니다. 이처럼, 플라즈마 체인에서 발생하는 수 많은 거래들은 Merkleized되고, 루트 체인에 주기적으로 커밋되기 때문에 루트 체인에서 필요한 확장성을 제고할 수 있는 것입니다.
플라즈마 체인이 구현된다면, 루트 체인이 담당하는 역할은 간단합니다. 플라즈마 체인의 운용을 위해 필요한 스마트 컨트랙트(RootChain.sol)가 배포되고 이에 필요한 안전 예치금(Security Deposit)을 관리하는 암호경제학적 기능입니다.
Exit Process
Exit이란 플라즈마 체인에서 융통되던 PETH를 루트 체인의 ETH와 교환(인출)하거나 상위 체인으로 옮겨가는 과정을 의미합니다. 직설적으로 말하자면 기존의 플라즈마 체인에서 빠져나가는 것이죠.
Exit을 하는 이유는 여러가지 방향이 있습니다만, 본 문서에서는 암호경제학적으로 중요한 기능인 Exit, Challenge, 그리고 FraudProof 과정에 대해 다루도록 하겠습니다. 이외의 인출 과정은 디사이퍼에서 정리된 자료를 참고하시면 좋을 것 같습니다 :)
위 그림을 보시면, 플라즈마 체인의 4번째 블록에서 BWH 공격(Selfish Mining)이라는 비잔틴 행위가 발생했음을 확인할 수 있습니다.
이 때, Alice는 Exit 함수를 호출하여 자신의 PETH를 루트 체인에 예치되어 있는 ETH와 교환할 수 있습니다. 다시 말하면, 특정 비잔틴 행위가 발생했을 때 PETH의 보유자는 자신이 예치해놓은 ETH를 곧바로 인출할 수 있다는 것이죠. 이것이 Exit입니다.
다만, 특정 참여자가 플라즈마 체인에서 Exit하길 원한다면 자신의 Exit이 유효한 Exit이라는 것을 플라즈마 네트워크에 브로드캐스팅해야 하고 자신의 TX에 대한 MerkleProof 값을 제시해야 합니다. 뿐만 아니라, 해당 Exit이 유효하지 않은 UTXO의 Exit일수도 있기 때문에 다른 참여자들이 호출하는 Challenge로부터 자유로워야 합니다.
Challenge & Fraud Proof
누군가 Exit을 호출할 때, 각각의 참여자들은 해당 TX가 과연 유효한 UTXO의 Exit인지를 검증하게 됩니다. 만약 이것이 부정한 TX라고 판단될 경우에는 이에 대한 증거를 제시할 수 있는데요. 이 과정이 바로 Challenge와 Fraud Proof입니다.
여기에서의 증명은 어떤 것을 의미하는가 하면, 이미 지불된 UTXO(now-spent TXO)가 이중 지불(Double Spend) 문제에 저촉되지 않는지 파악하는 것을 의미합니다. 즉, Exit하고자 하는 UTXO가 이미 지불된 것인지, 아닌지를 확인하는 것이죠.
이와 같이, 특정인의 Exit에 대해 부정함을 입증하는 전반적인 흐름 자체를 Challenge라고 표현합니다. 말 그대로 당신의 Exit이 부정 행위임을 입증하는 것에 도전하는 셈입니다 :)
앞서 언급했듯, 특정 Exit에 대해 challengeExit()
함수를 호출하면, 해당 UTXO의 Exit이 부정 행위임을 증명해야 합니다. UTXO의 이중지불 여부를 증명하기 위해서는 다음과 같은 요소들이 필요합니다.
_cUtxoPos
는 Challenge의 대상이 되는 UTXO를 의미하고_eUtxoIndex
는 Exit하려는 UTXO의 Output 포지션을 참조한다는 것을 나타냅니다. 이들과 함께, Fraud Proof의 증거로써 해당 TX의 MerkleRoot를 의미하는_proof
값을 사용합니다.
Mass Exit
Mass Exit 상황은 뱅크런과 흡사한 상황이라고 보시면 됩니다. 플라즈마 체인의 검증자 또는 블록 생성자가 비잔틴 행위를 했다면, 정상적으로 체인에 참여하던 대다수의 사람들이 한꺼번에 Exit하는 Mass Exit 상황에 직면할 수 있습니다.
루트 체인에 예치된 ETH는 PETH와 동일 비율로 예치되어 있고 PETH 소유자의 서명없이는 되찾지 못합니다. 따라서 예치된 ETH가 부족해서 지급이 불이행되는 상황이 문제되진 않을 것입니다.
다만, 이더리움 블록체인에 설정되어 있는 Block Gas Limit이 이슈가 됩니다. Block Gas Limit을 초과할 만큼의 Exit이 한꺼번에 발생할 경우, 루트 체인의 블록 내에서는 Out of Gas 문제로 인해 ETH의 인출이 불가능해질 수도 있습니다.
Risk of Mass Exit & Audit
일반적 동작과정에서 전제한 바와 같이, Exit이 빈번하게 발생하면 플라즈마 체인의 안정성 측면에서도 좋지 못하며 무엇보다 EVM의 설계상 수많은 Exit을 수용할 수 있는지가 관건이 됩니다.
다시 말해서, Mass Exit이 발생할 때Exit()
트랜잭션들의 Gas Limit이 이더리움 블록체인의 Block Gas Limit을 초과하지 않아야 하는 것은 매우 중요한 문제입니다. (ΣExit Tx Gas Used
≤ Block Gas Limit
)
이는 Josh Stark, Vitalik Buterin 등이 동시에 고민한 이슈로서, 수많은 Exit 컨트랙을 EVM이 수용함에 있어서 out of Gas 현상으로부터 자유로워야 함을 나타냅니다. 더 자세한 분석은 온더 팀블로그에 게재되어 있는 Plasma MVP Contract Audit에서 구체적으로 확인하실 수 있는데요. 여기에서는 간단한 결론만 말씀드리도록 하겠습니다.
약
5,000
개의 Exit 요청이 있다고 가정했을 때, 플라즈마 컨트랙트의 알고리즘 상으로는5,000
번째 Exit은 Block Gas Limit(현재 8M 내외에서 결정)의 범위를 초과하지 않는 것으로 판단하였습니다.
이제 플라즈마 체인을 작동시키는 핵심적인 원리들에 대해서 좀 더 자세히 살펴보도록 하겠습니다 :)
Key Components of Plasma
1. A bitmap-UTXO commitment structure for ensuring accurate state transitions off the root.
2. MapReduce computing framework for constructing fraud proofs of state transitions within these nested chains to be compatible with the tree structure while reframing the state transitions to be highly scalable.
3. A consensus mechanism which is dependent upon the root blockchain which attempts to replicate the results of the Nakamoto consensus incentives.
플라즈마 백서에 의하면, 플라즈마 체인의 작동 원리에는 크게 세 가지 정도의 핵심 요소가 존재합니다.
1. UTXO(Unspent TX Outputs)
계속 언급했듯이, Plasma MVP에서의 TX 단위는 UTXO입니다. Nonce, Balance, codeHash, StoargeRoot을 기준으로 TX가 처리되는 State 모델이 아니닙니다. 그럼에도 불구하고 UTXO 모델이 제안되고 있는 이유는 플라즈마 체인의 구조적 안전성을 보장하는 Exit과 Challenge 과정을 좀 더 효율적으로 처리하기 위함으로 판단됩니다.
앞서 우리는 Challenge 과정에서 Fraud Proof에 필요한 데이터들도 대부분 UTXO와 관련된 값임을 확인한 바 있습니다. 따라서 이번 절에서는 플라즈마 체인에서 PETH의 소유자가 Exit하려고 할 때 필요한 값들을 살펴보겠습니다.
startExit(uint256 plasmaBlockNum, uint256 txindex, uint256 oindex, bytes tx, bytes proof, bytes confirmSig)
우선 Exit 시점에서의 플라즈마 블록 넘버가 필요할 것이고 UTXO의 생성과 함께 부여된 TX 인덱스, 참조하고자 하는 UTXO의 Output(oindex), MerkleProof, 그리고 Output의 이전 소유자로부터 받아오는 서명 등이 필요합니다.
이처럼, Exit을 하기 위해서는 해당 UTXO 집합에 매칭되는 출금 데이터들이 요청되게끔 설계되어 있습니다. 그리고 모든 값에 오류가 없다는 것이 입증되면 Exit에 성공할 것이고, 루트 체인의 ETH와 플라즈마 체인의 PETH가 서로 정산되는 절차가 시작됩니다.
UTXO in Wrong Block Validation
UTXO 모델은 악의적 블록 검증자가 유효하지 않은 블록을 검증하는 것, 즉 비잔틴 행위를 처벌할 때 유용합니다. UTXO 모델은 Output/Input 구조에 의해 TX가 처리됩니다. 따라서 어떤 TX가 누구로부터 사용되었고, 언제 사용되었는지에 대한 기록들을 추적할 수 있습니다.
이러한 특성에 의하면, 플라즈마 체인의 검증자가 유효하지 않은 블록을 생성할 때 FIFO(First-in-First-Out) 형태로 안전한 자금 인출이 가능합니다. 이것이 어떤 의미인지 그림과 사례를 통해 구체적으로 파악해보도록 하겠습니다.
상황은 이렇습니다. 플라즈마 체인을 운영하는 PoA Operator가 PETH를 99999
만큼 복사하는 TX를 만들어 새로운 플라즈마 블록 안에 기록하고, 해당 TX는 머클라이즈되어 루트 체인까지 성공적으로 커밋됩니다.
이 때, 이 블록은 플라즈마 네트워크 상에서 유효하지 않은 블록입니다. 악의적 검증자는 이러한 비잔틴 행위에 성공하자마자 자신이 복사한 PETH를 바로 Exit하려고 할 것입니다.
기존 플라즈마 체인에서 융통되던 PETH
의 총액은 6 PETH
이며, Sam과 Alice에게 각각 2.5 PETH
, 3.5 PETH
만큼 배분되어 있는 상황입니다. 계속 말씀드렸듯이, Sam과 Alice가 보유하고 있는 6 PETH
는 플라즈마 컨트랙에 예치되어있는 6 ETH
에 대해서 1:1로 교환될 수 있습니다.
지난 글에서도 말씀드렸다시피, 악의적 검증자 또는 비잔틴 행위자의 TX는 플라즈마 체인의 참여자들에 의해 실시간으로 감시됩니다.
Sam과 Alice가 Operator의 비잔틴 행위를 목격했다면, 그 즉시 루트 체인에 Exit을 요청할 것입니다. Operator가 이들보다 더 빠르게 Exit하기 위해서는 우선 유효하지 않은 블록을 생성한 다음, 자신의 악의적 TX가 루트 체인까지 커밋되는 데에 소요되는 시간이 일반 참여자의 Exit 요청 시점보다 더 앞서 있어야 합니다.
그러나 일반적인 참여자들은 유효하지 않은 블록이 생성됨과 동시에 Exit을 요청할 것이기 때문에, 다수의 일반 참여자와 담함을 하지 않는 이상 Operator가 더 빠르게 Exit하는 것은 시점 상으로 불가능에 가깝습니다.
비잔틴 상황 하에서의 UTXO 모델은 요청된 Exit의 순서대로 루트 체인의 ETH가 인출되는 상황 하에서 유의미한 역할을 합니다. 여러개의 Exit이 적체되어 있을 때 TX가 처리되는 절차는 FIFO(First-In-First-Out) 형태, 즉 선착순으로 처리되죠. Plasma MVP의 스마트 컨트랙트에서는 UTXO 세트의 일부를 Exit할 때, 우선순위 큐(Priority Queue) 데이터 구조에 의해 UTXO가 처리되기 때문입니다.
Operator의 비잔틴 행위를 목격하고 즉시 Exit을 해버린 Sam과 Alice로 인해, 루트 체인에 예치되어 있던 6 ETH
는 모두 인출되었으며, PoA의 악의적 운영자가 Exit할 수 있는 ETH는 더 이상 남아있지 않습니다. 즉, 공격에 실패하게 된 것이죠. 이 경우 UTXO가 이중 지불된 것은 아니기 때문에 Challenge 절차가 진행되진 않습니다.
위와 같은 상황에서 Sam과 Alice의 Exit이 완결되면, PETH가 융통되던 플라즈마 체인은 무용지물이 되어버립니다. 즉, 해당 플라즈마 체인을 사용하던 dApp 자체에 마비가 올 수 있다는 것이죠.
위와 같은 특성들을 고려했을 때, PoA 네트워크 하에서는 체인의 검증자가 유효하지 않은 블록을 생성하려는 유인을 찾기 어렵습니다.
2. MapReduce
MapReduce computing framework for constructing fraud proofs of state transitions within these nested chains to be compatible with the tree structure while reframing the state transitions to be highly scalable.
MapReduce 방식은 Plasma의 수많은 TX 처리를 가능하게 만드는 기술적 요소인데요. 플라즈마 체인을 도입하려는 목적 자체가 무제한적으로 확장되게끔 설계된 트리 구조임을 감안하면, 플라즈마에서의 MapReduce 방식을 이해할 필요가 있습니다.
간단히 이야기하면, 수 많은 플라즈마 체인으로부터 쏟아지는 대용량 데이터를 MapReduce 방식으로 처리하여 트리 구조와의 호환성 및 TX 처리의 효율성을 목표하는 것입니다.
Blockchains in Blockchains
앞서 언급했듯이, 플라즈마 체인은 수많은 상위 체인과 하위 체인이 연결된 트리 구조를 목표하고 만들어진 모델입니다.
루트 체인에 플라즈마 체인이 하나 연결되면, 그 플라즈마 체인에 또 다른 플라즈마 체인이 연결되어 자식 체인이 형성되고, 그 자식 체인에는 또 다른 플라즈마 체인이 연결되어 자식 체인이 되고, 그 자식 체인에는… 이런식으로 말입니다.
위 그림과 같이 루트 체인으로부터 출발하여, 첫 번째 연결된 플라즈마 체인의 Depth는 1 입니다. 부모 체인에 자식 체인이 연결되면서 Depth는 점점 증가하겠죠. 전체 플라즈마 체인의 Depth가 현재 3
이라고 가정할 때, 각 플라즈마 체인으로부터 제출되는 MerkleRoot는 어떻게 처리되어야 할까요?
위 그림의 2nd Tree Depth
레이어에서는 3개의 플라즈마 체인이 위치하므로 각 체인으로부터 3개의 MerkleRoot가 모일 것입니다. 그리고 이들은 1st Tree Depth
를 갖는 플라즈마 체인에 전송될 것입니다.
나아가 3개의 플라즈마 체인이 아니라 10개, 100개, 1000개… 까지 플라즈마 자식 체인이 확장되면, 즉 Depth가 계속 커지면 어떻게 될까요? 상위 체인에 전송되는 MerkleRoot 값들이 무수히 많아질 것이고, 비잔틴 상황에서 필요한 MerkleProof 과정에서도 수 많은 증명 데이터가 전송될 것입니다. 그래서 빅데이터 처리 방법론 중 하나인 MapReduce 방식이 채택된 것입니다.
MapReduce in Plasma
이제 플라즈마에서 대량의 MerkleRoot를 처리할 때 MapReduce 방식이 어떻게 활용되는지 살펴보겠습니다.
1st. Map
Map 과정은 부모 체인이 필요로 하는 데이터를 자식 체인에 요청해 데이터를 수집하는 과정이라고 보시면 됩니다.
앞서 언급했다시피, 플라즈마 체인은 엄청나게 많은 체인이 생길 것을 가정하고 만들어진 모델입니다. 따라서, 동일한 depth에 더 많은 플라즈마 체인이 생겨날수록 부모 체인이 처리해야 할 MerkleRoot는 더욱 많아집니다. 이 때 대량으로 모여드는 MerkleRoot를 1차적으로 집합 내지 결집시키는 과정이 Map 입니다.
예를 들어,
1st Tree Depth
를 갖는 플라즈마 부모 체인은2nd Tree Depth
,3rd Tree Depth
의 자식 체인들로부터 MerkleRoot 값을 받아와야 합니다.1st Tree Depth
체인은 연산해야 할 데이터의 수를 알아내기 위해2nd Tree Depth
에게 관련 데이터를 요청합니다.
이러한 절차에 의해서 Map이 완료되면, 결집된 데이터를 축소 및 정리하는 과정인 Reduce가 실행됩니다.
2nd. Reduce
Map 과정에 의해 수많은 데이터가 결집되었습니다. 그리고 모여진 데이터는 부모 체인, 나아가 루트 체인까지 기록되어야 합니다. 일반적으로 Reduce 작업은 Map 작업에서 생성된 데이터들의 (key, value)
쌍을 대상으로 하여, 내부적으로 중복되는 데이터를 제거하고 원하는 데이터만을 추출하는 과정이 진행됩니다.
Map 절차에 의해서 3rd Tree Depth
까지 결집된 데이터들이 상위 체인으로 전송될 때, 앞서 모아놓은 수 많은 MerkleRoot에 대해 상위 체인에서 필요한 값만을 선별해야 하는데, 이는 Fraud Proof 과정에서 주목할 내용입니다.
우리는 본 문서의 초반부에서 UTXO의 이중지불 여부를 증명하기 위해서, MerkleProof를 제출하여 부정행위를 입증하는 과정을 확인했습니다. 이 때, 플라즈마 체인의 각 depth에서 Map 작업에 의해 결집된 MerkleRoot 값들을 MerkleProof로서 처리하는 작업이 Reduce입니다.
플라즈마 프로젝트는 위와 같이 동작하는 MapReduce 작업을 활용하여 MerkleRoot를 좀 더 효율적으로 처리하는 것을 목표하고 있습니다.
3. Consensus Mechanism
What Consensus Algorithm to Use ?
State Channel 과는 달리, 플라즈마 체인은 이더리움 블록체인과 망을 달리하여 구축되는 별도의 블록체인입니다. 따라서 블록 생성 및 검증에 필요한 별도의 합의 알고리즘이 필요합니다.
앞서 UTXO를 설명하며 사례로 제시했던 합의 알고리즘은 PoA였지만, 플라즈마 체인의 합의 알고리즘과 네트워크 상에서의 프로토콜은 사용자가 유동적으로 설계할 수 있습니다.
그렇다면 어떤 방식이 플라즈마 체인에 적합한 것일까요? 플라즈마의 최초 설계자인 비탈릭의 의견은 다음과 같습니다.
합의 알고리즘을 선택할 때에는 경제적 완결성 개념이 이슈가 됩니다. Proof of Work 방식에서는 “6개의 블록만 지나면 그 거래는 유효해지는 것으로 본다”는 확률적 개념 하에서 거래의 완결성이 측정됩니다. 이를 좀 더 확실하게 보장하기 위해 Casper FFG를 도입하고 있는 EF이기에 최대한 Proof of Stake 알고리즘을 장려하고 있습니다.
프라이빗 네트워크에서 활용되는 Proof of Authority 역시 소수 또는 단일 노드에 의해 블록이 완결적으로 검증되기 때문에, 완결성 측면에서는 검토할만한 사항입니다. 그러나 탈중앙화 및 검열저항성의 확보, 그리고 BWH의 저하 측면에서 PoA 알고리즘은 지양하는 것이 낫다는 의견도 공존합니다. 이는 플라즈마 백서에도 기재되어 있지요.
However, in many cases it’s preferable to construct a proof-of-stake chain instead of a single-party proof-of-authority chain. This minimizes risks related to block withholding.
이제 플라즈마 체인에서 PoS 알고리즘은 어떤식으로 설계될 수 있는지 알아보겠습니다.
Proof of Stake in Plasma
Nakamoto Consensus
사실 Proof of Stake 알고리즘에서 가장 핵심이 되는 논리는 경제적 유인 구조입니다. 그래서인지 플라즈마 프로젝트에서 PoS를 장려하는 근거는 Nakamoto Consensus입니다. 이를 통해 Block Withholding의 유인을 최소화시키고 정당한 블록 생성과 자발적인 브로드캐스팅을 유도합니다.
Nakamoto Consensus : 비트코인의 Proof of Work 마이닝 방식에서는 2100만개라는 고정 발행량에 도달하기 전까지 블록 생성에 대한 유인이 끊임없이 존재합니다. 이러한 구조를 Nakamoto Consensus라고 부릅니다. 블록을 생성하는 데에 지속적인 경제적 유인이 존재한다는 것이죠.
플라즈마 체인에서 PoS 방식을 활용할 경우, 상위 체인에 MerkleRoot를 커밋하고 블록 생성을 주관하는 주체는 지분 보유자로 설정될 수 있습니다.
그렇다면, 플라즈마 백서에서는 플라즈마 체인과 PoS 알고리즘을 어떤 식으로 연결시키려 했는지, 여기에서의 Nakamoto Consensus란 무엇인지를 설명해보겠습니다.
Example of Simple Proof of Stake Model
- Instead of creating enforcement mechanisms, the approach is to simply create incentives for proper coordination and correct behavior (block propagation).
- We made tradeoffs in that we want to encourage everyone to propagate their blocks as far as wide as possible.
사실 백서 상에서 자세하게 설명되어 있는 부분은 아닌지라, 객관적으로 드러나있는 부분을 제외하고는 필자의 주관적 판단이 개입될 수 있음을 양해 부탁드립니다.
우선 Nakamoto Consensus 자체가 비트코인의 Proof of Work 마이닝 방식에서 유래된 용어입니다. 마이너가 새로운 블록을 성공적으로 생성했다는 사실을 네트워크에 자발적으로 전파하도록 유도하는 메커니즘인데, 플라즈마 체인의 PoS 관련 아이디어는 이런 부분에서 차용된 것으로 보입니다.
다시 말해 블록 생성을 강제하는 메커니즘을 설계하기보다는, 특정한 인센티브 구조를 만들어서 지분 증명자가 자발적으로 자신의 블록 생성 사실을 네트워크에 전파하길 바라는 것입니다. BWH 공격을 최대한 배제하고 블록이 정상적인 절차에 의해 운영되는 non-Byzantine 네트워크를 목표하는 것이죠.
이러한 행위가 지속될 경우, 지분 증명자에게 지급하는 경제적 유인을 계속 증가시키는 방법을 권장합니다.
플라즈마 백서에서 제안한 내용에 살을 조금 더 붙여보겠습니다. 자발적으로 블록 생성에 대한 사실을 브로드캐스팅한다는 전제 하에서, 지분 증명자에게 지급되는 보상(compensation)은 지수함수 형태의 그래프로 유도되어야 할 것입니다.
x축을 시간, y축을 보상의 정도라고 가정했을 때 시간이 지남에 따라 체인을 유지하는 것에 대한 경제적 보상이 체증적으로 증가한다면, 지분 증명자는 자발적 브로드캐스팅 행위에 대해 더 큰 유인을 느낄 것입니다. 아주 간단한 가정이었지만, 이와 같은 선순환 구조가 바로 플라즈마 체인이 목표하는 PoS에서의 Nakamoto Consensus입니다.
비트코인 네트워크에서는 BTC라는 암호화폐가 경제적 유인으로서 지급된다는 것은 이제 삼척 동자도 알고 있는 사실입니다. 그렇다면 플라즈마 체인의 Proof of Stake 방식에서는 어떤 유인을 제안하고 있을까요?
Economic Incentive
Casper FFG에서는 지분 증명자가 블록을 검증하는 것에 대해 ‘이자’를 지급하는 것으로 처리하지만, 플라즈마 백서에서는 지분 증명자에게 TX Fee를 할당하는 논리가 명시되어 있습니다. 이러한 Fee는 루트 체인의 플라즈마 컨트랙에 의해 관리될 수 있으며 각 증명자에게 할당된 Fee는 주기적으로 정산될 수 있습니다.
이러한 구조 하에서는, 우선 일정 기간(i.e. 3개월 등)동안 TX를 검증함에 있어 Stake해야 할 토큰(i.e. 전체 토큰의 1~5% 정도), 즉 지분 증명자로서의 지분 자격이 필요합니다. 이 때, 지분 증명자가 얻을 수 있는 경제적 가치는 특정 기간 동안 체인을 검증하는 역할을 하면서 받는 Fee들의 순현가(Net Present Value : NPV)입니다.
플라즈마 백서에서는 지분 증명자가 일정한 기간 동안 지분 증명자로서의 역할을 하고 체인을 유지할 것을 가정하기 때문에, 지분 증명자가 얻을 수 있는 토큰의 가치는 해당 기간 동안의 NPV로 도출된다고 주장합니다.
위 수식과 같이, NPV는 말 그대로 자신이 투자한 자산의 순 현금흐름을 의미하는데요. 자신이 맨 처음 투자한 자본(-)과 미래 현금흐름의 현재가치(PV)를 상계시킨 순(Net) 현금흐름을 말합니다.
사실 TX Fee라고는 했지만 기간 개념이 내포되어 있기 때문에 결과적으로는 Casper FFG와 마찬가지로 이자를 받는다고 생각해도 무방할 것 같습니다. 다만, TX Fee는 개별 TX 단위마다 보상이 이루어지기 때문에 1년에 한 번 이자를 받는 Casper FFG의 구조와는 다른 점이 있습니다.
특정 기간을 1년으로 두고, 매우 간단한 예시를 통해 플라즈마 체인의 NPV 개념을 살펴보겠습니다.
토큰을 처음 살 때 투자한 금액이
100원
이고1년 동안
플라즈마 체인을 운영할 때 받게 되는 TX Fee의 총량은10원
, 할인율(일반적으로 시장 이자율)은10%
라고 가정해보겠습니다.이 때,
X1
년 지분 증명자의NPV
는— 100 + 10 / 0.1 = 0
입니다. 이 경우는 플라즈마 체인에 지분 증명자로서 참여할 유인이 없는 상태겠죠.
만약 Proof of Stake 알고리즘 하에서 블록을 생성하는 검증자가 BWH 공격을 감행한다면, 지분 증명자에 대해 지급하는 TX Fee를 감소시키는 정책을 채택해야 할 것입니다. 이 경우 지분 증명자의 NPV는 당연히 음(-)의 값으로 유도되어야 할 것이고요. 이는 PoW 방식에서 중앙 집중화된 채굴풀에 대해 규모의 불경제 및 역진적 블록 보상으로 유도해야 하는 논리와 동일합니다.
상기 언급한 내용들은 EF의 Jon Choi가 연구했던 CAPM(Capital Asset Pricing Model) 접근법과 궤를 같이하는 부분이며, 검증자에게 어떤 방식으로 경제적 유인을 제시할 것이고 어느 정도의 ETH를 추가 발행할 것인지 등 철저하게 경제적인 매커니즘에 대한 내용입니다. 이 부분은 Casper와 마찬가지로, 많은 연구와 리서치가 필요한 내용입니다.
Proof of Stake Token Model (OMG)
플라즈마 백서 상에서는 Proof of Stake에서 활용될 수 있는 토큰의 용처와 지분 증명자에게 제시할 수 있는 세부적인 경제적 유인 구조가 제시되진 않았습니다. 그러나 우리는 플라즈마 체인에 어떻게 Proof of Stake 개념을 녹여낼 것인지, 기존의 사례를 가지고 추론해 볼 수는 있을 것 같습니다.
위 그림은 Cryptoeconomics 101에서 제가 간단히 도식화했던 OmiseGo의 토큰 모델입니다. 플라즈마 체인이 제시하는 Proof of Stake 알고리즘의 토큰 모델도 이 그림과 크게 벗어나진 않을 것으로 판단합니다. OMG 토큰 역시 TX Validator에게 지급되는 TX Fee로서의 역할을 하니까요.
아무래도 플라즈마 프로젝트의 공동 설계자인 Joseph Poon이 OmiseGo 프로젝트에도 관여하다보니, Plasma PoS에서의 토큰 모델까지도 유사한 맥락에서 제시된 것이 아닐까 합니다.
Casper FFG에서 Nothing at Stake 문제를 해결하고자 도입한 Staked Bond 내지 Security Deposit 논리와는 결이 조금 다르지만, Stake된 지분을 삭감하는 등에 대한 처벌 로직도 플라즈마 체인에서 활용할 수 있을 것으로 판단합니다. 물론 이 부분 역시 백서에 제시된 바는 없고 현재까지의 논의를 바탕으로 추측한 내용입니다. 다시 한 번 말씀드리지만 플라즈마 체인에서의 Proof of Stake 로직은 유동적으로 설계하기 나름입니다.
사실 백서를 읽어보면 느끼실 수 있지만, 플라즈마 체인의 전체 내용 중에서 가장 미흡하게 설명이 되어있는 부분이 Proof of Stake 알고리즘과 플라즈마 체인의 호환성에 대한 내용입니다.
지분 증명자에게 제시할 수 있는 구체적인 인센티브와 그 수치에 대한 내용들 역시 추가적인 연구 사항이며, 이는 플라즈마 체인을 도입하고자 하는 팀들이 재단과 함께 고민할 내용이라고 봅니다.
Use Case of Plasma
플라즈마를 자신들의 프로젝트에 도입해서 dApp의 확장성 문제를 해결하고자 하는 팀들이 있습니다. 바로 Loom Network와 OmiseGo 팀인데요. 팀별로 플라즈마를 도입하려는 이유와 목적이 무엇인지 간단하게 살펴보도록 하겠습니다.
Loom Network
최근 들어, 게임 산업과 컬렉션 산업을 중심으로 ERC721, ERC1155 등의 대체 불가능 토큰(NFT)을 발행하는 트렌드가 형성되고 있습니다. Plasma Cash 하에서는 각 토큰의 디지털 지문 역할을 하는 Hash 뿐만 아니라 각각의 토큰마다 부여되는 고유의 ID가 있기 때문에, 새로운 유형의 디지털 자산이 만들어지고 있는 데요. 이 경우 그 재산권에 손실이 가해지는 것을 막아야 할 필요가 있습니다.
Loot Network가 이러한 목적을 위해 플라즈마 체인을 도입하고자 합니다. ERC721 토큰으로 만들어진 Digital Asset을 훔쳐가는 비잔틴 상황이 왔을 때, 자신이 예치한 ETH를 곧바로 Exit할 수 있습니다.
P.S) Loom이 도입하는 플라즈마 체인은 MVP가 아닌 Plasma Cash 입니다.
OmiseGo
OmiseGo는 저번 글에서도 등장했었죠. dApp에서 OMG 토큰이 활용되는 방법론과 관련해서는 Casper FFG 개념을 차용했었는데, 이제는 플라즈마까지 도입한다고 합니다. 이번에는 플라즈마의 아키텍쳐를 서비스 내부에 개념적으로 응용하는 것이 아니라, 자신들의 TPS를 끌어올릴 수 있는 스케일링 솔루션으로서 플라즈마 체인 자체를 활용하겠다는 것입니다.
OmiseGo에서 토큰이 활용되는 방식은 TX마다 발생하는 Payment Fee를 TX Validator에게 OMG 토큰으로 부과하게끔 설계되어 있습니다. Visa, Paypal 등의 Payment 서비스에서는 TPS가 경쟁력 측면에서 매우 민감한 요소이기 때문에, 수많은 TX를 분산처리하는 플라즈마 체인을 활용하기에 목적적합한 프로젝트라고 생각합니다.
OmiseGo는 자신들의 dApp에 플라즈마 체인이 연동될 경우, 스케일링의 시작점으로 1백만 TPS를, 그리고 잠재적으로는 무제한으로 확장되는 TPS를 주장하고 있습니다.
Conclusion
플라즈마 프로젝트는 그 구현이 제안된 지 6개월도 되지 않은 최신 프로젝트입니다. 이후 Plasma Cash나 More Viable Plasma 모델이 추가적으로 제안되었습니다만, 이더리움 블록체인과 연동 가능한 수준에서 구현된 모델이 공개되려면 좀 더 많은 시간이 필요할 것으로 예상됩니다.
다음 Plasma Review에서는 Plasma Cash와 More Viable Plasma에 대해 다루도록 하겠습니다 :)
- Q&A and Communication 😃 => danny.h@onther.io