Wallets
0x568B
July 1st, 2022

Initialement publié en anglais par StarkWare le 3 juin 2020

La série sur les wallets self-custody, partie III

StarkEx est un moteur de scalabilité self-custody. Nous avons décrit les différentes facettes d'un système self-custodial, les wallets étant l'une d'entre elles. Cet article décrit le travail que nous avons effectué avec différents fournisseurs de wallets pour nous assurer que StarkEx reste un système self-custody.

Une caractéristique importante d'un système self-custodial est que chaque interaction nécessite la signature de l'utilisateur. Notre principe directeur est "ne vous contentez pas de signer, vérifiez" - il suit directement le vieil adage de la blockchain : "ne faites pas confiance, vérifiez". En d'autres termes, en l'absence de vérification de la part de l'utilisateur, le système peut rester self-custody en nom uniquement. L'utilisateur devrait être en mesure de vérifier les paramètres de l'interaction entre son wallet et une application self-custody. Par exemple, lorsque l'utilisateur fournit sa signature dans le cadre d'une interaction avec un contrat on-chain, le wallet ne devrait pas présenter un bloc de données apparemment cryptique, mais plutôt un message lisible par l'homme. Le même principe devrait s'appliquer aux applications de Layer 2, où l'utilisateur doit signer des transactions off-chain.

Afin de mettre en œuvre le principe "ne vous contentez pas de signer, vérifiez", nous avons travaillé avec plusieurs fournisseurs de wallets pour intégrer notre protocole directement dans leurs produits. Cette intégration est particulièrement importante pour les systèmes ZKP. Pour permettre de prouver efficacement les signatures, les systèmes ZKP de Layer 2 travaillent généralement avec une courbe différente de la courbe Ethereum standard et utilisent des fonctions de hachage différentes. Une solution facile consiste à mettre en œuvre un wallet dans le navigateur. Nous préférons ne pas le faire pour deux raisons. Premièrement, l'objectif de StarkEx est de permettre aux utilisateurs de disposer d'une plateforme de trading professionnelle, directement à partir de leur wallet, sans qu'ils aient à déplacer ces fonds ailleurs. Deuxièmement, construire un wallet sûr n'est pas une tâche triviale (le récent et grave bug du frontend de Loopring en est un exemple).

Voici une liste des wallets pris en charge à partir de mai 2020 (date de lancement du premier système StarkEx sur le Mainnet Ethereum, qui alimente DeversiFi)

Ledger : Entièrement intégré

StarkEx est entièrement intégré à Ledger. Chaque interaction, qu'il s'agisse d'un appel de contrat on-chain ou d'une soumission d'ordre off-chain, sera analysée par Ledger, présentée à l'utilisateur et confirmée explicitement par l'utilisateur avant de signer dans Ledger. Les utilisateurs seront en mesure de vérifier les paramètres de chaque interaction. En outre, Ledger prendra en charge StarkEx sur son application Ethereum native (les utilisateurs n'auront même pas à installer une application spécifique de Ledger Live).
Cette intégration a nécessité l'ajout de la courbe spécifique à STARK au micrologiciel de Ledger, et la mise en œuvre de la fonction de hachage de StarkWare (fonction de hachage de Pedersen) dans l'application de Ledger. Une collaboration étroite entre StarkWare et Ledger a abouti au premier wallet matériel adapté à L2.

WalletConnect : Entièrement intégré

StarkEx est entièrement intégré à WalletConnect. WalletConnect est un protocole ouvert permettant de connecter (via un code QR) des applications de bureau à des wallets mobiles en utilisant un cryptage de bout en bout. En collaboration avec Pedro Gomes, nous avons implémenté les interactions StarkEx, pour créer le fournisseur StarkEx WalletConnect. DeversiFi, le premier exchange self-custodial construit sur la base de StarkEx, a intégré WalletConnect à son application. Argent, un wallet mobile, travaille actuellement à l'intégration avec le fournisseur StarkEx WalletConnect et supportera bientôt le trading self-custodial sur DeversiFi.

MetaMask : Solution hybride

Nous avons actuellement une solution hybride pour les utilisateurs de MetaMask. Toutes les transactions on-chain seront gérées par MetaMask, et toutes les transactions off-chain seront gérées par un wallet in-browser (le premier est le wallet de DeversiFi). Cette solution est comparable à la plupart des solutions de Layer 2 actuelles et nous permet de soutenir la base utilisateur déjà présente de MetaMask. Cette solution ne respecte pas la meilleure pratique décrite ci-dessus : les utilisateurs ne peuvent pas vérifier les appels de contrats on-chain, ni leurs transactions off-chain. Ce problème sera corrigé lorsque MetaMask déploiera son système de plugin Snaps. Nous continuerons à travailler en étroite collaboration avec l'équipe de MetaMask en tant que partenaire de conception de Snaps (voir notre démonstration commune à Devcon5), ce qui permettra à StarkEx de fournir aux utilisateurs de MetaMask une solution respectant nos meilleures pratiques.

Traduction faite par Valentin Negro

Arweave TX
ANZzNYI9LRv_6emLiQgOJAVNU_XtZHGFlE5zo7wmvVw
Ethereum Address
0x568B12eBBE85521D2cd8a2C9B7a8EF3f48aa2d66
Content Digest
KzFb5qAnwFWPd6JIG4GJt_S_UJf28XZRgpBbNkC9a9c