플라즈마 캐시 심플 스펙 -- 1 편

다음은 https://karl.tech/plasma-cash-simple-spec/ 를 번역한 글입니다.

개요

플라즈마 캐시는 플라즈마 체인에 있는 각각의 토큰에 대해 고유한 식별을 사용하도록 만들어졌다. 주머니에 있는 현금과 마찬가지로 네트워크 상의 토큰에도 고유한 일련 변호가 주어진다. 이 변화에서 많은 이익이 생긴다.

  • 샤드 된 클라이언트 측 유효성 검사 - 클라이언트는 플라즈마 체인에서 토큰을 확인하기만 하면 된다. 이는 개개인의 사용자에 대한 짐을 늘리지 않더라도 트랜잭션 처리량을 확장할 수 있는것을 뜻한다.

  • 확인이 필요 없다 - 거래는 더 이상 2단계 전송 및 확인을 필요로 하지 않는다. 대신, 트랜잭션이 메인 체인에 포함되면 그것은 사용될 수 있다.

  • 모든 토큰을 단순 지원 - 대체 불가능한 토큰(ERC721)을 포함해 어느 숫자의 토큰이어도 추가해야 하는 복잡함이 없다.

  • 경미한 대량 탈출 (minor mass exit) 완화 - 대량 탈출은 약간 덜 걱정스럽다. 그들이 훔치고 싶은 각 토큰에 대한 탈출 거래를 해야 하기 때문이다. 만약 체인이 중단되면 토큰들은 안전할 것이다. 물론 여전히 서비스에 방해는 있다.

플라즈마의 단점은 다음과 같다 :

  • 적정 이상의 토큰 액면가 - 각 토큰에는 일련번호가 할당되어야 하기 때문에 적은 액면가의 토큰을 마음대로 만들 수 없다. 왜냐하면 토큰을 대체하는 가스 비용이 토큰 자체의 값보다 클 수 있기 때문이다.

트랜잭션 루트

플라즈마 캐시 체인의 모든 블록에 대해 머클 루트를 루트 체인에 게시해야 한다. 이 루트는 머클된 리스트이거나 머클 패트리카 트리(markle patricia tree)이다. 머클된 리스트에서 *리프 노드의 각 인덱스는 토큰 ID에 해당한다. 리프 노드들의 값은 플라즈마 트랜잭션이다.

*리프 노드는 트리노드에서 가장 낮은 레벨을 말한다.

D, I, J, F, K, H 가 리프 노드이다. (출처: http://btechsmartclass.com)

거래는 다음과 같은 형식을 취한다.

[[prev_hash, prev_block, (target_block?), token_id, new_owner], signature]

지정된 token_id의 토큰을 사용하는 트랜잭션은 token_id 위치의 머클 트리에만 포함되는 경우에만 유효하다. 즉, 각 토큰에 대해 머클트리에서 허용되는 단 하나의 위치에서 트랜잭션이
이루어져야 한다. 이 형식을 사용하여 플라즈마 체인의 전체 내역을 확인하고 특정 토큰에 대해 구성원 자격을 증명하거나 반증할 수 있다. 이것은 물론 최적화될 수 있다.

플라즈마 캐시 만들기

누구든지 플라즈마 컨트랙트의 deposit() 함수를 사용할 수 있으며 이 함수는 보내진 이더의 양과 같은 가치의 토큰을 만들어 낼 수 있게 한다. ERC20 토큰의 사용도 필요하다면 원하는 양의 토큰을 ERC20 컨트랙트 주소에 등록하고 토큰 유형(ERC20 주소)와 액면가를 기록한다.

지출

지출 자는 지출하려고 하는 특정 토큰의 전체 내역을 수령인에게 제공해야 한다. 기록은 다음과 같이 구성된다 :

  • 플라즈마 체인에 토큰을 사용하는 거래가 포함될 때마다 이에 대한 머클 증거가 반드시 제공되어야 한다.
  • 특정 토큰이 사용되지 않은 모든 플라즈마 체인 블록에 대해 머클 proof-of-nonexistence 를 반드시 제공해야 한다. 즉, 머클 가지(merkle branch)는 특정 코인에 해당하는 머클트리의 인덱스에서 (유효한 트랜잭션이 아니라) 빈 데이터임을 증명합니다.

그런 다음, 받는 사람은 토큰 기록에서 유효성이 없거나 막히지 않은 블록이 있는지 확인합니다. 아무 문제가 없다고 가정하면, 수신자는 이제 토큰을 사용할 수 있습니다.

--

두편에 나눠서 포스팅할 계획입니다. 다음편은 EXIT에 관한글이라 저번에 마무리못한.. 플라즈마 MVP버전의 두번째편으로 대체하겠습니다 ㅎㅎ

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center