\N- [IMPACT\N] Veuillez décrire la solution que vous proposez.
Avant de décrire la solution, il est important de décrire le problème avec plus de détails, car les détails aident à comprendre pourquoi il est raisonnable de croire qu'il est possible d'optimiser le temps de synchronisation par 10x, ce qui est un objectif assez ambitieux.
D'après l'expérience de l'auteur dans la construction et l'optimisation de systèmes de calcul distribué, un objectif raisonnable d'optimisation logicielle est de rendre le logiciel suffisamment performant pour que le matériel soit un goulot d'étranglement. En général, ces goulots d'étranglement matériels sont la bande passante du réseau, l'utilisation du CPU ou la bande passante du système de stockage.
**Daedalus utilise-t-il bien les ressources matérielles disponibles ?
En réfléchissant à cette proposition, j'ai examiné de plus près Daedalus et Cardano Node pour voir dans quelle mesure le logiciel est loin d'utiliser pleinement ces trois ressources majeures. D'après mes calculs, il est très loin (plus de 10x) de l'une de ces limites. Voici mes calculs :
- Réseau. Le Ledger Cardano consomme environ 60 Go de stockage en ce moment. C'est sans compression. Sans tenir compte de la compression pour le moment, un utilisateur disposant d'une connexion Internet de 250 MBits/sec (~30MBytes/sec) devrait télécharger 60GB en une demi-heure environ (60GB / 30MB/sec ~ 2000 secondes ou 33 minutes). Donc, plus de 10x plus rapide que les 12-24 heures qu'une synchronisation complète prend actuellement.
- CPU. Cardano utilise la fonction de hachage Blake2b (<https://www.blake2.net/>), qui peut vérifier jusqu'à 1 Go de données par seconde et par CPU. Étant donné un système moderne à 8 cœurs, cela donne 8 Go/sec de puissance de hachage. Au rythme de 8 Go/sec, un grand livre de 60 Go peut être traité en 7,5 secondes ! Ensuite, Cardano utilise la cryptographie à clé publique rapide et sécurisée Ed25519 à courbe elliptique, qui peut vérifier 30 000 signatures par seconde et par CPU. Sur un système à 8 cœurs, cela représente 240 000 signatures par seconde. En supposant que chaque bloc cardano nécessite de vérifier 100 signatures, 350 époques et 21600 blocs par époque, la blockchain entière devrait être vérifiée en moins d'une heure : (350 époques x 21600 blocs par époque x 100 signatures par bloc / 240000 vérifications par seconde) = 3150 secondes. Donc, encore une fois, 10x plus rapide que le temps actuel.
- Le stockage. Un SSD PCIe moderne peut lire et écrire au moins à la vitesse de 1 Go/sec, et les modèles les plus récents approchent les 7 Go/sec. Même en prenant le taux plus lent de 1GB/sec, le grand livre entier peut être lu en 60 secondes. Il s'agit là d'une différence de 10000x par rapport aux 12-24 heures nécessaires à Daedalus, de sorte que le stockage n'est certainement pas le goulot d'étranglement ici.
Après avoir effectué les calculs ci-dessus, trois expériences techniques rapides ont été menées pour vérifier qu'il existe des moyens pratiques d'améliorer la situation. Ces expériences sont décrites à la fin de cette section.
Le plan d'amélioration
Les calculs ci-dessus et les résultats des expériences suggèrent que les optimisations doivent se concentrer sur les points suivants :
- l'amélioration de l'utilisation du réseau pendant la synchronisation.
- des améliorations dans le code responsable de la reconstruction de l'historique du portefeuille.
En outre, comme il ne suffit pas d'avoir de meilleurs algorithmes pour améliorer l'expérience de l'utilisateur, ces algorithmes seront intégrés dans le logiciel disponible pour le grand public.
Par conséquent, le plan est le suivant :
- Préparer une méthode pour une livraison plus efficace des données historiques de la blockchain sur le réseau vers une nouvelle installation Daedalus. Pour l'instant, la solution la plus simple semble être une variante du protocole BitTorrent afin de garantir que la capacité du réseau s'adapte bien au nombre de clients et qu'elle soit conforme à l'approche globale de la décentralisation.
- Préparer un algorithme pour une reconstruction plus rapide de l'historique du portefeuille à partir d'une blockchain sur disque. Ici, au moins deux approches sont intéressantes : l'indexation et une meilleure utilisation des processeurs multi-cœurs. L'indexation permettra à Daedalus de ne scanner que les blocs de la blockchain qui sont susceptibles (ou certains) d'avoir des transactions affectant un portefeuille donné (il existe un certain nombre de solutions robustes dans le domaine des bases de données, telles que les index B-Tree, les tables de hachage, etc.) Pour l'utilisation multi-core, la recherche de blocs pertinents pour l'historique d'un portefeuille donné peut être faite en parallèle pour réduire le temps d'attente pour l'utilisateur.
- Créer un lanceur Daedalus/des applications de bureau pour Windows et Mac OS, et des utilitaires de ligne de commande pour Linux, permettant au grand public de bénéficier des synchronisations rapides pendant que les algorithmes sont examinés par l'IOHK pour être inclus dans le code principal de Daedalus et Cardano Node. Ces applications garantiront qu'au moins un transfert plus rapide de la blockchain sur le réseau est disponible pour les utilisateurs finaux. S'il est possible de pré-initialiser les données du portefeuille pour Daedalus par une application enveloppante est quelque chose que je dois encore rechercher.
- Créer l'infrastructure de réseau nécessaire (serveurs géographiquement distribués avec une bande passante élevée ; snapshots régulièrement créés de la blockchain pour la distribution) pour s'assurer que les applications clientes peuvent télécharger la blockchain rapidement même dans les cas où il n'y a pas assez de pairs pour un téléchargement peer-to-peer à haut débit.
- Examinez la meilleure façon d'utiliser les algorithmes de compression pendant le transfert sur le réseau et le stockage sur disque des données de la blockchain. Les algorithmes, tels que LZ4, qui offrent une vitesse de décompression extrêmement élevée (1000+MBytes/sec par cœur) sont intéressants, car ils permettent de libérer des ressources CPU pour d'autres tâches.
- Travailler avec IOHK par la création de problèmes GitHub et de demandes de Pull pour les soutenir dans le processus d'intégration des nouveaux algorithmes dans le code principal des projets Daedalus et Cardano Node.
Ce plan est provisoire car des solutions alternatives peuvent être découvertes lors d'investigations plus approfondies. L'objectif de ce plan est de montrer qu'il existe des actions spécifiques et réalisables qui peuvent être prises pour améliorer la situation.
Détails techniques/algorithmiques
- Pour améliorer l'utilisation du réseau, le plan actuel (sujet à changement si des recherches plus approfondies mettent en évidence une meilleure alternative) consiste à
- utiliser un protocole de type BitTorrent, ce qui signifie que pendant le processus de Turbo-Sync, l'ordinateur client fera partie d'un réseau de téléchargement peer-to-peer et ne téléchargera pas seulement les dernières données de la blockchain mais les partagera avec d'autres clients.
- utiliser toutes les extensions peer-to-peer pertinentes, telles que la prise en charge du protocole trackerless, l'échange peer-to-peer de nœuds sur le réseau, etc.
- utiliser la politique classique de partage des blocs les plus rares en priorité.
- Pour améliorer les performances de la reconstruction de l'historique du portefeuille
- une méthode simple mais peu risquée - utiliser des processeurs multi-cœurs :
- la première étape nécessaire pour reconstruire l'historique d'un porte-monnaie est d'identifier les blocs de la blockchain qui contiennent des transactions avec des adresses d'envoi ou de réception (un porte-monnaie peut en avoir plusieurs) dérivées de la clé privée du porte-monnaie. Nous appellerons cette étape l'identification des blocs pertinents.
- bien que l'identification des blocs pertinents soit nécessaire pour reconstruire entièrement l'historique d'un portefeuille, la bonne nouvelle est que pour la plupart des portefeuilles, seule une petite fraction de blocs (moins de 1 %) contient des transactions liées.
- La façon la plus simple de réduire le temps d'exécution est d'utiliser simplement tous les cœurs disponibles pour exécuter les opérations de cryptographie à clé publique vérifiant si une adresse donnée est dérivée du portefeuille concerné. C'est donc le plan minimum.
- Une fois que les blocs pertinents sont identifiés, nous pouvons utiliser exactement le même processus de reconstruction que celui utilisé actuellement, mais en lui demandant de faire beaucoup moins de 1% de ses blocs d'origine - puisque la plupart n'ont pas de transactions dans de nombreux blocs de la blockchain.
- Une approche alternative :
- la plupart des portefeuilles Cardano populaires génèrent une clé de mise en jeu en même temps que la clé de paiement, et la bonne nouvelle est que la clé de mise en jeu ne change pas et peut être extraite directement de toute adresse de paiement utilisée dans une transaction.
- l'idée est alors de créer un index (une structure de données spéciale) pour chaque bloc permettant de vérifier rapidement s'il y a eu des transactions dans le bloc à partir d'un portefeuille décrit par une clé d'enjeu donnée.
- Cet index peut être précalculé et partagé avec les données de la blockchain distribuées par la méthode Turbo Sync.
- En disposant de l'indice, Daedalus peut réduire la complexité de la vérification de plus de 100x (le % de blocs qui contiennent des transactions faisant référence à un portefeuille donné est dans la plupart des cas inférieur à 1/100ème) en ne regardant que les blocs qui sont suggérés par l'indice.
Expérience 1 - transfert rapide de l'historique de la blockchain
L'expérience suivante a été menée pour prouver que la blockchain sur disque peut être transférée à des vitesses utilisant pleinement la capacité du réseau disponible :
- créer une nouvelle machine virtuelle (j'ai utilisé Linux) et installer une nouvelle copie de Daedalus.
- lancer Daedalus pour le laisser créer son système de stockage de fichiers local (sous Linux, c'est sous $HOME/.local/share/Daedalus/mainnet).
- arrêtez Daedalus après plusieurs minutes d'exécution.
- prenez un autre ordinateur sur lequel Daedalus est installé et entièrement synchronisé. Dans ce cas, un ordinateur Windows a été utilisé
- Prenez une copie de la blockchain locale de "%APPDATA%\Daedalus Mainnet\\\\\\\\\\\\\\\\\\\\\\_blockhain" et ""%APPDATA%\\\\\\\\\\_chain/ledger" et mettez les fichiers dans une archive. Cela fait environ 60 Go non compressés, et 20 Go compressés.
- Téléchargez l'archive sur un serveur avec une connexion haut débit (1GBit/sec).
- Télécharger l'archive sur la machine virtuelle Linux. Bien entendu, ce téléchargement a pu utiliser pleinement le réseau.
- Décompressez les fichiers dans $HOME/.local/share/Daedalus/mainnet/chain/blockchain et $HOME/.local/share/Daedalus/mainnet/chain/ledger.
- Lancez Daedalus dans la machine virtuelle et mesurez le temps jusqu'à ce qu'il signale qu'il est entièrement synchronisé.
Dans mon cas, le temps de démarrage incluant la synchronisation à 100% sur une telle configuration pré-initialisée n'a pris que 5 minutes. Donc, cette expérience prouve les points suivants :
- Il est facile de transférer l'état historique de la blockchain à la vitesse maximale du réseau.
- Le format sur disque utilisé par Daedalus et Cardano Node est compatible avec différents systèmes d'exploitation - Linux et Windows dans ce cas.
Expérience 2 - Reconstruction de l'historique du portefeuille avec les données synchronisées de la blockchain.
Pour de nombreux utilisateurs, l'étape suivante après avoir installé et synchronisé Daedalus est soit de créer un nouveau portefeuille, soit de récupérer un portefeuille précédemment créé. J'ai donc fait ce qui suit :
- J'ai pris la même machine virtuelle avec Daedalus synchronisé à 100%.
- J'ai récupéré le portefeuille que j'avais créé précédemment.
- Mesuré le temps jusqu'à ce que Daedalus rapporte que l'historique complet du portefeuille est prêt.
Dans mon cas, cela a pris 6 heures ! Et ce, avec des données de grand livre entièrement synchronisées et déjà stockées sur le disque local !
Cette expérience prouve le point suivant :
- Même si le réseau n'est plus le goulot d'étranglement, l'algorithme de reconstruction de l'historique du portefeuille prend toujours énormément de temps.
- Le temps qu'il prend est 1000x plus que ce dont le système de stockage local a besoin pour lire les données sur le disque, ce qui suggère un potentiel important d'optimisation algorithmique.
Expérience 3 - Extraction des clés d'enjeu à partir des adresses de paiement des portefeuilles.
L'une des questions auxquelles je voulais vraiment répondre est de savoir s'il existe un moyen pour le Daedalus d'analyser uniquement les blocs de la blockchain qui contiennent des transactions pertinentes pour un portefeuille donné. Si cela est possible, cela peut facilement permettre des accélérations de 100x et plus, simplement parce que la plupart des portefeuilles ont moins d'une centaine de transactions dans leur historique, alors que la blockchain entière crée 21600 blocs à chaque époque (tous les 5 jours). L'un des moyens d'y parvenir est de créer une nouvelle structure de données permettant de vérifier rapidement si un bloc donné contient des données pertinentes pour un portefeuille donné. Normalement, cela est difficile à faire puisque chaque portefeuille peut avoir de nombreuses adresses de paiement, mais en pratique, la plupart des portefeuilles Cardano génèrent non seulement une adresse de paiement mais aussi une clé d'enjeu et cette clé ne change pas et peut être extraite de l'adresse de paiement et ensuite utilisée pour vérifier si une adresse de paiement donnée est susceptible d'être liée à un portefeuille donné. Pour tester cette hypothèse, j'ai fait ce qui suit
- Pris la librairie Cardano Serialization d'Edmurgo : https://github.com/Emurgo/cardano-serialization-lib
- Écrit un script très simple (une copie ci-dessous) pour voir s'il est facile d'extraire la clé de pieu de plusieurs adresses de paiement du même portefeuille généré par Daedalus et Yoroi.
- Vérifier si le script renvoie la même clé d'enjeu pour toute adresse de paiement liée à plusieurs portefeuilles en ma possession.
Le résultat a été que oui - toutes les adresses de paiement d'un même portefeuille ont la même clé de mise en jeu extraite, qui peut potentiellement être utilisée pour créer un index de recherche rapide pour trouver les blocs qui contiennent des transactions liées à un portefeuille donné.
Le script pour Node.JS (suppose que le paquet importé est installé avec npm d'abord).
> import * as CardanoWasm from '@emurgo/cardano-serialization-lib-nodejs' ;
> const addresses = [ <a list of Cardano addresses starting with addr> ; ] ;
> for (const addrStr of addresses) {
> let addr = CardanoWasm.Address.from_bech32(addrStr) ;
> let stakeCred = CardanoWasm.BaseAddress. from_address(addr).stake_cred() ;
> console.log(addrStr, '=>', 'stake:', Buffer.from(stakeCred.to_keyhash().to_bytes().buffer).toString("hex")) ;
> }
[IMPACT] Veuillez décrire comment votre solution proposée répondra au défi pour lequel vous l'avez soumise.
Daedalus Wallet est l'une des Dapps les plus populaires de l'écosystème Cardano. Cette proposition vise à améliorer considérablement (10x) l'expérience utilisateur des nouveaux utilisateurs de Cardano - l'expérience de la mise en place d'un portefeuille décentralisé et de la vérification occasionnelle du solde et des transactions. L'amélioration de cette expérience est susceptible d'être visible pour la plupart des personnes de l'écosystème Cardano et pour celles qui ne font que découvrir Cardano. Ainsi, cette proposition est susceptible d'être un stimulant majeur pour le nombre d'utilisateurs actifs de Cardano et leur engagement dans l'écosystème.
Cette proposition soutient directement les indicateurs clés de performance suivants du défi Dapps, produits et intégrations :
- elle augmente l'utilisation du portefeuille Cardano véritablement décentralisé, Daedalus, au lieu des portefeuilles légers centralisés, tels que Yoroi.
- il augmente l'adoption de Cardano - le nombre de personnes qui interagissent régulièrement avec la blockchain Cardano, puisque le portefeuille primaire décentralisé est plus facile à utiliser.
- il augmente le nombre de transactions effectuées, puisqu'il est plus pratique d'utiliser occasionnellement le porte-monnaie.
- il augmente la qualité d'un produit majeur existant - Daedalus Wallet.
- il augmente l'utilisation d'un produit majeur existant - Daedalus Wallet.
En outre, étant donné que l'un des principaux composants sous-jacents qui sera amélioré - la synchronisation de l'historique de la blockchain - est également utilisé par les opérateurs du pool de pieux Cardano, cette proposition peut améliorer la stabilité globale du réseau de l'écosystème Cardano en fournissant aux opérateurs du pool de pieux des outils pour une reprise après sinistre plus rapide (mise en place d'un nouveau nœud après un crash irrécupérable du serveur). En effet, la première étape de la mise en place d'un nœud de stake pool est exactement la même que la synchronisation du grand livre.
Enfin, la recherche de la meilleure façon d'utiliser les algorithmes de compression peut ouvrir la voie à la création d'un portefeuille mobile décentralisé - une application mobile consommant 70 Go est probablement irréaliste pour de nombreux utilisateurs, mais une application qui ne nécessite que 20 Go ou 30 Go peut être beaucoup plus réalisable. Encore une fois, il n'est pas réaliste de laisser une application de portefeuille mobile fonctionner en permanence en arrière-plan juste pour s'assurer qu'elle est synchronisée - cela videra très rapidement la batterie du téléphone, mais une resynchronisation plus rapide, ne nécessitant que 5 à 10 minutes après un mois d'inactivité, rend l'utilisation d'un portefeuille mobile entièrement décentralisé beaucoup plus réaliste.
Quels sont les principaux risques qui pourraient vous empêcher de mener à bien le projet et veuillez expliquer comment vous allez atténuer chaque risque ?
Les plus grands risques derrière cette proposition sont :
-
Trouver un algorithme capable de saturer entièrement le réseau du client tout en transférant les données de la blockchain. Même si, il est possible qu'il y ait des défis avec l'intégration du nouvel algorithme. Les principaux algorithmes eux-mêmes ont été testés par la communauté Internet au cours des 20 dernières années. Par exemple, le protocole BitTorrent est disponible depuis plus de 20 ans et est capable de transférer des données à la pleine bande passante du canal réseau de l'utilisateur. À mon avis, le risque d'échec est donc faible.
-
Trouver un algorithme de reconstruction de l'historique du portefeuille qui soit plus efficace ou qui utilise mieux les processeurs multi-cœurs des ordinateurs portables et des ordinateurs modernes. Il s'agit d'un risque plus sérieux car il ne peut y avoir de compromis en ce qui concerne la qualité de la vérification. Dans le même temps, des méthodes telles que les index (oui, comme à la fin d'un livre - une structure spéciale permettant de trouver plus rapidement les informations pertinentes) sont activement utilisées dans le domaine des bases de données avec un grand succès. Même si l'indexation n'est pas envisageable, la recherche des blocs contenant les transactions d'un portefeuille donné à l'aide de plusieurs processus en parallèle peut être une solution permettant de réduire le temps d'attente des utilisateurs finaux.
-
Assurer une intégration transparente des algorithmes trouvés dans les projets Daedalus et Cardano Node. D'après l'expérience de l'auteur en tant que proposant financé, les équipes du BCIH sont très occupées, il n'est donc pas réaliste d'espérer une intégration rapide de solutions complexes. Pour faire face à ce risque, cette proposition fait deux choses :
-
Fournit une application Daedalus Turbo autonome, qui fonctionnera comme un lanceur pour le Daedalus et garantit que le Daedalus n'aura pas à synchroniser l'ensemble de la blockchain lui-même.
-
Réserver des ressources suffisantes pour les ajustements, les nouvelles itérations et les corrections de bogues afin de garantir que les algorithmes développés puissent être intégrés de manière réaliste dans le code principal.
Veuillez fournir un plan détaillé, comprenant un calendrier et des étapes clés pour la réalisation de votre proposition.
Mois 1-4
- Enquête sur les goulets d'étranglement du réseau dans le code du Cardano Node.
- Expériences avec des solutions de preuve de concept pour utiliser pleinement le réseau, en regardant principalement les protocoles de type BitTorrent, tels que BitTorrent et BitTorrent streaming.
- Délivrable : un outil de synchronisation proof-of-concept capable de saturer pleinement la bande passante du réseau jusqu'à 250 MBits/seconde.
Mois 5-8
- Préparer des applications enveloppantes pour Windows et Mac OS et des utilitaires en ligne de commande pour Linux qui rendront le téléchargement rapide des données de la blockchain accessible au grand public.
- Expérimenter diverses méthodes de compression pour optimiser davantage la vitesse de transfert du réseau et éventuellement l'utilisation du stockage sur disque.
- Délivrable : des versions initiales de Daedalus Turbo Apps sont disponibles pour Windows et Mac OS.
- Délivrable : une première version des outils de ligne de commande pour Linux est disponible au téléchargement.
Mois 9-12
- Étudier le code responsable de la reconstruction de l'historique des portefeuilles dans Daedalus et Cardano Node.
- Examiner les options d'application des algorithmes d'indexation pour accélérer la reconstruction de l'historique des portefeuilles.
- Étudier les possibilités de mieux utiliser les processeurs à plusieurs cœurs pour accélérer la reconstruction de l'historique des portefeuilles.
- Délivrable : Une mise en œuvre de la preuve de concept d'un algorithme de reconstruction plus rapide de l'historique des portefeuilles.
- Livrable optionnel** : si techniquement significatif, intégrer les algorithmes dans les applications wrapper.
Mois 13-24
- Étudier la meilleure façon d'intégrer la preuve de concept dans Daedalus et Cardano Node.
- Préparer le code et la documentation pour soutenir IOHK dans l'intégration des nouveaux algorithmes dans Daedalus et Cardano Node.
- Travailler de manière itérative avec les mainteneurs GitHub de Cardano Node et Daedalus pour intégrer les algorithmes dans les projets.
- Corriger les bogues potentiels
- Optimiser davantage les performances des algorithmes lorsque cela est possible.
- Délivrable: Problèmes GitHub avec des demandes et des propositions spécifiques.
- Livrable : ** demandes de retrait GitHub pour les cas où la mise en œuvre est simple afin d'aider l'équipe IOHK à intégrer plus rapidement les améliorations.
Notes techniques
- Les applications wrapper seront écrites avec Electron et Node.JS - la même pile technologique que celle utilisée par Daedalus lui-même pour simplifier l'intégration future dans le code principal et augmenter le potentiel de réutilisation du code.
- Les utilitaires de ligne de commande pour Linux seront écrits avec Node.JS pour maximiser la réutilisation du code entre les trois applications clientes : Windows App, Mac OS App, et Linux CLI.
- Pour l'utilisation du réseau, libtorrent (une bibliothèque C++ robuste pour le protocole BitTorrent) sera probablement utilisée.
- Les algorithmes pour une reconstruction plus rapide de l'historique du portefeuille seront probablement écrits en C ou C++ pour optimiser les performances matérielles et les rendre disponibles dans différents langages/environnements de programmation, tels que Haskell et Node. JS.
- Pour rendre les nouveaux algorithmes disponibles dans le runtime Haskell utilisé par Cardano Node, l'interface "Foreign Function Interface" (FFI) de Haskell sera utilisée.
- Pour rendre les nouveaux algorithmes disponibles dans l'environnement Node.JS, l'interface "Native Addons" de Node.JS sera utilisée.
N.B: Au moment de la rédaction de cette proposition, l'auteur travaille sur un projet de 6 mois financé par le Fonds7. Au moment où les résultats du Fonds 9 seront disponibles, le travail actif sur ce projet sera terminé. Ainsi, ce projet ne crée pas de risques quant à la faisabilité de cette proposition.
[FEASIBILITÉ] Veuillez fournir une ventilation détaillée du budget.
Il s'agit d'un projet unique, il est donc plus logique de présenter les principaux facteurs de coût plutôt que les estimations de coût ascendantes, car les estimations ascendantes sont très susceptibles d'être fausses, mais les facteurs de coût sont susceptibles de rester les mêmes.
Voici les principaux inducteurs de coûts :
- Recherche et développement - 40
- un algorithme maximisant l'utilisation du réseau pendant la synchronisation
- un algorithme débloquant l'utilisation de plusieurs cœurs pendant la reconstruction de l'historique du portefeuille
- un algorithme de pré-indexation de la blockchain pour permettre d'exclure les blocs non pertinents lors de la reconstruction de l'historique d'un portefeuille.
- une application lanceur autonome pour Daedalus pour Windows et Mac OS permettant de bénéficier de synchronisations plus rapides en attendant l'intégration des algorithmes dans les projets principaux de IOHK : Daedalus et Cardano Node.
- un ensemble d'utilitaires en ligne de commande pour Linux pour les opérateurs de Stake-Pool permettant d'utiliser la synchronisation plus rapide en attendant l'intégration dans les dépôts principaux.
- une réserve pour les itérations supplémentaires, les corrections de bogues et les activités de support nécessaires à l'intégration des algorithmes dans les projets principaux gérés par IOHK : Daedalus et Cardano Node.
- Assurance qualité et test des systèmes distribués - 10 %.
- Location de matériel en nuage pour des tests à grande échelle - des milliers de nœuds dans le monde entier pour vérifier les versions finales du code de synchronisation peer-to-peer. Les coûts sont de plus de 1 $ par heure et par nœud, donc un seul test avec 1000 serveurs pendant une heure coûte déjà 1 000 $. De tels tests peuvent être nécessaires chaque semaine au fur et à mesure que de nouvelles versions du code sont prêtes.
- Des bonus ADA pour les utilisateurs qui accepteraient d'utiliser l'application de lancement Daedalus Turbo et les outils CLI pendant les premières phases de test de la solution.
- Impôts, frais financiers et honoraires - 50 %.
- L'auteur est basé en Allemagne et, sur la base de son expérience en tant que proposant financé par Fund7, une réserve importante pour le paiement des impôts et les prépaiements (en Allemagne, l'autorité financière peut demander le prépaiement des impôts au cours de l'année) est nécessaire.
- Les fluctuations de l'ADA/USD entre le moment où les fonds Catalyst sont déboursés et le moment où ils sont effectivement échangés en monnaie fiduciaire sont importantes dans la pratique : l'ADA peut malheureusement fluctuer de 5 à 10 % sur une seule période de 24 heures, et le taux de change calculé par Catalyst pour les paiements peut ne pas être réel au moment de l'échange effectif à la bourse. Au cours des 6 derniers mois, l'ADA/USD a surtout baissé, créant une charge financière importante pour les proposants financés.
- Spreads des bourses de crypto-monnaies et frais de transaction ADA vers USDT/BUSD + USDT/BUSD vers EUR
- Frais bancaires.
La partie Recherche & Développement des coûts est déterminée par les tarifs des experts suivants :
- pendant les 12 premiers mois :
- Ingénieur principal - systèmes et algorithmes de calcul distribué.
- Ingénieur senior - Node.JS & ; Electron.
- Administrateur senior des systèmes et réseaux.
- pendant les 12 derniers mois du projet :
- Ingénieur senior - Haskell & ; Cardano blockchain.
- Ingénieur principal - systèmes et algorithmes de calcul distribué.
Les domaines d'expertise technique susmentionnés sont très demandés, ce qui entraîne la structure de coûts suivante :
- Le budget pour les 12 premiers mois de R & D : 350k EUR
- Le budget pour les 12 mois suivants de R&R : 250 000 EUR.
- Le budget pour les tests et l'assurance qualité : 60 000 EUR.
Soit 660 000 EUR au total, y compris les taxes et les frais financiers supplémentaires liés au financement fourni par l'ADA.
Ce projet est budgétisé en euros, et comme il s'agit d'un projet de 24 mois, il est nécessaire de prendre en compte les fluctuations du taux de change EUR/USD. Au cours des 5 dernières années, le taux de change EUR/USD a fluctué dans une fourchette de 1,25 à 1,05 EUR par USD. C'est donc le taux moyen de 1,15 qui a été utilisé pour calculer les fonds en USD demandés.
Le budget demandé en USD est de 759000 $ = 660k EUR * 1. 15 (EUR/USD).
\N- [FEASIBILITÉ] Veuillez fournir les détails des personnes qui travailleront sur le projet.
L'auteur de la proposition a près de 20 ans d'expérience dans la construction de systèmes informatiques distribués à haute performance, tels que des moteurs de recherche, des systèmes analytiques de traitement de données volumineuses et des applications évolutives d'apprentissage automatique. De plus, l'auteur a une grande expérience de l'écosystème Cardano : il est un proposant financé par Fund7, un pionnier de Plutus, un pionnier de Atala PRISM.
L'auteur dirige une agence de digitalisation située à Berlin, en Allemagne. Nous pensons que les meilleures solutions techniques sont créées lorsque l'ensemble de l'équipe comprend à la fois profondément le problème à résoudre et la technologie utilisée pour le faire. Pour y parvenir, nous ne travaillons que sur quelques projets sélectionnés à la fois et uniquement sur des projets qui peuvent être mis en œuvre avec une équipe de moins de 10 participants. Ces restrictions garantissent que nous avons la capacité de communiquer toutes les informations nécessaires au sein de l'équipe afin que chacun comprenne très bien l'ensemble du projet.
L'auteur maintient un certain nombre de contrats en cours avec des experts indépendants (concepteurs, développeurs frontaux et dorsaux, experts en assurance qualité, scientifiques des données, administrateurs système, etc.) ). Les contrats garantissent aux freelances un certain nombre minimum de services achetés et les freelances garantissent qu'ils peuvent être ajoutés aux projets dans un court délai. Les experts spécifiques qui participeront à cette proposition seront déterminés une fois le financement confirmé, mais l'auteur sera personnellement responsable de la recherche et du développement des algorithmes et de la gestion du projet.
Vous trouverez de plus amples informations sur l'auteur sur LinkedIn : https://www.linkedin.com/in/alexsierkov/.
Si vous êtes financé, retournerez-vous à Catalyst lors d'un tour ultérieur pour un financement supplémentaire ? Veuillez expliquer pourquoi / pourquoi pas.
Non. Cette proposition est organisée comme un seul élément finançable pour garantir que l'impact promis - une synchronisation 10x plus rapide - sera disponible pour les utilisateurs de Cardano sans aucune contingence sur les tours de financement futurs. Cette décision s'explique par le fait que la majeure partie du budget sera consacrée à la détermination des algorithmes optimaux et des points d'intégration des logiciels, qui sont des activités peu visibles pour les utilisateurs finaux. Si le projet était divisé en plusieurs parties, il se pourrait que la majeure partie du budget soit dépensée et que des progrès soient réalisés, mais que les utilisateurs n'en ressentent pas les effets. Étant donné qu'il s'agit d'un projet coûteux, il a été décidé de se concentrer sur la garantie de la transmission de l'impact aux utilisateurs finaux s'il est financé.
Veuillez décrire ce que vous allez mesurer pour suivre les progrès de votre projet, et comment vous allez les mesurer ?
Ce projet vise à réduire le temps de synchronisation du Daedalus, donc toutes les mesures sont centrées sur cet objectif et les facteurs clés qui l'influencent :
- Le temps de synchronisation :
- Le temps qu'il faut pour synchroniser Daedalus à partir de zéro sur un matériel moderne : un ordinateur portable à 8 cœurs avec une connexion Internet de 250 MBits/sec.
- Le temps nécessaire à la resynchronisation après un mois d'inactivité sur un matériel moderne : un ordinateur portable 8-core avec une connexion Internet de 250 MBits/sec.
- Utilisation du réseau du client pendant la synchronisation active :
- débit du réseau : MBits/sec
- pic/moyenne % de la bande passante disponible utilisée.
- Utilisation du CPU du client pendant la synchronisation active :
- débit du traitement : MBytes/sec par cœur de CPU.
- pic/moyenne % d'utilisation du CPU sur tous les cœurs.
- Temps de démarrage de Daedalus - le temps entre le clic sur l'icône et le moment où le solde d'un portefeuille nouvellement créé est affiché.
- Sans données pré-synchronisées.
- Avec les données jusqu'à la dernière époque pré-synchronisées.
- Avec des données jusqu'à la dernière heure pré-synchronisées.
En outre, puisque le projet repose sur l'intégration des algorithmes développés dans les projets principaux gérés par IOHK : Daedalus et Cardano Node, les métriques suivantes peuvent être utilisées pour mesurer le processus d'intégration :
- Le nombre de problèmes GitHub créés et résolus.
- Le nombre de pull requests GitHub créées et fusionnées.
Pour vérifier le résultat final de l'intégration (que les utilisateurs finaux bénéficient réellement du nouveau logiciel) :
- le nombre mensuel d'adresses IP uniques qui participent au protocole Turbo Sync.
Enfin, et ce n'est pas le moins important, pour que l'impact sur les utilisateurs se fasse sentir, en attendant l'intégration complète des projets généraux, des applications temporaires seront créées, et il est bon de mesurer leur adoption :
- Le nombre de téléchargements des lanceurs Daedalus Turbo pour Windows et Mac OS.
- Le nombre de téléchargements des outils Linux CLI pour les opérateurs Stake-Pool.
Des mises à jour périodiques des progrès et des indicateurs clés de performance seront publiées sur :
-
le site web du projet - sera créé dans le cas où la proposition est financée ; un lien sera ajouté comme commentaire à cette proposition pour la visibilité et fourni dans les rapports d'avancement mensuels à l'équipe Catalyst.
-
le dépôt github du projet - sera créé dans le cas où la proposition est financée ; un lien sera ajouté comme commentaire à cette proposition pour la visibilité et fourni dans les rapports d'avancement mensuels à l'équipe Catalyst.
[AUDITABILITE] A quoi ressemble le succès de ce projet ?
Etape 1:
- Les applications de lancement pour Windows et Mac OS qui utilisent le protocole Turbo Sync pour synchroniser l'historique de la blockchain avant de lancer Daedalus sont disponibles pour le grand public.
- Un ensemble d'utilitaires en ligne de commande pour Linux tirant parti du protocole Turbo Sync pour créer plus rapidement un nœud Cardano à partir de zéro est disponible pour le grand public.
- Le temps nécessaire pour télécharger une copie complète de l'historique de la blockchain est de 60 minutes ou moins avec une connexion réseau de 250 MBits/seconde ou plus.
- Le temps nécessaire pour télécharger jusqu'à un mois d'histoire de la blockchain est de 5 minutes ou moins avec une connexion réseau de 250 MBits/seconde ou plus.
Etape 2:
- Les nouveaux algorithmes pour un téléchargement plus rapide et une reconstruction plus rapide de l'historique du portefeuille sont intégrés dans Daedalus et Cardano Node et sont disponibles en tant que paramètre.
- Le paramètre peut être activé pendant l'installation et dans l'interface de paramètres ou le fichier de configuration respectifs.
- Lorsque Turbo Sync est activé, le temps nécessaire au téléchargement d'une copie complète de l'historique de la blockchain et à la reconstruction de l'historique du portefeuille est de 60 minutes ou moins avec une connexion réseau de 250 MBits/seconde ou plus et un processeur à 8 cœurs ou plus.
- Avec Turbo Sync activé, le temps nécessaire pour télécharger jusqu'à un mois d'historique de la blockchain et pour reconstruire l'historique du portefeuille pendant ce mois est de 5 minutes ou moins avec une connexion réseau de 250 MBits/seconde ou plus et un processeur de 8 cœurs ou plus.
Stage 3:
-
Turbo Sync est activé par défaut dans Daedalus et Cardano Node.
Veuillez indiquer si cette proposition est la continuation d'un projet précédemment financé dans Catalyst ou un projet entièrement nouveau.
Il s'agit d'une proposition entièrement nouvelle.