Do not open

Le coffre scellé

N'importe quel NFT dans une boîte dont le détenteur est chiffré on-chain. Il peut quand même se vendre sur Seaport, ou en privé pour un prix que seul l'acheteur lit, et il sort vers n'importe quelle adresse. Voici comment, et ce que tout le monde peut encore voir.

Ce qu'est le coffre

Un contrat qui garde des NFT. Chaque NFT qui entre reçoit une boîte : un jeton à part dont le détenteur est chiffré, comme les boîtes du jeu. Le NFT reste dedans jusqu'à ce que le détenteur de la boîte le sorte, le vende sur Seaport ou vende la boîte en privé.

Le coffre accepte les collections que son propriétaire autorise. Sur le réseau de test, c'est une collection de test gratuite que tout le monde peut minter.

Sceller un NFT

Sceller tient en une transaction : le NFT entre dans le coffre et une boîte est créée pour lui, à votre nom. C'est public, puisque c'est un simple transfert de NFT : tout le monde voit qui a scellé quel NFT. Ce qui arrive ensuite à la boîte, non.

Tant que la boîte ne bouge pas, son déposant en est le détenteur évident. Le doute vient avec un transfert : dès que des boîtes changent de mains, personne ne peut dire qui détient laquelle.

Pour retrouver vos boîtes, la page lit vos propres reçus et déchiffre, pour vous seul, celles qui vous sont vraiment arrivées. Une signature.

La clé de la boîte

Chaque boîte a une clé : un secret de 256 bits, stocké chiffré, que personne ne peut lire, vous compris. Le coffre ne fait jamais que la comparer. Tout ce qui sort du coffre (le NFT, une annonce, l'ETH d'une vente) se demande avec la clé, jamais avec votre adresse.

Vous ne tapez jamais la clé. Votre wallet signe un message fixe, gratuitement, et la page en tire la clé de chaque boîte : le même wallet fait les mêmes clés sur n'importe quel appareil. Ne signez ce message que sur DO NOT OPEN : qui obtient la signature peut sortir vos NFT.

Une clé n'est jamais envoyée telle quelle : elle est mêlée aux termes exacts de la demande (la boîte, l'action, l'adresse, le prix, la date de fin, et un compteur). Changez un terme, ou renvoyez la même demande plus tard, et la clé ne correspond plus : la demande est refusée.

Une boîte qui change de mains reçoit une clé au hasard, si bien que son ancien détenteur ne peut plus rien en faire. Son nouveau détenteur fait sienne la clé en une transaction (« Prendre la clé »). N'importe qui peut essayer, mais cela ne prend effet que pour le détenteur, et de l'extérieur les deux cas se ressemblent.

Demander quelque chose

Sortir un NFT, le mettre en vente, retirer une annonce et encaisser l'ETH d'une vente se passent tous de la même façon, en deux temps. Une demande on-chain : le coffre vérifie la clé sous chiffrement. Puis une preuve du service de gestion des clés de Zama que la clé correspondait, que n'importe qui peut rapporter.

La demande se règle de trois façons : faite ; refusée, quand la clé ne correspondait pas (rien ne se passe, rien n'échoue, donc un inconnu n'apprend rien) ; ou manquée, quand la boîte a changé entre-temps (vendue sur Seaport dans l'intervalle, par exemple).

Tant qu'une demande attend sa preuve, la boîte est occupée : elle ne peut ni bouger ni recevoir une autre demande. Cela prend en général quelques secondes.

Au coffre scellé. Le relayer porte votre demande, la clé est vérifiée à l'aveugle, et le NFT part où vous l'avez dit. Votre adresse n'apparaît nulle part.

  • Chiffré
  • Transaction
  • Valeur avec preuve
  • Valeur en clair

Vendre sur Seaport

Une annonce est un vrai ordre Seaport 1.5, le protocole d'OpenSea, dont le vendeur est le coffre lui-même : votre adresse n'apparaît nulle part. Le coffre valide l'ordre on-chain, il ne signe donc rien, et seuls les ordres qu'il a validés peuvent vendre ses NFT.

N'importe quelle marketplace Seaport peut l'exécuter. L'acheteur paie en ETH et reçoit le NFT tout de suite. Les acheteurs voient le NFT, le prix et la date de fin, comme pour toute annonce.

L'ETH attend dans la boîte celui qui détient la clé, moins les frais du coffre (2,5 %, jamais plus de 10 %). Vous l'encaissez vers n'importe quelle adresse. Une annonce dure jusqu'à 180 jours ; une annonce expirée sans acheteur redevient scellée.

Les ventes privées

Proposez une boîte à un seul acheteur, pour un prix en cUSDC (un dollar confidentiel) que vous seuls pouvez lire. L'acheteur le lit dans la page, puis paie et prend la boîte en une transaction.

Tout se règle sous chiffrement : si le prix est arrivé et que le vendeur détenait encore la boîte, la boîte bouge avec une clé qui est celle de l'acheteur, et le vendeur est payé ; sinon rien ne bouge et l'acheteur récupère ses cUSDC. Pour tous les autres, une vente qui a abouti et une vente ratée se ressemblent.

N'importe qui peut proposer n'importe quelle boîte, donc une offre ne prouve rien sur qui la détient. Le vendeur peut annuler une offre ouverte ; seul l'acheteur désigné peut l'accepter, une fois.

Donner une boîte

Envoyez une boîte à n'importe quelle adresse. Elle ne bouge que si vous la détenez, et elle arrive sans clé : celui qui la reçoit la trouve dans ses reçus et fait sienne la clé. D'ici là, personne ne peut rien en sortir.

Le relayer

Une demande envoyée depuis votre wallet montre votre adresse. L'API du site peut donc envoyer vos demandes et leurs preuves depuis son propre wallet, et payer le gas : alors votre adresse n'apparaît dans aucune transaction.

Il n'apprend rien que la chaîne ne montre pas. La clé lui arrive chiffrée pour le coffre et liée aux termes de la demande : il ne peut ni la lire, ni changer un terme, ni la réutiliser. Il voit, comme tout serveur web, l'IP d'où vient une demande.

Il peut refuser, pas tricher. Il a des limites par jour et par minute ; s'il est en panne ou dit non, la page envoie la demande depuis votre wallet, et vous prévient que votre adresse se voit alors.

Ce qui est public, ce qui ne l'est pas

Public

  • Qui a scellé quel NFT (le dépôt est un transfert de NFT)
  • Le NFT dans chaque boîte, son état, son annonce
  • Les annonces et les achats Seaport, avec le coffre comme vendeur
  • L'adresse vers laquelle sort un NFT ou l'ETH d'une vente, et le montant
  • Qu'une demande a été faite, sur quelle boîte, pour quoi, et si elle a été faite, refusée ou manquée
  • Les deux adresses d'un transfert ou d'une vente privée

Jamais public

  • Qui détient une boîte
  • La clé de la boîte
  • Le prix d'une vente privée, et si elle a abouti
  • Si un transfert a déplacé quelque chose
  • Qui a demandé une annonce, un retrait ou un encaissement, quand le relayer l'envoie

En pratique : sortez vers une adresse sans historique, laissez le relayer envoyer vos demandes, et sachez que le moment choisi peut encore donner des indices (un « Prendre la clé » juste après un transfert vers la même adresse, par exemple).

Sur le réseau de test

Le coffre tourne sur Sepolia, le réseau de test d'Ethereum, avec le vrai Seaport 1.5. Ses frais sont de 2,5 %. La collection de test se mint gratuitement depuis la page du coffre ; rien ici ne vaut de l'argent.

Pour aller plus loin