Le problème des dApps monolithiques
Beaucoup de dApps mélangent la logique métier, les appels blockchain et l'UI dans un chaos inextricable. L'architecture hexagonale résout ce problème.
Les ports et adaptateurs
Le cœur de l'application (domaine) est isolé des détails techniques via des interfaces :
- Ports primaires : API exposée par le domaine
- Ports secondaires : interfaces vers l'extérieur (blockchain, DB)
- Adaptateurs : implémentations concrètes (ethers.js, prisma)
Exemple concret
// Port secondaire
interface TokenRepository {
getBalance(address: string): Promise;
transfer(from: string, to: string, amount: bigint): Promise;
}
// Adaptateur Ethereum
class EthereumTokenRepository implements TokenRepository {
constructor(private contract: Contract) {}
async getBalance(address: string) {
return this.contract.balanceOf(address);
}
}
Bénéfices
Tests unitaires sans blockchain, changement de chaîne facile, code lisible et maintenable.


