Documentation

Concepts

Pools protégés, actifs, frais, mémos, blocs et validateurs, et le pool d’échange.

Réseau de test§: les pièces n’ont aucune valeur

Pools protégés et notes

Votre solde sur Tint est un ensemble de notes. Une note est un enregistrement, chiffré pour une seule adresse, qui dit « cette quantité de cette pièce vous appartient§». Les notes sont stockées sur la chaîne sous forme d’engagements dans un arbre de Merkle, de sorte que personne ne peut les lire ni savoir à qui elles appartiennent.

Pour payer, votre portefeuille dépense des notes et en crée de nouvelles§: une pour le destinataire, et la monnaie pour vous. Il prouve, avec une preuve Halo 2, qu’il possède les notes dépensées, qu’elles existaient et que les valeurs s’équilibrent, sans dire de quelles notes il s’agit. Chaque note dépensée révèle un annulateur (nullifier), une étiquette que le réseau utilise pour refuser une seconde dépense de la même note sans apprendre de quelle note il s’agissait.

Le portefeuille du destinataire lit chaque bloc et tente de déchiffrer chaque nouvelle note avec sa clé de visualisation. Une note qui se déchiffre est la sienne. Ce déchiffrement d’essai explique pourquoi un nœud ne peut pas savoir à qui est destiné un paiement.

Actifs

Une pièce est un actif doté d’un numéro. L’actif 0 est la pièce native TINT§; l’actif 1 est le dollar de test TUSD. Une chaîne peut définir jusqu’à 16 actifs. Chaque actif est son propre pool protégé§: un paiement déplace des notes d’un seul actif, et l’échange est le seul endroit où deux actifs se rencontrent.

Les montants sont des nombres entiers d’unités. Une pièce vaut 100,000,000 unités (8 décimales), donc le plus petit montant de TINT est 0.00000001.

Frais

Chaque action d’un paiement règle des frais minimaux, et les frais sont payés dans la pièce que vous envoyez. Vous n’avez jamais besoin d’une seconde pièce pour payer le gas. Sur le réseau de test actuel, le minimum est le suivant§:

PièceFrais par action
TINT0.00005
TUSD0.001

Une transaction comporte au moins une action et au plus 64. Le portefeuille affiche les frais exacts avant que vous confirmiez. Les frais sont publics.

Mémos

Chaque note contient un champ de mémo de 512 octets, chiffré avec la note. Placez-y un court texte et seul le portefeuille du destinataire pourra le lire. Un mémo vide ne coûte rien de plus, puisque chaque note possède ce champ de toute façon.

Blocs et validateurs

Tint fonctionne en preuve d’enjeu. Un ensemble fixe de validateurs s’accorde sur chaque bloc au moyen d’un consensus BFT (Simplex, de la bibliothèque commonware). Un bloc est final dès que les validateurs se sont accordés sur lui§: il n’y a pas à attendre que des confirmations s’accumulent.

  • Un bloc contenant des paiements est construit dès qu’il y a un paiement à inclure.
  • Une chaîne calme construit un bloc vide environ toutes les 5 secondes, afin que les blocs vides ne remplissent pas le disque. Un paiement n’attend pas ce repos.
  • Les paramètres du consensus fixent un minimum d’une demi-seconde entre deux blocs.
  • Les validateurs sont choisis à la genèse et ne changent pas encore. Sur le réseau de test public, les quatre tournent sur un seul serveur.

Les récompenses de bloc rémunèrent les validateurs§: le réseau de test démarre à 2 TINT par bloc, divise la récompense par deux tous les 15,768,000 blocs et se stabilise à une récompense résiduelle de 0.1 TINT.

Le pool d’échange

La chaîne dispose d’un pool intégré qui échange TINT et TUSD l’un contre l’autre. Il suit la règle du produit constant (x · y = k)§: le prix varie à mesure que les deux réserves du pool changent. Le pool conserve 0.3 % de ce qui est versé, et les frais restent dans le pool.

Il démarre avec 200,000 TINT et 100,000 TUSD, soit un prix d’un demi-dollar de test par pièce. Personne ne gère le pool, et ses pièces ne peuvent pas être retirées§: il ne peut que faire des échanges.

Un échange indique le minimum qu’il accepte. Si le prix du pool a varié au point de ne plus pouvoir le donner, le nœud répond price_moved et rien n’est dépensé.

Limites

LimiteValeur sur le réseau de test
Actions dans une transaction64
Actions dans un bloc2,048
Racines récentes auxquelles une transaction peut s’ancrer1,000 blocs
Jusqu’où une transaction peut fixer son expiration à l’avance1,000 blocs