Réseau de stations-service Ethereum (GSN)
Ethereum Gas Station Network (GSN) éloigne le processus de paiement du gaz des utilisateurs finaux, ce qui minimise les frictions UX pour les dapps. Avec GSN, les clients sans gaz peuvent interagir avec les contrats intelligents Ethereum sans que les utilisateurs aient besoin d’ETH pour les frais de transaction. Le GSN est un système décentralisé qui améliore la convivialité des dapp sans sacrifier la sécurité.
Exemples de cas d’utilisation pour GSN :
- Confidentialité : permettre le retrait sans ETH des jetons envoyés à des adresses furtives
- Payer le gaz avec des jetons ERC-20 pris en charge : permettre aux utilisateurs de payer le gaz avec des jetons ERC-20 prenant en charge
permit
la fonction - Payer le gaz hors chaîne : permettre aux utilisateurs de payer le gaz indirectement via un rollup L2 ou une carte de crédit
- Intégration : autoriser les dapps à subventionner le processus d’intégration des nouveaux utilisateurs
Le problème
Sans GSN, toute personne qui envoie une transaction Ethereum doit disposer d’ETH pour payer les frais de gaz. Cela oblige les nouveaux utilisateurs à passer le KYC et à acheter de l’ETH avant de pouvoir commencer à utiliser n’importe quelle dapp. Cela peut constituer un obstacle majeur pour les utilisateurs sans expérience préalable en cryptographie et qui ne sont pas familiers avec le concept de devoir conserver l’ETH dans leur portefeuille pour l’essence.
Il s’agit également d’un problème UX pour les utilisateurs existants qui doivent continuellement reconstituer leur solde ETH pour payer les frais de gaz, même s’ils ont suffisamment de jetons ERC-20 dans leur portefeuille pour payer les transactions dont ils ont besoin.
Architecture
Client : signe et envoie une méta-transaction au serveur relais
Une méta-transaction est un nom sophistiqué pour une idée simple : un serveur relais peut envoyer la transaction d’un utilisateur et payer lui-même le coût du gaz. Au lieu de signer une transaction Ethereum, qui nécessiterait de l’ETH pour le gaz, un utilisateur signe un message contenant des informations sur une transaction qu’il souhaite exécuter et l’envoie à un serveur relais.
Serveurs relais : soumet une transaction et paie les frais de gaz du protocole Ethereum pour ce faire
Dès réception de la demande de relais d’une transaction du client, le serveur Relay validera cette transaction pour s’assurer qu’il rembourse le montant d’ETH qui couvre les frais de soumission et des frais supplémentaires pour permettre au relais de réaliser un profit.
Si tout va bien, le relais signe une transaction Ethereum native, la soumet au mempool et renvoie une transaction signée au client pour validation. En cas de problème, le client peut simplement choisir un autre serveur relais et essayer d’envoyer une transaction via un nouveau.
Cela crée un effet « un pour tous et tous pour un » où supprimer l’interface de n’importe quelle dapp est aussi difficile que supprimer l’ensemble du réseau. Plus il y a de dapps qui participent, plus la garantie de disponibilité est solide.
Paymaster : s’engage à rembourser le serveur relais pour les frais de gaz
Dans le GSN, toute la logique de remboursement du gaz est mise en œuvre dans les contrats Paymaster. Un payeur maintient un solde ETH dans le RelayHub et peut mettre en œuvre n’importe quelle logique métier pour décider d’accepter ou de rejeter une méta-transaction. Par exemple, accepter uniquement les transactions des utilisateurs sur liste blanche, ou les méthodes contractuelles requises pour l’intégration des utilisateurs qui ont également passé un captcha, ou uniquement les transactions qui incluent un remboursement en tokens au Paymaster, etc.
Forwarder : vérifie la signature de l’expéditeur et le nom occasionnel
Les contrats de destinataires sensibles aux méta-transactions reposent uniquement sur un petit contrat de transitaire de confiance pour leur sécurité. Ce contrat vérifie la signature et le nonce de l’expéditeur d’origine.
Contrat du destinataire : voit l’expéditeur d’origine et exécute la transaction d’origine
Toute méthode publique du contrat destinataire peut être exécutée via GSN.
Pour prendre en charge les métatransactions, les contrats des destinataires héritent d’une classe de base simple et les remplacent msg.sender
par _msgSender()
. Il renvoie l’expéditeur d’origine qui a signé la demande de méta-transaction.
Il est toujours possible de faire un appel de transaction natif à ce contrat. La _msgSender()
méthode reviendra simplement msg.sender
si le contrat a été appelé directement.
RelayHub : coordonne le processus de manière sans confiance
RelayHub connecte les utilisateurs exécutant des clients, des serveurs relais et des paymasters afin que les participants n’aient pas besoin de se connaître ou de se faire confiance.
Les développeurs Dapp n’ont pas besoin de comprendre ou de faire confiance au fonctionnement interne de RelayHub pour s’intégrer au GSN. Les contrats des destinataires ne sont pas exposés à des problèmes de sécurité potentiels dans RelayHub.
Sous le capot, le RelayHub aide les clients à découvrir le meilleur serveur relais tiers, empêche les serveurs relais tiers de censurer les transactions et garantit que les Paymasters remboursent les serveurs relais pour les frais de gaz ainsi que les frais de transaction.
Avis
Il n’y a pas encore d’avis.