BlockPulseNews
Définition

EOA vs Compte-contrat : définition

Sur Ethereum, un EOA (Externally Owned Account) est un compte contrôlé par une clé privée, capable d'initier des transactions, tandis qu'un compte-contrat est contrôlé par son code et ne s'exécute que lorsqu'on l'appelle.

Thème : Ethereum et smart contracts

EOA vs Compte-contrat : comment ça marche ?

Ethereum distingue deux grands types de comptes, qui partagent le même format d'adresse et peuvent tous deux détenir de l'ETH et des jetons. L'EOA est le compte classique d'un utilisateur : une paire de clés le contrôle, et toute transaction doit être signée par la clé privée. C'est lui qui déclenche les actions sur le réseau et paie les frais. Il n'a pas de code propre, seulement un solde et un compteur de transactions (nonce).

Le compte-contrat, lui, n'a pas de clé privée. Il contient du code déployé sur la blockchain et un espace de stockage. Il ne peut pas agir spontanément : il réagit quand un EOA ou un autre contrat l'appelle, en suivant strictement les règles programmées. Un protocole DeFi, une collection NFT ou un portefeuille multisignature sont des comptes-contrats. La frontière s'estompe avec l'abstraction de compte : les portefeuilles intelligents sont des comptes-contrats qui jouent le rôle de compte utilisateur, avec récupération sociale ou frais sponsorisés. Des évolutions du protocole permettent également à un EOA de déléguer son comportement à du code.

Un exemple concret

Imaginons qu'Emma, depuis son portefeuille habituel, donc un EOA, dépose des jetons dans un coffre DeFi. Elle signe la transaction avec sa clé privée. Le coffre, qui est un compte-contrat, reçoit l'appel, vérifie le montant, enregistre le dépôt et lui attribue des parts, sans qu'aucun humain n'intervienne.

Les risques à connaître

Un EOA dépend entièrement d'une seule clé privée : sa perte ou son vol signifie la perte des fonds. Un compte-contrat dépend de la qualité de son code, et une faille peut être exploitée par n'importe qui. Envoyer des jetons à un contrat qui ne sait pas les gérer peut les bloquer définitivement.

À ne pas confondre avec

  • Smart contract wallet : Un smart contract wallet est un compte-contrat particulier, conçu pour servir de portefeuille utilisateur.
  • Account Abstraction : L'abstraction de compte est l'approche qui rapproche les deux types en donnant aux comptes-contrats les usages d'un EOA.

Questions fréquentes sur EOA vs Compte-contrat

Comment savoir si une adresse est un EOA ou un contrat ?

Un explorateur de blocs indique si du code est associé à l'adresse : si c'est le cas, il s'agit d'un compte-contrat.

Un smart contract peut-il envoyer une transaction tout seul ?

Non, un contrat ne s'exécute que s'il est appelé. Une transaction est toujours initiée au départ par un compte doté d'une clé, éventuellement via un relais ou un bundler.

Termes liés

Dans le même thème : Ethereum et smart contracts

Tous les termes du thème Ethereum et smart contracts →

À lire

L'actualité : Ethereum et smart contracts

Les derniers articles de BlockPulseNews sur ce sujet.

Approfondir avec l'Académie : Ethereum en Profondeur Un module gratuit, en leçons courtes et quiz, pour maîtriser ce thème pas à pas.
Découvrir le module

Les autres termes en E

← Tout le lexique crypto de A à Z