• 1000

Starknet Multisig : Portefeuille multi-signatures sur Starknet


Contexte
: Projet R&D

Equipe

  • Antoine Mecker
  • Vincent Bonnet
  • Florian Bouchut
Starknet Multisig : Portefeuille multi-signatures sur Starknet

Histoire du Projet

La question de la conservation et la sécurisation des crypto-actifs est devenue extrêmement importante et de plus en plus de solutions émergent pour adresser les besoins des particuliers et des institutionnels, tout particulièrement en self-custody (auto-conservation). Ainsi, on observe que ces solutions souhaitent non seulement permettre la conservation des crypto-actifs mais aussi rajouter une couche permettant de conditionner cette gestion, c'est-à-dire dépasser le modèle clé privée / clé publique pour offrir des solutions qui soient plus sécurisées, flexibles et orientées pour les entreprises.

En ce sens, nous avons étudié et identifié au cours des derniers mois les technologies les plus innovantes du secteur crypto permettant d'offrir cette gestion poussée de crypto-actifs.

L'idée derrière ce projet est donc de construire un portefeuille multi-signatures (à l'image de ce que propose Safe) mais sur l'infrastructure Starknet. La combinaison de ce moyen de sécurisation et de cette infrastructure va nous permettre de profiter de toutes les évolutions qu'apporte l'Account Abstraction: c'est le fait de rendre programmable l'account qui détient vos actifs pour pouvoir insérer de la logique dans son fonctionnement.

Notre projet consiste en une application web permettant aux utilisateurs de créer un portefeuille multi-signatures en choisissant le nombre de validations nécessaires pour effectuer une transaction.

Une fois ce portefeuille créé, il disposera ensuite d'une adresse pour recevoir et sécuriser des fonds.

Enfin, ce portefeuille multi-signatures a été amélioré pour avoir la possibilité d'implémenter différentes règles de dépense et de gouvernance à l'intérieur même de celui-ci (listes blanches et noires d'adresses destinataires, droits privilégiés pour certains signataires, paliers de dépenses, etc...)


Les aspects techniques

Starknet étant un écosystème très jeune et en constante évolution, nous avons abordé le sujet par différentes approches.

Nous avons effectué une première phase de recherche visant à établir un état de l'art de l'Account Abstraction sur Starknet. En effet, l'objectif de ce portefeuille multi-signatures est que les signataires du portefeuille utilisent des outils cryptographiques pour signer les transactions et qu'ils puissent interagir avec celui-ci sans avoir besoin de portefeuille personnel pour payer des frais de transactions.

Nous nous sommes rendu compte que peu voire aucun outil n'est actuellement disponible pour effectuer ces signatures et nous sommes donc orientés dans un premier temps vers un smart contract wallet. C'est un portefeuille qui va être régi par des règles définies dans un contrat intelligent sur la blockchain. Cela va apporter davantage de résilience en termes de sécurité car toutes ces règles sont inscrites on-chain. Pour finir, les utilisateurs ont besoin de portefeuilles externes (ArgentX ou Braavos) pour interagir avec ce smart contrat wallet.

Du côté de la stack technique, nous avons développé les contrats en Cairo, le langage de développement de Starknet et avons utilisé Nile pour effectuer les tests unitaires. Pour la partie frontend, nous nous sommes servis de NextJS et Tailwind ainsi que de Vercel pour le déploiement et enfin la librairie starknet-react pour l'intégration web3. Le projet a été déployé uniquement sur le testnet pour le moment car le mainnet de Starknet est encore instable.

L'objectif est maintenant pour nous de suivre les avancées technologiques de Starknet pour proposer une deuxième version de ce portefeuille multi-signatures qui nous permettra d'implémenter des concepts qui ne sont pour le moment disponibles qu'en théorie.


Un portefeuille multi-signatures dédié aux entreprises ?

La conservation et la gestion de crypto-actifs par des entreprises présentent des enjeux très importants. Ils concernent les différentes règles de gouvernance qui vont définir quels acteurs sont autorisés à déplacer des fonds et en quelle quantité ainsi qu'une mise en place de whitelist et de blacklist d'adresses destinataires. Il est possible de personnaliser ces règles selon les besoins et prérequis de chaque entreprise, tout cela dans le but de réduire les Single Point of Failure.

A l'heure actuelle, les règles qui contrôlent notre portefeuille multi-signatures sont personnalisables selon les paramètres suivants :

  • Nombre de confirmations requises pour confirmer une transaction

  • Cryptoactif autorisé à être dépensé ou non

  • Limite de dépense par utilisateur (ex: Utilisateur 1 peut dépenser jusqu'à 1 ETH sans intervention des autres utilisateurs)

  • Whitelisting d'adresse de réception (ex: Toutes les transactions qui ont pour destination une autre adresse interne peuvent être validées instantanément)


A propos de l'Account Abstraction

L'Account Abstraction est une potentielle amélioration du protocole Ethereum qui est discutée depuis plusieurs années par ses développeurs. Aujourd'hui, même si les effets et le contenu d'une transaction sont programmables (grâce à l'EVM), les conditions de validité de cette même transaction sont fixées par le protocole: vérification du nonce ainsi que de la signature ECDSA.

L'Account Abstraction aborde donc la problématique suivante:

 

Peut-on permettre aux conditions de validité de la transaction d'être aussi programmables ?

La solution offerte à cette problématique à travers le concept d'Account Abstraction ouvre la voie à de nouveaux cas d'usages qui permettront de sécuriser davantage la conservation de fonds mais aussi améliorer l'expérience utilisateur de ces solutions:

  • Introduction de nouvelles signatures cryptographiques autres que ECDSA pour la validation de transaction (Multi-signatures natif, Schnorr, BLS, cryptographie quantum résistante)

  • Création de portefeuille avec des mécanismes de sauvegarde et de récupération intégrés (introduction de gardiens qui permettent de récupérer les fonds si les accès au portefeuille sont perdus)

  • Clé de session qui validerait automatiquement les transactions pendant une certaine durée (session de jeu blockchain)

  • Paiement des frais dans un autre jeton que celui natif de la chaîne (ex: stablecoin) 

  • Transactions groupées en batch

  • Portefeuille à usage unique

Après la réussite de "The Merge" d'Ethereum en septembre 2022, il semblerait que l'Account Abstraction soit revenue sur le devant de la scène et que de nombreux développeurs s'attèlent à la tâche pour trouver une façon de l'implémenter sur Ethereum (nouveaux EIPs, proof of concept...). Heureusement, sur les solutions de scalabilité de Layer 2 qui sont plus récentes telles que Starknet ou Zksync 2.0, l'Account Abstraction a été implémentée nativement, nous permettant déjà de tester les possibilités que nous ouvre cette évolution.


Nos autres réalisations techniques


Aller plus loin


Contact