# 작동 원리

## 개인 정보 보호 거래를 위한 zkSNARK

![](https://github.com/tornadocash/tornado-core/raw/master/docs/diagram.png)

Cyclone은 굉장히 단순한 동작 원리를 가지고 있다. 유저가 암호화폐를 Cyclone 풀에 예치하면, 이후에 같은 풀로부터 이를 인출할 수 있는데, 이 때 예치된 토큰에 대한 기록이 가려지게 된다. 예치할 때, 유저는 해시로 이루어진 "비밀 정보" (commitment)와 예치된 금을 Cyclone 스마트 컨트랙트에 보내게 된다. 이 컨트랙트는 예치된 금액을 받고, 비밀 정보(commitment)을 예치 리스트에 추가다.&#x20;

그 이후 유저가 인출을 하기로 했을 때에는, deposit 할때 제출되었던 아직 사용되지 않은 비밀 정보를 통해 증명(proof)을 제공한다. zkSNARK 기술은 해당 비밀 정보가 어떤 예치에 해당되는지 특정하지 않으면서 증명이 올바른 확인할 수 있다. 스마트 컨트랙트는 증명을 확인한 뒤, 인출을 위해 예치되었던 자산을 특정 주소로 보낸다. 이 때, 외부 사람들은 어떤 인출이 어떤 예치금으로 부터 비롯되는지 알 수 없다.&#x20;

좀 더 구체적으로 이해하기 위해서는,  [cryptographic review](https://tornado.cash/Tornado_cryptographic_review.pdf) 을 참고하라.

## 신뢰할 수 있는 설정

우리는 익명성 팀으로써, 완전히 투명하고 안전한 Cyclone의 런칭을 목표로 한다. 모든 것은 오픈 소스로 공개되어 있어 확인이 가능하다. 우리는 tornado.cash에서 사용되는 이미 검증된 zkSNARKs 의 구현물([implementation](https://github.com/tornadocash/tornado-core/releases/tag/v2.1)) 을 적용했다 -- [circuit](https://tornado.cash/Tornado_circuit_audit.pdf), [smart contracts](https://tornado.cash/Tornado_solidity_audit.pdf). 뿐만 아니라, 우리는 이미 이더리움에서([well on Ethereum](https://medium.com/@tornado.cash/the-biggest-trusted-setup-ceremony-in-the-world-3c6ab9c8fffa#43d9)) 성공적으로([successful](https://ceremony.tornado.cash/)) 사용되고 있는 `Trusted Setup MPC` 을 사용하고 있다.&#x20;
