Ir al contenido principal

Cómo generar una nueva dirección de Ethereum en Go

Actualizado el
26 de noviembre de 2025

5 minutos de lectura

Resumen

Golang goza de gran popularidad entre los desarrolladores de backend para crear infraestructuras y microservicios. Go es un lenguaje de programación procedimental. Desarrollado en 2007 por Robert Griesemer, Rob Pike y Ken Thompson en Google, y lanzado posteriormente en 2009 como lenguaje de programación de código abierto, Go resulta eficaz a la hora de gestionar dependencias. Los programas en Go se crean utilizando paquetes.

Go ha ganado una gran cuota de mercado en los últimos años y, en la actualidad, lo utilizan las principales empresas. En esta guía, explicaremos cómo crear una dirección de Ethereum en Go utilizando la biblioteca Go-Ethereum Client.

Aquí puedes aprender a conectarte a la red de Ethereum utilizando Go.

Para lo que nos ocupa hoy, utilizaremos «crypto» y los paquetes habituales de go-ethereum.

Requisitos previos

  • Tener instalada la versión 1.13 o superior de Go.
  • Un editor de texto
  • CLI

¿Qué es una dirección de Ethereum?

La autenticación en cualquier plataforma de Internet requiere un nombre de usuario y una contraseña. Puedes considerar una dirección de Ethereum como tu nombre de usuario, y la clave privada correspondiente como tu contraseña (que no necesitas memorizar). Una dirección de Ethereum es tu identidad única en la cadena de bloques, y tiene este aspecto: «0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE». La dirección en sí es pública y se puede compartir, pero, obviamente, tu clave privada debe mantenerse en secreto. Tu propia dirección de Ethereum es necesaria, como mínimo, para las siguientes operaciones en la red ETH.

  • Recibir/enviar ETH
  • Firma y envío de transacciones
  • Conexión a aplicaciones

A continuación se describe el proceso para generar una dirección de Ethereum utilizando una clave privada.

  • En primer lugar, se genera una clave privada aleatoria de 64 caracteres (hexadecimales) (256 bits / 32 bytes).
    Por ejemplo: 
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
  •  A continuación, se deriva una clave pública de 128 caracteres (hexadecimales) (64 bytes) a partir de la clave privada generada, utilizando el algoritmo de firma digital de curva elíptica (ECDSA).
    Por ejemplo: 
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
  • A continuación, se aplica la función hash Keccak-256 a la clave pública (128 caracteres / 64 bytes) para obtener una cadena hash de 64 caracteres (32 bytes). Los últimos 40 caracteres / 20 bytes de esta cadena, precedidos por 0x, constituyen la dirección final de Ethereum.
    Por ejemplo:
0xd5e099c71b797516c10ed0f0d895f429c2781142

¿Qué es Go-Ethereum?

go-ethereum es la implementación oficial de Ethereum en Go que se utiliza para desarrollar nodos de Ethereum. go-ethereum cuenta con numerosos paquetes para interactuar y realizar transacciones con la cadena de bloques de Ethereum en Go.

Veamos cómo podemos generar fácilmente una nueva dirección de Ethereum en Go.

Cómo generar una dirección de Ethereum en Go

El primer paso será comprobar si Go está instalado en nuestro sistema. Para ello, copia y pega lo siguiente en tu terminal o en el símbolo del sistema:

$ go version

Si Go no está instalado, sigue la guía de instalación oficial correspondiente a tu sistema operativo específico.

Asegúrate también de tener instalado el compilador GCC. 

Para Ubuntu: utiliza el comando «apt-get install build-essentials»

Para Windows: utiliza https://jmeubank.github.io/tdm-gcc/download/

Para Mac: con Homebrew

$ brew install gcc

Otra opción más rápida es descargar las herramientas de línea de comandos de Xcode utilizando 

$ xcode-select --install

Si no estás familiarizado con Go, te recomendamos que realices su tutorial interactivo para conocer la sintaxis básica, los métodos y el manejo de la concurrencia. Hay algunos ejercicios que puedes realizar sin salir de tu entorno. Solo tienes que escribir el siguiente comando en la línea de comandos o en el terminal para ejecutar el tutorial de forma local:

$ go get golang.org/x/tour

Ahora escribe:

$ tour

Empieza creando un archivo llamado «address.go» y copia y pega en él el siguiente código. Este código generará una clave privada, una clave pública a partir de la clave privada y una dirección de Ethereum.

package main

import (
"crypto/ecdsa"
"fmt"
"log"

"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/crypto"
)

func main() {
privateKey, err := crypto.GenerateKey()
if err != nil {
log.Fatal(err)
}

privateKeyBytes := crypto.FromECDSA(privateKey)
fmt.Println("SAVE BUT DO NOT SHARE THIS (Private Key):", hexutil.Encode(privateKeyBytes))

publicKey := privateKey.Public()
publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey)
if !ok {
log.Fatal("cannot assert type: publicKey is not of type *ecdsa.PublicKey")
}

publicKeyBytes := crypto.FromECDSAPub(publicKeyECDSA)
fmt.Println("Public Key:", hexutil.Encode(publicKeyBytes))

address := crypto.PubkeyToAddress(*publicKeyECDSA).Hex()
fmt.Println("Address:", address)
}

Explicación del código anterior

Líneas 1-10: Declaración del paquete principal e inclusión de las dependencias necesarias para generar claves y direcciones.

Línea 12: Llamada a la función principal.

Línea 13: Generación de una clave privada aleatoria mediante el método GenerateKey del paquete «crypto».

Líneas 14-16: Comprobación de errores.

Línea 18: Conversión de la clave privada a bytes mediante el método «FromECDSA» del paquete «crypto/ecdsa».

Línea 19: Conversión de la clave privada a una cadena hexadecimal mediante el método `Encode` del paquete `hexutil` y visualización de la nueva cadena junto con un mensaje de advertencia.

Línea 21: Generación de una clave pública a partir de la clave privada utilizando el método «Public» del paquete «crypto».

Líneas 22-28: Comprobación del tipo de clave pública y, a continuación, conversión de la misma a una cadena hexadecimal siguiendo el mismo proceso que hemos visto para la clave privada, y visualización de la clave pública junto con un mensaje.

Línea 30: Generación de una dirección de Ethereum mediante el método `PubkeyToAddress` del paquete `crypto`, que acepta una clave pública ECDSA y devuelve una dirección de Ethereum, que se almacena en la variable `address`.

Línea 31: Imprimir la dirección junto con el mensaje «Dirección:»

A continuación, vamos a crear un módulo para gestionar las dependencias. Si no estás familiarizado con Go, este es un paso esencial para configurar las dependencias de tu proyecto. Con Go es relativamente fácil.

Solo tienes que escribir:

$ go mod init address

De este modo, te asegurarás de que los paquetes «crypto» y los paquetes comunes incluidos en tu código se descarguen de GitHub y se instalen localmente. El proceso es automático, y la última versión debería incorporarse a tu entorno junto con los módulos Go integrados. 

Ahora, ejecutemos nuestro módulo.

$ go run address.go 

Si has seguido las instrucciones correctamente y todo sale bien, debería aparecer algo como esto. La primera línea muestra la clave privada, la segunda, la clave pública, y la tercera línea muestra tu dirección de Ethereum.

Conclusión

Enhorabuena por haber creado una nueva dirección de Ethereum con Go. Esta dirección se puede utilizar para interactuar con la red blockchain de Ethereum y realizar diversas operaciones. No te pierdas las próximas guías fáciles de seguir de QuikNode, tu proveedor de nodos de Ethereum asequibles y ultrarrápidos. ¡Descubre cómo dar tus primeros pasos con QuikNode, poner en marcha tu propio nodo de Ethereum en cuestión de minutos y crear la próxima gran dApp!

Suscríbete a nuestro boletín para recibir más artículos y guías sobre Ethereum. Si tienes algún comentario, no dudes en ponerte en contacto con nosotros a través de Twitter. Siempre puedes charlar con nosotros en nuestro servidor de la comunidad de Discord, donde encontrarás a algunos de los desarrolladores más geniales que jamás hayas conocido :)

Comparte esta guía