# Sandscreener ## Table of Contents :open_book: 1. Project Overview 2. Technical Components 3. Project Components 4. Project Roles 5. Other Resources ## 1. Project Overview :page_facing_up: Sandscreener is an open-source Proof of Innocence tool. It allows users to easily prove via zero-knowledge technology that cryptocurrency withdrawn from Tornado Cash is not associated with an address on an exclusion list, without revealing the source of their funds. Sandscreener is currently only compatible with Tornado Classic, but can easily be configured to work with Tornado Cash Nova and on all L2's it's deployed to. Furthermore, the technology can be developed beyond Tornado Cash to other zero knowledge protocols. Sandscreener can be interacted with manually via the application UI, or in an automated way via smart contract webhooks. ## Technical Components :nut_and_bolt: Sandscreener defines four distinct roles within the software. The roles are as follows ([source](https://docs.google.com/drawings/d/16j6F56vh5_Ja4dGitTvm-Dibr-7EBQnjz_dzX8A6kTk/edit)): ![](https://hackmd.io/_uploads/B166cxQhh.png) The Sandscreener software is comprised of three major components. 1. #### Exclusion List(s) The exclusion list (aka blocklist or blacklist) is a list (or lists) of addresses deemed to be associated with hacked or stolen funds. The addresses are submitted by Editors to the Sandscreener smart contract and take form onchain as a merkle tree root, also referred to as the Exclusion Tree. The Exclusion list can be broken down further into two distinct parts; the technical and the social. - 1.1. **Technical**: As described above, the technical layer of Sandscreener handles placing the exclusion lists onchain and storing them in a decentralized way. - 1.2. **Social Consensus**: While the technical layer handles placing the data onchain, the social layer is responsible for the integrity of that data. More on this can be explored in the [Exclusion List Problem Statement](https://hackmd.io/@sandscreener/B1PJTBZdn). - *Note: Establishing the Social Consensus component of Sandscreener is currently the highest priority of the project.* 2. #### Smart Contract The Sandscreener smart contract is deployed onchain and is owned by the Admin. It does three important things: 1. Stores the verifier function that allows Auditors to verify the Prover's ZKP. 2. Stores the merkle tree root of the Exclusion Lists submitted by the Editor. 3. Allows Auditor to approve and revoke the Editor role. 3. #### Application The Sandscreener application is hosted on [Github](https://github.com/sandscreener/sandscreener) and an instance is currently accessible via the browser at app.sandscreener.io. The Sandscreener application serves three major functions: 1. It is the user interface that allows each of the roles to easily participate in Sandscreener. 2. It performs client-side functions such as generating ZKP's. 3. It writes data (such as an exclusion list) to the smart contract. ### How It Works Sandscreener allows for two things to be accomplished: putting exclusion lists onchain and allowing a Prover to prove their innocence. 1. Putting Exclusion Lists Onchain ([source](https://docs.google.com/drawings/d/1449JN-zSqC8UdZhOvk4gxM17y3fsHq7IqbxSu1Bp-8k/edit)) ![](https://hackmd.io/_uploads/HJR2--mhh.png) 3. Proving Innocence ([source](https://docs.google.com/drawings/d/1XOTY5K1nncRlNpG8n7QveZzZ5R6Upiy1gTgOezmm1Rk/edit)) ![](https://hackmd.io/_uploads/BJF0fbX3h.png) ## 3. Project Components :spiral_note_pad: 1. #### Documentation Written documentation outlining what the product is and how it works. These documents will help the general public, cryptocurrency users and contributors understand the project more easily. Documentation will include a concise Mission Statement, Product Description, Technical Documentation, External Roadmap, Project Role Definitions, an FAQ and more. 2. #### Product Development Pipeline A development pipeline that clearly defines the movement of product features from idea to implementation. 3. #### Social Media / Community Engagement A social media presence for engaging constructively with the public and community in order to gain trust and reputation. Social Media presence will include (but not be limited to): Twitter, Mastodon, Discord, Telegram, Medium, LinkedIn. 4. #### Contribution A culture of collaboration that encourages and rewards contributions to the project. 5. #### Partnership Establish contact with companies, DAO's and individuals within the ecosystem to share ideas and advocate for Sandscreener. Become a trusted resource and partner for those within the community. 6. #### Outreach & Promotion Actively promote the product, technology and ideas of Sandscreener to a crypto and non-crypto audiences. Normalize the concept of using ZK technology to preserve privacy within a regulated environment. This is accomplished through reaching out to traditional and crypto media, speaking at conferences, podcasts and Twitter spaces. ## 4. Project Roles :woman::man: The roles are included here to be used as guidelines only; there may be multiple people doing one role or one person doing many roles, and many more roles may emerge over time as needed. Role descriptions are also expected to change. Over time, as the project grows and there are more active contributors, roles can be delegated to share the workload. Establishing role definitions early on in the project will help the project scale during later phases. | Role | Description | Member | | ------------- | ------------- | --- | | Project Coordinator | Oversees the project to ensure it's meeting all goals and milestones. | Hodlon | | Product Manager | Oversees the development of the product and guides the direction, making final decisions on aspects such as functionality and design. Works primarily with the engineering team, but also conducts user feedback surveys. | Hodlon | | Project Engineer | Writes and maintains Sandscreener software. Problem solves technical solutions. | Alex | | Technical Writer | Writes and maintains Sandscreener documentation. | Hodlon | | Content Creator | Writes content for the blog. Works closely with the Communications Manager | Hodlon | | Communications Manager | Manages social media accounts and is responsible for engaging with the community and general public. Writes blog posts, attends events, speaks on podcasts. | Hodlon | | Account Manager | Interfaces with crypto firms to educate and advocate for the adoption of Sandscreener. | Hodlon | | Research Analyst | Identifies and conducts research into vital areas of intrigue related to Sandscreener. These could be legal, UI, privacy or any other number of relevant topics. | ## 5. Other Resources :paperclip: - [Exclusion List Problem Statement](https://hackmd.io/@sandscreener/B1PJTBZdn) - [Technical differences between Sandscreener and Chainway's Proof of Innocence](https://hackmd.io/@sandscreener/HJx2IO123) - [Sandscreener Project Description (currently somewhat outdated but still useful)](https://hackmd.io/@sandscreener/H1aduHxe3) - [Sandscreener Medium](https://medium.com/@sandscreener)