Déployer un smart contract sur Sepolia : Le guide du dev Android qui passe au Web3

En tant que développeur Android, tu as un réflexe ancré depuis des années : tester ton app en conditions réelles avant de la livrer. Un APK sur un vrai device. Un backend de staging. Des données proches de la prod.

Mais quand ton backend est une blockchain, comment tu fais ?

C’est exactement le problème que j’ai rencontré pendant mon challenge Kotlin Multiplatform.

Mon app de vote VoteChain tourne sur Android et iOS. Mon smart contract, lui, restait sur mon localhost.

Impossible de tester une intégration mobile réaliste : mon téléphone ne peut pas parler à un nœud qui tourne dans mon terminal.

La solution tient en deux mots : Sepolia et Hardhat Ignition.

Dans ce guide, je te partage la méthode exacte que j’ai utilisée pour sortir mon contrat du localhost et connecter enfin mes apps au Web3, avec les pièges à éviter que j’ai appris à mes dépens.

Qu’est-ce que Sepolia ? (Et pourquoi s’en soucier)

Une projection holographique d'une ville numérique sécurisée représentant le bac à sable Sepolia pour le test de dApps Ethereum.

En développement mobile classique, tu peux toujours corriger un bug après coup : un hotfix, une release corrective, et on n’en parle plus. En Web3, la règle du jeu change radicalement : la blockchain est immutable.

Une fois ton smart contract déployé, toute modification est impossible. Si tu laisses passer une faille de sécurité, elle y reste pour toujours.

En Web3, il n’y a ni hotfix, ni rollback, ni « on patchera en prod ». Ton code déployé est gravé dans le marbre, public, et auditable par n’importe qui. C’est pour ça qu’un testnet n’est pas une option, c’est une obligation.

C’est précisément le rôle d’un réseau de test (testnet).

Lancé en 2021, Sepolia est aujourd’hui le testnet de référence pour les développeurs d’applications décentralisées (dApps). Il est optimisé pour simuler les interactions réelles avec les smart contracts.

C’est un environnement stable et maintenu, où l’Ether n’a aucune valeur marchande, mais où les règles sont identiques au réseau principal (Mainnet).

Pour un dev mobile, c’est l’équivalent de ton environnement de staging : tu y estimes les frais de gas et tu valides ton intégration sans risquer un centime.

1. Préparer l’infrastructure pour déployer son smart contract.

Visualisation technique d'une passerelle API (API Gateway) sécurisant le flux de données entre un script Hardhat et le réseau Sepolia.

Pour déployer le contrat, nous allons utiliser Hardhat. Si tu ne connais pas : c’est l’environnement de développement de référence sur Ethereum, un peu comme Android Studio pour le mobile, mais en ligne de commande.

Il permet de compiler, tester et déployer tes smart contracts.

Pour que Hardhat puisse « parler » à la blockchain Sepolia, il lui faut un point d’entrée. C’est ce qu’on appelle un RPC (Remote Procedure Call).

Imagine le RPC comme une API Gateway : sans elle, ton outil de développement reste isolé sur ta machine.

Je suis passé par Alchemy pour obtenir mon accès. Une fois ton application créée sur leur dashboard, tu obtiens une URL du type :

https://eth-sepolia.g.alchemy.com/v2/VOTRE_CLE_API

2. Le nerf de la guerre : obtenir du Sepolia ETH

Même sur un réseau de test, rien n’est gratuit : tu dois payer les validateurs pour inscrire ton contrat dans la blockchain. C’est ce qu’on appelle le Gas.

L’analogie du billet de Monopoly

Des billets de Monopoly marqués Sepolia ETH "No Value" sortant d'un robinet technique vers un portefeuille numérique.

Vois le Sepolia ETH comme des billets de Monopoly. Tu en as absolument besoin pour acheter des propriétés ou construire des hôtels sur le plateau (effectuer des transactions), mais ces billets n’ont aucune valeur au supermarché du coin.

Ils te permettent de jouer sérieusement, sans risquer ton propre compte en banque.

Pour obtenir ces billets, j’ai utilisé le Sepolia PoW Faucet. Contrairement à un envoi immédiat en un clic, ce service utilise la « Preuve de Travail » (Proof of Work) :

  • Tu entres l’adresse publique de ton compte Ethereum
  • Tu lances le minage directement dans ton navigateur
  • Une fois assez de crédit accumulé, tu réclames tes jetons

Concrètement, j’ai lancé le minage dans mon navigateur, laissé mon ordinateur travailler, et je suis parti faire ma séance de sport. À mon retour, environ 1h plus tard, j’avais récupéré l’équivalent d’une dizaine de dollars en Sepolia ETH — des dollars de Monopoly, donc.

C’est la méthode la plus fiable pour obtenir du Sepolia ETH aujourd’hui. La plupart des faucets « gratuits » exigeant désormais un solde sur le Mainnet.

3. Configuration de Hardhat : Sécurité d’abord !

C’est le point où beaucoup de développeurs se font piéger. La règle d’or est simple : ne commite jamais tes clés privées.

Une clé privée qui fuite sur un dépôt Git, c’est un compte compromis de façon irréversible.

Sur un testnet, tu perds du faux ETH. Sur le Mainnet, tu perds tout.

J’ai donc stocké mes secrets directement dans mon système, via le fichier de configuration de mon terminal (~/.zshrc).

Mes clés sont ainsi disponibles sous forme de variables d’environnement globales sur ma machine, sans jamais risquer d’être poussées par erreur sur un dépôt distant comme GitHub.

# Dans mon ~/.zshrc
export SEPOLIA_RPC_URL="url_alchemy"
export SEPOLIA_PRIVATE_KEY="cle_privee"

Ensuite, j’utilise la syntaxe moderne de Hardhat au moment où j’écris cet article (defineConfig) et la fonction configVariable pour récupérer ces valeurs de manière propre et typée dans mon hardhat.config.ts :

import hardhatToolboxViemPlugin from "@nomicfoundation/hardhat-toolbox-viem";
import { configVariable, defineConfig } from "hardhat/config";

export default defineConfig({
  plugins: [hardhatToolboxViemPlugin],
  solidity: {
    profiles: {
      default: { version: "0.8.28" },
      production: {
        version: "0.8.28",
        settings: {
          optimizer: { enabled: true, runs: 200 },
        },
      },
    },
  },
  networks: {
    sepolia: {
      type: "http",
      chainType: "l1",
      url: configVariable("SEPOLIA_RPC_URL"),
      accounts: [configVariable("SEPOLIA_PRIVATE_KEY")],
    },
  },
});

4. Déployer sur Sepolia avec Hardhat Ignition.

Une fusée futuriste décollant d'une console de commande affichant des logs de déploiement réussis sur la blockchain Sepolia.

C’est ici que la magie opère. Hardhat Ignition est le nouveau système de déploiement déclaratif qui remplace les vieux scripts impératifs, complexes et fragiles.

Lance simplement la commande suivante dans ton terminal :

npx hardhat ignition deploy ignition/modules/votre_module.ts --network sepolia

Une fois le déploiement terminé, Ignition affiche l’adresse de ton contrat.

Copie et colle-la dans Etherscan Sepolia pour voir ton contrat « vivre » réellement sur la chaîne.

Pour te donner un ordre de grandeur réel : le déploiement de mon contrat VoteChain m’a coûté exactement 0,000193 ETH de frais de transaction, avec un gas price de 2,57 Gwei ce jour-là.

Et puis il y a ce moment. Tu copies l’adresse, tu la colles dans Etherscan, et ton contrat est là. Public. Vérifiable par n’importe qui sur la planète.

Ce que j’ai ressenti à cet instant ? Une vraie satisfaction. Parce que je savais exactement ce que ça voulait dire : mon backend était live. Il ne me restait « plus qu’à » construire les apps mobiles.

Du localhost au monde réel

Passer au testnet est une étape majeure dans le parcours d’un dev mobile qui découvre le Web3 : ton code n’est plus local, il est public et persistant.

C’est la fondation qui m’a permis de connecter VoteChain, mon app Kotlin Multiplatform, à un vrai réseau Ethereum, celle qui a fait passé mon mon challenge de compétences de mon terminal défnitivement.

Et toi, quelle méthode utilises-tu pour gérer tes secrets de déploiement ? Team variables système ou fichiers locaux ? On en discute en commentaires !

Pour aller plus loin :

🗒️ Résumé technique

BesoinRôleSource / Outil
RPC SepoliaPoint d’accès réseauSimule l’EVM du Mainnet (Via Alchemy)
SecretsSécurité systèmeVariables d’environnement (~/.zshrc)
ConfigurationModern HardhatdefineConfig + configVariable
Sepolia ETHPaiement du gasObtenu via Faucet PoW (pk910)

❓FAQ

Pourquoi stocker les clés dans le ~/.zshrc ?

Cela permet d’avoir accès à vos secrets globalement sur votre machine sans créer de fichiers locaux dans vos projets, minimisant ainsi le risque de fuite accidentelle sur Git.

Qu’est-ce que l’optimiseur dans la configuration Solidity ?

Il permet de réduire la taille du bytecode de votre contrat et donc de diminuer les frais de gas lors du déploiement.

Comment voir mon contrat après le déploiement ?

Copiez l’adresse du contrat générée par Ignition et collez-la dans l’explorateur Etherscan Sepolia.

Sanders

➡️ Rejoins la newsletter. Reçois du contenu que tu ne trouveras nulle part ailleurs.

Si tu as aimé l'article, tu es libre de le partager! 🙂

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire