Cómo usar Client Raindrop SIN usar la API de hidrógeno

** He publicado un video tutorial que sigue esta publicación de blog paso a paso **

Para comprender este tutorial, es importante definir primero algunos términos.

Definiciones

Hidrógeno: una empresa que creó un producto: la API Hydro.

Hydro API: una API que llama a funciones de contratos inteligentes Hydro. Cualquier otra aplicación, al igual que la API Hydro, también puede invocar funciones en contratos inteligentes Hydro, ya sea manualmente a través de sitios como MyCrypto (como lo haré en este tutorial) o mediante programación a través de web3.

Aplicación Hydro the Mobile: Esta es una aplicación móvil creada por Hydrogen que conecta a los usuarios finales con la API de Hydrogen. Esto crea HydroID para los usuarios, lo que a su vez les permite gestionar sus interacciones con Hydro Smart Contracts. Gracias a la API Hydro, esto no requiere ninguna funcionalidad blockchain nativa de la aplicación en sí.

HydroID: este es un ID generado a través del contrato inteligente Raindrop del lado del cliente. Solo se puede crear un HydroID para una billetera de ethereum dada. Esta identificación está vinculada a los contratos inteligentes de Hydro; por ejemplo, cuando un usuario crea un Snowflake para la gestión de datos personales, su token Snowflake único y no fungible se vincula a su HydroID. Hydrogen API solo crea HydroID para billeteras en la aplicación móvil Hydro que actualmente no están destinadas a retener fondos; sin embargo, las aplicaciones de terceros podrían vincular HydroID a billeteras MetaMask, billeteras nativas u otras billeteras según las necesidades de sus aplicaciones.

Hydro, el proyecto descentralizado: el equipo central de Hydro escribe contratos inteligentes que aprovechan el token HYDRO para agregar funcionalidad de servicios financieros mejorada de blockchain a las empresas. Los desarrolladores de blockchain de todo el mundo pueden reconocer libremente los problemas, realizar solicitudes de extracción o escribir sus propios contratos que también aprovechan HYDRO para llevar la funcionalidad de blockchain a las empresas.

Hydro the ecosistema: Consiste en que los desarrolladores escriban y contribuyan a los contratos inteligentes de Hydro, las empresas que usan web3 para conectarse directamente a los contratos inteligentes de Hydro y todos y cada uno de los clientes a los que sirven estas empresas.

Replanteo de HYDRO: Para garantizar buenos actores en el ecosistema de HYDRO, ciertos contratos inteligentes de Hydro requieren que los desarrolladores mantengan un cierto equilibrio de HYDRO. El contrato del Cliente Raindrop requiere un saldo de HYDRO para cualquier persona que quiera registrar usuarios. El propietario del contrato del token HYDRO (nuestro equipo) puede ajustar la cantidad requerida de HYDRO replanteado (para que podamos reducir el requisito cuando sea necesario en función de la escasez del token). Sin embargo, esta cantidad de apuesta nunca puede exceder 111,111,111 HYDRO para crear un HydroID en nombre de otra persona, y 222,222 para crear un HydroID para usted. Establecemos este límite superior para mantener la descentralización, de modo que si controlamos una gran parte de la oferta total, no podemos excluir a los competidores. En el futuro, tenemos la intención de establecer una estructura de propiedad descentralizada para el contrato del Propietario, incluso a pesar de su poder mínimo.

Alcance de este tutorial

Como parte del proyecto Hydro, hemos escrito algunos contratos inteligentes que aprovechan el token HYDRO: el contrato inteligente de gota de lluvia del lado del servidor, el contrato inteligente de gota de lluvia del lado del cliente y el contrato inteligente de copo de nieve. Tenemos la intención de escribir más contratos de acuerdo con nuestra hoja de ruta para hacer que el token Hydro sea aún más dinámico y útil. El núcleo de todos los contratos inteligentes que estamos creando es el HydroID. HydroID se genera a través de nuestro contrato inteligente cliente-gota de lluvia y crea un enlace permanente y seguro a la billetera de un usuario que conecta a ese usuario con todo el ecosistema Hydro.

En este tutorial, utilizaré el contrato inteligente de gota de agua del cliente para crear un HydroID para un usuario que se vincule a mi billetera personal de Trust. Haré esto en la red de prueba Rinkeby usando MyCrypto. Un desarrollador podría usar web3 para llamar a las mismas funciones que estoy llamando y conectarlo a su propia aplicación. Por ejemplo, un banco que quiera hacer que Raindrop sea nativo de su propia aplicación móvil para 2FA y usar su propia marca en lugar de hacer que sus usuarios descarguen una aplicación separada, podría usar web3 para llamar a estas funciones integradas en su propia API. Alternativamente, alguien que construya una plataforma de medios sociales de estilo Linked-In con funcionalidad de billetera nativa podría querer llamar a estas funciones para generar HydroIDs de usuario que se vincularían con los tokens no fungibles del copo de nieve de esos usuarios. El alcance completo de la interacción programática con los contratos de Hydro Smart depende de la imaginación del desarrollador.

Adquisición de Testnet Ether y Tokens

Antes de que pueda comenzar, necesitará adquirir ETH e HYDRO en la red de prueba rinkeby. Para adquirir ETH, siga los pasos en esta respuesta de StackExchange:

A continuación, deberá adquirir tokens HYDRO de testnet. Para hacer esto, vaya a la página de contratos de MyCrypto:

Conéctese con una billetera: acabo de usar mi billetera MetaMask para esto. Utilizaremos el contrato de token Rinkeby Hydro, que se puede encontrar aquí:

Deje en blanco "seleccionar contrato existente" y, en su lugar, pegue la dirección 0x4959c ... en la parte superior izquierda del enlace etherscan en el campo "dirección de contrato". Pegue el contrato ABI de etherscan en el campo "ABI". Seleccione la función getMoreTokens, establezca un límite de gas y genere la transacción. Una vez completado, debería poder ver 10,000 tokens HYDRO desde la dirección 0x4959c en su billetera Testnet de Rinkeby. Si sigue estos pasos en la red principal de Ethereum, deberá adquirir el HYDRO de un tercero.

Si bien establecemos el requisito de replanteo neto principal de HYDRO en 222,222 HYDRO, mantenemos el requisito de replanteo de Rinkeby en 10,000 HYDRO para que sea más fácil para los desarrolladores seguir estos pasos y realizar pruebas.

Nota * a lo largo de este tutorial, en realidad no utilizará estos 10,000 HYDRO. Simplemente no podrá llamar a estas funciones a menos que su billetera mantenga un saldo de 10,000 HYDRO. Por lo tanto, si alguna vez quisiera dejar de registrar usuarios, podría usar su HYDRO estacado para otros contratos inteligentes de HYDRO o dárselo a otros desarrolladores o un tercero, o simplemente dejarlos en su cuenta.

Registro de usuarios a través del contrato inteligente Raindrop del lado del cliente

Ahora que estamos configurados, podemos comenzar el proceso real de interacción con el Contrato inteligente de gota de lluvia del lado del cliente. Hay dos formas de hacer esto: puede registrar su propio HydroID o delegar a otra persona para que lo haga en su nombre. Comencemos con el más fácil: registrar su propio HydroID. Puede registrar su propio HydroID llamando a la función signUpUser del contrato Raindrop del lado del cliente.

Regrese a la página de contratos de MyCrypto, excepto que esta vez pegue la dirección del contrato Raindrop del lado del cliente que comienza con 0xb29 ... Puede encontrar este contrato en la parte superior izquierda de la siguiente página de etherscan. Toma el ABI desde aquí también:

Seleccione la función signUpDelegatedUser, que toma el único parámetro casedUserName. Ingrese el nombre de usuario que desee registrar. Dado que estos nombres de usuario se almacenan en la cadena de bloques pública, HydrogenAPI genera cadenas de caracteres alfanuméricos aleatorios de 7 caracteres para este campo; sin embargo, dado que estoy haciendo esto manualmente fuera de HydrogenAPI, solo registraré un nombre de usuario llamado AnuragHydro.

Aquí puede ver la transacción confirmada:

Ahora, para el enfoque más interesante: registrar un HydroID en nombre de otro usuario. Esto será útil para aplicaciones de terceros que desean conectar a sus usuarios al ecosistema Hydro. Para registrar a otra persona como usuario, deberá recopilar dos cosas de ellos:

  1. un mensaje firmado por ellos: este mensaje debe ser un hash keccak 256 de "Crear cuenta hidroeléctrica RaindropClient"
  2. su discurso público

En nuestra implementación en Hydrogen, almacenamos un par de claves en el dispositivo móvil del usuario a través de la aplicación Hydro. Esta clave privada firma el mensaje y envía el mensaje firmado junto con su dirección pública a nuestra API que crea su HydroID.

A los fines de este tutorial y siguiendo el proceso manualmente, utilizaré la funcionalidad de firma de MyCrypto. Ir:

Y asegúrese de haber iniciado sesión con una dirección ethereum nueva y separada para la que realizará un registro delegado. La dirección pública de la mía es 0x3c5 ... Deberá pegar el hash del mensaje "Crear cuenta hidroeléctrica RaindropClient". Puede obtener el hash aquí:

y debería verse así: 96c9259001bd030923ed09cd77ac733c1f82fe843ed92337c2b3953346d5a522. Agregue un 0x en el frente y firme el mensaje:

Una vez que hayas hecho esto, la firma debería aparecer a continuación:

Deberá recopilar las "r", "s" y "v" de esta firma. Puede hacerlo pegando la firma en un editor de texto de ancho fijo (uso atom) y siguiendo estos pasos:

  1. eliminar el 0x desde el principio
  2. divide la cadena resultante en tres líneas. Asegúrese de que la última línea tenga 2 caracteres y que la primera y la segunda línea tengan la misma longitud.
  3. Agregue 0x al comienzo de cada una de las dos primeras líneas.

En este punto, la firma debería verse así

4. El valor "v" está actualmente en formato hexadecimal y necesita convertirse a formato decimal. Puedes hacer esta conversión aquí:

1c en decimal es 28, entonces mi valor v es 28.

Así que ahora hemos recopilado lo siguiente del usuario que planeamos registrar:

dirección pública = 0x3c5 ...

r = 0x02c9….

s = 0x7a5c….

v = 28

Y nombraremos el HydroID para este usuario AnuragHydro3.0

Así que ahora tenemos que volver al contrato inteligente Hydro Client-Raindrop en MyCrypto, excepto que ahora llamaremos a la función signUpDelegatedUser en lugar de a la función signUpUser. Ingrese los parámetros que ha recopilado anteriormente de la siguiente manera:

Y aquí está la confirmación exitosa de etherscan:

¡Y voilá! Has registrado manualmente un usuario por separado. Programáticamente, podría llamar a todas estas mismas funciones de la misma manera y registrar a los usuarios en masa.

¡Avíseme si puede replicar estos pasos con éxito o integrar este proceso para que sea nativo de su propia aplicación! Alternativamente, siempre puede hacer que sus usuarios descarguen la aplicación móvil Hydro y se registren en la API Hydro a través del sitio web de Hydrogen y simplemente conecten su aplicación a la API Hydro.