Sapling support/adoption in Tezos ecosystem - Current state

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 :slight_smile:

5 Likes

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.

2 Likes

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.

4 Likes

Taquito released a high-level API for Sapling this year.

Checkout:

2 Likes

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 :slight_smile: 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 :slight_smile:

2 Likes

I am not sure, what can I do on tezmitter? What I am missing, it seems I cant interact?

1 Like

For anyone interested in how to deploy a Sapling contract, this seems to be an easy way?

  1. Go to the Ghostnet instance deployed by AigGap on BCD.
  2. Copy the Michelson code.
  3. Go to the Smartpy Michelson editor: SmartPy
  4. Paste the Michelson code into the editor.
  5. On the right-screen, click on “DEPLOY MICHELSON CONTRACT” and follow the instructions.
2 Likes

Tezmitter look super cool :sunglasses: But it needs a little documentation or something, I have no idea how to operate it :sweat_smile:

1 Like

Glad I am not the only one that has no idea :smiley:

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.

3 Likes

Thanks! Maybe a short info like this on the page would avoid further confusion :slight_smile:

1 Like

So it seems that Sapling is deployed on Tezos mainnet:
https://twitter.com/Crypt0nio/status/1606972990021070848

And for tokens:

2 Likes

I agree with the other posters, a minimalistic information for the end user will work wonders in regards to understanding. Great job!

This makes great progress! Soon we have Sapling Tokens and tickets!!

And please consider to upvote this feature request on Umami - to add spaling support! :slight_smile:

Airgap added Sapling support for Tezos:
https://twitter.com/AirGap_it/status/1618232471027437570

2 Likes

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?

2 Likes

Yes :slight_smile: If you have any issues with Airgap post your problem in their chat and the team will help Telegram: Contact @AirGap

Not using AirGap, used octez-client to test.

Anyone can tell how the progress is on this merge request?

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

1 Like