Skip to main content

Zswap

info

Midnight 네이티브 통화 구현의 세부 사항은 아직 확정되지 않았으며, 앞으로 추가 변경이 있을 예정입니다. 기본 연산의 성능도 현재 최적화되지 않은 상태입니다.

Zswap[^1]은 Zerocash[^2]를 기반으로 한 차폐 토큰 메커니즘으로, 네이티브 토큰 지원원자적 스왑 기능이 추가되었습니다. Zswap의 기본 구성 요소는 offer이며, 개념적으로 inputoutput의 집합입니다. UTXO 모델과 유사하지만, 대응하는 input과 output을 서로 연결할 수 없다는 특성(Zerocash로부터 물려받은)으로 인해, 미사용 트랜잭션 집합 자체를 산출하는 것은 불가능합니다.

이 섹션에서는 컨트랙트가 자금을 보유할 수 있도록 허용하는 Midnight 고유의 Zswap 변형을 설명합니다.

Offer

Zswap offer는 네 가지 요소로 구성됩니다:

  • input 코인 집합('spend'라고도 함)
  • output 코인 집합
  • transient coin 집합
  • balance vector.

Transient coin은 동일한 트랜잭션 안에서 생성과 소비가 모두 이루어지는 코인입니다. 불필요해 보일 수 있지만, 컨트랙트의 코인 관리 능력을 확장하는 역할을 합니다. 개념적으로는 output 바로 뒤에 input이 따라오는 것이며, 유일한 차이는 인덱스 충돌을 방지하기 위해 input이 전역이 아닌 로컬에서 생성된 coin commitment 집합으로부터 소비한다는 점입니다.

Balance vector는 해당 offer의 총 가치 벡터입니다. 차원은 가능한 모든 토큰 유형이며, 각 차원은 고유한 값을 가집니다. 특정 유형의 input은 이 벡터에 양수로 기여하고, output은 음수로 기여합니다. Balance vector의 모든 차원이 음이 아닌 값일 때 균형 잡힌 상태로 간주됩니다. 일반적으로 균형 여부를 확인하기 전에 토큰 발행과 수수료 차감을 반영하여 조정됩니다.

Output

Zswap output은 새로운 코인을 생성하고, 해당 commitment를 전역 Merkle tree에 배치합니다. 구성 요소는 다음과 같습니다:

  • commitment 자체
  • type/value 벡터에 대한 multi-base Pedersen commitment
  • output의 수신자가 컨트랙트인 경우에 한해 포함되는 선택적 컨트랙트 주소
  • output을 수신할 사용자가 지정된 경우의 선택적 암호문
  • 위 항목들의 상호 정합성에 대한 영지식 증명.

Output은 영지식 증명이 검증을 통과하면 유효합니다.

Input

Zswap input은 전역 Merkle tree에서 원래의 commitment를 공개하지 않고 참조하며, 대응하는 연결 불가능한 nullifier를 생성하여 기존 코인을 소비합니다. 구성 요소는 다음과 같습니다:

  • nullifier 자체
  • type/value 벡터에 대한 multi-base Pedersen commitment
  • 수신자가 컨트랙트인 경우에 한해 포함되는 선택적 컨트랙트 주소
  • nullifier에 대응하는 commitment를 포함하는 tree의 Merkle root
  • 위 항목들의 상호 정합성에 대한 영지식 증명.

Input은 영지식 증명이 검증을 통과하고, 동시에 Merkle tree root가 유효한 과거 root 집합에 포함된 경우에만 유효합니다.

Token types

Midnight의 토큰 유형은 256비트 충돌 저항 해시 출력이거나, 네이티브 토큰을 나타내는 사전 정의된 0 값입니다. 사용자는 컨트랙트를 통해 자체 토큰을 발행할 수 있으며, 이때 토큰 유형은 컨트랙트 주소와 사용자가 지정한 도메인 분리자의 해시로 도출됩니다.

[^1] Engelmann, F., Kerber, T., Kohlweiss, M., & Volkhov, M. 2022. Zswap: zk-SNARK based non-interactive multi-asset swaps. Proceedings on Privacy Enhancing Technologies (PoPETs) 4 (2022), 507-527. https://eprint.iacr.org/2022/1002.pdf

[^2] Ben-Sasson, E., Chiesa, A. Garman, C., Green, M., Miers, I., Tromer, E., & Virza, M. 2014. Zerocash: Decentralized Anonymous Payments from Bitcoin. 2014 IEEE Symposium on Security and Privacy, SP 2014, Berkeley, CA, USA, May 18-21, 2014, 459-474. https://eprint.iacr.org/2014/349.pdf