Un relato de abstracciones: la búsqueda de mejores herramientas para los desarrolladores de CKB

(Esta es una traducción al español por @luisantoniocrag y revisada por @Lalo, si deseas ver el artículo publicado en inglés puedes hacerlo aquí)

Hace tres años, nos embarcamos en un viaje para construir una plataforma blockchain que, a nosotros, como desarrolladores, nos encantaría usar y confiar. Sobre la base de esta lógica, comenzamos a elaborar los pilares fundamentales en Nervos CKB:

  • Seguridad: ¿pueden los usuarios estar tranquilos mientras CKB protege sus activos?

  • Estabilidad: ¿pueden los usuarios confiar en que CKB estará allí en las próximas décadas?

  • Rendimiento: ¿pueden los usuarios confiar en que CKB proporcionará el mejor rendimiento de su clase, dado que se cumplen los 2 objetivos anteriores?

Nos esforzamos mucho para resolver todos estos problemas, y creemos firmemente que Nervos CKB les proporciona respuestas adecuadas. Sin embargo, el rompecabezas aún está incompleto, todavía falta una gran pieza para hacer que CKB sea aún mejor: la experiencia del desarrollador.

A diferencia de otras soluciones, uno podría notar que la experiencia del desarrollador no es un problema que abordamos desde el principio. Esto no significa que no nos interese la experiencia del desarrollador. Por el contrario, creemos que los desarrolladores son la parte más fundamental y crucial de todo el ecosistema de Nervos. La contradicción aquí proviene de nuestra creencia en las abstracciones de software. Creemos que la parte central de Nervos CKB debe dar prioridad a la seguridad, la estabilidad y el rendimiento.

De hecho, hay ciertos aspectos que podrían ayudar con la experiencia del desarrollador, pero elegimos dejarlos fuera ya que creemos que los 3 pilares fundamentales podrían verse afectados al incluir estas características adicionales. Para compensar la falta de estas características, estamos creando capas y herramientas adicionales que mejorarán la historia de desarrollo en Nervos CKB. Este ha sido el enfoque principal del equipo de Nervos desde que se lanzó Nervos CKB en noviembre pasado.

No estamos solos en la búsqueda de este tipo de camino en la industria informática. Toma por ejemplo nuestras CPU más queridas. Las CPU modernas solo ejecutan código de ensamblador sofisticado, y no escuchamos a las personas que anhelan CPU que ejecuten Rust o JavaScript. En su lugar, creamos compiladores y máquinas virtuales, que traducen lenguajes de nivel superior en código ensamblador cuidadosamente ajustado que luego se ejecuta en nuestras CPU. Es con abstracciones de software como esta, que tenemos la oportunidad de construir todo un mundo asistido por computadora. Visualizamos una futura infraestructura de blockchain que usa exactamente la misma arquitectura: el nivel central se enfoca en lograr la base correcta, mientras que las capas circundantes brindan ayuda a los desarrolladores.

Saludamos a todos los desarrolladores que probaron CKB inmediatamente después de su lanzamiento, aunque esto significaba que solo había herramientas prematuras disponibles. Esos pioneros dedicaron un tremendo esfuerzo a la creación de demos y aplicaciones sobre Nervos CKB, mostrando el poder único de Nervos CKB para todo el mundo. También nos sentimos avergonzados, ya que no pudimos equipar esas caballerías con armaduras y armas decentes. Por lo tanto, es un verdadero honor y privilegio presentar algunos de los últimos trabajos del equipo de Nervos a todos los desarrolladores: Capsule, Lumos y Polyjuice, para ayudar a crear aplicaciones maravillosas en Nervos CKB.

Capsule

Nuestro primer paso del viaje comienza con contratos inteligentes o scripts en terminología CKB. Si has seguido nuestro trabajo, sabrás que en este momento la mayoría de los scripts en CKB están escritos en C. Esto nunca ha sido porque sentimos que C es un lenguaje de contrato inteligente apropiado para todos. Se debe simplemente al hecho de que todavía estamos trabajando duro para ponernos al día con las herramientas. Cuando necesitábamos una forma de crear scripts en los primeros días, C era la única solución práctica para nosotros. Somos muy cuidadosos con el código C que escribimos, a pesar de que somos los creadores de la plataforma. Limitamos las bibliotecas externas y las nuevas funciones que utilizamos. Una forma de ver los scripts que tenemos ahora es que imitan los programas C para dispositivos integrados.

Pero entendemos que esta no es una solución ideal para muchos y nunca podríamos ganarnos la confianza de los desarrolladores de contratos inteligentes si publicitamos la construcción de los scripts con C. Los contratos inteligentes sofisticados modernos ya son muy complicados de construir, sin mencionar que C trae sus complicaciones . Queremos equipar a los desarrolladores con todas las funcionalidades y herramientas de los lenguajes de vanguardia que uno puede aprovechar para ayudar al desarrollo de scripts.

Para resolver este problema, hemos creado Capsule. En esencia, Capsule proporciona una solución para construir scripts CKB utilizando el lenguaje de programación Rust. Rust es un lenguaje diseñado para capacitar a todos a construir software confiable y eficiente. El modelo de sistema type ya probado, su modelo de propiedad, una comunidad saludable que inventa cosas nuevas todos los días, junto con el amplio uso en la industria blockchain, hacen de Rust un lenguaje perfecto de propósito general para crear scripts en CKB. Capsule envuelve las herramientas de Rust y proporciona una experiencia perfecta para construir scripts para Nervos CKB.

Por el lado del lenguaje, Capsule también proporciona abstracciones (en forma de bibliotecas Rust) para ayudar a construir el script CKB. Core CKB solo proporciona syscalls absolutamente necesarios para comunicarse con CKB, lo que significa que puede ser un poco problemático de usar.
Capsule proporciona abstracciones para facilitar la comunicación con la cadena de bloques CKB desde un script. Una analogía aquí es que si bien File in Rust es bastante divertido de usar, las llamadas al sistema subyacentes de Linux pueden ser bastante complicadas para acertar. Esto, en nuestra opinión, es otro caso de mostrar el poder de las abstracciones.

Capsule tampoco se detiene aquí. Su objetivo es administrar el ciclo de vida completo de un script CKB. Te ayuda a desarrollar, construir, probar, depurar y también implementar el script. Al igual a lo que sugiere el nombre, Capsule contiene un universo muy grande en un factor de forma extremadamente pequeño. Visualizamos un mundo en el que Capsule es todo lo que uno necesita para pasar de cero a un script exitoso y en ejecución en la red principal de CKB.

Lumos

Los contratos inteligentes son solo una parte del desafío. Debido a ciertas razones, como las necesidades de QoS o para hacer frente mejor a los diferentes casos de uso, generalmente se necesita crear un servicio de back-end sobre la cadena de bloques, que luego se encarga de manejar las solicitudes de los usuarios. Nervos CKB no es una excepción aquí. De hecho, debido a nuestra filosofía de diseño de abstracciones, CKB tiene una mayor necesidad de una capa superior que la mayoría de las otras cadenas de bloques. Con esta capa superior, simplificamos los esfuerzos de los desarrolladores para crear las dapps perfectas.

Lumos surgió de este requisito. Diseñado sobre CKB, Lumos proporciona un framework basado en JavaScript / TypeScript, que puede acelerar significativamente el desarrollo de dapps. El nombre explica de qué se trata el proyecto: el país de las maravillas de CKB, aunque vasto y fértil, aún permanece oscuro en la mayoría de las partes, Lumos arroja luz sobre la tierra, guiando a las personas a este hermoso nuevo mundo.

En su lanzamiento inicial, Lumos contiene los siguientes componentes:

  • Un indexador de células de alto rendimiento que sondea bloques de un nodo CKB, los indexa y luego proporciona una forma óptima de consultar las células.

  • Un administrador de transacciones que maneja todas las transacciones pendientes y permite que sus células de salida se puedan usar incluso antes de que se confirmen las transacciones, lo que evita los problemas causados por transacciones anteriores que deben aceptarse en la cadena antes de que se pueda crear la siguiente transacción.

  • Un administrador de configuración unificado que maneja los detalles de conectar el framework a diferentes cadenas, como mainnet, testnet, devnet, etc. También rastrea los scripts implementados en la cadena para simplificar el trabajo de construcción de transacciones.

  • Un flujo de trabajo unificado para construir transacciones que contienen muchos scripts interactivos diferentes. Creemos que este flujo de trabajo de nuevo diseño puede capturar perfectamente las diferentes necesidades de los desarrolladores de dapps frente a los desarrolladores de scripts. Consulta el sitio de documentación para ver el flujo del trabajo detallado.

  • Soporte incorporado para todos los scripts comúnmente conocidos en este momento.

Esto es solo un vistazo de todas las posibilidades en Lumos. La versión inicial proporciona una base para construir, pero de ninguna manera está completa. Los invitamos a todos a unirse al ciclo de desarrollo, probar Lumos (y también Capsule) y contarnos su experiencia. Solo con comentarios y críticas, podemos realmente construir las abstracciones y herramientas que se adapten a las necesidades en el mundo Nervos CKB.

Polyjuice

Nervos CKB se basa en el modelo de célula, que es una versión generalizada del modelo UTXO. Parece existir una creencia en el mundo blockchain de que el modelo UTXO es difícil de programar, mientras que el modelo de balances es más fácil para los desarrolladores. Aunque el modelo de célula es un descendiente del modelo UTXO, es perfectamente posible construir un modelo de cuenta sobre el modelo de célula. El secreto aquí también radica en la abstracción. Mientras que en el nivel inferior, el diseño de estilo UTXO puede ayudar a lograr el paralelismo, en un nivel superior, una capa de abstracción puede exponer un modelo de cuenta a los desarrolladores cotidianos.

Como ingenieros, todos conocemos la famosa frase “Hablar es barato. Muéstrame el código.” Siguiendo este principio, diseñamos y construimos Polyjuice, que es una capa compatible con Ethereum sobre Nervos CKB. Ethereum, hasta el día de hoy, es probablemente la blockchain basada en el modelo de cuenta más utilizado y flexible. Con Polyjuice, queremos mostrar que es perfectamente posible usar el modelo de cuenta en Nervos CKB. La flexibilidad aquí en realidad permite innumerables oportunidades.

Para hacer las cosas más interesantes, no creamos una capa de cuenta que esté diseñada solo para Ethereum; Hemos extraído la capa principal de Polyjuice. Con esta biblioteca genérica, puedes integrar cualquier capa de cuenta que desees. Una posibilidad futura emocionante que nos encantaría presenciar es que el modelo de programación exacto de Libra también podría trasladarse a CKB, lo que permite un ecosistema muy fructífero.

Documentación nueva

Con todos estos proyectos emocionantes, nuestro antiguo sitio de documentación ha comenzado a mostrar su antigüedad. Así que también hemos restaurado el sitio de documentación. El nuevo sitio está dividido en varias secciones, con el objetivo de ayudarte a encontrar exactamente lo que necesitas al instante:

  • Conceptos básicos : este es el punto de partida, si solo deseas conocer CKB, te guiará a través de la descarga y ejecución de CKB. Te mostrará cómo conectarse a mainnet o testnet, cómo crear una nueva cadena de desarrollo y minar tokens para el desarrollo. También le mostrará cómo interactuar con CKB a través de muchas herramientas, como ckb-cli.

  • Referencia : para desarrolladores, esto podría servir como un diccionario. ¿Quieres saber cómo se ejecuta un script? Tendremos un documento de referencia para eso. ¿Quieres saber qué componentes están disponibles en una célula? Te lo tenemos cubierto! ¿Quiere aprender todo el flujo de validación de transacciones? ¡Este es el lugar! Nos aseguraremos de que esta referencia cubra todos los detalles que deseas saber sobre CKB.

  • Laboratorios: los documentos de referencia por sí solos no ayudarán demasiado. Habrá momentos en que quieras ensuciarte las manos y comenzar a jugar con las cosas. En esta sección proporcionaremos guías reales paso a paso sobre cómo construir cosas con CKB. Ya sea que desees crear un nuevo script CKB o escribir un dapp que interactúe con CKB, tendremos todo tipo de laboratorios reales para cubrir estos ejercicios.

  • Integración: las billeteras externas o exchanges generalmente enfrentan desafíos únicos y diferentes cuando integran CKB en su sistema. Esta sección proporcionará guías y consejos para integrar CKB en un servicio existente.

  • Ensayos: tenemos desarrolladores que escriben diferentes artículos sobre CKB todo el día. Aquí proporcionamos un espacio para que los desarrolladores escriban artículos independientes. No importa si se trata de depurar scripts CKB, o formato de serialización, o incluso mejores prácticas de RPC, queremos proporcionar un lugar donde todos se sientan cómodos compartiendo sus ideas.

En última instancia, esperamos que el nuevo sitio de documentos pueda responder todas tus preguntas sobre Nervos CKB.

Hacia el Futuro

Creemos que CKB tiene el potencial de brotar en un ecosistema próspero. Los proyectos presentados aquí son solo un vistazo de las muchas ideas y paradigmas nuevos que Nervos CKB ha habilitado. Nuestra esperanza es que estos proyectos puedan aumentar su productividad en la construcción de dapps CKB, así como inspirar nuevas direcciones solo posibles con Nervos CKB. Dicho esto, ya estamos mirando más allá del horizonte inmediato, y algunos proyectos más prometedores también se están construyendo mientras hablamos:

  • WebAssembly está comenzando a ganar cada vez más uso en el espacio blockchain. Aunque creemos que RISC-V es una mejor opción para Nervos CKB, esto no significa que no podamos proporcionar un soporte de WebAssembly de primera clase. Ahora estamos construyendo un proyecto que puede traducir cualquier programa WebAssembly con WASI al script CKB. Además del nuevo soporte de lenguaje de programación, como AssemblyScript, creemos que esto también puede desbloquear un nuevo potencial, como la interoperabilidad en diferentes blockchains.

  • Arriba hemos demostrado soporte de lenguaje de propósito general en CKB, pero el viaje no se detiene aquí. Enterrado profundamente en el modelo de CKB VM, descansa más potencial que solo se puede revelar con un lenguaje de programación diseñado a medida. Así que también estamos estudiando las posibilidades de crear un desarrollo de script de orientación de lenguaje de propósito especial en CKB. Estos intentos, cuando estén listos, deberían liberar más poderes habilitados por el diseño único de CKB.

  • Los proyectos lanzados actuales se adaptan principalmente a las necesidades de los desarrolladores de back-end. También hay numerosos desarrolladores frontend o de aplicaciones que están igualmente ansiosos por unirse al país de las maravillas de CKB. También estamos trabajando para proporcionar herramientas nocode que permitan a esas mentes curiosas construir una experiencia dapp completa en Nervos CKB.

Creemos que el cielo es el límite cuando se trata del potencial de CKB. Además de todo lo mencionado anteriormente, estamos experimentando con más ideas y trabajando en más herramientas en CKB, y esperamos sinceramente compartirlas con ustedes en el futuro.


Únete a nuestra comunidad: Github - Forum - Reddit - Twitter
Para discusiones o preguntas, únete a la conversación en Discord o en uno de los canales de Telegram de nuestra comunidad: inglés, coreano, ruso, japonés, español, vietnamita y chino.

2 Likes