funded

Daedalus Turbo - 10x Quicker Sync

$165,000.00 Received
$759,000.00 Requested
Ideascale logo View on ideascale
Community Review Results (1 reviewers)
Impact / Alignment
Feasibility
Auditability
Solución

A new download algorithm better utilizing network bandwidth, a quicker algorithm for wallet-history reconstruction, temporary sync apps, and an integration into Daedalus and Cardano Node.

Problem:

Daedalus, the decentralized Cardano wallet, is painfully slow, taking a whole day to sync initially and hours to resync when used only occasionally - an unfavorable impression of Cardano for new users

Yes Votes:
₳ 299,495,215
No Votes:
₳ 235,830,058
Votes Cast:
2000

This proposal was approved and funded by the Cardano Community via Project F9: Dapps, Products & Integrations Catalyst funding round.

Por favor, describa la solución que propone.

Antes de describir la solución, es importante describir el problema con más detalles, ya que los detalles ayudan a entender por qué es razonable creer que es posible optimizar el tiempo de sincronización en 10x, que es un objetivo bastante ambicioso.

De acuerdo con la experiencia del autor en la construcción y optimización de sistemas de computación distribuida, un objetivo razonable de optimización del software es hacer que el software tenga un rendimiento suficiente, de modo que el hardware sea un cuello de botella. Normalmente, estos cuellos de botella del hardware son el ancho de banda de la red, la utilización de la CPU o el ancho de banda del sistema de almacenamiento.

**¿Dedalus utiliza bien los recursos de hardware disponibles?

Al pensar en esta propuesta, he analizado en profundidad Daedalus y Cardano Node para ver en qué medida el software está lejos de utilizar plenamente estos tres recursos principales. Según mis cálculos, está muy lejos (más de 10 veces) de cualquiera de esos límites. Aquí están mis cálculos:

  1. Red. El Ledger de Cardano consume alrededor de 60GB de almacenamiento en este momento. Eso es sin comprimir. Ignorando la compresión por ahora, un usuario con una conexión a Internet de 250 MBits/seg (~30MBytes/seg) debería descargar 60GB en aproximadamente media hora (60GB / 30MB/seg ~ 2000 segundos o 33 minutos). Es decir, más de 10 veces más rápido que las 12-24 horas que tarda ahora una sincronización completa.
  2. CPU. Cardano utiliza la función hash Blake2b (<https://www.blake2.net/>), que puede verificar hasta 1GB de datos por segundo por una CPU. Dado un sistema moderno de 8 núcleos, eso da 8GB/seg de potencia de hash. A un ritmo de 8 GB/seg, se pueden procesar 60 GB de libro mayor en 7,5 segundos. Además, Cardano utiliza la rápida y segura criptografía de clave pública Ed25519 de curva elíptica, que puede verificar 30.000 firmas por segundo por CPU. En un sistema de 8 núcleos son 240.000 firmas por segundo. Asumiendo que cada bloque de cardano requiere verificar 100 firmas, 350 epocs, y 21600 bloques por época, todo el blockchain debería ser verificado más rápido que en una hora: (350 épocas x 21600 bloques por época x 100 firmas por bloque / 240000 verificaciones por segundo) = 3150 segundos. Así que, de nuevo, 10 veces más rápido que el tiempo actual.
  3. Almacenamiento. Un SSD PCIe moderno puede leer y escribir al menos a la velocidad de 1GB/seg, y los modelos más nuevos se acercan a los 7GB/seg. Incluso tomando la tasa más lenta de 1GB/seg, todo el libro mayor puede ser leído en 60 segundos. Aquí hay una diferencia de 10000x entre las 12-24 horas que necesita Daedalus, así que el almacenamiento no es definitivamente el cuello de botella aquí.

Después de hacer los cálculos anteriores, se llevaron a cabo tres experimentos técnicos rápidos para comprobar que hay formas prácticas de mejorar la situación. Los experimentos se describen al final de esta sección.

El plan de mejora

Los cálculos anteriores y los resultados de los experimentos sugieren que el objetivo principal de las optimizaciones debe ser:

  1. mejoras en la utilización de la red durante la sincronización.
  2. mejoras en el código responsable de la reconstrucción del historial de carteras.

Además, dado que no basta con tener mejores algoritmos para mejorar la experiencia del usuario, dichos algoritmos se integrarán en el software disponible para el público en general.

Por lo tanto, el plan es el siguiente:

  1. Preparar un método para una entrega más eficiente de los datos históricos de la blockchain a través de la red a una nueva configuración de Daedalus. Por el momento, la solución más sencilla parece ser una variante de un protocolo BitTorrent para garantizar que la capacidad de la red escale bien con el número de clientes y esté en consonancia con el enfoque general de la descentralización.
  2. Preparar un algoritmo para una reconstrucción más rápida del historial de carteras a partir de una cadena de bloques en disco. Aquí, al menos dos enfoques son atractivos: la indexación y una mejor utilización de las CPUs multinúcleo. La indexación permitirá a Daedalus escanear sólo aquellos bloques de la cadena de bloques que probablemente (o definitivamente) tengan transacciones que afecten a un monedero determinado (existen varias soluciones robustas en el espacio de las bases de datos, como los índices B-Tree, las tablas hash, etc.). Para la utilización de múltiples núcleos, la búsqueda de bloques relevantes para el historial de un monedero determinado puede realizarse en paralelo para reducir el tiempo de espera del usuario.
  3. Crear un lanzador/envolvente de aplicaciones de escritorio de Daedalus para Windows y Mac OS, y utilidades de línea de comandos para Linux, que permitan al público en general beneficiarse de las rápidas sincronizaciones mientras los algoritmos son revisados por la IOHK para su inclusión en el código principal de Daedalus y del propio Cardano Node. Estas aplicaciones garantizarán que, al menos, los usuarios finales dispongan de una transferencia más rápida de la cadena de bloques a través de la red. Si es posible preinicializar los datos de la cartera para Daedalus mediante una app envolvente es algo que todavía tengo que investigar.
  4. Crear la infraestructura de red necesaria (servidores distribuidos geográficamente con un gran ancho de banda de red; instantáneas creadas periódicamente del blockchain para su distribución) para garantizar que las apps cliente puedan descargar el blockchain rápidamente incluso en los casos en los que no haya un número suficiente de pares para una descarga peer-to-peer de alta velocidad.
  5. Investigar la mejor manera de utilizar los algoritmos de compresión durante la transferencia en red y el almacenamiento en disco de los datos de la cadena de bloques. Algoritmos como el LZ4, que proporciona una velocidad de descompresión extremadamente alta (1000+MBytes/seg por un núcleo) son interesantes, asegurando que haya recursos de CPU restantes disponibles para otras tareas.
  6. Trabajar con IOHK a través de la creación de GitHub Issues y Pull Requests para apoyarles en el proceso de integración de los nuevos algoritmos en el código principal de los proyectos Daedalus y Cardano Node.

Este plan es provisional, ya que durante las investigaciones más profundas se pueden descubrir soluciones alternativas. El objetivo de este plan es demostrar que hay acciones concretas y viables que pueden adoptarse para mejorar la situación.

**Detalles técnicos y algorítmicos

  • Para mejorar la utilización de la red, el plan actual (sujeto a cambios si una investigación más profunda pone de manifiesto una alternativa mejor) consiste en
  • utilizar un protocolo similar al de BitTorrent, lo que significa que durante el proceso de Turbo-Sync, el ordenador cliente formará parte de una red de descarga peer-to-peer y no sólo descargará los últimos datos de la blockchain sino que los compartirá con otros clientes.
  • utilizar todas las extensiones peer-to-peer relevantes, como el soporte para el protocolo trackerless, el intercambio peer-to-peer de nodos en la red, etc.
  • utilizar la clásica política de priorización de los bloques más raros.
  • Para mejorar el rendimiento de la reconstrucción del historial de carteras
  • un método sencillo pero de bajo riesgo: utilizar CPUs multinúcleo:
  • el primer paso necesario para reconstruir el historial de un monedero es identificar los bloques del blockchain que contienen transacciones con direcciones de envío o recepción (un monedero puede tener muchas) derivadas de la clave privada del monedero. Llamemos a este paso identificación de los bloques relevantes.
  • aunque la identificación de los bloques relevantes es necesaria para reconstruir completamente el historial de un monedero, la buena noticia es que para la mayoría de los monederos sólo una pequeña fracción de bloques (menos del 1%) contiene transacciones relacionadas.
  • La forma más sencilla de reducir el tiempo de ejecución es simplemente utilizar todos los núcleos disponibles para ejecutar las operaciones de criptografía de clave pública que verifican si una dirección determinada procede del monedero de interés. Este es el plan mínimo.
  • Una vez identificados los bloques relevantes, podemos utilizar exactamente el mismo proceso de reconstrucción que se utiliza ahora, pero exigiendo que haga mucho menos del 1% de sus bloques originales, ya que la mayoría no tiene transacciones en muchos bloques de la blockchain.
  • Un enfoque alternativo:
  • La mayoría de los monederos populares de Cardano generan una clave de estaca al mismo tiempo que la clave de pago, y la buena noticia es que la clave de estaca no cambia y puede extraerse directamente de cualquier dirección de pago utilizada en una transacción.
  • la idea es entonces crear un índice (una estructura de datos especial) para cada bloque que permita comprobar rápidamente si hubo transacciones en el bloque desde un monedero descrito por una clave de participación determinada.
  • este índice puede ser precalculado y compartido junto con los datos del blockchain distribuidos a través del método Turbo Sync.
  • Al disponer del índice, Daedalus puede reducir la complejidad de la verificación en más de 100 veces (el % de bloques que contienen transacciones que hacen referencia a un monedero determinado es, en la mayoría de los casos, inferior a una centésima parte), al examinar únicamente los bloques sugeridos por el índice.

Experimento 1 - transferencia rápida del historial de la cadena de bloques

El siguiente experimento se llevó a cabo para demostrar que la blockchain en disco puede transferirse a velocidades que utilizan plenamente la capacidad de la red disponible:

  1. crear una nueva máquina virtual (he utilizado Linux) e instalar una copia fresca de Daedalus.
  2. inicie Daedalus para que cree su sistema local de almacenamiento de archivos (en Linux está en $HOME/.local/share/Daedalus/mainnet).
  3. Detenga Daedalus después de varios minutos de ejecución.
  4. tomar otro ordenador que tenga Daedalus instalado y totalmente sincronizado. En este caso se utilizó un ordenador con Windows
    1. Tomar una copia de la cadena de bloques local de "%APPDATA%\Daedalus Mainnet\chain" y "%APPDATA%/Daedalus Mainnet/chain/ledger" y poner los ficheros en un archivo. Son unos 60GB sin comprimir, y 20GB cuando se comprimen.
  5. Sube el archivo a un servidor con una conexión de alta velocidad (1GBit/seg).
    1. Descargar el archivo en la máquina virtual Linux. Por supuesto, esta descarga pudo utilizar completamente la red.
  6. Descomprimir los archivos en $HOME/.local/share/Daedalus/mainnet/chain/blockchain y $HOME/.local/share/Daedalus/mainnet/chain/ledger.
    1. Inicie Daedalus dentro de la máquina virtual y mida el tiempo que tarda en informar de que está totalmente sincronizado.

En mi caso, el tiempo de inicio incluyendo la sincronización al 100% en una configuración tan pre-inicializada tomó sólo 5 minutos. Así, este experimento demuestra los siguientes puntos:

  1. Es fácil transferir el estado histórico de la blockchain a la máxima velocidad de la red.
  2. El formato en disco utilizado por Daedalus y Cardano Node es compatible entre diferentes Sistemas Operativos - Linux y Windows en este caso.

Experimento 2 - Reconstrucción del historial de carteras con datos sincronizados de la cadena de bloques

Para muchos usuarios, el siguiente paso después de tener Daedalus instalado y sincronizado es crear un nuevo monedero o recuperar uno previamente creado. Así que he hecho lo siguiente:

  1. Tomé la misma máquina virtual con Daedalus sincronizado al 100%.
  2. Recuperar el monedero que había creado previamente.
    1. Medir el tiempo hasta que Daedalus informa que el historial completo del monedero está listo.

En mi caso, ¡esto tomó 6 horas! Esto es con los datos del libro mayor totalmente sincronizados y almacenados en el disco local.

Este experimento demuestra el siguiente punto:

  1. Incluso si la red ya no es el cuello de botella, el algoritmo para la reconstrucción de la historia del monedero sigue tardando muchísimo tiempo.
  2. El tiempo que tarda es 1000 veces mayor que el que necesita el sistema de almacenamiento local para leer los datos del disco, lo que sugiere un gran potencial de optimización algorítmica.

Experimento 3 - extracción de claves de estaca de las direcciones de pago del monedero

Una de las preguntas que realmente quería responder es si hay una manera de que el Daedalus analice sólo los bloques de la cadena de bloques que tienen transacciones relevantes para un monedero determinado. Si eso es posible, esto puede permitir fácilmente aceleraciones de 100x y más, simplemente porque la mayoría de las carteras tienen menos de un centenar de transacciones en su historial, mientras que toda la blockchain crea 21600 bloques cada época (cada 5 días). Una de las formas de hacerlo es crear una nueva estructura de datos que permita comprobar rápidamente si un bloque determinado tiene datos relevantes para un monedero determinado. Normalmente, esto es difícil de hacer ya que cada monedero puede tener muchas direcciones de pago, pero en la práctica la mayoría de los monederos de Cardano generan no sólo una dirección de pago sino también una clave de estaca y esa clave no cambia y puede ser extraída de la dirección de pago y luego usada para verificar si una dirección de pago dada es probable que esté relacionada con un monedero dado. Para probar esta hipótesis, he hecho lo siguiente

  1. Tomó la lib de serialización de Cardano de Edmurgo: https://github.com/Emurgo/cardano-serialization-lib
  2. He escrito un script muy sencillo (una copia más abajo) para ver si es fácil extraer la clave de estaca de varias direcciones de pago del mismo monedero generadas por Daedalus y Yoroi.
  3. He comprobado si el script devuelve la misma clave de estaca para cualquier dirección de pago relacionada con varios monederos en mi poder.

El resultado fue que sí - todas las direcciones de pago del mismo monedero tienen la misma clave de estaca extraída, que potencialmente puede ser utilizada para crear un índice de búsqueda rápida para encontrar bloques que contengan transacciones relacionadas con un monedero determinado.

El script para Node.JS (asume que el paquete importado está instalado con npm primero).

> Importar \N como CardanoWasm de '@emurgo/cardano-serialization-lib-nodejs';

> const addresses = \t[ &lt;una lista de direcciones Cardano que empiezan por addr> \t];

> 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"));

> }

Por favor, describa cómo su solución propuesta abordará el reto que ha presentado.

Daedalus Wallet es una de las Dapps más populares del ecosistema Cardano. Esta propuesta tiene como objetivo mejorar drásticamente (10x) la experiencia de los usuarios de Cardano por primera vez - la experiencia de la creación de una cartera descentralizada y ocasionalmente la comprobación del saldo y la realización de transacciones. Es probable que la mejora de esta experiencia sea visible para la mayoría de las personas del ecosistema de Cardano y para aquellos que acaban de explorar Cardano. Por lo tanto, es probable que esta propuesta impulse el número de usuarios activos de Cardano y su compromiso con el ecosistema.

Esta propuesta apoya directamente los siguientes KPIs del desafío Dapps, Productos e Integraciones:

  • aumenta el uso del monedero de Cardano verdaderamente descentralizado, Daedalus, en lugar de los monederos ligeros centralizados, como Yoroi.
  • aumenta la adopción de Cardano, es decir, el número de personas que interactúan regularmente con la blockchain de Cardano, ya que el monedero principal descentralizado es más fácil de usar.
  • aumenta el número de transacciones realizadas, ya que es más cómodo utilizar ocasionalmente el monedero.
  • aumenta la calidad de un importante producto existente: Daedalus Wallet.
  • aumenta el uso de un importante producto existente - Daedalus Wallet.

Además, dado que uno de los componentes clave subyacentes que se mejorará -la sincronización de la historia de la cadena de bloques- es utilizado también por los operadores de los grupos de estacas de Cardano, esta propuesta puede mejorar la estabilidad general de la red del ecosistema de Cardano, proporcionando a los operadores de los grupos de estacas herramientas para una recuperación más rápida en caso de desastre (la configuración de un nuevo nodo después de una caída irrecuperable del servidor). Esto se debe a que el primer paso para configurar un nodo de stake pool es exactamente la misma sincronización del libro mayor.

Por último, pero no por ello menos importante, la investigación sobre la mejor manera de utilizar los algoritmos de compresión puede abrir una vía para crear un monedero móvil descentralizado: una aplicación móvil que consuma 70 GB es probablemente poco realista para muchos usuarios, pero una aplicación que sólo requiera 20 GB o 30 GB puede ser mucho más factible. Una vez más, mantener una aplicación de monedero móvil siempre ejecutada en segundo plano para asegurarse de que está sincronizada no es realista, ya que agotará la batería del teléfono muy rápidamente, pero tener una resincronización más rápida, que requiera sólo 5-10 minutos después de un mes de inactividad, hace que el uso de un monedero móvil totalmente descentralizado sea mucho más realista.

¿Cuáles son los principales riesgos que podrían impedir que el proyecto se lleve a cabo con éxito y explique cómo va a mitigar cada uno de ellos?

Los mayores riesgos de esta propuesta son:

  • Encontrar un algoritmo capaz de saturar completamente la red del cliente mientras se transfieren los datos de la blockchain. Aunque es posible que haya desafíos con la integración del nuevo algoritmo. Los principales algoritmos en sí han sido probados por la comunidad de Internet durante los últimos 20 años. Por ejemplo, el protocolo BitTorrent está disponible desde hace más de 20 años y es capaz de transferir datos con todo el ancho de banda del canal de red del usuario. Así que, en mi opinión, el riesgo de fracaso aquí es bajo.

  • Encontrar un algoritmo para la reconstrucción de la historia de la cartera que sea más eficiente o que utilice mejor las CPUs multinúcleo de los portátiles y ordenadores modernos. Este es un riesgo más serio, ya que no puede haber compromisos con respecto a la calidad de la verificación. Al mismo tiempo, métodos como los índices (sí, como al final de un libro, una estructura especial que permite encontrar más rápidamente la información relevante) se utilizan activamente en el campo de las bases de datos con gran éxito. Incluso si la indexación no es posible, la búsqueda de los bloques que contienen transacciones de un determinado monedero con múltiples procesos en paralelo puede ser una solución que puede reducir ese tiempo de espera para los usuarios finales.

  • Garantizar una perfecta integración de los algoritmos encontrados en los proyectos Daedalus y Cardano Node. Según la experiencia del autor como proponente financiado, los equipos de la IOHK están muy ocupados, por lo que no es realista esperar una rápida integración de soluciones complejas. Para hacer frente a este riesgo, esta propuesta hace dos cosas

  • Proporciona una Daedalus Turbo App independiente, que funcionará como un lanzador para el Daedalus y asegura que el Daedalus no tendrá que sincronizar todo el blockchain por sí mismo.

  • Reserva suficientes recursos para ajustes, nuevas iteraciones y corrección de errores para garantizar que los algoritmos desarrollados puedan integrarse de forma realista en el código principal.

    Por favor, proporcione un plan detallado, incluyendo el calendario y los hitos clave para la entrega de su propuesta.

**Meses 1-4

  • Investigación de los cuellos de botella de la red en el código de Cardano Node.
  • Experimentos con soluciones de prueba de concepto para utilizar plenamente la red, principalmente buscando protocolos similares a BitTorrent, como BitTorrent y BitTorrent streaming.
  • Deliverable: una herramienta de sincronización de prueba de concepto capaz de saturar completamente el ancho de banda de la red de hasta 250 MBits/segundo.

Momentos 5-8

  • Preparar aplicaciones envolventes para los sistemas operativos Windows y Mac y utilidades de línea de comandos para Linux que pondrán a disposición del público en general la descarga rápida de los datos de la cadena de bloques.
  • Experimentar con varios métodos de compresión para optimizar aún más la velocidad de transferencia de la red y, potencialmente, el uso del almacenamiento en disco.
  • Deliverable: las versiones iniciales de Daedalus Turbo Apps están disponibles para Windows y Mac OS.
  • Disponible**: una versión inicial de las herramientas de línea de comandos para Linux está disponible para su descarga.

Meses 9-12

  • Investigar el código responsable de la reconstrucción del historial de carteras en Daedalus y Cardano Node.
  • Investigar opciones para la aplicación de algoritmos de indexación para acelerar la reconstrucción del historial de carteras.
  • Investigar opciones para utilizar mejor las CPUs de múltiples núcleos para una reconstrucción más rápida del historial de carteras.
  • Entregable**: Una prueba de concepto de un algoritmo de reconstrucción del historial de carteras más rápido.
  • Entregable opcional: si es técnicamente significativo, integrar los algoritmos en las aplicaciones de envoltura.

**Meses 13-24

  • Investigar la mejor manera de integrar las pruebas de concepto en Daedalus y Cardano Node.
  • Preparar el código y la documentación para apoyar a IOHK en la integración de los nuevos algoritmos en Daedalus y Cardano Node.
  • Trabajar iterativamente con los mantenedores de GitHub de Cardano Node y Daedalus para integrar los algoritmos en los proyectos.
  • Corregir posibles errores
  • Optimizar aún más el rendimiento de los algoritmos cuando sea posible.
  • Entregables:** Temas de GitHub con peticiones y propuestas específicas.
  • Entregables:** Solicitudes de extracción de GitHub para casos en los que la implementación es sencilla para ayudar al equipo de IOHK a integrar más rápidamente las mejoras.

**Notas tecnológicas

  • Las aplicaciones envolventes se escribirán con Electron y Node.JS - la misma pila tecnológica que utiliza el propio Daedalus para simplificar la futura integración en el código principal y aumentar el potencial de reutilización del código.
  • Las utilidades de línea de comandos para Linux se escribirán con para Node.JS para maximizar la reutilización de código entre las tres aplicaciones cliente: Windows App, Mac OS App, y Linux CLI.
  • Para la utilización de la red, probablemente se utilizará libtorrent (una robusta biblioteca C++ para el protocolo BitTorrent).
  • Los algoritmos para una reconstrucción más rápida del historial de carteras probablemente se escriban en C o C++ para optimizar el rendimiento del hardware y para que estén disponibles en diferentes lenguajes/entornos de programación, como Haskell y Node. JS.
  • Para que los nuevos algoritmos estén disponibles en el tiempo de ejecución de Haskell utilizado por Cardano Node, se utilizará la "Foreign Function Interface" (FFI) de Haskell.
  • Para que los nuevos algoritmos estén disponibles en el entorno de Node.JS, se utilizará la interfaz "Native Addons" de Node.JS.

N.B: En el momento de escribir esta propuesta, el autor está trabajando en un proyecto de 6 meses financiado en el Fondo7. Para cuando los resultados del Fondo9 estén disponibles, el trabajo activo en ese proyecto habrá terminado. Por lo tanto, el trabajo de ese proyecto no crea riesgos con respecto a la viabilidad de esta propuesta.

\N[FEASIBILIDAD\N] Por favor, proporcione un desglose presupuestario detallado.

Se trata de un proyecto único, por lo que tiene más sentido presentar los principales generadores de costes en lugar de las estimaciones de costes ascendentes, ya que es muy probable que las estimaciones ascendentes se equivoquen, pero los generadores de costes probablemente no varíen.

Estos son los principales factores de coste:

  • Investigación y amortiguación; Desarrollo - 40%.
  • un algoritmo que maximice la utilización de la red durante la sincronización
  • un algoritmo que desbloquee la utilización de múltiples núcleos durante la reconstrucción del historial de carteras
  • un algoritmo para preindexar el blockchain para permitir la exclusión de bloques irrelevantes al reconstruir el historial de un monedero.
  • una aplicación de lanzamiento independiente para Daedalus para Windows y Mac OS que permite beneficiarse de las sincronizaciones más rápidas mientras los algoritmos se integran en los proyectos principales de IOHK: Daedalus y Cardano Node.
  • un conjunto de utilidades de línea de comandos para Linux para los operadores de Stake-Pool que permiten utilizar la sincronización más rápida mientras se espera la integración en los repositorios principales
  • una reserva para las iteraciones adicionales, las correcciones de errores y las actividades de apoyo necesarias para integrar los algoritmos en los proyectos principales gestionados por la IOHK: Daedalus y Cardano Node.
  • Garantía de calidad y pruebas de sistemas distribuidos - 10%.
  • Alquiler de hardware en la nube para pruebas a gran escala - 1000s de nodos a nivel mundial para verificar las versiones finales del código de sincronización peer-to-peer. Los costes son de más de 1 dólar por hora por cada nodo, por lo que una sola prueba con 1000 servidores durante una hora ya cuesta 1.000 dólares. Estas pruebas pueden ser necesarias semanalmente a medida que las nuevas versiones del código estén listas.
  • Bonificaciones de ADA para los usuarios que acepten ejecutar la aplicación de lanzamiento Daedalus Turbo y las herramientas CLI durante las primeras etapas de prueba de la solución.
  • Impuestos, gastos financieros y tasas - 50%.
  • El autor tiene su sede en Alemania y, según su experiencia como proponente financiado en el Fondo7, es necesaria una importante reserva para el pago de impuestos y los pagos anticipados (en Alemania, la autoridad financiera puede solicitar el pago anticipado de impuestos durante el año).
  • Las fluctuaciones del ADA/USD entre el momento en que se desembolsan los fondos de Catalyst y el cambio real en moneda fiduciaria son importantes en la práctica: tristemente el ADA puede fluctuar hasta un 5-10% en un solo periodo de 24 horas, y el tipo de cambio calculado por Catalyst para los pagos puede no ser real en el momento de la operación real en un cambio. En los últimos 6 meses, el ADA/USD ha disminuido en su mayor parte, creando un importante gasto financiero para los proponentes financiados.
  • Spreads de criptointercambio y comisiones de negociación ADA a USDT/BUSD + USDT/BUSD a EUR
  • Comisiones bancarias.

La parte de investigación y desarrollo de los costes está impulsada por las tarifas de los siguientes expertos:

  • durante los primeros 12 meses:
  • Ingeniero principal - sistemas de computación distribuida y algoritmos.
  • Ingeniero senior - Node.JS & Electron.
  • Administrador senior de sistemas y redes.
  • durante los segundos 12 meses del proyecto:
  • Ingeniero senior - Haskell & Cardano blockchain.
  • Ingeniero principal - sistemas de computación distribuida y algoritmos.

Las áreas de experiencia técnica mencionadas tienen una gran demanda, lo que lleva a la siguiente estructura de costes:

  • El presupuesto para los primeros 12 meses de R&D: 350k EUR
  • Presupuesto para los segundos 12 meses de I+D: 250.000 euros.
  • El presupuesto para las pruebas y la garantía de calidad: 60.000 euros.

En total, 660.000 euros, incluidos los impuestos y los gastos financieros adicionales relacionados con la financiación de ADA.

Este proyecto está presupuestado en euros y, al tratarse de un proyecto de 24 meses, hay que tener en cuenta las fluctuaciones del tipo de cambio EUR/USD. El tipo de cambio EUR/USD en los últimos 5 años ha fluctuado entre 1,25 y 1,05 EUR por USD. Por tanto, se utilizó el tipo medio de 1,15 para obtener los fondos en USD solicitados.

El presupuesto solicitado en USD es de 759000 $ = 660k EUR * 1. 15 (EUR/USD).

[FEASIBILIDAD\N] Por favor, facilite los datos de las personas que trabajarán en el proyecto.

El autor de la propuesta tiene casi 20 años de experiencia en la construcción de sistemas de computación distribuida de alto rendimiento, tales como motores de búsqueda, sistemas analíticos de procesamiento de grandes datos y aplicaciones escalables de aprendizaje automático. Además, el autor tiene una amplia experiencia en el ecosistema de Cardano: un proponente financiado en Fund7, un Pionero de Plutus, un Pionero de Atala PRISM.

El autor dirige una agencia de digitalización boutique ubicada en Berlín, Alemania. Creemos que las mejores soluciones técnicas se crean cuando todo el equipo entiende profundamente el problema en cuestión y la tecnología utilizada para resolverlo. Para conseguirlo, sólo trabajamos en unos pocos proyectos selectos a la vez y sólo en proyectos que pueden llevarse a cabo con un equipo de menos de 10 participantes. Estas restricciones garantizan que tengamos la capacidad de comunicar toda la información necesaria dentro del equipo para que todos entiendan muy bien el proyecto en su conjunto.

El autor mantiene una serie de contratos en vigor con expertos autónomos (diseñadores, desarrolladores de front-end y back-end, expertos en control de calidad, científicos de datos, administradores de sistemas, etc.). Los contratos garantizan a los freelancers un cierto número mínimo de servicios adquiridos y los freelancers garantizan que pueden ser añadidos a los proyectos en un corto plazo. Los expertos concretos que participarán en esta propuesta se determinarán una vez confirmada la financiación, pero el autor se encargará personalmente de la investigación y el desarrollo de los algoritmos y de la gestión del proyecto.

Puede encontrar más información sobre el autor en LinkedIn: https://www.linkedin.com/in/alexsierkov/

Si se le financia, ¿volverá a Catalyst en una ronda posterior para obtener más financiación? Por favor, explique por qué / por qué no.

No. Esta propuesta está organizada como una sola partida financiable para asegurar que el impacto prometido - una sincronización 10 veces más rápida - esté disponible para los usuarios de Cardano sin ninguna contingencia en futuras rondas de financiación. La razón de esta decisión es que la mayor parte del presupuesto se gastará en averiguar los algoritmos óptimos y los puntos de integración del software, que son actividades no especialmente visibles para los usuarios finales. Si el proyecto se dividiera en varias partes, podría darse una situación en la que se gastara la mayor parte del presupuesto y se avanzara, pero no se llegara a los usuarios. Dado que se trata de un proyecto costoso, se decidió centrarse en garantizar la entrega del impacto a los usuarios finales si se financia.

Describa lo que va a medir para seguir el progreso de su proyecto y cómo lo va a medir.

Este proyecto trata de reducir el tiempo de sincronización del Dédalo, por lo que todas las mediciones se centran en ese objetivo y en los factores clave que influyen en él:

  • El tiempo de sincronización:
  • El tiempo que se tarda en sincronizar el Dédalo desde cero en un hardware moderno: un portátil de 8 núcleos con una conexión a Internet de 250 MBits/seg.
  • El tiempo que se tarda en resincronizar tras un mes de inactividad en un hardware moderno: un portátil de 8 núcleos con una conexión a Internet de 250 MBits/seg.
  • Utilización de la red del cliente durante la sincronización activa:
  • rendimiento de la red: MBits/seg.
  • pico/media % del ancho de banda disponible utilizado.
  • Utilización de la CPU del cliente durante la sincronización activa:
  • rendimiento de procesamiento: MBytes/seg por núcleo de CPU.
  • pico/porcentaje medio de utilización de la CPU en todos los núcleos.
  • Tiempo de inicio de Daedalus: el tiempo que transcurre desde que se pulsa el icono hasta que se muestra el saldo de un monedero recién creado.
  • Sin datos pre-sincronizados.
  • Con datos hasta la última época pre-sincronizados.
  • Con datos hasta la última hora pre-sincronizados.

Además, dado que el proyecto se basa en la integración de los algoritmos desarrollados en los proyectos principales gestionados por IOHK: Daedalus y Cardano Node, se pueden utilizar las siguientes métricas para medir el proceso de integración:

  • El número de problemas creados y resueltos en GitHub.
  • El número de pull requests de GitHub creados y fusionados.

Para verificar el resultado final de la integración (que los usuarios finales se beneficien realmente del nuevo software):

  • El número mensual de direcciones IP únicas que participan en el protocolo Turbo Sync.

Por último, pero no por ello menos importante, para hacer llegar el impacto a los usuarios mientras se espera la plena integración de los proyectos principales se construirán aplicaciones temporales, por lo que es bueno medir su adopción:

  • El número de descargas de los lanzadores de Daedalus Turbo para Windows y Mac OS.
  • El número de descargas de las herramientas CLI de Linux para los operadores de Stake-Pool.

Se publicarán actualizaciones periódicas del progreso y de los KPI en:

  • La página web del proyecto - se creará en el caso de que la propuesta sea financiada; se añadirá un enlace como comentario a esta propuesta para que sea visible y se proporcionará en los informes de progreso mensuales al equipo de Catalyst.

  • Repositorio github del proyecto: se creará en caso de que la propuesta se financie; se añadirá un enlace como comentario a esta propuesta para que sea visible y se proporcionará en los informes mensuales de progreso al equipo de Catalyst.

    ¿Qué significa el éxito de este proyecto?

Etapa 1:

  • Las aplicaciones de lanzamiento para Windows y Mac OS que utilizan el protocolo Turbo Sync para sincronizar el historial del blockchain antes de lanzar Daedalus están disponibles para el público en general.
  • Un conjunto de utilidades de línea de comandos para Linux que aprovechan el protocolo Turbo Sync para crear rápidamente un nodo Cardano desde cero está disponible para el público en general.
  • El tiempo que se tarda en descargar una copia completa del historial de blockchain es de 60 minutos o menos con una conexión de red de 250 MBits/segundo o superior.
  • El tiempo que se tarda en descargar hasta un mes del historial de blockchain es de 5 minutos o menos con una conexión de red de 250 MBits/segundo o superior.

Etapa 2:

  • Los nuevos algoritmos para una descarga más rápida y una reconstrucción más rápida del historial del monedero están integrados en Daedalus y Cardano Node y están disponibles como un ajuste.
  • El ajuste puede activarse durante la instalación y en la respectiva interfaz de ajustes o archivo de configuración.
  • Con Turbo Sync activado, el tiempo que se tarda en descargar una copia completa del historial de la cadena de bloques y en reconstruir el historial del monedero es de 60 minutos o menos con una conexión de red de 250 MBits/segundo o superior y una CPU con 8 o más núcleos.
  • Con Turbo Sync activado, el tiempo que se tarda en descargar hasta un mes del historial del blockchain y en reconstruir el historial del monedero durante ese mes es de 5 minutos o menos con una conexión de red de 250 MBits/segundo o mejor y una CPU con 8 o más núcleos.

Etapa 3:

  • Turbo Sync está activado por defecto en Daedalus y Cardano Node.

    [AUDITABILIDAD\N] Por favor, proporcione información sobre si esta propuesta es una continuación de un proyecto previamente financiado en Catalyst o uno completamente nuevo.

Esta es una propuesta completamente nueva.

Reseñas de CAs (1)

Comments

Monthly Reports

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00