# Capítulo 4: *"Keys, Addresses"*
###### tags: `MB`
[TOC]
Llegamos al cuarto capítulo del seminario socrático de Mastering Bitcoin (MB). Estas son las actividades a realizar:
## Material Principal
Para esta sesión socrática debes leer el [Capítulo 4: *"Keys, Addresses"*](https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch04.asciidoc#keys-addresses) del Libro **Mastering Bitcoin**. Estos son los enlaces a la versión del [libro en inglés](https://github.com/bitcoinbook/bitcoinbook) y la versión del [libro en español](https://drive.google.com/file/d/18NDHehFLGBDi_EVQQ59wQ2I99cvrrTJZ/view?usp=sharing). **Se recomienda leer en inglés, ya que es la versión más actualizada y completa**, pero es tu elección. Hemos estructurado las sesiones de acuerdo con los capítulos del libro en inglés.
:::info
:bangbang: **Importante:** Los términos técnicos siempre se dirán en inglés para facilitar el aprendizaje del idioma y la inmersión en el desarrollo de software de Bitcoin y LN. [Ver metodología de traducción](https://docs.google.com/document/d/1uPy771hf2xUElcaOR_Sk9NTqODeg9QZENYWL9leQc1g/edit?usp=sharing).
:::
## Lecturas complementarias
| Contenido | Tiempo (min) |
|:--------- |:---------:|
|[Codificación Base58Check](https://es.bitcoin.it/wiki/Codificaci%C3%B3n_Base58Check)| 6|
|[Curva elíptica](https://es.wikipedia.org/wiki/Curva_el%C3%ADptica)| 6|
|[Curvas Elípticas en Bitcoin](https://repositorio.cetys.mx/bitstream/60000/253/1/CURVAS%20ELIPTICAS%20EN%20CRIPTOGRAFIA%20Y%20SU%20APLICACION%20EN%20BITCOIN.pdf)| 3|
|[SHA-256](https://en.bitcoin.it/wiki/SHA-256) | 4|
|[P2Pkh, P2Wpkh, P2H, P2Wsh](https://btctranscripts.com/scalingbitcoin/tokyo-2018/edgedevplusplus/p2pkh-p2wpkh-p2h-p2wsh/)| 25|
## Preguntas
:::warning
🛑 Antes de resolver las preguntas del capítulo, revisa las instrucciones de trabajo de la sesión [aquí](https://hackmd.io/E5ZmWkcZRXi5K77gw0CVlg#Instrucciones-de-aprendizaje)
:::
1. What is a *Bitcoin address*, and how is it created? Is it the same as a *public key*?
2. What is a *one-way cryptographic function*, and how do we use it to derive *public keys*?
3. How do we know that the *discrete logarithm problem* is hard to break?
4. Bitcoin uses the *elliptic curve* over a finite field of *prime order*. What does that mean using common English terms? Why *prime order*?
5. Why is *Base58* used for address encoding instead of Base64? Would you do any modifications beyond *Base58*?
6. What is a *checksum*, and how is it used in Bitcoin addresses?
7. Why is *"compressed private key"* a misnomer?
8. What is the difference between *P2PKH* and *P2SH*?
9. How does Bitcoin use *Public-key cryptography* to control ownership of funds?
10. Bitcoin uses asymmetric cryptography, what does this refer to, how does it work?
:::spoiler *En español*
1. ¿Qué es una *dirección de Bitcoin* y cómo se crea? ¿Es lo mismo que una *clave pública*?
2. ¿Qué es una *función criptográfica de una sola vía* y cómo se utiliza para obtener *claves públicas*?
3. ¿Cómo sabemos que el *problema del logaritmo discreto* es difícil de resolver?
4. Bitcoin utiliza la *curva elíptica* sobre un campo finito de *orden primo*. ¿Qué significa esto, en términos comunes? ¿Por qué el orden es primo?
5. ¿Por qué se utiliza *Base58* para la codificación de direcciones en lugar de Base64? ¿Harías alguna modificación más allá de *Base58*?
6. ¿Qué es un *"checksum"* y cómo se usa en las direcciones de Bitcoin?
7. ¿Por qué *"clave privada comprimida"* es un nombre inapropiado?
8. ¿Cuál es la diferencia entre P2PKH y P2SH?
9. Cómo se utiliza la *criptografía de clave pública* para controlar la propiedad de los fondos en Bitcoin
10. Bitcoin utiliza criptografía asimétrica, ¿a qué se refiere esto?, ¿cómo funciona?
:::
## Ejercicios
:::info
Run the following exercises on the command line:
- For Linux:
```sass
echo -n "Seminario de Mastering Bitcoin" | sha256sum
echo -n "Mastering Bitcoin" | sha256sum
```
- For macOS:
```sass
echo -n "Seminario de Mastering Bitcoin" | openssl sha256
echo -n "Mastering Bitcoin" | openssl sha256
```
- Analyze the outputs and explain what happens.
:::
:::spoiler *En español*
:::info
Ejecutar los siguientes ejercicios en línea de comandos:
- Para Linux
```sass
echo -n "Seminario de Mastering Bitcoin" | sha256sum
echo -n "Mastering Bitcoin" | sha256sum
```
- Para macOS:
```sass
echo -n "Seminario de Mastering Bitcoin" | openssl sha256
echo -n "Mastering Bitcoin" | openssl sha256
```
- Analizar las salidas y explicar lo que sucede.