Wrap on Privacy
{"title": "Wrap on Privacy", "logoImg": "bafkreiha4gdeykmztrq4lvq7fmh7ogpt5r6ivhwtderefkawy6rva4kqli", "website": "https://numtel.github.io/wrap-on-privacy/", "bannerImg": "bafybeigdxdmfw36bn4kboa7a3yfkvw5ek5inprvnhhxu255btjnil3nowu", "createdAt": 1742392758097, "userGithub": "numtel", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"type": "EthereumEip712Signature2021", "created": "2025-03-19T14:02:31.620Z", "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", "proofValue": "0x1792a0e5aac7544bfa93fb0bf295f79640a0b6118b14fe365ddda313739842015fe4d77314b19bd114a0642be74cedc17fda1c433642e8bf1dc5d7bd6af095881c", "eip712Domain": {"types": {"Proof": [{"name": "@context", "type": "string"}, {"name": "created", "type": "string"}, {"name": "proofPurpose", "type": "string"}, {"name": "type", "type": "string"}, {"name": "verificationMethod", "type": "string"}], "@context": [{"name": "nullifiers", "type": "NullifiersContext"}, {"name": "provider", "type": "string"}], "Document": [{"name": "@context", "type": "string[]"}, {"name": "credentialSubject", "type": "CredentialSubject"}, {"name": "expirationDate", "type": "string"}, {"name": "issuanceDate", "type": "string"}, {"name": "issuer", "type": "string"}, {"name": "proof", "type": "Proof"}, {"name": "type", "type": "string[]"}], "EIP712Domain": [{"name": "name", "type": "string"}], "CredentialSubject": [{"name": "@context", "type": "@context"}, {"name": "nullifiers", "type": "string[]"}, {"name": "id", "type": "string"}, {"name": "provider", "type": "string"}], "NullifiersContext": [{"name": "@container", "type": "string"}, {"name": "@type", "type": "string"}]}, "domain": {"name": "VerifiableCredential"}, "primaryType": "Document"}, "proofPurpose": "assertionMethod", "verificationMethod": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb#controller"}, "issuer": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb", "@context": ["https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1"], "issuanceDate": "2025-03-19T14:02:31.619Z", "expirationDate": "2025-06-17T14:02:31.619Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xa48c718AE6dE6599c5A46Fd6caBff54Def39473a", "@context": {"provider": "https://schema.org/Text", "nullifiers": {"@type": "https://schema.org/Text", "@container": "@list"}}, "provider": "ClearTextGithubOrg#coinpassport#518698", "nullifiers": ["v0.0.0:eLlP4+UIf4JDtUIJKxURZ7g/EO26ZOQRfCRypZVm0js="]}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"type": "EthereumEip712Signature2021", "created": "2025-03-19T14:01:32.871Z", "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", "proofValue": "0xc52c6a57562b6fea8ef02835821fdd8bdc8ddcf6bc3e2e7e15854144daabca5237b6dd12fe79a3d53715e8a2d5e76193b8352590077728dc9f20af1eea4bd4da1b", "eip712Domain": {"types": {"Proof": [{"name": "@context", "type": "string"}, {"name": "created", "type": "string"}, {"name": "proofPurpose", "type": "string"}, {"name": "type", "type": "string"}, {"name": "verificationMethod", "type": "string"}], "@context": [{"name": "nullifiers", "type": "NullifiersContext"}, {"name": "provider", "type": "string"}], "Document": [{"name": "@context", "type": "string[]"}, {"name": "credentialSubject", "type": "CredentialSubject"}, {"name": "expirationDate", "type": "string"}, {"name": "issuanceDate", "type": "string"}, {"name": "issuer", "type": "string"}, {"name": "proof", "type": "Proof"}, {"name": "type", "type": "string[]"}], "EIP712Domain": [{"name": "name", "type": "string"}], "CredentialSubject": [{"name": "@context", "type": "@context"}, {"name": "nullifiers", "type": "string[]"}, {"name": "id", "type": "string"}, {"name": "provider", "type": "string"}], "NullifiersContext": [{"name": "@container", "type": "string"}, {"name": "@type", "type": "string"}]}, "domain": {"name": "VerifiableCredential"}, "primaryType": "Document"}, "proofPurpose": "assertionMethod", "verificationMethod": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb#controller"}, "issuer": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb", "@context": ["https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1"], "issuanceDate": "2025-03-19T14:01:32.871Z", "expirationDate": "2025-06-17T14:01:32.871Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xa48c718AE6dE6599c5A46Fd6caBff54Def39473a", "@context": {"provider": "https://schema.org/Text", "nullifiers": {"@type": "https://schema.org/Text", "@container": "@list"}}, "provider": "ClearTextTwitter#numtel1", "nullifiers": ["v0.0.0:NfyauUwyT+LMpfDh9tWEvpvIuYQJ+rHq3MC0VA3uJY4="]}}}, "description": "Started at ETHGlobal Bangkok 2024, Wrap on Privacy is a new privacy tool that hides the amount sent, recipient address, and even the token sent for ERC20 tokens. Sending tokens is as easy as inputting the recipient's Ethereum address or ENS name. To receive, simply register your generated public key with the pool's key registry.\n\nWrap on Privacy changes the dApp paradigm by offering in-app functionality to deploy a privacy pool to any EVM chain. Privacy pools are unrestricted by default but can be customized to support user access controls, deposit/withdrawal limits or fees, and token restrictions.\n\nThe \"Windows 98\" style interface invokes a \"down to business\" attitude that is easy to learn and use while being functional.\n\nWrap on Privacy stores private balances encrypted on chain instead of UTXO (like Railgun) so you don't need to sync the entire chain to send tokens from your balance. This makes mobile usage much easier. Choose \"Disable Sync\" on the login dialog to save battery and data.\n\nWrap on Privacy supports Aave aTokens so you can earn interest while inside the privacy pool. It wouldn't take much deposited to cover the cost of your transaction fees!\n\nAll activity is contained in three main screens:\n\n* Token list: Displays your public and private balances as well as the total pool size\n* Incoming transactions: All incoming tokens must be accepted with a \"receive\" proof in order to increase your balance\n* Outgoing transactions: Tokens you have sent will appear here. In the rare occurrence that the recipient does not see the transaction in their incoming transactions screen, you may export the transaction data and transmit it over any messaging service for them to import.\n\nWrap on Privacy is designed more akin to a desktop app. While your private session is stored in the browser using IndexedDB for easy logins, you can export the encrypted session file to maintain a backup of your latest sent transactions and your sync status.\n\nPool details and color schemes can also be imported and exported as files.\n\n\nRoadmap:\n\n* User validation contracts are currently a custom job. You would have to write your own. With your support this can be built out to an easy to use frontend that supports configuring a pool's safety features such as limiting which accounts can deposit/withdrawl (perhaps by holding an NFT from a specific collection or by being a valid Coinbase user) as well as setting roles for token limits.\n\n* Circuit/contract audits for production use. While this is free software controlled by its users who may use it as they choose, careful reviews of the source are necessary to trust it on real assets outside of testnets.", "logoImgData": {}, "bannerImgData": {}, "projectGithub": "coinpassport", "projectTwitter": "numtel1"}