Sapling was introduced into Tezos protocol in the year 2020. Two years later there is still not a single wallet that supports shielded Tezos transactions (sending & receiving). Airgap added support last year but disabled it after a flaw was found.
Since then the flaw was removed in one of the recent protocol upgrades and so still nothing.
The contract was deployed on [Ghostnet] (KT1Wr1z3..cUPuHZ on ghostnet.tzkt.io) by Airgap but I guess it wont deploy it on Mainnet due to recent very sad development with Tornado Cash. However Airgap will support the possibility to interact with shielded Tezos in their wallet.
It is sad to see that such a great feature isnt used (literally zero) as it got pretty hyped with ama´s and so on. I am not sure what the reasons are because the hard coming after Tornado cash happened in the last months so this was not an excuse before that.
I still believe Sapling on Tezos has a bright future, maybe a bit a niche but privacy is important and I would love to see wallets like Kukai, Temple, Naan or Umami support shielded Tezos transactions. I am not saying the teams should take care of deployment but providing a way for interaction would be a big step to promote and encourage Tezos shielded transaction usage.
If no wallet gives support then how should a normal user without the needed technical background shield his tez and send it forth/back?
So in my humble opinion I think to finally bootsrap Sapling on Tezos and start growing userbase we need:
more wallets supporting Sapling… like Umami, Kukai, Temple, Naan
possibility to use shielded tokens… is this possible? shielded FA1.2 and FA2 tokens?
This would enable another set of new integrations like darkpools for example
Moreover I would love to see a sapling implemented mixer with shielded Tezos and tokens. I know we have Maelstrom but this kind of mixing in my opinion is easy to trace back and why do it this way when we have Sapling.
However first I would love to see more wallet support and shielded tokens
Thank you for bringing this up. Tezos teams seem to be reticent to deploy a mainnet sapling contract due to the reasons you mentioned.
Perhaps it would be acceptable for wallets to provide the functionality with a minor UX indirection: when the user elects to send a shielded transaction, they are prompted for a shielded contract address. The wallet does not provide any default choice.
Few refinements are possible:
this contract could be designated by a tezos domain, so the user can just type a tezos domain instead of a KT1
the wallet could scan the chain for all sapling contracts in the network, sorted by usage statistics, but still without pre-selecting any default.
Better-call.dev allows you to search all instances of the sapling contract on any network but there is no ability to sort or search, so I didn’t browse all the pages to check whether there was a mainnet one already deployed.
I started playing around with the new Sapling support in Taquito and put together a small app to facilitate interacting with a sapling contract. https://ghostnet.tezmitter.com. Deployed to Ghostnet for now.
Thanks for your input! To my current knowledge there is no Sapling contract deployed on mainnet, at least not one after the flaw got patched.
Thats awesome thanks for the link! I never saw this (tezmitter) anywhere. I will try it out Is there a Twitter profile or github repository to follow you or the progress?
Yep I know, I forgot to add this in the initial post, I read the article and cant wait to see it in use soon! As always great work
The pre-requisites for Tezmitter are a Sapling secret key and a connected Tezos wallet. To generate a sapling secret key, you can enter the following command using the octez-client:
./octez-client sapling gen key test-sapling-key --unencrypted
This will generate an unencrypted key at ~/.tezos-client/sapling_keys. Using this key which starts with “sask…”, you can interact with the sapling contract by shielding, transferring, and un-shielding tezos within the contract. The connected wallet is used to either fund the transaction or inject the operation directly.
I ran a test with the sapling contract following this guide: https://gateway.ipfs.io/ipfs/QmZBqtv4FnJP8S7vwHXvGRjipDVuok5szDoCcunx4VDD8P
I made it work, not bad at all, it needs some fix, you cannot use the example https://rpc.tzbeta.net for shielding the transaction, it fails. I used https://mainnet.smartpy.io and that worked.
Also the command to view xtz account balance is incorrect, it should be get balance, and not show balance.
Other than that, running it, actually helps comprehend the flow. The other option is using airgap. I have not tried that yet.
Anyone else tested it?
I deployed a sapling FA1.2 contract which accepts and shields (Ghostnet) ctez. I updated https://ghostnet.tezmitter.com to interact with this contract. To test it, you’ll need some Ghostnet ctez. If you need someone to test transferring to, my sapling address is: zet14QD17zQZ4BBQU4EBy4XdwdpT5YUtRxtfYeSgrfBrDoLA7dRJALahefrFgQEFPp6Nf