Requisitos previos de las claves de paso
Las claves de paso son una forma asombrosa de ayudar a los desarrolladores de dapps (como tú) a conectar a los usuarios con sus proyectos, protocolos, aplicaciones, etc. Aprende más en la página de billeteras inteligentes.
Hemos estado trabajando arduamente en algunas herramientas para aumentar la adopción y la facilidad de uso de las claves de paso en Stellar. Para este tutorial, utilizaremos el increíble paquete passkey-kit
, que elimina MUCHO del dolor de cabeza y las complicaciones de la situación.
Antes de entrar en los detalles sobre las claves de paso, tenemos algunas tareas que hacer. Primero, configuraremos Launchtube, un servicio que ayudará a poner nuestras transacciones en la cadena sin preocuparnos por las tarifas de gas, los números de secuencia o las cuentas de origen. Realmente útil. Luego, crearemos un programa de indexación de Mercury, que se utilizará para realizar un seguimiento de la mitad de la clave pública de una clave de paso generada por el usuario y luego hacer una búsqueda inversa para ver a qué dirección de billetera inteligente se ha agregado la clave de paso.
Launchtube
Comencemos con Launchtube. Como mencionamos antes, Launchtube es similar a un servicio de "pagador", si te familiarizas con la abstracción de cuentas en las redes EVM. En realidad, no necesitaremos interactuar con Launchtube directamente. Todo eso será manejado por el paquete passkey-kit
. Sin embargo, necesitaremos obtener un token JWT que nos permitirá autenticar nuestra dapp con Launchtube.
Para los tokens de Launchtube en Testnet, podemos generar uno en cualquier momento que queramos. Todo lo que tienes que hacer es visitar https://testnet.launchtube.xyz/gen
para recibir un token JWT que será válido durante tres meses y tendrá 100 XLM en créditos (estos créditos se consumirán cuando envíes transacciones de red a través de Launchtube). Go ahead, give it a try!
¡Tenemos tokens de Launchtube en Mainnet disponibles! Puedes solicitar un token en el canal #launchtube
en nuestro servidor de Discord de desarrolladores de Stellar. En particular, contactando a @kalepail
, @ElliotFriend
, @carsten.xlm
o @Chris.anatalio.xlm
deberías avanzar bastante rápido.
Una vez que tengas tu token de Launchtube, cópialo y pégalo en el archivo .env
, como la variable PRIVATE_LAUNCHTUBE_JWT
:
PRIVATE_LAUNCHTUBE_JWT=<insert_your_launchtube_jwt_here>
Las variables de entorno PRIVATE_
y PUBLIC_
son una convención de SvelteKit, que nos permite acceder a estas variables en los lugares apropiados a lo largo de nuestro código utilizando los módulos $env/static/private
y $env/static/public
, respectivamente.
Mercury
Ahora, pasemos a Mercury. Este es un indexador de datos, que funciona tanto en Testnet como en Mainnet. El equipo está desarrollando algunas herramientas de datos de punta que están comenzando a redefinir lo que es posible con los datos de red. Un desarrollo de este tipo es el ZephyrVM: el entorno de ejecución en la nube de Mercury. En resumen, Zephyr te permite escribir programas (Rust) que se ejecutarán al cierre de cada ledger en la red Stellar. Dentro de ese programa, puedes acceder a cualquier tipo de dato actual o pasado, interactuar con servicios web externos, crear funciones sin servidor y poblar bases de datos. Al igual que con Launchtube, no interactuaremos directamente con Mercury dentro de la dapp Ye Olde Guestbook. Esas interacciones serán manejadas por el paquete passkey-kit
. También, similar a Launchtube, este requiere una configuración.
El paquete passkey-kit
no "viene" con un programa de Zephyr en el paquete publicado, pero tiene toda la funcionalidad de Zephyr que necesitarás en el repositorio fuente. Aquí te explico cómo hacer que ese programa Zephyr esté en funcionamiento en Mercury para que puedas acceder a los eventos de billetera inteligente indexados. Por cierto, es probable que estos comandos funcionen mejor fuera del directorio donde estás construyendo tu dapp de libro de visitas.
-
Clona el repositorio
passkey-kit
de GitHub y entra en el directoriozephyr
dentro de él:git clone https://github.com/kalepail/passkey-kit
cd passkey-kit/zephyr -
Obtén un token de autenticación desde la página web de Mercury. Puedes iniciar sesión en el panel de Testnet aquí. Haz clic en el botón Obtener token de acceso en la sección "Suscripciones activas". Se te proporcionará un JWT que será válido durante los próximos siete días.
Copia/pega este token en el archivo
.env
:PRIVATE_MERCURY_JWT=<insert_your_mercury_jwt_here>
-
(Opcionalmente) Puedes obtener un token de autenticación de larga duración para tu cuenta usando este token y haciendo una solicitud a la API de Mercury:
curl -X POST https://api.mercurydata.app/v2/key \
-H "authorization: Bearer <insert_your_mercury_jwt_here>Esto te dará una clave API que también puede ser añadida a tu archivo
.env
. El beneficio de esta clave API es que no caducará hasta que generes otra clave API.informaciónPara este tutorial, solo necesitas una de estas. Puedes especificar el JWT o la clave API, y hacer que todo funcione exactamente igual. En el
PasskeyServer
, sin embargo, asegúrate de especificar el valor correspondiente. -
Compila y despliega el programa de indexador de eventos Zephyr en la red de Testnet.
cargo install mercury-cli
export MERCURY_JWT="<insert_your_mercury_jwt_here>"
# Make sure you're using Rust version 1.79.0 or newer
mercury-cli --jwt $MERCURY_JWT --local false --mainnet false deploy
Si todo sale bien, ¡estás listo para continuar! ¡Bien hecho!
¡Ahora estás listo para sumergirte en la implementación real de claves de paso y autenticar a tus usuarios con la dapp del libro de visitas! ¡Vamos a hacerlo!
Resolución de problemas
Es posible que algo haya salido mal durante la ejecución de los procesos anteriores. Aquí hay algunas sugerencias generales de correcciones o cosas que puedes intentar si algo sale mal con tu uso de Launchtube o Mercury:
- Genera un nuevo token de Launchtube. Es posible que el token de Launchtube que estás utilizando haya agotado los créditos. Dado que estamos utilizando Testnet para este tutorial, no hay problema en generar un token completamente nuevo en cualquier momento visitando
https://testnet.launchtube.xyz/gen
en tu navegador. - Asegúrate de que tu programa de Zephyr se haya desplegado exitosamente. He estado atascado más de una vez con una solicitud de Mercury que no funcionaba porque el programa de Zephyr no se había desplegado exitosamente. Asegúrate de que la salida del comando
mercury-cli deploy
no tenga errores. - Revisa la documentación de Mercury. Es bastante buena y puede ayudarte a superar muchos de los obstáculos que podrías enfrentar.
En cualquier caso, siéntete libre de hacer preguntas o iniciar un chat en los canales #passkeys
y #launchtube
en el servidor de Discord de desarrolladores de Stellar. ¡Generalmente hay alguien disponible que está listo y dispuesto a ayudar!