Actualización para desarrolladores n. ° 14 – 26/11/2019

¡Hola a todos! Ha pasado un tiempo desde nuestra última actualización para desarrolladores, pero hemos estado ocupados en todos los frentes. Esta actualización para desarrolladores pretende dar un vistazo a algunos de los proyectos que hemos abordado recientemente y destacar la dirección en la que vamos.

El objetivo del proyecto State Channels es proporcionar una base segura y bien pensada para aplicaciones y carteras que utilizan canales estatales. Nuestra esperanza es que los dapps y los monederos utilicen nuestros clientes de referencia & amp; investigación fundamental con un alto grado de certeza sobre las garantías de seguridad que brindamos.

Estas son nuestras actualizaciones más recientes sobre nuestro equipo , nuestra ingeniería y nuestra investigación , junto con notas sobre dónde me dirijo a continuación.

?‍?‍?‍? Equipo

Magmo se une a Consensys

Como parte de un impulso para garantizar que la financiación a largo plazo se dedique a la investigación y el desarrollo de canales estatales de alta calidad, Consensys respalda oficialmente el proyecto State Channels al respaldar el desarrollo del equipo de Magmo.

? Ingeniería

Implementación de la API de cliente

Counterfactual Playground, construido a principios de este año, fue diseñado para que las aplicaciones basadas en navegador interactúen con una billetera en un proceso separado. Para hacer esto, usó cf.js para enviar mensajes estructurados JSON-RPC a un proceso de nodo que se ejecuta fuera del alcance de la aplicación (es decir, en una ventana principal de un iframe ). Hasta ahora, con el @ statechannels / wallet que estamos construyendo para reemplazar el nodo , no hemos tenido este tipo de patrón de comunicación. Sin embargo, recientemente diseñamos una API y comenzamos a implementarla con la expectativa de aplicarla a una aplicación de demostración que lanzaremos pronto. Puede ver la versión anterior de los documentos de la API aquí.

Titulares de activos

Para desvincular la adjudicación del canal de las transferencias de activos en cadena, hemos introducido un nuevo tipo de contrato llamado AssetHolder. Esta es una interfaz genérica que puede representar la propiedad masiva de cualquier tipo de activo en Ethereum. Ahora, los fondos asignados a un canal de estado en particular se mantienen dentro de un AssetHolder y se bloquean según el resultado de un canal.

Funciones de retiro optimizadas

Anteriormente, retirar fondos de un canal requería tres transacciones en cadena. Uno para concluir el canal en el adjudicador, otro para establecer el resultado en cadena y otro para enviar los fondos a los propietarios correctos en función del resultado. Con la adición del AssetHolder, esto habría agregado un cuarto para actualizar el AssetHolder con el resultado del adjudicador. Para evitar esto, hemos optimizado los contratos para hacer todas estas operaciones en una sola transacción llamada concludePushOutcomeAndTransferAll . Esto también se ha implementado en la billetera.

Optimizaciones de gas

Recientemente, reescribimos todo el código base de los contratos de Solidity para optimizar el gas en su totalidad. El resultado de esta optimización ha generado las siguientes métricas nuevas:

Happy Path (depósito, cierre colaborativo, retiro)

Ruta de desafío (desafío, respuesta)

Después de esto, el código base de la billetera también ha estado en el proceso de actualizar toda su funcionalidad para admitir los nuevos contratos. La mayor parte de la actualización ha consistido en almacenar nuevas estructuras de datos en las que anteriormente se podía confiar para que existieran en la cadena, o leer datos de eventos de la cadena que ha reemplazado el almacenamiento en cadena como la capa de disponibilidad de datos.

Connext en Mainnet

En septiembre, Connext lanzó oficialmente su V2.0 en mainnet; construido sobre State Channels v1.0 (anteriormente Counterfactual). Este es un hito tremendo, ya que muestra que la pila de tecnología completa proporcionada por State Channels es compatible con un caso de uso de producción importante. Desde el lanzamiento, ha habido un desarrollo continuo en los clientes de Connext y State Channel, y todos los comentarios se han incorporado a la nueva billetera que se está construyendo bajo State Channels v 2.0, que se está diseñando con una ruta de actualización en mente.

Ejecución de EVM en el navegador de transiciones de estado puro

Debido a que todas las transiciones de estado en un canal de estado se pueden validar a través de funciones pure , ahora las estamos validando usando una implementación de EVM en el navegador que es significativamente más rápida que hacer un eth_call a un nodo Infura.

? Investigación

Especificación TLA +

Recientemente, escribimos el protocolo ForceMove en un lenguaje de especificación formal llamado TLA +. Esto nos permitió encontrar muchas optimizaciones interesantes para el protocolo e identificar vectores de ataque poco intuitivos. Por ejemplo, nuestro trabajo en TLA + condujo a la introducción de un nuevo método en el protocolo llamado checkpoint . Puede leer más sobre eso en nuestro foro de investigación. ¡También estamos trabajando en un análisis en profundidad de este trabajo que compartiremos pronto!

Optimizaciones por turnos

Otra área de investigación nos ha llevado a explorar protocolos optimizados para lograr un consenso sobre una actualización de estado en escenarios donde ninguna máquina de estado describe explícitamente las reglas de la aplicación fuera de las reglas de nivel base de ForceMove. Discutimos esto en una publicación de investigación titulada: ¿Podría / debería una billetera alejarse de la toma de turnos para obtener actualizaciones de consenso?

Políticas de seguridad basadas en pestañas del navegador

Para garantizar que su navegador pueda navegar de forma segura a cualquier dominio de sitio web y permitir que ese dominio interactúe con su billetera de canales estatales, estamos trabajando en un enfoque para los presupuestos basados ​​en el navegador. Estos permiten que su navegador asigne una cantidad fija de su capital en el canal estatal a esa pestaña, para que pueda operar en su nombre sin ventanas emergentes perturbadoras.

? Qué esperar

? Póngase en contacto

¿Quieres contribuir? Estamos contratando.

Estamos trabajando activamente en varios problemas interesantes en este momento, que incluyen:

Si está interesado en alguno de estos problemas, comuníquese con nosotros, sumérjase en nuestro GitHub o contribuya en el foro de investigación.

Únase a la discusión

Nuestro foro de investigación es el hogar de preguntas detalladas sobre los canales estatales. Si desea contribuir o simplemente aprender, cree una cuenta y pregunte en research.statechannels.org.