Interactuar con un nodo Witnet a través de una llamada a procedimiento remoto (RPC) por Harsh Jain Blog de la Fundación Witnet Junio ​​2020

Una breve introducción a Witnet

Witnet es una "Red de Oracle descentralizada", que hace la transición a Mainnet en el próximo trimestre. Witnet pretende ser un protocolo verdaderamente descentralizado y sin permiso. Puedes leer más sobre esto aquí.

Si aún no está ejecutando una instancia de Witnet, diríjase aquí: run-a-node. Una vez que se ejecuta la instancia de Witnet, nos gustaría interactuar con ella. Para esto, Witnet binary tiene subcomandos como node nodeStats, node , etc.

¿Cómo interactuar con su instancia de Witnet a través de un RPC?

Hay 2 formas de hacer esto:

Emita comandos para el sistema operativo, ejecutando Witnet binary como un subproceso como subprocess u os.system en Python. La instancia de Witnet tiene json rpc expuesto en el puerto predeterminado 21338. Este RPC es un flujo TCP directo, sin ningún protocolo de capa de aplicación como HTTP sobre él . Entonces, podemos interactuar directamente con él usando nc.nc 127.0.0.1 21338

Después de emitir el comando anterior, esperará a que pegue los datos de la solicitud. Pruebe con la solicitud a continuación:

{"jsonrpc": "2.0", "método": "nodeStats", "id": "1"}

Ahora que hemos visto lo fácil que es interactuar con el nodo witnet, intentemos con el código. A continuación se muestra un fragmento de Python que hace lo mismo.

Sin embargo, una trampa; recuerde finalizar la solicitud con n, de lo contrario, el nodo no responderá, ya que considera que la solicitud no ha finalizado y esperará más datos. CLI # L946 maneja este caso.

Witnet CLI tiene un subcomando witnet node raw, que le permite consultar la instancia de witnet utilizando una cadena de solicitud sin procesar.

La interacción directa con el RPC evitará el uso de llamadas del sistema operativo para ejecutar los subcomandos de Witnet cuando se realiza la automatización.

A continuación, he proporcionado una cadena de solicitud para todos los subcomandos de witnet binary. Todo esto también se puede encontrar en witnet # json_rpc_client.