Estoy tratando de entender la arquitectura típica de un Dapp con clientes de navegador. ¿Es correcto el siguiente entendimiento?
[Navegador web (usuario final)] <==> [Servidor (aplicación web/javascript <==> web3 <==> cliente ethereum como geth)] <==> [Red Ethereum (código de solidez)]
No estoy seguro de si está describiendo el flujo de datos en lugar de la arquitectura real del sistema, pero si es así, no es del todo correcto.
Alex Van de Sande escribió un excelente artículo sobre la creación de aplicaciones sin servidor y en él contrasta la distinción entre una compilación centralizada y una compilación descentralizada.
https://blog.ethereum.org/2016/07/12/build-server-less-applications-mist/
Estructura centralizada tradicional
Estructura Descentralizada de Nueva Generación
El artículo habla mucho sobre Mist, pero esto fue cuando Mist realmente era lo único que se mostraba en la ciudad. Ahora tenemos Parity e incluso MetaMask que permiten a los usuarios acceder a web3.js y una conexión a una billetera Ethereum y, lo que es más importante, la capacidad de usar la billetera Ethereum para firmar transacciones en la red/cadena de bloques Ethereum.
[Navegador web (usuario final)] <==> [Servidor (aplicación web/javascript <==> web3 <==> cliente ethereum)] <==> [Red Ethereum (código de solidez)]
El cliente Ethereum no suele estar del lado del servidor, hay excepciones como el caso de usar algo como MetaMask, pero en ese caso usarías MetaMasks del lado del servidor y no el tuyo. El cliente Ethereum sería parte del navegador web. Además, el cliente es lo que se comunica con la red Ethereum, no su servidor. Entonces, su estructura / relación debería dividirse en dos partes y parecerse más a:
Descargando el HTML y JS:
[Navegador web (usuario final <==> cliente Ethereum) ] <==> [Servidor (aplicación web/JavaJcript <==> web3) ]
Interactuando con la cadena de bloques:
[Navegador web (usuario final <==> cliente Ethereum) ] <==> [Red Ethereum (código de solidez) ]
@Ashish: su hipótesis es correcta, pero incompleta. Si bien esa es una forma común , de ninguna manera es la forma común ; hay múltiples patrones aceptables y dependen del caso de uso designado.
Este artículo examina los patrones arquitectónicos de Ethereum actuales más populares y proporciona un caso de uso para cada uno: https://blog.zeppelin.solutions/designing-the-architecture-for-your-ethereum-application-9cec086f8317 .
Boriño
Ashish sinha