Comment un avis gagne son poids
Les règles publiques derrière chaque score TrustRate.
La vie d'un avis
01
Travailler ensemble
Une prime, un jalon ou une facture est payé on-chain.
02
Écrire
Une note, des étiquettes et un commentaire, rattachés à ce travail.
03
Signer
Le portefeuille de l'évaluateur signe l'avis.
04
Sceller
Inscrit dans un bloc. Ni modification, ni suppression.
05
Compter
Le score bouge selon le poids de l'avis.
Ce qui donne du poids à un avis
Poids = interaction × historique. Un avis masqué ne pèse rien.
| Facteur | Quand | Valeur |
|---|---|---|
| Interaction | Rattaché à une vraie interaction on-chain | × 1,0 |
| Interaction | Aucune interaction liée | × 0,4 |
| Historique | L'évaluateur a 2 interactions vérifiées ou plus | × 1,0 |
| Historique | Nouveau portefeuille | × 0,6 |
Le score
score = (Σ poids × étoiles + 2 × 3,0) ÷ (Σ poids + 2)
Le « + 2 × 3,0 » vaut deux avis moyens : un seul mot gentil ne suffit pas pour atteindre 5,0.
Exemple détaillé
- 5 étoiles, vérifié, évaluateur reconnu : 1,0
- 4 étoiles, vérifié, évaluateur reconnu : 1,0
- 5 étoiles d'un second portefeuille tout neuf, sans interaction : 0,24
(5 + 4 + 1,2 + 6) ÷ (2,24 + 2) = 3,8. Moyenne simple : 4,7.
Confiance
Débutant sous un poids total de 3, En construction sous 7, Solide à partir de 7.
Quand la communauté intervient
Tout le monde peut signaler. Cinq modérateurs élus tranchent au grand jour.
01
Signaler
Spam, harcèlement, hors sujet ou conflit d'intérêts.
02
Dossier
L'avis reste visible en attendant.
03
Voter
Trois votes concordants tranchent.
04
Décision
Un avis masqué ne compte plus, mais reste on-chain.
Réponses, votes et ton
La personne évaluée peut répondre une fois. Les votes « utile » classent les avis, et une vérification du ton signale les mots qui contredisent les étoiles. Ni l'un ni l'autre ne change le score.
Pour les développeurs
La couche de données de la démo (src/lib/demo) reproduit cette interface : wagmi/viem et un indexeur peuvent la remplacer sans toucher à l'interface.
Voir l'interface du contrat
interface ITrustRate {
event ReviewSealed(
uint256 indexed id,
address indexed reviewer,
address indexed subject,
uint8 rating, // 1–5
bytes32 interaction, // 0x0 when unverified
string uri // comment + tags
);
event ReplySealed(uint256 indexed reviewId, string uri);
event Flagged(uint256 indexed reviewId, uint8 reason);
event ModVote(uint256 indexed reviewId, address moderator, bool hide);
event Resolved(uint256 indexed reviewId, bool hidden);
function review(address subject, uint8 rating, bytes32 interaction, string calldata uri) external returns (uint256);
function reply(uint256 reviewId, string calldata uri) external;
function flag(uint256 reviewId, uint8 reason) external;
function vote(uint256 reviewId, bool hide) external; // moderators only
}- Un profil est une vue sur les événements d'avis indexés.
- Les votes « utile » sont des messages EIP-712, hors chaîne.
- Masquer pose un indicateur. Rien n'est supprimé.