앞서 설명한 바와 같이 Plasma는 확장 가능한 컴퓨팅을 수행하는 핵심 구성 요소이지만 사기 방지를 생성하기 위한 블록 원천 징수(around block withholding) 문제와 블록 공간 가용성 이슈를 해결해야 한다. 플라즈마에서 원천 징수(block withholding)를 해결하기 위한 솔루션은 체인이 멈추거나 플라즈마에서 블록 원천 징수(block withholding)가 나타날 경우 대량의 출금 혹은 종료(exit)가 가능하게 구축하는 것이다.
그러나 UTXO 세트가 크고 비트맵을 게시해야하는 경우에는 블록체인에서 대량의 출금(mass exit) 트랜잭션은 매우 비싸다. 따라서 이 경우, 단일 출금(single exit)를 게시하는 것이 바람직 할 수 있다. 대량 출금 거래에는 많은 참가자가 참여하는 복잡한 양방향 게임이 필요하기 때문에 최후의 수단으로만 사용해야합니다.
대신, 우리는 상태(state) 증명을 할 수 있는 상위와 하위 법원 시스템(higher and lower courts)을 구축하여 상태(state)를 증명한다. 루트 블록체인을 모든 대법원(Supreme Court )의 권한으로 파생시키는 대법원으로 볼 수 있다. 모든 하급 법원이 사법권을 확보 할 수 있게 하는 것은 루트 블록체인의 법이다. 이는 확장성을 허용하며, 더 낮은 재판소의 상태가 논쟁을 당하거나 중단되어보다 대표적인 장소의 상급 법원으로 옮겨 가야 할 때만 가능하다. 상위 법원에서의 방송 증명은 항상 가능하지만 더 비쌀 수 있다.
모든 상태가 merkleized되어 루트 블록체인에 기록된다. 가장 이상적인 경우는 , 블록 헤더는 직접 부모체인에 게시되고, 부모체인은 그것의 부모체인에 게시하여 루트 체인에 도달 할 때까지 이 과정을 계속하는 것이다. 헤더 안에는 부모가 본 블록에 대한 merkleized된 기록이 있다.
거래는 플라즈마 체인과 모든 플라즈마 체인의 부모체인, 그리고 루트 블록체인에 제출할 수 있습니다. 이것의 목적은 대체성 및 검열에 대한 저항을 보장하는 것이다. 특히, 블록 이동이 중지되고 비공개 된 경우에도 자금을 인출 할 수 있다.
블록 커밋이 제출되면 승인 전에 루트 블록체인에 반영된 확인 금액을 기다려야 한다. 이 기간 동안 사기 증명은 루트 블록체인이나 중간 플라즈마 체인에 제출 될 수 있다.
각각의 개별 Plasma 체인은 Plasma 블록에 약속된 내용을 결합하는 상태 시스템을 실행한다. 개별 Plasma 체인은 하위 Plasma 체인의 세부 사항을 조사 할 수도 있고 하지 않을 수도 있다. 대신, 그들은 Plasma 체인의 가치에 의해 확인 된 균형을 유지하고 있다. 자식 Plasma 체인이 상태를 업데이트하면 부모는 플라즈마 블록체인의 헤더의 해시를 부모 플라즈마 체인 또는 루트 블록체인에 제출한다.
즉, 특정 블록 상태를 여러 상위 체인에 제출할 수 있다. 중복이 발생해도 문제가 되지 않으나 신청에 따라 특정 합의 규칙에 따라 벌칙이 부과 될 수 있다. 반면에 상태가 불투명하다면 (e.g. Parent1에게 제출된 상태가 Parent2와 다르다면) 플라즈마 체인의 본더(bonders)가 그들의 예금을 삭감 할 수 있다.
새로운 자식 상태 업데이트는 상태 업데이트 메시지의 다음 필드를 사용하여 업데이트 할 수 있다. ( massage : 지불되는 수수료, 루트 블록체인 해시 커밋, 이전 블록 해시, 부모 블록 해시 커밋, 예치금 증빙, 철회 증거. )
부모 블록체인이 무엇을 하던간에, 자식 체인에서 그 위 모든 부모 체인을 재귀적으로 포함하여, 그 점까지 모든 것을 보았다고 가정한다. 이것은 거래를 모호하게 하고 이중 지출하지 않을 것이라는 증명을 약속하는 것이다.
모호한 상황이 발생하면 부모 체인 상태가 항상 우선순위를 갖는다. 인센티브는 해당 당사자가 알고 있는 당사자에 의해 해당 사실을 공개하기 위해 만들어진다.
입금과 인출은 루트 체인뿐만 아니라 부모 체인 모두에서 가능하다.
충분한 유동성이 있고 다른 당사자가 기금을 다른 곳에서 기꺼이 부담 할 경우 플라스마 체인간에 인출이 가능하다. 이는 크로스체인 원자 교환(crosschain atomic swap)을 통해 수행 할 수 있다.
메인 블록체인을 사용하여 클리어링을 원할 경우, 체인간에 온-체인 Lightning payments처럼 보이는 HTLC를 구성 할 수 있다.
모든 사기 증명은 체인 약속에 대한 합법적인 증거를 제공해야 한다. 거짓으로 증명하는 것은 사기 블록을 담당하는 특정 플라즈마 체인에 불이익을 준다.
주요 디자인 복잡성은 검열에 대한 저항을 위해 다수의 부모 체인에 걸쳐 이루어지는 거래 상태를 브로드캐스트를 표현하는 것에 초점을 두었다. 초기 반복 작업에서는 상태 변환 / transactions는 개별 플라즈마 체인에서만 수행될 수 있으며, 부모/자식체인 간의 상호작용 및 임금/출금과 같은 다른 체인과의 상호 작용만 메시지로 간주된다. 그런 식으로, 1 차적인 복잡성은 예금과 인출에만 관련된 증거이다.
블록체인에 있는 블록체인의 계층 적 프레임 워크에서, 사용자가 다른 사용자로부터 자금을 받을 때, Alice가 Plasma chain의 3 단계 레벨에서 Bob에게 자금을 보내기를 원하면 프로세스가 다음과 같다.
-
앨리스는 밥과 조정하여 밥에게 돈을 보내고 싶어한다. Alice는 Bob에게 자금을 수령 할 Plasma 사슬을 Bob에게 공개한다. Bob은 지불을 수락할지 여부를 결정한다. 구체적으로 Bob은 루트 블록체인의 스마트 계약에 지불을 수락 할 것인지 확인해야한다 (스마트 계약 코드/메커니즘, 수용 가능한 합의 종료 지연 등)
-
이것이 어떤 상품에 대한 지불이라면, 지불 조건을 정의하는 진술서에 미리 서명한다. 많은 경우, 충분한 성숙도를 가진 블록체인에 블록을 포함시켜 지불하는 증거가 될 수 있지만, 일부 상황에서는 계약 해시를 제출해야 할 수도 있다(pay-to-contract-hash). 이것은 온-체인에 있지 않지만 다른 사람들에게 입증하기 위해 합의 조건을 첨부하는 것이다.
-
Alice는 Plasma 체인의 내부에서 지불한다. 블록은 유효성 검사자들에 의해 서명되고, 블록 헤더에 대한 커밋이 부모 블록에 게시됩니다. 하위 플라즈마 체인에 대한 Merkleized 약정 Plasma chain은 모든 부모 블록에 포함되며 궁극적으로는 루트 블록체인에 포함됩니다.
-
Bob은 루트 블록체인과 완벽하게 동기화 된 다음 자금이 수신되는 사슬과 그 부모를 검증한다. Bob은 그의 자금이 일부가 아닌 다른 Plasma 체인의 유효성을 확인할 필요가 없다. Bob은 Alice가 충분하게 Plasma 체인에서 지불을 완료했음을 완전히 검증 할 수 있다. 그러나 신속한 최종성(finality)이 필요한 경우 Alice는 새 블록에서 지불이 완료되면 서명 할 수 있다 (이전의 성명서에서 Plasma chain 내부 지불에 대한 내용 참조). Alice가 지불에 대해 기꺼이 서명하고 Bob이 이를 수령하면 (철회를 증명할 수 있는 것처럼), 최종성에 도달했다고 가정한다. Bob은이 Plasma 체인에서 자금을 인출 할 수 있다.
이 디자인의 핵심은 자식 블록체인의 유효성을 전적으로 책임지는 것이다. Bob은 Plasma chain과 모든 부모체인을 검증하지 않는다면, (궁극적으로 루트 체인에 대한 정기적인 커밋이 게시 된 경우) 그것은 조건을 충족했다고 해서는 안 된다. Lightning 네트워크의 구성과 마찬가지로 Bob은 다른 Plasma 블록체인에서 어떤 일이 일어나는지 신경 쓰지 않아도 된다. 그는 그에게 중요한 사슬의 정확성만을 관찰한다. 그는 코인을 사용할 수 있는 권리(ability)를 가지고 있을 때, 그것을 쓸 수 있다고 확신할 수 있다.
상위 체인에서 자금을 받는 것은 루트 블록체인의 입금과 유사하다. 받는 사람은 모든 상위 Plasma 체인을 검증해야 한다 (단, Plasma 체인 자체가 아닌). 하위 Plasma 체인에게 예치금을 넣는 것은 빠르게 처리된다.
위의 설명은 단일 상위 체인에 대한 내용이지만 플라즈마 체인은 여러 개의 루트 블록체인을 갖을 수 있다. 이를 통해 자식 체인과 함께 잔액을 업데이트 할 수 있다. 한 상위 체인의 실패는 모든 참여자들에 의해 동시에 인식되지 않을 수 있기 때문에 주의를 기울여야 하며, 계단식 시스템 실패는 시간 지연을 통해 완화하고 교차 사슬 유동성의 가정(assumptions of cross-chain liquidity)을 최소화해야한다. 이에 대한 올바른 구성에 대한 문제는 열려있다.
출금 거래를 브로드캐스팅 할 수 있는 많은 장소를 선정함으로써, 중단되거나 보류 된 블록이 있는 많은 장소에서 출금(exit) 할 수 있다. 자식 체인이 실패하면, 부모 체인에서 단순히 개별 종료를 처리 할 수 있으며, 트랜잭션이 비싸지만 루트체인에서 종료 할 수도 있다.
이를 통해 상위 Plasma 체인 중 하나가 올바르게 작동하고 있다는 확신이 있는 경우 Plasma 체인에서 소액 결제 결과를 보유 할 때 어느 정도 확신을 가질 수 있다. 이러한 목표는 이 목표의 주요 원인이자 계단식 오류(cascading failures)의 영향을 완화하는 것이다.
보유하고 있는 출력 잔액이 충분히 큰 경우 중요한 시간 가치가 없으면 상당한 인수(significant underwriting) 작업을 수행 할 필요가 없다. 단 하나의 낮은(low-value) 출력(수수료로 더 비싼 비용을 지불하는 경우)이 있는 경우에는 상위 Plasma 체인 중 하나에 가용성이 있는지에 대한 확신이 있어야한다. 더 큰 확신을 원하면 각 레벨에서 각 Plasma 체인을 실행하는 많은 독립 당사자와 함께 중첩(nested) 된 체인을 실행할 수 있다. 이런 식으로 일부 트레이드-오프가 존재하지만 특정 플라스마 체인이 비잔틴이 되기 시작한 것처럼 모든 사람들이 새로운 체인에 대량 철수해야 한다. 비잔틴이 아닌 부모가 있는 경우 부모가 비잔틴 체인의 약정을 거절하면 다른 체인으로 신속한 전환 및 운영을 지속할 수 있다.
하위 체인이 실패 할 경우 프로세스 트랜잭션 이외의 작업을 수행하지 않는 서비스가 발생할 수 있다. 이 서비스의 운영자는 자식 체인이 실패하지 않는 한 아무 것도 할 필요가 없다. ( 장애가 발생하여 가상 서버가 서버를 끌 수 있을 정도로 수동적(passive) 일 수 있는 지점까지, 블록 헤더는 패시브 운영자보다 높은 수준의 체인에서 브로드 캐스트 되도록 자동으로 건너뛴다).
상위 체인의 많은 인출은 대량 인출 대신 간단한 인출이 될 것으로 예상된다. 상위 체인은 엄청난 거래량 (블록 크기 / 가스 한도)을 가질 수 있기 때문이다.
대량 출금(exits)은 상위 체인 또는 루트 체인에서 가능하다. 하위 체인이 Byzantine을 시작하면, 중첩 된 상위 체인이 없는 Plasma 체인과 마찬가지로 모든 상태가 유효하지 않을 수 있다고 추정된다. 마찬가지로 대량 출금(exits)은 비잔틴 부모 체인에서 빠르게 출금(exits)하는 방법이다. 상위 체인(또는 하위 체인 자체)을 그것의 상위 체인 또는 루트 체인으로 건너 뛸 수 있다.
디자인에 약간의 복잡성이 있는 것처럼 보일 수 있지만, 어떤 체인이 비잔틴인 경우, 그것의 모든 하위체인은 동작(act)해야 한다는 가정이 있다. 가능한 최적화가 가능하므로 heartbeat를 통한 조정 없이 종료(exit)가 가능하다. (종료(exit)는 사용자 측면에서 서명을 철회하고 Plasma 체인 자체가 서명을 받았음을 약속하지만 아직 최적화 되어있지는 않다 ).
구성은 기본적으로 단순 종료(exit) 또는 대량 종료(exit)과 동일하지만 중첩 된 체인을 지원하기 위해 디자인에 약간의 변경이 있다. 종료(exit)는 중복 될 수 있지만 상위 체인의 종료(exit)가 항상 우선순위를 갖는다. 상위 체인이 Byzantine을 시작하면 루트 체인에서도 종료를 커밋 할 수 있다. 부모/루트 체인 중복 종료의 상태를 반영 및 업데이트하고 자체 체인에서 중복 된 종료를 취소한다. 이렇게 하지 않으면 사용자의 자금이 루트 체인에서 사용 가능 하게 된다.
부모 체인이 비잔틴이지만 자금을 보유하고 있는 자녀 체인이 올바르게 운영되고 있다면 복잡한 대량 출금(exit) 거래를 피할 수 있다. 참가자는 자신의 자금을 송금하고 간단한 출금(exit)을 제공하는 새로운 체인을 발견하여 유동성을 제공해주는 자(liquidity provider)가 이 자녀 체인에서 자금을 받고 다른 사용자가 새로운 체인(비잔틴 부모체인이 아닌)에게 자금을 제공한다. 하위 체인 블록의 약정은 루트 체인 또는 상위 수준의 부모(비잔틴 노드가 아닌)에 게시된다. 사용자는 새로운 체인에 신속하게 자금을 보유하고 있으며, 유동성 공급자(liquidity provider)는 루트체인이나 상위 체인에서 나중에 자금을 출금한다. 이것의 목적은 새로운 자금을 새로운 체인에 신속하게 할당 할 수 있고 출금을 빠르게 하는 것에 있다.
이것은 UTXO 비트 맵 확장성을 허용한다. 비트맵이 너무 커지면 비트맵을 여러 하위 체인으로 분할하면 된다. 하위 체인의 경우 출력(output) 대신 블록 높이 nonces (및 후보 체인 팁)로 계정 잔액을 표시한다고 가정한다. 마찬가지로, UTXO 대신 계정을 사용하는 것을 선호하는 상태(state)에서는, 단순 인출만을 지원한다는 절충안을 제공한다면 가능하다.
최종 결과로 이것은 사용자에게 많은 확장성을 제공한다. 그들은 그들의 자금이 있는 플라즈마 체인을 관찰해야합니다( 그것의 부모뿐만 아니라). 이렇게 하면 데이터 세트가 자신에게 영향을 미치는 유효성 검사에 효과적으로 분할된다.