¿Cuál es la diferencia entre JSON-RPC, API de Javascript y web3.js?

A medida que me meto en el desarrollo de blockchain (Ethereum), a menudo me quedo confundido con la diferencia exacta entre web3.js [enlace aquí] y la especificación de JSON-RPC para ethereum en esta página . ¿Y de qué trata esta documentación ?

¿Son iguales? Si no, ¿cómo se relacionan?

¿Es lo geth conosolemismo que JSON-RPC?

Traté de buscar diferentes respuestas, y parece que muchas respuestas tienden a confundirse entre JSON-RPC y web3.js.

Respuestas (3)

La wiki de la API de Javascript es el documento para la versión 0.2xx de Web3js. La mayoría de los tutoriales en línea usan esta versión desde la 1.0.0 que se lanzó recientemente. Web3js en web3js.readthedocs.io es otro documento de Web3js para la versión 1.0.0 que difiere mucho de la 0.2xx, lo que explica por qué hay dos documentos diferentes para esta biblioteca.

El JSON-RPC es la versión del protocolo de llamada a procedimiento remoto. Si busca en Google "RPC", sabrá que se puede usar/implementar fácilmente en muchos idiomas diferentes, no solo en Javascript.

En términos de funcionalidad, son básicamente lo mismo, pero hay muchas versiones y muchos tutoriales que usan versiones diferentes, por lo que es un poco confuso.

JSON-RPC es un protocolo de llamada a procedimiento remoto (RPC) ligero y sin estado. Principalmente, esta especificación define varias estructuras de datos y las reglas en torno a su procesamiento. Es independiente del transporte en el sentido de que los conceptos se pueden usar dentro del mismo proceso, a través de sockets, a través de HTTP o en muchos entornos de paso de mensajes. Utiliza JSON (RFC 4627) como formato de datos.


La biblioteca web3.js es una colección de módulos que le permiten interactuar con un nodo ethereum local o remoto, utilizando una conexión HTTP o IPC.

JSON-RPC es el protocolo principal para interactuar con un cliente de Ethereum. Web3.js es un contenedor de javascript alrededor de JSON-RPC. Web3.js le brinda más comodidad pero menos flexibilidad (por ejemplo, con solicitudes) que JSON-RPC.