2/02/2023
Crypto
Paso a paso: cómo realizar la verificación de la Prueba de Solvencia en Lemon
Consideraciones de seguridad
Siempre debes tener cuidado con lo que instalas y ejecutas en tu computadora. Nuestro código es seguro y está auditado por especialistas de la industria, pero queda en ti no instalar nada que no provenga de fuentes confiables.
👉🏻 Asegúrate de que el correo electrónico que recibiste para realizar la verificación haya sido enviado desde notificaciones@lemoncash.com.ar. En caso de que recibas un correo de otra casilla, elimínalo.
👉🏻 No instales nada que no provenga de ese correo
👉🏻 Recuerda que este es el único instructivo válido con los pasos a seguir.
👉🏻 No modifiques el código descargado porque los resultados podrían verse afectados. Si te gustaría proponer algún cambio, puedes registrarlo como issue en el repositorio de Github.
¿Te gustaría aprender todo lo relacionado con las criptomonedas y la tecnología blockchain? Regístrate en nuestro curso gratuito y obtén conocimientos valiosos para entender cómo funcionan estas tecnologías. Haz clic en el botón
Paso a paso para la verificación
Primero, necesitarás clonar el proyecto. Antes de hacerlo, asegúrate de estar posicionado en la ubicación donde quieras guardarlo. En caso contrario, puedes moverte a otra usando el comando
% cd [ubicación]
. Una vez que estés listo, clónalo ejecutando el comando% git clone [<https://github.com/lemonatio/proof-of-liabilities>](<https://github.com/lemonatio/proof-of-liabilities>)
o descargando el zip desde GitHub.Dentro de la carpeta donde se guardó el proyecto, crea una nueva carpeta con el nombre “input”. Puedes hacerlo desde tu explorador de archivos o desde la misma terminal usando el comando
<mkdir input>
. Ten en cuenta que para ejecutar este comando, debes estar dentro de la carpeta del proyecto. Desde la consola, lo puedes lograr ejecutando% cd proof-of-liabilities
.Arrastra el archivo “proof.csv” que descargaste desde el correo que te enviamos a esta carpeta. Puedes verificar que está bien guardado ejecutando el comando
cat input/proof.csv
. Si es así, debería mostrarte el contenido en la consola. De lo contrario, te arrojará un mensaje de error. 🔒 Recuerda que este archivo contiene datos personales tuyos, ¡no lo compartas! Tampoco divulgues el resultado de imprimir el archivo en la consola.Necesitarás otro archivo que incluya los resultados de la Prueba de Pasivos. En la misma auditoría (en la sección “Variables para la verificación de Merkle”), encontrarás un enlace que lo contiene. Guárdalo dentro de la carpeta del proyecto con el nombre
root.json
. ⚠️ Asegúrate siempre de estar tomando la auditoría que corresponde con el correo que estás considerando. Los datos del archivo “proof.csv” son para una auditoría puntual, por lo que es muy importante que compares la fecha y hora del correo con la de la auditoría. Si no, la verificación fallará. ✔️ Puedes verificar que está bien guardado ejecutando el comandocat root.json
. Si es así, debería mostrarte el contenido en la consola. Si no, te arrojará un mensaje de error.Ahora sí, todo está configurado para que puedas ejecutar el código. Para eso, ejecuta el siguiente comando:
python3 verify.py -i input/proof.csv -r root.json
¡Listo! En la consola se imprimirán los resultados del proceso.
Si en el futuro quieres verificar una nueva auditoría, recuerda solicitar un nuevo correo y actualizar los archivos con los nuevos datos!
¿Cómo interpreto los resultados obtenidos?
Tras ejecutar la línea python3 verify.py -i input/proof.csv -r root.json
la terminal imprime “Verifying
” indicando que comenzó la verificación.
Luego, se van imprimiendo los hashes de los diferentes steps o “pasos”, siendo cada uno un nivel del árbol. El step 1 muestra el hash del nodo hoja que te corresponde, es decir, tu hash generado a partir de tus datos personales. Estos se toman desde el archivo proof.csv.
Todos los pasos siguientes corresponden a los niveles más altos hasta que el último representa la raíz. Una vez calculado (la cantidad de niveles no es fija), se vuelve a imprimir bajo el título “Obtained hash
”. Inmediatamente debajo, se imprime el hash ingresado en el archivo root.json (es decir, el que tomamos desde la auditoría) para realizar la comparación. Lo mismo sucede con los balances: se imprimen tanto los obtenidos como los ingresados. Si lo obtenido es igual a lo ingresado, se obtiene el mensaje de éxito: Verified correctly
😃
¿Qué significa esto? Que los pasivos totales de la empresa incluyen la deuda contraída contigo. ¿Por qué? El árbol de Merkle se construye desde los nodos hoja hasta obtener la raíz del árbol. Si los datos de alguna hoja cambian, cambia el resultado total de la raíz. Por lo tanto, la verificación garantiza que tus fondos fueron considerados en la construcción del árbol.
Problemas frecuentes
No te preocupes, aquí listamos los errores más comunes que detectamos y su solución. Este listado lo construimos en comunidad, así que si encuentras otro error puedes escribir a soporte desde la app para que lo sumemos y ayudemos a los próximos verificadores 😉
Instalación y configuración
No reconoce el comando
git
al intentar clonar el repositorio ▶️ Si obtienes al ejecutar el comando degit clone
el mensajeerror: invalid active developer path
, seguramente no tengas instalado git. Puedes seguir este instructivo.Si al intentar clonar el repositorio, no lo encuentra ▶️ Un error del estilo
fatal: repository '[github.com/lemonatio/proof-of-liabilities](<https://github.com/lemonatio/proof-of-liabilities>)' does not exist
significa que el enlace al proyecto no es correcto. Copia el actualizado desde el sitio de GitHubErrores con las ubicaciones del proyecto o archivos ▶️ Si en algún momento obtienes un error como
No such file or directory
significa que algo no quedó guardado en la ubicación correcta. Algunos consejos:Una vez que hayas clonado el proyecto, posiciónate dentro de él ejecutando
% cd proof-of-liabilities
Después de guardar el archivo proof.csv, asegúrate de que esté bien guardado ejecutando la línea
cat input/proof.csv
Si esto no te imprime el archivo, no está bien guardado. Te recomendamos usar el explorador de archivos de tu computadora para encontrarlo y moverlo a la ubicación correcta: dentro de la carpeta proof-of-liabilities.Lo mismo puede ocurrir al ejecutar
cat var.json
después de crear el archivo. Si no imprime los datos de la raíz y el algoritmo de hash, muévelo dentro del proyecto. Ojo, otro error común es que guardes este archivo dentro de la carpeta input, pero debe estar suelto dentro de la carpeta proof-of-liabilities.
Error con el enlace con las variables de la auditoría ▶️ Si por algún motivo no puedes abrir el enlace con los valores de la raíz que incluimos en la auditoría, lo puedes armar con los resultados. Primero, tendrás que crear el archivo con nombre
root.json
. Recomendamos usar algún editor de texto que tengas. Asegúrate de que .json sea la extensión del archivo. El objeto se compone de tres propiedades:root_hash
,root_balances
yhash_algorithm
. Las dos primeras las encuentras en la auditoría identificadas de esa manera, y para elhash_algorithm
usamos el valor fijo de“sha256”
. La estructura del archivo debe ser la siguiente:{ "root_hash": [hash presentado en la auditoría], "root_balances": [balances presentados en la auditoría], "hash_algorithm": "sha256" }
Error al guardar el archivo .json ▶️ Si copiaste y pegaste los datos desde la auditoría y ves que hay un error en el formato del archivo, seguramente sea porque al pegar los balances de la auditoría se incluyeron los quiebres de línea que se muestran en el PDF y esto no está permitido para archivos de formato .json. Para solucionarlo, solo tienes que borrar estos espacios libres y verificar que los balances queden listados en un único renglón.
Verificación
error: invalid active developer path
▶️ Si al ejecutarpython3 verify.py -i input/proof.csv -v var.json
****************************arroja el mensajeerror: invalid active developer path
necesitarás instalar python. Puedes descargarlo desde este enlace. También puede pasar que ya tengas python instalado pero necesites una versión más nueva, porque la versión mínima requerida es python 3.9. Puedes usar ese mismo enlace para actualizarla.Error con
jsonDecodeError
al ejecutar el verify ▶️ Si copiaste y pegaste los datos desde la auditoría, dependiendo del programa que uses puede ser que te hayan quedado saltos de línea. Para solucionarlo, puedes borrarlos. Ten cuidado al hacerlo, porque en caso de borrar de más y modificar algún número vas a obtener un error. De todas formas, te recomendamos que uses directamente el enlace que dejamos al final de la auditoría (en la sección “Variables para la verificación de Merkle”), donde ya está el objeto JSON armado para evitar errores en el proceso de copiado.Output: “Root hash is not equal to obtained hash” ▶️ Si al finalizar el proceso de verificación te devuelve este mensaje significa que el hash de la raíz obtenido no es igual al de la auditoría. Verifica que esté bien ingresado: corrobora que la fecha de la auditoría de la que tomaste los datos coincida con la del correo del que descargaste el csv. Verifica también que los datos de la auditoría estén bien cargados, y que el archivo csv sea exactamente el mismo que descargaste, sin modificaciones.
Output: “Root balances are not equal to obtained balances” ▶️ Si al finalizar el proceso de verificación te devuelve este mensaje significa que los balances calculados no son los mismos de la auditoría. Otra vez, verifica que estés cruzando los datos correctos. Ten en cuenta de incluir los saldos tuyos que se muestran en el csv, no los modifiques por los actuales.