Ocean hace que las redes múltiples sean aún más fáciles de Matthias Kretschmann Julio de 2021

Simplificación de múltiples redes en el océano con una interfaz unificada

? La nueva realidad?‍♀️ Mercado de redes múltiples? Acuario de múltiples redes

Cuando lanzamos Ocean Market como parte de v3, acabábamos de pasar a ETH Mainnet desde nuestra propia PoA Mainnet personalizada, por lo que todo el enfoque de la interfaz de usuario se centró en trabajar contra esa única red de producción. A medida que implementamos los contratos del Protocolo Oceánico en más cadenas para escapar de las tarifas de transacción en rápido aumento, el paradigma de la interfaz principal de basar los metadatos mostrados en la red conectada del usuario se convirtió rápidamente en una molestia de usar. Hola: No se pudo recuperar el activo. ?

Así que nos sentamos y descubrimos los mejores patrones para resolver estos principales puntos débiles, centrándonos únicamente en la perspectiva del usuario final:

Reducir la fricción al seguir enlaces a activos fuera de ETH Mainnet Conservar el DID y las URL existentes como el identificador único de un activo, independientemente de la red Aumentar la capacidad de descubrimiento de activos fuera de ETH Mainnet Aumentar la capacidad de descubrimiento de todas las redes Ocean Protocol se implementa para Fomentar el uso de redes más allá de ETH Mainnet Reducir Necesitamos cambiar las redes de billetera tanto como sea posible al navegar por el mercado. Cualquier solución posible debe escalar fácilmente a medida que continuamos desplegándonos en más redes.

Al final, llegamos a una solución que aborda todo esto, donde el principal nuevo paradigma es una interfaz que muestra activos mezclados de múltiples redes. Todo el tiempo y en todas las pantallas donde se enumeran los activos. Esto separa los metadatos y la fuente de datos financieros de la red de billetera del usuario como estaba antes.

Las redes mostradas ahora están controladas por el nuevo selector de red.

El nuevo selector de red y la barra de menú revisada en la interfaz de Ocean Market.

De forma predeterminada, seleccionamos automáticamente todas las redes de producción en las que se implementa Ocean Protocol. Tan pronto como interactúe con este nuevo conmutador de red, su selección se hará cargo y se guardará en su navegador, por lo que será la misma la próxima vez que ingrese al mercado.

Al seleccionar o deseleccionar redes, se modifican todas las consultas de Elasticsearch que se envían a nuestro nuevo Aquarius, lo que da como resultado activos mixtos en la pantalla.

Activos mixtos de múltiples redes.

Todos los activos ahora indican a qué red pertenecen y se le solicita que cambie a la red del activo cuando detectemos que su billetera está conectada a otra red.

Un lugar restante donde el cambio de billetera de usuario sigue siendo importante.

Y en el caso de usar MetaMask, agregamos acciones para cambiar la red de su billetera directamente desde la interfaz de usuario, que, a partir de ahora, es prácticamente el flujo de usuarios más optimizado posible para cambiar de red con MetaMask desde una Dapp.

Con todo esto, el cambio de red de billetera ahora solo es necesario una vez que desee interactuar con un activo, como descargar o agregar liquidez a su grupo.

La red de billetera del usuario también sigue siendo importante para publicar un activo, por lo que basamos todo el formulario de publicación en la red actualmente conectada para definir en qué red se publica un activo.

Publicar formulario con indicador de red.

En cuanto a nuestras estadísticas de mercado clave en el pie de página, las cambiamos para mostrar números consolidados como una suma de todas las redes de producción. En su descripción emergente, puede encontrar los valores divididos por red.

Nuevas estadísticas de mercado consolidadas basadas en cada red.

Más activos en la pantalla y más controles también llevaron a más ajustes en la interfaz de usuario para obtener más espacio disponible para el contenido principal real. Refactorizamos por completo el diseño del menú principal, le agregamos un cuadro de búsqueda global y movimos algunas advertencias. Y, mientras estábamos en ello, mejoramos la experiencia móvil. ✨✨

Todo lo que necesita de nuestro menú está en las ventanas gráficas móviles

Y finalmente, también migramos automáticamente todos sus marcadores existentes de todas las redes y los combinamos en una lista.

Cambios de desarrollador

Para los desarrolladores, hay nuevos valores en app.config.js que controlan las redes que se muestran en la ventana emergente de selección de red:

– chainIdsSupported: Lista de todos los chainIds admitidos. Se utiliza para completar la lista de preferencias de usuario de redes.
– chainIds: Lista de chainIds que las consultas de caché de metadatos devolverán por defecto. Esto preselecciona las preferencias del usuario de Redes.

En segundo plano, la base del código cambió drásticamente. Ahora solo tenemos un Aquarius pero aún múltiples proveedores y especialmente subgrafos, y también tuvimos que desconectar técnicamente la red de billetera de la fuente de datos. P.ej. Para mostrar precios y datos financieros, el trabajo principal de refactorización se centró en la correlación de los activos basados ​​en ddo.chainId con el subgrafo respectivo y en la consulta de varios subgrafos al mismo tiempo según fuera necesario. Para ello, también simplificamos nuestra configuración GraphQL y cambiamos de Apollo Client a urql.

Si está interesado en todos los cambios de código detallados, puede seguir junto con la solicitud de extracción principal, que tiene referencias y capturas de pantalla para todos los demás cambios realizados. Este también es el mejor lugar para comenzar si ejecuta su propia bifurcación del mercado y desea integrar los últimos cambios de múltiples redes sin mirar solo un gran cambio en main.

¡Echale un vistazo!

Diríjase a market.oceanprotocol.com y vea los activos actualmente mezclados de 3 redes de forma predeterminada.

Puede encontrar todos los valores necesarios para conectar su billetera a las redes en las que se implementa Ocean Protocol en nuestra documentación de redes compatibles, junto con una guía sobre cómo configurar una red personalizada en MetaMask.

Acuario consiguió una refactorización completa. Además de numerosas optimizaciones y estabilizaciones, este nuevo Aquarius indexa activos de múltiples cadenas y los entrega todos juntos en sus respuestas API, con un nuevo valor ddo.chainId como parte de los metadatos de cada activo.

Además de hacer posible una interfaz con activos mixtos, esto también brinda una gran ventaja de mantenimiento, ya que ahora solo se debe implementar y mantener una instancia de Aquarius en lugar de una para cada red compatible.

Entonces, múltiples instancias de Aquarius ahora se reducen a una instancia, donde para cada red se inicia un indexador específico. La API de Aquarius obtuvo un nuevo punto final que expone qué cadenas están indexadas en / api / v1 / aquarius / chains / list.

/ cadenas / lista de respuesta de punto final que expone los ID de cadena indexados

Migración a Acuario de múltiples redes

Acuario v3.0.0 + es el indicado.

Si usa nuestras instancias remotas de Aquarius, todo lo que tiene que hacer es apuntar su aplicación contra el nuevo aquarius.oceanprotocol.com y luego en su interfaz hacer cosas basadas en ddo.chainId, como modificar sus consultas de Elasticsearch para incluir activos de redes específicas.

Mantendremos las antiguas instancias de red dedicadas como aquarius.mainnet.oceanprotocol.com en funcionamiento hasta el 1 de septiembre de 2021 y, en su lugar, animamos a todos a migrar a aquarius.oceanprotocol.com.

Con un Aquarius indexando múltiples cadenas, rara vez es útil devolver todos los activos, ya que lo más probable es que solo esté interesado en los activos de la red de producción cuando los incluye en una aplicación. Por lo tanto, también eliminaremos el punto final GET / assets / ddo y sugeriremos reemplazarlo con una consulta de búsqueda específica para POST / assets / ddo / query, e incluiremos el chainId que desea, como:

{
Página 1,
desplazamiento: 1000,
consulta: {
query_string: {
consulta: 'chainId: 1 Y -isInPurgatory: true'
}
}
}

Si tiene sus propias instancias implementadas, le sugerimos que implemente una nueva con v3.0.0 + para que todo vuelva a indexar y, finalmente, cambie las URL de su aplicación a esta nueva implementación y adapte la interfaz de su aplicación en consecuencia. El archivo Léame tiene más información sobre cómo implementar exactamente este nuevo Acuario.