GSP665
Descripción general
Este lab te permite explorar los seis conjuntos de datos de cadenas de bloques
de criptomonedas que se lanzaron de forma pública en BigQuery. Esto se anunció
en la entrada de blog
Introducing six new cryptocurrencies in BigQuery Public Datasets—and how to
analyze them.
Nota: Este es un lab de desafío. Esto significa que no se te
proporcionarán todas las partes de las tareas marcadas. Debes tener
conocimientos prácticos de SQL.
A continuación, se muestra un fragmento de la entrada de blog. Léelo para
comprender los antecedentes del lab:
Desde que surgieron en el 2009, las criptomonedas han experimentado cierta
volatilidad y son objeto continuo de fascinación. El año pasado, como parte
del programa de conjuntos de datos públicos de BigQuery, Google Cloud lanzó
conjuntos de datos que contienen el historial de transacciones de cadena de
bloques para Bitcoin y Ethereum, para ayudarte a comprender mejor las
criptomonedas. Hoy, lanzaremos otras seis cadenas de bloques de criptomonedas.
También incluiremos un conjunto de consultas y vistas que asocian todos los
conjuntos de datos de cadenas de bloques a una estructura de datos de registro
de doble entrada que permite realizar metaanálisis de múltiples cadenas, así
como la integración con sistemas convencionales de procesamiento de registros
contables.
Conjuntos de datos adicionales de cadenas de bloques
Los seis conjuntos de datos de cadenas de bloques de criptomonedas que
lanzaremos hoy corresponden a Bitcoin Cash, Dash, Dogecoin, Ethereum Classic,
Litecoin y Zcash.
Cinco de estos conjuntos de datos, junto con el de Bitcoin publicado
anteriormente, ahora siguen un esquema común que permite realizar análisis
comparativos. Decidimos lanzar este grupo de conjuntos de datos similares a
Bitcoin (Bitcoin, Bitcoin Cash, Dash, Dogecoin, Litecoin y Zcash) juntos
porque todos tienen implementaciones similares, es decir, su código fuente se
deriva del de Bitcoin. De manera similar, también lanzaremos el conjunto de
datos de Ethereum Classic junto con el conjunto de datos de Ethereum publicado
anteriormente. Ethereum Classic también usa el mismo esquema común.
Una arquitectura unificada de transferencia de datos
Todos los conjuntos de datos se actualizan cada 24 horas a través de una base
de código común, el framework de transferencia de datos de Blockchain ETL
(creado con Cloud Managed Service for Airflow, descrito anteriormente), para
adaptarse a una variedad de criptomonedas similares a Bitcoin. Si bien esto
implica una mayor latencia para cargar bloques de Bitcoin en BigQuery, también
significa lo siguiente:
Podemos transferir conjuntos de datos adicionales de BigQuery con menos
esfuerzo, lo que significa que se podrán incorporar conjuntos de datos
adicionales con más rapidez en el futuro. Podemos implementar una única vez
una solución de carga de baja latencia, la que se podrá usar para habilitar
transacciones de transmisión en tiempo real para todas las cadenas de bloques.
Esquema y vistas unificados
Desde que proporcionamos el conjunto de datos original de Bitcoin el año
pasado, aprendimos cómo los usuarios quieren acceder a los datos y
reestructuramos el conjunto de datos en consecuencia. Algunos de estos cambios
abordan problemas de rendimiento y conveniencia, gracias a lo que se generan
consultas más rápidas y de menor costo (los datos anidados a los que se accede
con frecuencia se desnormalizan; cada tabla se particiona por tiempo).
También incluimos más datos, como los códigos de operación de las secuencias
de comandos. La mayoría de las transacciones de Bitcoin describen
transferencias de valor no solo como un par de débito/crédito, sino como una
serie de funciones que describen tanto transferencias simples como
transacciones más complejas.
Tener estas secuencias de comandos disponibles para conjuntos de datos
similares a Bitcoin permite realizar análisis más avanzados, como este
analizador de contratos inteligente que Tomasz Kolinko creó recientemente con
base en el conjunto de datos de Ethereum de BigQuery. Por ejemplo, ahora
podemos identificar patrones de actividad que involucran billeteras de firmas
múltiples y generar informes sobre ellos. Esto es muy importante para analizar
criptomonedas orientadas a la privacidad, como Zcash.
Para la interoperabilidad de los análisis, diseñamos un esquema unificado que
permite que todos los conjuntos de datos similares a Bitcoin compartan
consultas. Para aumentar aún más la interoperabilidad con Ethereum y las
transacciones de tokens ERC-20, también creamos algunas vistas que abstraen el
registro de la cadena de bloques para presentarlo como un registro de
contabilidad de doble entrada.
Actividades
-
Explorar y realizar una consulta en SQL simple en los conjuntos de datos
públicos de criptomonedas de BigQuery
-
Verificar que el conjunto de datos públicos de criptomonedas de BigQuery sea
correcto
-
Realizar una consulta compleja que calcule el coeficiente de Gini para
Litecoin y Dash, de forma semanal
-
Usar tus habilidades de SQL para completar dos consultas interesantes en el
conjunto de datos de Bitcoin
Requisitos previos
Para aprovechar al máximo este lab, debes tener los siguientes conocimientos:
- Conocimiento de criptomonedas
- Capacidad de escribir sentencias de SQL básicas
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Tarea 1: Visualiza las criptomonedas en el conjunto de datos públicos
-
Abre Menú de navegación > BigQuery.
-
Se abrirá el cuadro de diálogo
Te damos la bienvenida a BigQuery en la consola de Cloud.
Haz clic en Listo.
-
Para agregar un conjunto de datos públicos, cambia del explorador clásico
a la pestaña Explorador y haz clic en
+ Agregar datos.
-
Haz clic en Conjuntos de datos públicos.
-
En Buscar en Marketplace, escribe bitcoin y
presiona Intro.
-
Haz clic en Bitcoin Cash Cryptocurrency Dataset.
-
Haz clic en Ver conjunto de datos.
Se abrirá una pestaña nueva con BigQuery, y deberías estar en el conjunto de
datos bigquery-public-data:crypto_bitcoin_cash.
Todos los conjuntos de datos públicos son visibles.
Nota: Si el proyecto nuevo
bigquery-public-data no aparece en el panel Explorador, haz clic
en + AGREGAR DATOS > Destacar un proyecto por nombre >
Nombre del proyecto (bigquery-public-data) y Destacar.
-
Escribe
crypto en el campo de búsqueda del panel
Explorador.
Solo se mostrarán los conjuntos de datos públicos que comiencen con "crypto".
-
Expande los conjuntos de datos para que puedas ver que todos comparten la
misma estructura. Esto facilita la realización de consultas en las
diferentes criptomonedas, ya que las tablas, las vistas y los campos son
idénticos en cada conjunto de datos de criptomonedas.
Tarea 2: Realiza una consulta simple
En esta tarea, verás la famosa transacción de compra de unas pizzas por 10,000
bitcoins. Puedes obtener más información leyendo el
artículo del Día de la Pizza de Bitcoin del 2018.
-
Cambia a la pestaña Consulta en SQL. Copia y pega esta
consulta en la ventana de consultas y, luego, presiona
Ejecutar:
SELECT * FROM `bigquery-public-data.crypto_bitcoin.transactions` as
transactions WHERE transactions.hash =
'a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d'
Podrás ver los datos sin procesar que se devolvieron.
Información que debes tener en cuenta:
-
Los valores de entrada, salida y tarifas están en satoshis. El
satoshi es
actualmente la unidad más pequeña de la moneda bitcoin registrada en la
cadena de bloques. Es la cienmillonésima parte de un bitcoin
(0.00000001 BTC).
-
El importe enviado se realiza a través de múltiples entradas que provienen
de la misma dirección.
-
El importe de salida se envía como una sola transacción a la dirección.
Haz clic en Revisar mi progreso para verificar el objetivo.
Devolver la transacción de compra de pizzas de 10,000 BTC
Tarea 3: Valida los datos
En esta tarea, comprobarás si puedes acceder a los conjuntos de datos de
criptomonedas realizando consultas de validación simples en dos criptomonedas.
Consulta del registro de doble entrada de Bitcoin Cash
Para motivar una exploración inicial de estos nuevos conjuntos de datos,
comencemos con un ejemplo simple, en el que se compara la forma de consultar
tanto los pagos como los recibos en múltiples criptomonedas. Esta comparación
es la forma más sencilla de verificar que una criptomoneda funciona como se
espera y, al menos en términos operativos, es un almacén de valor
matemáticamente correcto.
-
Copia y pega esta consulta en la ventana de consultas y, luego, presiona
Ejecutar:
-- SQL source from
https://cloud.google.com/blog/products/data-analytics/introducing-six-new-cryptocurrencies-in-bigquery-public-datasets-and-how-to-analyze-them
WITH double_entry_book AS ( -- debits SELECT array_to_string(inputs.addresses,
",") as address , inputs.type , -inputs.value as value FROM
`bigquery-public-data.crypto_bitcoin.inputs` as inputs UNION ALL -- credits
SELECT array_to_string(outputs.addresses, ",") as address , outputs.type ,
outputs.value as value FROM `bigquery-public-data.crypto_bitcoin.outputs` as
outputs ) SELECT address , type , sum(value) as balance FROM double_entry_book
GROUP BY 1,2 ORDER BY balance DESC LIMIT 100
Verifica que los valores de Bitcoin devueltos sean correctos
-
En una nueva pestaña del navegador, abre el sitio web
https://www.blockchain.com/explorer/search?search=. Se
mostrará el mensaje "What can we help you find?".
-
Regresa a la ventana de BigQuery y copia (Ctrl + C) el primer valor de
dirección que se devolvió en los resultados de BigQuery.
-
Pega (Ctrl + V) el valor de la dirección en el cuadro de búsqueda y haz
clic para buscar.
-
Verifica el saldo final devuelto (en BTC). Debería ser el mismo que el
saldo que aparece en los resultados de BigQuery para esa dirección.
Nota: Si no es así, se deberá a una diferencia de redondeo
en la suma (una pequeña fracción) o al retraso de 24 horas en el conjunto de
datos.
Consulta del registro de doble entrada de Dogecoin
-
Modifica la consulta que se usó en la tarea 3 reemplazando
bitcoin por dogecoin y, luego,
ejecuta la consulta.
Ayuda: Hay dos lugares en la consulta en los que debes
cambiar el nombre del conjunto de datos de bitcoin a dogecoin.
Haz clic en Revisar mi progreso para verificar el objetivo.
Calcular el saldo de Dogecoin
Verifica que los valores de Dogecoin devueltos sean correctos
-
En una nueva pestaña del navegador, abre el sitio web
https://dogechain.info/.
-
Regresa a la ventana de BigQuery y copia la primera dirección que se
devolvió en los resultados de BigQuery.
-
Pega (Ctrl + V) el valor de la dirección en el cuadro de búsqueda y haz
clic para buscar.
-
Toma nota del saldo devuelto, que debería ser igual al que aparece en los
resultados de BigQuery para esa dirección.
Nota: Si no es así, se deberá a una diferencia de redondeo
en la suma (una pequeña fracción) o al retraso de 24 horas en el conjunto de
datos.
Ten en cuenta que la única diferencia entre ellos es el nombre de la
ubicación de los datos. Puedes revisar los conjuntos de datos de Bitcoin
Cash, Dash, Litecoin y Zcash de manera similar.
Tarea 4: Traza el coeficiente de Gini para criptomonedas
Además de las aplicaciones de control de calidad y auditoría, presentar la
criptomoneda en un formato tradicional permite la integración con otros
sistemas de administración de datos financieros. Como ejemplo,
consideremos una medida económica común, el
coeficiente de Gini. En el campo de la macroeconomía, el coeficiente de Gini es miembro de
una familia de
medidas econométricas de desigualdad en la riqueza. Los valores varían entre 0.0 y 1.0, con una riqueza completamente
distribuida (todos los miembros tienen la misma cantidad) que se asigna a
un valor de 0.0 y una riqueza completamente acumulada (un miembro lo tiene
todo) que se asigna a 1.0.
Por lo general, el coeficiente de Gini se estima para la economía de un
país específico en función del muestreo o la imputación de datos. En la
criptoeconomía, tenemos una transparencia completa de los datos con la
mayor resolución posible.
Además de la transparencia de los datos, uno de los beneficios que se
atribuyen a las criptomonedas es que permiten que la implementación del
dinero se parezca más a la implementación de la información digital. Por
lo tanto, una red de dinero totalmente digitalizada se parecerá a
Internet, con una fricción transaccional reducida y menos barreras que
impidan el flujo de capital. A menudo, en esta narrativa se da por sentado
que el capital se distribuirá de manera más equitativa. Sin embargo, no
siempre observamos ese resultado en particular, y los criptoactivos que se
presentan aquí muestran un amplio espectro de patrones de distribución con
el paso del tiempo. Puedes obtener más información sobre el uso del
coeficiente de Gini para razonar sobre el rendimiento de la red
criptoeconómica en
Quantifying Decentralization.
Para establecer una referencia que nos permita interpretar nuestros
hallazgos, consideremos cómo se distribuyen los recursos en las economías
tradicionales que no son de criptomonedas. Según un
análisis del Banco Mundial en el 2013, los coeficientes de Gini recientes para las economías mundiales tienen
un valor medio de 39.6 (con una desviación estándar de 9.6).
Crea la consulta
En esta próxima consulta, calcularás el coeficiente de Gini de Dash de
forma semanal. Esta consulta tardará unos 3 minutos en ejecutarse. Una vez
que tengas los datos, podrás visualizar fácilmente el gráfico y compararlo
con el que se generó para el artículo fuente.
-
Copia y pega esta consulta en la ventana de consultas y, luego, presiona
Ejecutar:
-- SQL source from
https://gist.github.com/allenday/1500cc268f24ae89b7adfc25c74967b0 WITH
double_entry_book AS ( -- debits SELECT array_to_string(inputs.addresses, ",")
as address , inputs.type , -inputs.value as value , block_timestamp FROM
`bigquery-public-data.crypto_dash.inputs` as inputs UNION ALL -- credits
SELECT array_to_string(outputs.addresses, ",") as address , outputs.type ,
outputs.value as value , block_timestamp FROM
`bigquery-public-data.crypto_dash.outputs` as outputs )
,double_entry_book_by_date as ( select date(block_timestamp) as date, address,
sum(value / POWER(10,0)) as value from double_entry_book group by address,
date ) ,daily_balances_with_gaps as ( select address, date, sum(value) over
(partition by address order by date) as balance, lead(date, 1, current_date())
over (partition by address order by date) as next_date from
double_entry_book_by_date ) ,calendar as ( select date from
unnest(generate_date_array('2009-01-12', current_date())) as date )
,daily_balances as ( select address, calendar.date, balance from
daily_balances_with_gaps join calendar on daily_balances_with_gaps.date <=
calendar.date and calendar.date < daily_balances_with_gaps.next_date )
,supply as ( select date, sum(balance) as daily_supply from daily_balances
group by date ) ,ranked_daily_balances as ( select daily_balances.date,
balance, row_number() over (partition by daily_balances.date order by balance
desc) as rank from daily_balances join supply on daily_balances.date =
supply.date where safe_divide(balance, daily_supply) >= 0.0001 ORDER BY
safe_divide(balance, daily_supply) DESC ) select date, -- (1 − 2B)
https://en.wikipedia.org/wiki/Gini_coefficient 1 - 2 * sum((balance * (rank -
1) + balance / 2)) / count(*) / sum(balance) as gini from
ranked_daily_balances group by date order by date asc
Guarda los resultados en una tabla de BigQuery
-
En la cinta Resultados de la consulta, haz clic en
Guardar los resultados y selecciona
Tabla de BigQuery.
-
En Guardar en tabla de BigQuery, deja el proyecto
como está, selecciona el conjunto de datos lab y asígnale
un nombre a la tabla, por ejemplo, dash_gini. Luego,
presiona Guardar. Cuando finalice el proceso, haz
clic en Ir a la tabla.
Usa Data Studio para visualizar la consulta
-
En la vista de tabla, haz clic en Abrir en y
selecciona Data Studio. Luego, haz clic en
Autorizar en el mensaje
Requesting Authorization.
-
Cuando se abra Data Studio, borra los gráficos generados
automáticamente (selecciónalos y presiona la tecla Borrar). Haz clic
en
Add a chart en la barra de menú superior. En
Time Series, selecciona
Time Series chart.
-
Cambia la métrica a gini.
-
Compara el gráfico con el del artículo fuente original (reproducido a
continuación). En el gráfico que aparece a continuación, busca la
línea marrón. Observa cómo cambió a partir de diciembre de 2019.
Genera el coeficiente de Gini para Litecoin
-
Realiza los mismos pasos que seguiste para la criptomoneda Dash y, así,
obtener el coeficiente de Gini en Litecoin.
Tarea 5: Explora dos eventos famosos de criptomonedas
Hay una
entrada de blog en el sitio de Blockchain
en la que se describen varios eventos memorables relacionados con Bitcoin.
Realizarás dos consultas en el conjunto de datos públicos de Bitcoin para
recuperar los datos de un par de esos eventos.
22 de noviembre de 2013: Esta transacción de Bitcoin genera misterio y
especulación
En el otoño del 2013, se registró una gran transacción de 194,993 bitcoins
en la red, lo que hizo que muchos se preguntaran quién estaba detrás de
ella. El valor en el momento de la transacción equivalía a más de 149
millones de dólares estadounidenses. CoinDesk escribió lo siguiente: "Como
era de esperarse, una transacción de esa magnitud llevó a la comunidad de
Bitcoin a hacer análisis y trabajos detectivescos. La transacción
involucró una gran cantidad de direcciones de envío, algunas de ellas de
bloques minados en febrero de 2010 o incluso antes, lo que causó la
entusiasta especulación de que podrían ser de Satoshi Nakamoto, el
fundador ausente de Bitcoin (cuyo nombre probablemente sea un seudónimo)".
-
Escribe una consulta en SQL para encontrar el
transaction_hash de la transferencia de 194,993 bitcoins
(BTC) y escribe esos datos en una tabla llamada 51 en el conjunto de
datos lab. A continuación, se muestra el código SQL para ayudarte a
comenzar:
CREATE OR REPLACE TABLE lab.51 (transaction_hash STRING) as SELECT -- write
the rest of the query (remember to use where) ....
Para ello, debes comprender la estructura de la tabla
transactions o puedes usar la vista
outputs. Tu consulta debe devolver el hash de la
transacción. Los otros campos no son importantes.
Ayuda: La cantidad única facilita la consulta de ese valor.
Deberás convertir el valor a satoshis. Puedes usar la función UNNEST para
completar la sentencia SELECT y devolver la tabla.
Haz clic en Revisar mi progreso para verificar el
objetivo.
Almacenar el hash de transacción de la gran y misteriosa transferencia
de 194,993 BTC en la tabla 51 del conjunto de datos lab
Después de todo este tiempo, ¿cuál es el saldo de la dirección que compró
las dos pizzas por 10,000 BTC?
-
Escribe una consulta en SQL para escribir en la tabla 52 del conjunto de
datos lab el saldo de la cuenta que pagó 10,000 BTC por las dos pizzas
en el 2010.
El resultado debe tener el saldo de la dirección.
Ayuda: Modifica la consulta de la tarea 3 para
seleccionar solo las filas con la dirección del comprador (con una cláusula
WHERE). Para obtener la dirección del comprador, puedes realizar la
consulta de la tarea 2 y copiar la dirección de las entradas (no es
necesario que incluyas esa consulta como parte de la solución para esta
actividad).
Aquí tienes código SQL para empezar:
CREATE OR REPLACE TABLE lab.52 (balance NUMERIC) as WITH double_entry_book AS
( -- debits SELECT array_to_string(inputs.addresses, ",") as address ,
-inputs.value as value FROM `bigquery-public-data.crypto_bitcoin.inputs` as
inputs UNION ALL -- credits SELECT array_to_string(outputs.addresses, ",") as
address , outputs.value as value FROM
`bigquery-public-data.crypto_bitcoin.outputs` as outputs ) SELECT -- write the
rest of the select statement (remember to use where) ...
Haz clic en Revisar mi progreso para verificar el
objetivo.
Almacenar el saldo de la dirección de compra de las pizzas en la tabla
52 del conjunto de datos lab
¡Felicitaciones!
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 13 de febrero de 2026
Prueba más reciente del lab: 13 de febrero de 2026
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.