Blockchain ETL: Ethereum es ideal para entusiastas de los datos. Como blockchain, nos proporciona muchos datos bien estructurados, haciendo que prácticamente todo lo que sucede en él esté disponible para su análisis.
Blockchain ETL ha sido durante mucho tiempo el proyecto de código abierto líder para analizar datos de Ethereum (Más de 600 estrellas en Github).
Mi compañero D5 DAO miembro Evgeny Medvedev también trabajó con Google en 2018 para hacer que Ethereum datasets disponibles a través de BigQuery .
En esta publicación , mostraré cómo puede contribuir fácilmente analizadores de contrato inteligente a Blockchain ETL en 3 simples pasos. ¡Ni siquiera necesita escribir ningún código!
Al final de este proceso, tendrá tablas para los contratos inteligentes que contribuyó disponibles en BigQuery aquí . Como ejemplo, una consulta para todas las mentas compuestas cBAT sería tan fácil como:
SELECT * FROM 'blockchain-etl.ethereum_compound.cBAT_event_Mint'
Todo el proceso se puede dividir en tres pasos:
- Usar la herramienta Analizador de contratos para generar archivos de definición de tabla
- Cree una solicitud de extracción en etherum-etl-airflow
- Solicite una revisión y espere su aprobación
Por lo tanto ahora veamos cada paso en detalle.
Blockchain ETL: 1. Use la herramienta Contract Parser
(1) Primero, diríjase a esta herramienta Contract Parser y pegue una dirección de contrato inteligente de su elección.
Se verá más o menos así:
Presiona enviar, y algo de magia sucederá, verá un nuevo cuadro:
En este caso, encontramos 4 eventos en este contrato de Chainlink Oracle.
(2) Ahora, antes de descargar las definiciones de tabla, escriba el nombre de su conjunto de datos.
Algunos conjuntos de datos de ejemplo que ya tenemos son:
kyber
(para Kyber Network)zeroex
(en 0x Project)compound
(de Compound)ens
(para Ethereum Name Service)
Stick a minúsculas y _ nombres separados para mantener las cosas coherentes.
En este caso, digamos que nombramos un nuevo conjunto de datos de chainlink
:
(3) Haga clic en “Descargar definiciones de tabla”.
Esto descargará 1 archivo JSON por evento en el contrato inteligente. Cada archivo contiene una descripción que nos permite generar el analizador para ese evento en BigQuery.
Blockchain ETL: 2. Cree una solicitud de extracción en etherum-etl-airflow
(1) Suponiendo que tenga Git instalado, bifurque el depósito etherum-etl-airflow y luego clónelo en su máquina local:
git clone https://github.com/<your-github>/ethereum-etl-airflow.git
(2) Cree una nueva sucursal, p. ej. en nuestro caso:
git checkout -b feature/chainlink-events
(3) Ahora pegue el archivo de definición de tabla que descargó anteriormente en una nueva carpeta, con el nombre de su conjunto de datos (en nuestro caso: “chainlink”
(4) Mueva esta carpeta a la siguiente ruta en el repositorio de arriba:
dags/resources/stages/parse/table_definitions/
Verá nuestros conjuntos de datos existentes allí (airswap, composite, ens , Etc.)
(Opcional): Sería fantástico si agrega una oración en cada archivo para documentar lo que representa este evento. El campo table_description
dentro de cada JSON es el lugar correcto para agregar esta oración.
(5) Git add, commit y push sus cambios:
git add dags / resources / stage / parse / table_definitions /
git commit -m "Eventos de Chainlink añadidos"
git push --set-upstream origin feature / chainlink-events
Dirígete a Github para completar la solicitud de extracción.
Blockchain ETL: 3. Solicite una revisión y espere la aprobación
(1) Deje un comentario en su RP que indique que utilizó el Analizador de contratos:
“Used the Contract Parser: https://contract-parser.d5.ai”
(2) Solicite una revisión de Evgeny: medvedev1088 en Github
(3) ¡Espere aprobación y despliegue!
¿Por qué debería contribuir con una definición de tabla?
Sin tener tablas analizadas, tendría que escanear los logs
de la tabla completa. El log
conjunto de datos de registros completos consumirá rápidamente su cuota de BigQuery, ya que está escaneando datos de más de 200 GB cada vez.
Es posible que haya notado que el Analizador de contratos realmente le proporciona SQL debajo de las definiciones de tabla para analizar los logs
la tabla de registros directamente. Entonces, si tiene prisa y solo está haciendo 1 consulta, podría salirse con la suya.
Pero al contribuir con definiciones de tabla a Blockchain ETL, puede reducir drásticamente sus costos de BigQuery.
Las tablas analizadas resultantes serán en algunos casos 10.000 veces más pequeñas. Con lo cual, ¡Esto significa que usted podría hacer 10,000x consultas en la misma cuota (o pagar 1/10 000 del costo de esa consulta)!
Además, al contribuir analizadores de contratos, otras personas podrán consultar las tablas generadas. En otras palabras, ayuda a que todo el espacio Ethereum se base más en datos.
Si necesita ayuda con Blockchain ETL, o datos de blockchain en general, no dude en ponerse en contacto con nosotros en D5 – The Data Science DAO .
Finalmente, nos gustaría agradecer a Gitcoin por patrocinar el trabajo inicial en las definiciones de tabla para el proyecto ETL Blockchain.