Celestia-node RPC CLI tutorial
Celestia-node RPC CLI tutorial
En este tutorial, cubriremos cómo usar la API RPC de celestia-node para enviar y recuperar datos (blobs) de la capa de disponibilidad de datos por su espacio de nombres.
Introducción
Blobs
Los datos se publican en la capa DA de Celestia utilizando MsgPayForBlobs
transacciones a la red central. Leer más sobre MsgPayForBlobs
.
Espacios de nombres
Celestia divide los datos de bloque en múltiples espacios de nombres, uno para cada aplicación. Esto permite que las aplicaciones solo descarguen sus datos, y no los datos de otras aplicaciones. Leer más sobre Namespaced Merkle trees (NMTs).
PUNTA
Si ya tiene un nodo en ejecución y financiado, puede saltar al sección de guía de RPC CLI.
ADVERTENCIA
Los puntos finales de la puerta de enlace se han desaprobado y se eliminarán en el futuro. Si desea usarlos de todos modos, puede encuentra más detalles sobre GitHub.
Requisitos de hardware
Se recomiendan los siguientes requisitos mínimos de hardware para ejecutar un nodo de luz:
Memoria: 500 MB RAM (mínimo)
CPU: Núcleo Único
Disco: 50 GB de almacenamiento SSD
Ancho de banda: 56 Kbps para Descargar/56 Kbps para Cargar
Configuración de dependencias
Esta parte del tutorial revisará la configuración de su entorno de desarrollo para ejecutar el software Celestia. Este entorno se puede utilizar para el desarrollo, la construcción de binarios y la ejecución de nodos.
En su terminal, configure las dependencias necesarias para instalar y construir celestia-node.
Si está en Ubuntu, primero actualice y actualice su sistema operativo:
Instale paquetes esenciales que son necesarios para ejecutar muchas tareas como descargar archivos, compilar y monitorear el nodo:
Instalar Golang
celestia-node está escrito en Golang, por lo que debemos instalar Golang para construir y ejecutar nuestro nodo.
Establezca la versión para su red deseada:
Descargar e instalar Golang:
Añade tu /usr/local/go/bin
directorio a tu $PATH
si aún no lo has hecho:
Para verificar que la versión correcta de Go se instaló correctamente, ejecute:
bash
La salida mostrará la versión instalada.
Celestia-nodo
Instalar celestia-node
Instalar celestia-node para Arábica devnet o Mocha testnet significa instalar una versión específica para que sea compatible con la red.
Instale el binario celestia-node ejecutando los siguientes comandos:
Elimine cualquier copia existente de celestia-node, clone el repositorio y cambie al directorio.
bash
Consulte la versión deseada, según la red que utilizará:
Construir el celestia
binario:
a. Construcción estándar
bash
b. Construcción experimental
OPCIONAL
Si usted es un operador de nodo cómodo con características experimentales y busca un rendimiento óptimo con un uso mínimo de RAM, esta opción se recomienda para usted.
bash
Esta opción de compilación permite CGO, y descarga e instala jemalloc. Obtenga más información sobre el comando build.
Instalar el binario:
Construir el
cel-key
utilidad:bash
Verifique que el binario esté funcionando y verifique la versión:
bash
La salida mostrará la versión semántica de celestia-node, hash de confirmación, fecha de compilación, versión del sistema y versión de Golang.
Instanciar un nodo de luz Celestia
Ahora, instanciemos un nodo Celestia Light:
PUNTA
Los puntos finales de RPC están expuestos en todos los tipos de nodos celestiales, como la luz, el puente y los nodos completos.
Instanciar (o inicializar) el nodo significa configurar un almacén de nodos en su máquina. Aquí es donde se almacenarán los datos y sus claves.
Conéctese a un punto final central público
Ahora ejecutemos el nodo Celestia Light con una conexión gRPC a un punto final central público de ejemplo.
Nota: También se le recomienda encontrar un punto final de API administrado por la comunidad y hay varios en Discord. Este se utiliza con fines de demostración. Mira el Página de testnet de mocha, o Página arábica devnet.
PUNTA
El --core.ip
el puerto GRPC es predeterminado en 9090, por lo que si no lo especifica en la línea de comandos, será predeterminado en ese puerto. Puede agregar el puerto después de la dirección IP o usar el --core.grpc.port
marque para especificar otro puerto si lo prefiere.
Consulte la sección de puertos de la página de solución de problemas de celestia-node para obtener información sobre qué puertos deben estar abiertos en su máquina.
Por ejemplo, su comando junto con un punto final de RPC podría verse así:
Llaves y billeteras
Puede crear su clave para su nodo ejecutando el siguiente comando desde el directorio celestia-node:
PUNTA
No necesita declarar una red para Mainnet Beta. Consulte la sección ID de cadena en la página de solución de problemas para obtener más información
bash
Puede iniciar su nodo de luz con la clave creada ejecutando el siguiente comando:
Una vez que inicie el nodo de luz, se generará una clave de billetera para usted. Deberá financiar esa dirección con Mocha testnet o Arabica devnet tokens para pagar PayForBlobs
transacciones.
Puede encontrar la dirección ejecutando el siguiente comando en el directorio celestia-node:
bash
Si desea financiar su billetera con tokens de testnet, diríjase a cualquiera de los dos #mocha-faucet
o #arabica-faucet
canales en el Celestia Discord.
Puede solicitar fondos a la dirección de su billetera utilizando el siguiente comando en Discord:
texto
Donde <CELESTIA-ADDRESS>
es el celestia1******
dirección generada cuando creó la billetera.
Con su billetera financiada, puede pasar al siguiente paso.
Guía RPC CLI
Esta sección del tutorial le enseñará cómo interactuar con un nodo de Celestia llamada de procedimiento remoto (RPC) API uso de la interfaz de línea de comandos (CLI).
Tendrás que hacerlo configurar dependencias, instalar y ejecutar celestia-node si aún no lo has hecho.
Formato de comandos
El formato para interactuar con los métodos RPC CLI es el siguiente:
bash
Dónde:
celestia
es el comando principal para interactuar con el nodo.<method>
es el método específico dentro del módulo que realiza la acción que desea, comoblob.Submit
,state.AccountAddress
,p2p.Info
, etc.[args...]
representa cualquier argumento adicional que el método pueda requerir.[flags...]
son parámetros que modifican el comportamiento del comando. Comienzan con--
(por ejemplo.,--node.store
,--token
, o--url
).
Por ejemplo, para enviar un blob a Celestia, puede usar este comando una vez que se establezca su almacén de nodos:
bash
Alternativamente, podrías usar el --token
bandera para establecer su token de autenticación:
bash
Antes de probar eso, repasemos las banderas básicas que deberá usar al interactuar con la CLI de RPC. También cubriremos cómo configurar su token de autenticación y cómo usar el almacén de nodos para configurarlo.
Banderas básicas
Todos los comandos RPC CLI tienen indicadores básicos que se pueden usar para interactuar con la API.
Estos incluyen:
--node.store string
- la ruta al directorio raíz/hogar de su tienda celestia-node--token string
- token de autorización para realizar solicitudes--url string
- la dirección del RPC, por defecto eshttp://localhost:26658
Al ejecutar comandos RPC CLI, deberá configurar el token de autenticación o establecer el almacén de nodos, por lo que el token de autenticación se puede recuperar de la tienda.
El RPC CLI maneja estos indicadores en el siguiente orden:
Si el usuario pasa el token de autenticación, se utiliza el token de autenticación.
Si el usuario no pasa el token de autenticación, compruebe el indicador de almacén de nodos, cree el token desde el almacén de nodos y utilice el token de autenticación desde el almacén de nodos.
Token de la verdad 🔐
Para interactuar con la API utilizando RPC CLI, deberá establecer el token de autenticación.
El --token string
flag establece el token de autenticación. Si no se encuentra un token, no se establecerá la autenticación. Y si no se establece la autenticación, la solicitud fallará.
Para configurar su token de autenticación, puede usar el siguiente comando. Asegúrese de reemplazar <node-type>
con el tipo de nodo y <network>
con la red en la que está ejecutando su nodo:
bash
Aquí hay un ejemplo de cómo configurar su token de autenticación en un nodo de luz en Arábica:
bash
Tienda de nodos
Para interactuar con la API utilizando RPC CLI, también puede usar su almacén de nodos para configurar su token de autenticación. Esto le permitirá interactuar con la API sin configurar un token de autenticación directamente.
Para configurar su almacén de nodos para un nodo de luz en mocha-4, puede usar el siguiente comando:
bash
Luego, establece el --node.store
bandera a la $NODE_STORE
variable para establecer el token de autenticación desde su almacén de nodos:
bash
Token de autor en red personalizada o privada
Esta sección es para usuarios que están usando un CELESTIA_CUSTOM
o red privada.
PUNTA
Si está utilizando una red privada y personalizada, lo hará necesita establecer la ubicación del almacén de nodos en su comando auth.
bash
Lo anterior es un ejemplo de la siguiente red personalizada con:
bash
o
bash
Como ejemplo, así es como se vería una red completamente personalizada:
bash
Envío de datos
En este ejemplo, enviaremos una blob a la red con un blob.Enviar transacción con nuestro nodo de luz.
Algunas cosas a considerar:
El punto final entra
namespace
ydata
valores.El compromiso será generado por el nodo.
La versión compartida es establecida por el nodo.
El espacio de nombres debe ser de 10 bytes, prefijado por
0x
si es hex; de lo contrario, use base64Los datos pueden codificarse hexadecimalmente (
0x...
), codificado en base64 ("..."
), o una cadena de texto sin formato que se codificará en base64 ('Hello There!'
)Opcionalmente, el usuario puede proporcionar una tarifa de gas y un límite de gas.
Utilizamos lo siguiente namespace
de 0x42690c204d39600fddd3
y el data
valor de 0x676d
.
Aquí hay un ejemplo del formato de la blob.Submit
transacción:
bash
Ejecutamos lo siguiente para enviar un blob a la red en formato hexadecimal:
bash
Obtenemos la siguiente salida:
json
También podemos usar una cadena de texto como valor de datos, que se convertirá a base64. Aquí hay un ejemplo del formato:
bash
Y un ejemplo para enviar "gm" como los datos de texto sin formato:
bash
Salida:
json
Si observa desde la salida anterior, devuelve un result
de 252614
que usaremos para el siguiente comando. El result
corresponde a la altura del bloque en el que se incluyó la transacción.
Opcional: Enviar con rizo
Consulte el enviar una gota usando curl sección.
Recuperar datos
Después de enviar su transacción PFB, tras el éxito, el nodo devolverá la altura del bloque para el que se incluyó la transacción PFB. Luego puede usar esa altura de bloque y el ID de espacio de nombres con el que envió su transacción PFB para que le devuelvan sus recursos compartidos de mensajes (datos). En este ejemplo, la altura del bloque que obtuvimos fue 252614 que usaremos para el siguiente comando. Lea más sobre las acciones en el Especificaciones de Celestia.
Aquí está lo que un ejemplo del formato de la get
el comando se ve como:
bash
Aquí hay un comando de ejemplo para recuperar los datos de arriba, en arabica-11
:
bash
Generará la siguiente salida:
json
La salida aquí es base64 decodificada a texto sin formato.
Para ver la respuesta base64, use el --base64
bandera establecida en TRUE
(--base64=TRUE
):
bash
La respuesta se verá similar a esto:
json
Para obtener todas las manchas en el espacio de nombres a la altura del bloque, use get-all
en lugar de get
:
bash
Esto devolverá lo siguiente:
json
Para mostrar la respuesta en base64, use:
bash
Lo que volverá:
json
Establecer el precio del gas
El --gas.price
flag le permite especificar el precio del gas para el envío. Si no se especifica, se utilizará un precio predeterminado del gas. El límite de gas se calcula automáticamente en función del tamaño de la gota que se envía.
Para establecer el precio del gas, puede usar el --gas.price
bandera. El precio del gas se establecerá como predeterminado (0.002) si no se pasa ningún valor.
Aprender más sobre tarifas y límites de gas.
Para establecer un precio de gas más alto de 0.004 utia, use el --gas.price 0.004
bandera:
bash
Recibirá la altura y el compromiso del bloque en el que se incluyó la transacción para estos tres ejemplos:
json
Ejemplos
Comprueba tu saldo
Consultemos nuestro nodo para el saldo de su cuenta predeterminada (que es la cuenta asociada con el CELESTIA_NODE_AUTH_TOKEN
clave que generamos arriba):
bash
La respuesta se verá similar a:
json
Compruebe el saldo de otra dirección
Aquí hay un ejemplo del formato de la balance-for-address
comando:
bash
Consultemos nuestro nodo para el saldo de otra dirección:
bash
La respuesta será el saldo de la dirección que consultó:
json
Obtenga su ID de nodo
Esta es una llamada RPC para obtener la información peerId de su nodo:
bash
El ID de nodo está en el ID
valor de la respuesta:
json
Obtenga la dirección de su cuenta
Esta es una llamada RPC para obtener la dirección de la cuenta de su nodo:
bash
Respuesta:
json
Obtenga el encabezado del bloque por altura
Aquí hay un ejemplo del formato de la GetByHeight
comando:
bash
Ahora, obtengamos la información del encabezado del bloque.
Aquí obtendremos el encabezado del Bloque 1:
bash
Comandos combinados
bash
Obtenga estadísticas de muestreadores de disponibilidad de datos
bash
Transferir saldo de utia a otra cuenta
Primero, establezca su dirección como una variable:
bash
Luego, transfiera la cantidad de tokens que desea, mientras establece la dirección del destinatario, la tarifa de gas y gasLimit. Así es como se verá el formato:
bash
Aquí hay un ejemplo, enviando 0.1 TIA, con una tarifa de gas de 0.008 TIA, y un límite de gas de 0.08:
bash
Si desea devolver el hash de la transacción, puede usar jq:
bash
Versión API
Para consultar la versión API de su nodo, puede usar el siguiente comando:
bash
Ayuda
Para obtener ayuda y ver el menú CLI, utilice el siguiente comando:
bash
Para ver el menú de ayuda para un método específico, utilice el siguiente comando:
bash
Ejemplo avanzado
Este ejemplo nos muestra usando el jq
comando para analizar la salida del celestia header get-by-height
método para obtener el encabezado extendido utilizado en celestia share get-by-namespace
:
bash
Recursos adicionales
Enviar una gota usando curl
Para publicar una gota usando curl, necesitará un nodo de luz que se ejecute con el --core.ip string
flag, proporcionando acceso a un punto final de consenso. El indicador indica que el nodo se conecta al nodo de consenso central dado. Ejemplos: 127.0.0.1
o subdomain.domain.tld
. El uso de IP o DNS asume que el puerto RPC 26657 y el puerto gRPC 9090 son predeterminados a menos que se especifique lo contrario.
En su terminal, configure el token de autenticación para la red deseada. En este ejemplo, usaremos Mainnet Beta.
bash
Publica tu blob con:
bash
Tras la presentación exitosa de la mancha, el resultado mostrará la altura del bloque:
bash
La transacción de ejemplo puede ser encontrado en Celenium.
Publicar un SVG como PFB
Si desea crear su propio SVG, publicarlo en Celestia y recuperarlo, puede consultar el Tutorial Base64 SVG.
Guía de golang
Si está interesado en interactuar con la API del nodo en Go (client.go
), puedes usar el da-rpc-cliente-tutorial repo.
Solución de problemas
Si encuentra un error como:
sh
Es posible que la cuenta a la que está intentando enviar PayForBlobs
from aún no tiene tokens testnet. Asegúrese de que el grifo de testnet haya financiado su cuenta con tokens y luego intente nuevamente.
Last updated