[스캠 시리즈]#4 — 스캠 그 후: 토네이도 캐시

Dean
Decipher Media |디사이퍼 미디어
21 min readAug 13, 2022

서울대학교 블록체인 학회 디사이퍼(Decipher) 스캠 톺아보기 팀에서 스캠이 무엇이고, 스캠이 피해를 양산하는 일련의 과정들에 대한 글을 시리즈로 연재합니다. 본 시리즈는 투자에 대한 권유 내지 조언을 일체 포함하고 있지 않으며, 본 글을 바탕으로 의사결정을 내리지 마십시오.

Scam Series

  1. 스캠의 정의
  2. 스캠의 분류와 예시
  3. 스캠 프로젝트가 선호하는 메인넷
  4. 스캠 그 후: 토네이도 캐시

Author

Dean(@0xdeankim) of Decipher Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

이건우 of Decipher Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

이응호 of Decipher Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

Jason of Decipher Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

Taron(@taronsung) of Decipher Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

Reviewed By 정재환

목차

  1. 들어가며
  2. 신원 익명화 프로토콜을 사용하는 이유
  3. 토네이도 캐시의 이론적 배경
  4. 나가며: 토네이도 캐시의 활용 및 규제

1. 들어가며

앞선 시리즈에서 스캠에 대해 정의를 내린 뒤 다양한 종류의 악의적인 디파이 프로토콜들에 대해 알아보았습니다. 이번 글에서는 디파이 프로토콜에 대한 악의적인 행동과 연계해 사용되는 Mixer등의 신원 익명화 프로토콜에 대해 알아 보겠습니다.

2. 신원 익명화 프로토콜을 사용하는 이유

블록체인 네트워크 상에서 자금을 전송하게 되면 ‘금액, 전송인, 수취인’ 등의 데이터가 블록체인 네트워크 상에 기록됩니다. A 라는 사람이 비트코인 10개를 B 에게 전송하기 위해서는 트랜잭션을 발생시켜야 하는데, 트랜잭션 상에는 금액, 보내는 주소, 받는 주소 등이 포함되어야 하고, 이렇게 기록된 트랜잭션은 마이너에 의해 블록에 포함되어 블록체인 네트워크 상에 전파됩니다. 익명성에 주안점을 둔 일부 블록체인을 제외하고는 모든 블록체인이 이와 같은 방법으로 동작하며, 각 블록체인 스캐너등을 통해서 누구나 쉽게 트랜잭션에 담겨있는 데이터들을 확인할 수 있습니다.

(출처: 비트코인 백서)

이처럼 블록체인에는 트랜잭션에 담긴 데이터가 네트워크를 통해 저장되고 공유되기에 그 자체로는 익명성을 확보하기 어려운 구조입니다. 누구나 트랜잭션을 일으키는 주소와 수령하는 주소를 파악할 수 있고, 이러한 데이터를 서로 엮으면 트랜잭션의 단편적인 정보를 넘어서 자금의 흐름을 파악할 수 있습니다. 블록상에 트랜잭션과 관련된 모든 내용을 기록해 디지털 환경에서도 어떠한 소유를 주장할 수 있게 되었지만, 그 반대급부로 블록체인 상에서의 자금의 익명성을 포기해야만 하기에 블록체인을 사용하는데 있어 심리적인 허들로 작용합니다. 부정한 방법으로 블록체인의 여러 기능을 악용하는 사람의 경우에 이런 블록체인의 투명성은 심리적인 부담을 넘어 실질적인 장애물로 작용합니다. 트랜잭션의 흐름을 추적해 자금의 흐름이 밝혀져 어떠한 부정한 행위의 범인으로 특정될 수 있기 때문입니다.

여러 이유로 블록체인 상에서 트랜잭션의 기록을 남기고 싶지 않아하는 사람들은 부담을 덜고자 믹서 (Mixer)라는 서비스를 사용합니다. 믹서가 구동되는 방법은 각 체인과 프로토콜에 따라 상이하지만, 본질적으로 트랜잭션을 보내는 지갑과 수령하는 지갑간의 연결고리는 분절하는 프로토콜입니다. 트랜잭션간의 연결고리를 제거하여 블록체인 상에서도 익명성을 유지할 수 있게끔 지원합니다. 비트코인의 Coinjoin 서비스, 이더리움의 토네이도 캐시가 대표적인 프로토콜입니다.

2.1 Coinjoin — 비트코인 Mixer

Coinjoin은 비트코인을 전송할때 사용할 수 있는 믹서입니다. 믹서는 각 블록체인의 고유한 특징을 반영해 설계되며, Coinjoin은 트랜잭션에 다수의 input과 ouptut이 사용되는 UTXO 모델의 특징을 사용해 구현되었습니다. UTXO 모델은 비트코인 네트워크상에서 잔고가 관리되는 방식으로 해당 지갑이 사용할 수 있는 비트코인의 총합을 의미합니다. 어떤 지갑이 사용할 수 있는 비트코인은 네트워크 전반에 흩어져 있어서 비트코인 지갑은 그 지갑의 관리 하에 있는 코인들을 전체 네트워크를 스캔해서 파악하고 제공합니다. 이러한 구조는 손쉽게 파악하기 어렵고, 스마트 컨트랙트를 구축하기에 용이하지 않다는 단점을 지니지만, 거래의 유효성을 검증하기 쉽다는 장점이 있습니다.

비트코인 믹서인 Coinjoin도 이러한 UTXO의 특징을 활용해 트랜잭션의 익명성을 확보합니다. 비트코인 네트워크에서 트랜잭션을 일으켜 비트코인을 전송하기 위해서는 이용자의 키를 기반으로 해제 스크립트(scriptsig)와 잠금스크립트(scriptPubkey)가 사용해야 합니다. 트랜잭션은 이 둘을 기반으로 구성된 입력값(input)과 출력값(output)을 통해 구성되는데, 이때 입력값과 출력값은 복수개가 존재할 수 있습니다. 입력값과 출력값 모두 하나 이상 존재할 수 있고, 이때 입력값은 하나의 주체에서만 발생하지 않아도 됩니다. 입력값에 포함되는 signature는 각각이 독립적이어서 서로 다른 키에서 발생하는 입력값들도 하나의 트랜잭션에 포함되어 전송될 수 있습니다.

Coinjoin은 다수의 입력값이 하나의 트랜잭션에 포함될 수 있다는 점에서 착안해 자금의 흐름을 분절시키는 프로토콜입니다. 위 그림의 트랜잭션 2에는 세가지 입력값이 존재하는데, 각각의 인풋값은 서로다른 키에서 만들어질 수 있습니다. 그리고 출력값은 동일하게 0.8 BTC 이기에 해당 자금을 수령받은 사람이 입력값 중 어떤 사람인지 특정할 수 없습니다. 인풋값의 신원을 특정할 수 없게 만들어 익명성을 확보하는 방식인만큼, Coinjoin의 방식은 입력값을 제공하는 사람들이 많아질 수록 익명성이 더욱 공고하게 제공됩니다.

2.2 토네이도 캐시

토네이도 캐시는 영지식 증명을 활용해 트랜잭션의 메타데이터를 블록체인 상에 전파하지 않고서도 자금 전송을 가능케하는 탈중앙 비수탁 프로토콜입니다.(fully decentralized non-custodial protocol) 이하 내용에서는 토네이도 캐시의 작동원리에 대한 파악하고 스캠 프로토콜이 토네이도 캐시를 사용해 자금을 세탁한 사례들에 대해 알아볼 예정입니다.

토네이도 캐시는 Traditional Tornado Cash Fixed-amount pool과 Tornado Cash Nova의 두 가지 방법으로 작동합니다. 세부적인 작동방법은 상이하나, n명의 사람들과 풀을 공유하고(k-anonmity set) 그 안에서 정체를 드러내지 않는 식으로 출금을 진행한다는 대원칙은 동일합니다. traditional fixed-amount pool의 1이더 풀에는 2021년 1월까지 12189개의 주소가 상호작용해서 해당 컨트랙을 사용하면 12189명 속에 자신을 숨길 수 있습니다.

Traditional Tornado Cash fixed-amount pool

  1. 유저가 pool에 eth를 넣으면, private note가 생성됨
  2. 해당 pn을 사용해 다른 주소에서 출금 가능

*이때 고정된 amount만 입출금이 가능함(0.1, 1, 10, 100 eth) 온체인 상 데이터로 이더의 개수를 통해 추적이 가능한걸 방지하기 위함

3. 가스비로 사용되는 eth를 새 지갑에 넣을 경우, 해당 트젝으로 추적될 가능성이 존재해 릴레이어를 통해 작업하기를 권장함

4. torn을 스테이킹 한 사람이라면 누구나 릴레이어가 되어 다른 사람의 출금을 대신 할 수 있음.

5. 수수료는 풀마다 상이하며, 거버넌스의 대상. 현재 전체 금액의 0.3%를 릴레이어가 수수료로 수취해감.

6. 릴레이어는 각 체인마다 동일한 이름으로 ens를 세팅해 다양한 체인 지원

(출처: Tornado Cash Docs)

3. 토네이도 캐시의 이론적 배경

위의 방식에서 private note를 블록체인 네트워크에 기록하지 않기 위해 zk- snark 기술이 사용됩니다. 토네이도 캐시의 deposit/withdrawal 과정에 대해 알아보고 여기에 사용된 영지식 증명 에 대해 간단히 알아 보겠습니다.

영지식 증명에 대한 보다 자세한 내용은 https://medium.com/decipher-media/blockchain-zkp-series-1-블록체인의-영지식-증명-활용성-논의-9c73cc5c2c9를 참고해주시기 바랍니다.

Tornado Cash Deposit 과정

  1. 랜덤 area of bytes생성
  2. 해당 바이트 Pedersen Hash를 통해 연산
  3. 연산 결과값(20MiMc해쉬)과 토큰을 스마트 컨트랙으로 전송
  4. 컨트랙을 통해 머클트리에 삽입

영지식 증명이 사용되는 해싱 기법인 Pedersen Hash와 MiMC에 대한 구체적인 서술은 후에 상술하겠습니다.

Tornado Cash Withdrawal 과정

  1. 1번의 bytes가 secret/nullifier로 분할
  2. nullifier가 퍼블릭에 공개되는 키
  3. Zk-snark로 nullifier와 MiMC 해시를 공개하지 않고 검증 가능

3.1 Pederson Hash / MiMC

Tornado Cash, Tornado Cash Nova는 스마트 계약에 자금을 예치(deposit)하는 주소와 자금을 인출(withdraw)할 주소를 다르게 만들어 자금의 출처를 알지 못하게 합니다. 더불어 스마트 계약은 블록체인에 공개되기 때문에, 스마트 계약 자체가 오직 예치와 인출이 정당하다는 것만을 알고 있어야 하고, 그 외에 정보에 대해서는 알지 못하는 상태여야 합니다.

이러한 과정은 zk-SNARK를 통해서 달성되며, 이 과정에서 연산의 부담을 줄이기 위해 zk 친화적인 해싱 방법이 사용되게 됩니다. zk-SNARK에 친화적인 해싱 기법으로는 Pederson Hash, MiMC((Minimal Multiplicative Complexity), Poseidon Hash, twisted Edward elliptic Curve 등이 있습니다. 우리는 이들 중 토네이도 캐시에서 사용하는 해싱 기법인 Pederson Hash, MiMC에 대해 알아보려 합니다.

앞에서 Tornado Cash의 작동 방식을 간단하게 살펴보았습니다. 해당 부분 중 영지식 증명이 사용되는 부분을 다시 한 번 살펴볼까요? 우리는 자금 예치 시 r랜덤한 area of bytes를 생성해 이를 암호화하기 위해 Pedersen Hash를 사용했고, 그리고 연산 결과값을 해싱하기 위해 MiMC의 일종인 MiMC20를 사용했습니다.

최근 Polygon Studio의 zk-EVM에 대한 발표 이후 영지식 증명에 대한 관심이 매우 높아진 상황입니다. 때문에 zk-SNARK에 대한 기본적인 이해를 도와주는 글들이 늘어나고 있지만, 구체적으로 어떤 방법으로 영지식 증명에서 해싱과 복호화가 달성되는지에 대해서 다루는 경우는 많지 않습니다. 때문에 이 글을 통해서 Pederson Hash와 MiMC의 구조에 대해서 알아보는 것은 의미가 있을 것입니다.

(단, 이 글은 수학 전공자가 아닌 고등학교 수준의 일반 청중을 대상으로 하므로 엄밀하지 못한 표현이나 비약이 있을 수 있습니다.)

3.2 MiMC(Minimal Multiplicative Complexity)

MiMC는 간단히 말해서 zk-SNARK 환경에서 타원 곡선 기반 해싱 방법을 사용할 때에 비해 효율적인 해싱을 가능하게 하는 암호화 알고리즘입니다. MiMC는 그 이름에서도 알 수 있듯이 곱셈 연산(Multiplication)을 적게 사용하여 회로의 복잡성을 줄임으로써 효율성을 달성하는 방식으로 설계되어 있습니다.

MiMC를 처음 제안한 논문에 따르면, 곱셈을 기피한 MiMC의 이러한 설계는 다음과 같은 경우에 특히 효율적입니다.

  1. 곱셈 연산의 깊이(depth)보다 곱셈 연산의 수가 성능에 큰 영향을 미치는 경우
  2. 대상으로 하는 집합의 원소의 개수가 소수이거나 2의 거듭제곱인 경우

이러한 특징으로 인해 곱셈 연산의 수로 인해 복잡성이 증대되는 특징을 가지면서, 대상으로 하는 집합의 원소의 개수가 소수인 경우를 상정하는 zk-SNARK는 MPC(Multi-party computation), FHE(Fully Homomorphic Encryption) 등과 함께 MiMC의 매우 적합한 적용 예시로 꼽힙니다.

더욱이 zk-SNARK의 경우 복잡도의 증가에 따라서 필요한 연산 처리 능력이 비례하여 높아지게 됩니다. 때문에 이더리움 위에서 제한된 컴퓨팅 파워를 Gas-fee를 내고 사용해야 하는 Tornado Cash에서는 올바른 해싱 기법을 사용하여 zk-SNARK의 복잡도를 줄이는 것이 더욱 중요하게 되어 MiMC의 효용이 더욱 극대화됩니다.

https://cdn-images-1.medium.com/max/960/0*0oOiuc2UsXZoI4GY.jpg
y=x³

그러면 MiMC는 어떻게 이러한 특징을 가질 수 있을까요? MiMC를 특별하게 만드는 것은 바로 핵심 구성 요소인 함수의 선택입니다. 비트코인에서 사용하는 암호화 해시 알고리즘인 SHA-256, 이더리움에 사용하는 암호화 해시 알고리즘인 keccak256의 경우 타원 곡선을 함수로 이용합니다. 반면 MiMC의 경우 f(x)=x³ 라는 간단한 함수를 핵심 구성 요소로 삼습니다.

https://cdn-images-1.medium.com/max/960/1*4XMxN33O2fsE5uRtFvmcbw.png
MiMC encryption function

위의 식이 MiMC 암호화 함수의 전체 모습입니다. (변수인 x가 암호화하는 대상, r은 라운드의 횟수, k는 랜덤하게 선택된 비밀키입니다.)

https://cdn-images-1.medium.com/max/960/1*Y-vtgtcePIBbXWMRM75mQQ.png

더 자세하게 들여다보면, ci는 라운드 상수를 의미하고 라운드마다 더해집니다. (단, i =0, i=r인 경우 ci =0) 그러나 이 값은 MiMC가 시작할 때 랜덤하게 선택된 이후 고정되어도 무방하며, 실제 적용에서는 하드 코딩되기도 하는 값입니다.

https://cdn-images-1.medium.com/max/960/1*8njH7V8TsPILYmq9vfvy2Q.png
MiMC의 전체적인 구조

결국 이런 식으로 암호화하려는 대상인 x는 라운드를 돌 때마다 비밀키 k와 라운드 상수가 지속적으로 더해지면서 3제곱되는 형태로 암호화되는 구조입니다.

생각보다 그렇게 구조가 어렵지는 않죠? 이렇게 간단한 방법이지만, 값을 보고 복호화를 하는 것은 라운드를 거듭함에 따라 극도로 어려워집니다. 더불어 MiMC를 처음 제안한 논문에 따르면 MiMC는 기존에 쓰이던 암호화 기법보다 (1) 블록이나 문자 배열을 암호화하기 위해 필요한 최소한의 곱셈의 수(minMULs), (2) 암호화된 문자 길이 당 필요한 곱셈의 수가 매우 두드러지게 적은 것으로 드러나게 됩니다.

다소 어려웠을 수도 있지만, 결론적으로 zk-SNARK를 활용하는 토네이도 캐시에서 사용되는 해싱 기법 중 하나인 MiMC는 타원곡선이 아닌 y=x³이라는 함수를 활용했다는 점, “곱셈의 양을 적게 만든 것”, 그리고 “큰 소수를 활용하는 집합에서 효율적으로 작동한 것”이 MiMC를 zk-SNARK에서 쓰이기 좋은 해싱 기법으로 만들었다는 사실만 기억하면 좋을 것 같습니다.

3.3 Pedersen Hash

다음으로 알아볼 암호화 알고리즘은 Pedersen Hash입니다. Pedersen Hash는 Pedersen이 제안한 Pedersen Commitment에 기초한 해싱 방법으로, 많은 해싱 기법이 그렇듯 타원 곡선군의 연산이산 대수 문제를 이용해 달성됩니다.

사실 Pedersen Hash의 기초가 되는 이론인 Pedersen Commitment는 이미 Pedersen의 1991년의 논문에서 제안되어 정립된 개념입니다. 그러나 그동안 MiMC 등 zk-SNARK에 친화적인 기법에 비해 효율이 떨어진다고 생각되어 잘 사용되지 않았습니다.

그러나 JubJub, BabyJubJub, twisted Edward 곡선 등을 Pedersen Hash에서 활용했을 때 효율이 높아진다는 것을 관찰한 복수의 논문이 제안되고, windowed Pedersen Hash 등 추가 처리를 통해서 Pedersen Hash가 블록체인 위에서의 영지식 증명을 위해 사용되기 상당히 적합하다는 것이 밝혀지게 되면서 Pedersen Hash는 다시 주목받게 됩니다.

이는 Zcash 팀의 주도로 2017년의 Sapling 업데이트에 적용되었고, 이 과정에서 블록체인 위의 zk-SNARK 환경에서 Pedersen Hash의 사용 방법이 정립되었습니다. 이후 이를 차용하고 변주해 Tornado Cash, Aleo, StarkWare 등이 각자 자신의 방법대로 Pedersen Hash를 사용하게 됩니다. Tornado Cash에서 사용되는 과정과 정확히 일치하지는 않지만, 글의 가독성과 정보 전달을 위해 본 글에서는 Zcash의 정리된 자료를 통해 일반적인 zk-SNARK에서 Pedersen Hash의 적용에 대해 다루겠습니다.

https://cdn-images-1.medium.com/max/960/0*zJjnQkA6EpZqS6iZ.png
Zcash docs, Group Hash

위 그림의 내용을 다 설명하기보다 핵심에 집중해보겠습니다. 기본적으로 Pedersen Hash 함수는 특정한 길이의 이진수만을 input으로 받을 수 있습니다. 따라서 input된 값(M)은 해싱을 거쳐 그러한 형태로 만들어지게 됩니다. 이 과정을 거치면 타원 곡선의 특정한 점과 쌍(Group)을 이루게 되는데, 이러한 과정을 Group Hash라고 합니다.

https://cdn-images-1.medium.com/max/960/0*JQDIkv2zVKO_to0D.png
Zcash Docs, Pedersen Hash

다음 과정은 Pedersen Hash의 계산을 수행하는 과정입니다. 해당 과정은 다소 복잡하고 변형이 잦으므로, 참고 정도로 알아두셔도 좋을 것 같습니다.

간단하게 요약하면, 다음과 같은 과정을 거치게 됩니다.

  1. 문자열 D와 숫자(0,1,2,…,63)를 입력으로 사용하여 64개의 그룹 해시를 생성합니다. (G0,G1, …, G63)
  2. Input인 M의 비트 수가 3의 배수인지 확인하고, 그렇지 않은 경우 0을 추가하여 M’3을 생성합니다. M’을 n개의 segment로 나눕니다.
  3. 각 segment를 다시 63개의 chunk로 나눕니다.
  4. 각 chunk를 암호화 함수 enc() 를 이용해 암호화합니다. enc() 함수는 다음과 같습니다.
https://cdn-images-1.medium.com/max/960/0*1qYBIs85tgWz0Pqa.png
  1. 각 chunk를 암호화한 값에 2^(4i)를 곱한 후 전부 더합니다. (i는 현재 chunk의 번호)6 . 이전 단계의 결과에 1단계에서 생성된 Gi(i는 현재 segment의 인덱스 번호를 나타냄)를 곱하여 현재 segment의 처리 결과를 얻습니다.7. 모든 segment의 처리 결과를 합산하여 Pedersen Hash Point를 얻습니다. (타원 곡선 위의 한 점)8. 이전 단계의 결과를 Hash Extractor로 전송하여 균일한 분포를 갖게 만든 후, 최종 Pedersen Hash를 얻습니다.

이 생성된 Pedersen Hash Point에 필요에 따라서 추가적으로 Input을 더 넣어 해싱을 더 거칠 수도 있습니다. Pedersen Hash Point에 Group Hashing을 거쳐 얻어진 타원 곡선 위의 임의의 점을 더해주면 Windowed Pedersen Hash라고 부르며, 같은 과정을 한 번 더 수행하는 경우에는 Mixing Pedersen Hash라고 부릅니다.

과정이 다소 어려웠지만, 이처럼 Pedersen Commitment를 이용한 다양한 해싱 방법을 통하면 영지식 상황에서도 Merkle proof를 생성하거나 안전한 해싱이 필요한 경우의 니즈를 충족시킬 수 있다는 것, 그리고 영지식 환경에서 Pedersen Hash의 효율성을 배가시키는 BabyJubJub, twisted Edward 등 다양한 종류의 타원 곡선이 발견되면서 지속적으로 발전되고 있다는 것을 알아두면 좋을 것 같습니다.

4. 나가며: 토네이도 캐시의 활용 및 규제

4.1 토네이도 캐시 실제 사용 사례

  1. 로닌 체인 해킹

https://etherscan.io/address/0x429a66e7bd829f9453cee5239bfeaf5657a11a3e

지난 엑시 인피니티의 로닌 체인 브릿지의 취약점을 찾아내 공격해 $625M 피해액이 발생한 사건에서도 토네이도 캐시가 사용되었습니다. 위 링크는 해킹범이 자금을 분산한 지갑중 하나로, Traditional Tornado Cash를 사용하기 위해 100 eth 토네이도 캐시 컨트랙과 상호작용한 지갑입니다.

2. Nomad 해킹 사례

https://etherscan.io/address/0x9634445e293a87ab77ca3cf5b43da94aabc544b6#tokentxns

크로스체인 메세지를 담당하는 함수의 허점을 악용해 $6190M 규모의 피해액이 발생한 Nomad 브릿지 해킹 사건에서도 Tornado Cash가 사용되었습니다. 위 링크는 컨트랙을 악용해 브릿지의 자금을 탈취하였으나, 추후 자금을 반납한 지갑의 주소입니다.

4.2 토네이도 캐시에 대한 규제

22년 8월 8일, 미국에서 토네이도 캐시에 대한 규제를 본격화했습니다. OFAC(Office Of Foreign Assets Control)은 국제 테러 집단과 같이 위험도가 높은 집단을 SDN(Specially Designated Nationals and Blocked Persons) 리스트를 통해 관리하는 기관인데, 해당 기관에서 8일 토네이도 캐시 및 해당 프로토콜을 이용한 지갑들을 OFAC’s SDN List에 추가했습니다. SDN 리스트에 포함된 개인, 회사, 국가와 미국인이 거래 내지 경제적인 관계를 맺는 것은 불법으로 규정되어 있습니다. 따라서 위 리스트에 추가된 지갑의 경우 자금이 동결되어 CEX를 통해 인출할 수도 없습니다. 나아가 현재 토네이도 캐시의 공식 홈페이지 및 백서, 그리고 깃헙에 공개된 토네이도 캐시의 소스 코드 모두 접근이 차단되었으며, 해당 프로토콜의 개발자 역시 지난 12일 체포된 상황입니다.

규제가 부과된다는 것은 해당 업계가 제도권 내로 편입된다는 것을 의미합니다. 긍정적인 측면은 규제가 존재하지 않을 때에 비해 법률적인 흑백 영역의 구분이 용이해진다는 점이지만, 그 반대급부로 업계의 자율성 내지 성장 가능성에 제동을 거는 규제가 부과될 수도 있습니다. 위와 같은 토네이도 캐시에 대한 규제 역시 동일한 시선에서 바라볼 수 있습니다. 범죄행위와 연루된 불법 자금이 크립토 업계를 통해 세탁되는 일련의 행태는 블록체인을 대중이 불법적이고 음성적인 분야라고 인식하는 데 일조했습니다. 위 규제에 대한 가치판단은 시기상조이지만, 모쪼록 대중, 기존의 산업, 그리고 블록체인의 미래가 함께 발맞추어 나아가길 바랍니다.

5. References

MiMC

Pedersen Hash

--

--