¿Es web3 una verdadera aplicación distribuida?

El web3.js es la forma más fácil y quizás la forma estándar de creación de dapp. Y hay dos proveedores posibles a partir de ahora, HttpProvider e IPCProvider. El HttpProvider toma la dirección en la que se ejecuta el servidor, puede ser algo como

             var Web3 = require('web3');
             var web3 = new Web3();
             web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
                                               // or it can be http://m.n.k.l:8545

Mi pregunta es si el servidor de alojamiento/nodo se ha caído, ¿cómo puede el cliente acceder a él? En casos como este, todo el dapp está inactivo. Entonces, ¿cuál es el punto de llamarlo dapp?

¿Es correcto mi entendimiento acerca de tener un solo servidor como proveedor?

No todos los creadores de dapp alojan su propio servidor o un nodo que se ejecuta en rpc. En tales casos, ¿cómo sabría el creador la dirección de cualquier nodo?

No hay servidor en una aplicación descentralizada. En la mayoría de los casos, el proveedor debe ser localhost, conectándose al nodo de usuarios.
@ 5chdn, ¿cómo se descentraliza eso nuevamente?
@niksmac Bienvenido a Ethereum Stack Exchange, si tiene otra pregunta, por favor pregunte en un hilo separado. :-P Si cada usuario no se conecta a un servidor central sino a su aplicación p2p descentralizada que se ejecuta en su servidor local, por definición es descentralizado, si no distribuido.
@5chdn gracias :-P gracias por su amabilidad de responder en un comentario. :D

Respuestas (2)

El localhost:8545que está en su ejemplo indica que la DApp está enviando solicitudes a un nodo que se ejecuta localmente en la computadora del usuario. A menudo, el paradigma es verificar si hay un servidor rpc local y, si no existe, usar un nodo público como respaldo (suponiendo que la DApp administre las claves en el navegador; de lo contrario, necesita un nodo local para almacenar las claves) .

¿Cómo se daría cuenta un desarrollador de un nodo público? y su direccion?

web3.js o cualquier otro cliente se comunica con un nodo que haya configurado. En este caso, el nodo se está ejecutando localhost:8545y la aplicación se comunica con ese puerto para obtener datos en ese nodo. Cada nodo tendrá la misma copia de datos, por lo tanto, no hay un servidor central ni ningún tiempo de inactividad (ese es el punto central de la cadena de bloques).

Si le preocupa el tiempo de inactividad de un solo servidor, es posible que deba pensar desde la perspectiva de su aplicación. Puede configurar dos o más nodos para evitar el tiempo de inactividad y otros problemas relacionados con la infraestructura.

Por ejemplo, en mi caso, configuré 3 VM de Linux para la instancia de geth y un servidor de Windows para el alojamiento de aplicaciones y otras actividades relacionadas con la base de datos.

Entonces es distribuido, no descentralizado.
No estoy seguro de cómo podría ser más descentralizado. Está la cadena de bloques pública, extraída por cualquier cantidad de personas, incluidas muchas computadoras domésticas con GPU, y están los usuarios de dap, que ejecutan javascript localmente que se comunica con su nodo Ethereum local, que se comunica con la cadena de bloques pública.