Generar una Identidad PFN
Identidades Efímeras vs. Estáticas
Sección titulada «Identidades Efímeras vs. Estáticas»Los public fullnodes (PFNs) automáticamente iniciarán con una identidad de red generada aleatoriamente (efímera) a menos que se proporcione una identidad estática. Esto funciona bien para PFNs regulares. Sin embargo, hay casos donde podrías querer generar y asignar una identidad de red estática a tu PFN (ej., para propósitos de monitoreo).
Identidad Efímera
Sección titulada «Identidad Efímera»- Generada automáticamente al inicio del nodo. La misma identidad efímera se usa a través de reinicios si el archivo de clave de identidad ya existe.
- Por defecto, el archivo de identidad se almacena en
/opt/aptos/data/db/ephemeral_identity_key
.
Identidad Estática
Sección titulada «Identidad Estática»Esto es útil cuando:
- Deseas anunciar tu PFN como una semilla (es decir, para que otros PFNs de Aptos se conecten).
- Deseas agregar tu PFN a una lista de permitidos de identidades conocidas en un PFN o VFN upstream.
- Deseas fijar la identidad de tu PFN a través de reinicios y lanzamientos para que herramientas de telemetría y otros monitoreos puedan rastrear tu PFN a lo largo del tiempo.
Generar una identidad estática
Sección titulada «Generar una identidad estática»Para crear una identidad estática para tu PFN, primero necesitarás generar un par de clave privada y pública. Luego
necesitarás derivar el peer_id
de la clave pública, y usar el peer_id
en tu archivo de configuración
(ej., fullnode.yaml
) para configurar la identidad de red estática para tu PFN.
Los pasos abajo te guiarán a través del proceso de generar una identidad estática para tu PFN. Los pasos exactos dependen
de si estás usando el código fuente aptos-core
para ejecutar tu PFN, o Docker.
Usando el código fuente aptos-core
Sección titulada «Usando el código fuente aptos-core»Si usas el código fuente aptos-core
para ejecutar tu PFN, sigue estos pasos:
- Generar la clave privada
Primero, usa el CLI de Aptos (aptos
) para producir una clave privada estática
x25519 codificada en hex. Esta será la clave privada para tu identidad de red. Ejecuta el siguiente comando CLI aptos
:
aptos key generate --key-type x25519 --output-file /path/to/private-key.txt
Este comando creará un archivo private-key.txt
con la clave privada en él, y un archivo correspondiente
private-key.txt.pub
con la clave pública en él. Un ejemplo de archivo private-key.txt
y
archivo private-key.txt.pub
se muestran abajo:
cat ~/private-key.txtC83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D%
cat ~/private-key.txt.pubB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813%
- Recuperar la identidad del par
Siguiente, recupera la identidad del par de la clave pública usando el CLI aptos
. La bandera --host
en
el comando proporcionará la información del host para generar una dirección de red para tu PFN. Ejecuta el siguiente comando
(asegúrate de actualizar la bandera --host
con tu información real del host):
aptos key extract-peer --host example.com:6180 \ --public-network-key-file private-key.txt.pub \ --output-file peer-info.yaml
Este comando generará la información de identidad pública para tu PFN a un archivo peer-info.yaml
. Por ejemplo:
{ "Result": { "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813": { "addresses": [ "/dns/example.com/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0" ], "keys": [ "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813" ], "role": "Upstream" } }}
En este ejemplo, B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813
es el peer_id
.
- Iniciar un PFN con la identidad
Después de extraer la identidad del par de la clave pública, puedes iniciar tu PFN con la identidad usando la
clave pública en el campo peer_id
del archivo de configuración (ej., fullnode.yaml
). Por ejemplo:
full_node_networks: - network_id: "public"discovery_method: "onchain"identity: type: "from_config" key: "<PRIVATE_KEY>" peer_id: "<PEER_ID>"
En nuestro ejemplo (de arriba), el archivo de configuración (fullnode.yaml
) ahora debería tener la siguiente información:
full_node_networks: - network_id: "public" discovery_method: "onchain" identity: type: "from_config" key: "C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D" peer_id: "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
Iniciar tu PFN con esta configuración asignará a tu PFN la identidad de red estática que generaste.
Usando Docker
Sección titulada «Usando Docker»Si usas Docker para ejecutar tu PFN, sigue estos pasos:
- Preparar tus herramientas
Primero, cd
al directorio para tu PFN local e inicia un contenedor Docker con las últimas herramientas, por ejemplo:
cd ~/my-full-nodedocker run -it aptoslabs/tools:devnet /bin/bash
- Generar la clave privada
Siguiente, sigue los pasos restantes desde dentro del contenedor Docker aptoslabs/tools
.
Abre una nueva terminal y cd
al directorio donde iniciaste el contenedor Docker para tu PFN. Asegurándote
de proporcionar la ruta completa a donde quieres que se almacene el archivo de clave privada, ejecuta el comando:
aptos key generate \ --key-type x25519 \ --output-file /path/to/private-key.txt
- Recuperar la identidad del par
Siguiente, recupera la identidad del par de la clave pública usando el CLI aptos
. La bandera --host
en
el comando proporcionará la información del host para generar una dirección de red para tu PFN. Ejecuta el siguiente comando
(asegúrate de actualizar la bandera --host
con tu información real del host):
aptos key extract-peer --host example.com:6180 \ --public-network-key-file private-key.txt.pub \ --output-file peer-info.yaml
Este comando generará la información de identidad pública para tu PFN a un archivo peer-info.yaml
. Por ejemplo:
{ "Result": { "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813": { "addresses": [ "/dns/example.com/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0" ], "keys": [ "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813" ], "role": "Upstream" } }}
En este ejemplo, B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813
es el peer_id
.
- Iniciar un PFN con la identidad
Después de extraer la identidad del par de la clave pública, puedes iniciar tu PFN con la identidad usando la
clave pública en el campo peer_id
del archivo de configuración (ej., fullnode.yaml
). Por ejemplo:
full_node_networks: - network_id: "public"discovery_method: "onchain"identity: type: "from_config" key: "<PRIVATE_KEY>" peer_id: "<PEER_ID>"
En nuestro ejemplo (de arriba), el archivo de configuración (fullnode.yaml
) ahora debería tener la siguiente información:
full_node_networks: - network_id: "public" discovery_method: "onchain" identity: type: "from_config" key: "C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D" peer_id: "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
Iniciar tu PFN con esta configuración asignará a tu PFN la identidad de red estática que generaste.
Verificar la identidad de tu nodo
Sección titulada «Verificar la identidad de tu nodo»Si quieres verificar la identidad de tu nodo en tiempo de ejecución, hay varias formas de hacerlo. Dos de los métodos más simples son:
- Usando la API REST: Puedes consultar el endpoint
/v1/info
de la API REST de tu nodo para recuperar la información de identidad. - Usando el Servicio de Inspección de Nodos: Puedes consultar el endpoint
/identity_information
en el servicio de inspección de tu nodo para recuperar la información de identidad de tu nodo. Puedes leer más aquí.