Seguramente muchos de ustedes se preguntaron por qué incluso necesitaban blockchain y Ethereum en particular. Es posible que alguien haya ido más allá y haya encontrado muchas características hermosas: descentralización, transparencia, confianza sin intermediarios, resistencia al robo. Es genial, ¿verdad? Si pero ...

La cadena de bloques en su forma actual es ideal solo para un rango estrecho de tareas, a excepción de la tarea "agregar nanotecnología para el efecto sorpresa" (y para esta tarea puede adaptarse a cualquier cosa). Por supuesto, debe comenzar en algún lugar, diferentes experimentos están probando el terreno, mostrando dónde se puede esperar la demanda, dónde hay un callejón sin salida inesperado, donde los defectos no son tan críticos como se predijo. Pero es necesario saber acerca de las fronteras para decidir conscientemente si en este caso particular es posible tratar de pasar por encima de ellas.
Por cierto, Ethereum no es la única y no la mejor opción en todos los aspectos. Quizás la cadena de bloques solo se adapte a su tarea, pero a otra. Pero luego decimos "blockchain", nos referimos a "Ethereum"
Intentemos describir esas características de blockchain y contratos inteligentes que hacen que la solución a primera vista de tareas prometedoras sea ineficaz o incluso imposible. También me gustaría decir que los puntos están generalizados, por lo tanto, en teoría, puede haber soluciones bastante normales para casos de uso específicos. Por lo tanto, trate esta lista como debilidades de Ethereum que deben resolverse antes de comenzar el proyecto.
Y también, perdona si mucho de esto te parece obvio. Como ha demostrado la práctica, a menudo se trata de estas cosas con las que tiene que hablar con el cliente en primer lugar.
1. Umbral de entrada alto
Si su audiencia son usuarios comunes y no entusiastas de blockchain, entonces una parte muy pequeña se molestará en comenzar a usar su aplicación. Imagínese: necesita no solo instalar Metamask o Mist con un nodo, sino también comprar ether, y esto también es un proceso no trivial al principio. Es decir, si su objetivo es maximizar el alcance de la audiencia, Ethereum aún no es adecuado. Por ejemplo, hacer una tienda exclusivamente con contratos inteligentes probablemente sea una mala idea.
Que hacer
- Ofrecer beneficios superando inconvenientes
- Dirigirse a un público "en el tema"
- Sería posible ocultar la lógica de blockchain del usuario colocándola en el backend, si no fuera por el siguiente elemento
2. Centralización descentralizada
Aún así, la ventaja de la cadena de bloques es que los participantes no pueden confiar entre sí tanto como sea posible, pero esto solo es posible si el usuario es el propietario de su clave privada. Entonces solo él puede firmar transacciones y realizar varias acciones desde su dirección. ¿Qué sucede en el caso de la lógica blockchain en el backend? Las claves se administran de forma centralizada y no hay protección contra transacciones inconsistentes con el usuario, lo que significa que solo debe confiar en la integridad y seguridad del servidor. Entonces, por ejemplo, la mayoría de los intercambios de criptomonedas operan con criptomonedas, pero no usan ninguna ventaja asociada con esto.
Que hacer
- Comprenda si se necesita transparencia e inmunidad o la capacidad de manipular criptas. Si no, es más barato y más conveniente usar una base de datos normal.
- Pensar y trabajar a través de la mecánica del trabajo para mantener las garantías tecnológicas.
3. Todos los datos son públicos.
Independientemente de cómo se escriba el contrato inteligente, si lo desea, puede obtener el valor de cualquier campo de datos en él. Y el historial de transacciones. Por lo tanto, si escribe algo que identifica a un usuario, como el correo o un nombre, entonces todo lo que hace público a este usuario. Es muy posible tener algún tipo de cifrado en la parte superior. En este caso, las claves para esto deberán almacenarse en el lado receptor, es decir, el usuario nuevamente debe confiar sus datos a un tercero. Por lo tanto, para datos más o menos confidenciales, el almacenamiento privado ordinario puede estar más justificado. Si va a concluir acuerdos sobre blockchain, puede perder más que ganar.
Que hacer
Comprenda si se requieren datos privados para la lógica de contrato inteligente. Si es así, considere manejar hashes en lugar de los datos en sí.
4. Blockchain no es una supercomputadora
Alguien podría tener la impresión de que los mineros están poniendo un enorme poder en la realización de cálculos útiles, pero esto ciertamente está lejos de ser el caso. Por si acaso, me gustaría aclarar: el rendimiento de Ethereum es más similar al rendimiento del sistema integrado: recursos limitados, memoria limitada, tamaño limitado de "firmware" (byte del código de contrato inteligente). Por lo tanto, los cálculos no críticos deben sacarse al máximo de la cadena. Por esta razón, en los contratos inteligentes es poco probable que sea más difícil analizar datos o, por ejemplo, realizar cifrado
Que hacer
- No use blockchain como calculadora
- Si necesita cálculos controlados en la cadena de bloques, puede considerar la función de cálculo en oraclize
5. Blockchain no es un almacenamiento universal
A menudo puede escuchar una solicitud para guardar algo en la cadena de bloques: información o documentos. Aquí los problemas son obvios: en primer lugar, guardar datos es costoso y, en segundo lugar, la cadena de bloques no es adecuada para la búsqueda, por ejemplo, ya sea que tenga un mapeo (clave-valor) que, por cierto, también agrega valor a cada registro, o tiene que buscar por fuerza bruta. Además no hay gestión de permisos. Por lo tanto, no solo debe cambiar la base de datos a blockchain, es importante comprender por qué esto era necesario en principio. Por separado para los archivos, vale la pena recordar acerca de la publicidad de los datos: si dice mantener un enlace a IPFS, entonces todos lo ven y pueden descargar lo que contiene. Entonces, si desea almacenar fotos en la cadena de bloques, debe pensar por qué.
Que hacer
- Como regla general, todo lo que se necesita es guardar un hash para verificar qué hay fuera de la cadena
- Guarde solo los datos necesarios para la lógica del contrato inteligente
6. Vinculación de la cadena de bloques al mundo real
La cadena de bloques en sí misma transfiere monedas / fichas sin problemas, pero ¿cómo transferir lo que se les compra? Incluso si se trata de un archivo, ¿cómo proporcionar confirmación de su transferencia sin un tercero? La respuesta corta: no es muy simple, porque suponemos que ambas partes quieren engañarse mutuamente y necesitarán muchas verificaciones, cifrado-descifrado, y si surge una disputa, no puede prescindir de cálculos fuera de la cadena o un árbitro. Como comprenderá, para un producto o servicio físico, todo se complica por el hecho de que alguien debe ingresar información que, en términos generales, ha recibido los bienes. Este alguien no puede ser una persona interesada, entonces este es el tercero, en el que nuevamente debemos confiar. Entonces, nuestra solución de blockchain tiene un punto débil en la forma de este árbitro, y dado que confiamos en él, ¿por qué no confiar todo lo demás? Digamos que tenemos una base regular y hacemos pagos. Antes de hacer algo, debe responder claramente esta pregunta. Ese es, por ejemplo, el significado del token que ofrece intercambiar por un descuento en una tienda fuera de línea, nos parece personalmente dudoso
Que hacer
Responda claramente por qué la lógica centralizada no es adecuada. Si no hay respuesta, rechace la cadena de bloques.
7. Sin seguro de error del usuario
Si envió dinero por error al banco o hackeó una cuenta, es decir, hay una opción para escribir en soporte, hay tiempo para cancelar o revertir la transacción. En los contratos inteligentes, no puede hacer manualmente lo que el código no proporciona. Nuevamente, nos enfrentamos a la necesidad de presentar un árbitro a quien se le otorguen privilegios comparables a la centralización de toda la decisión.
Que hacer
Si es necesario, la introducción de retrasos artificiales en la transferencia de fondos en un contrato inteligente
8. plazo de ejecución largo
Si tiene un sistema dinámico con reescritura constante de estados y lógica basada en ellos, lo más probable es que no esté satisfecho con el tiempo de espera, porque Al menos en Ethereum, un tiempo de confirmación de transacción normal se puede considerar medio minuto, y si no se declara en quiebra, generalmente más. Incluso si la cuenta no dura segundos, vale la pena considerar la posibilidad de retrasar la transacción por un tiempo indefinido y establecer intervalos suficientes. Entonces, si bien los juegos como el póker no son posibles en su forma pura en los contratos inteligentes de Ethereum, o no son triviales y requieren énfasis en la lógica fuera de la cadena
Que hacer
- Si planea recurrir a la cadena de bloques con mucha frecuencia, no debe mirar hacia Ethereum, pero tal vez no hacia la cadena de bloques en absoluto.
- Si es posible, recopile varias transacciones en una, realizando parte de la lógica fuera de la cadena
- Como último recurso, puede aumentar el precio del gas según sea necesario.
- Si la transacción no toma mucho tiempo, puede especificar un precio mayor y enviarlo nuevamente (la transacción debe permanecer sin cambios, incluyendo nonce). Una más cara reemplazará a una más barata
9. El bypass de censura aún no es perfecto
Si desea enfrentar al gobierno o algo así con la ayuda de blockchain, sepa que el servicio web sigue siendo una cosa centralizada, incluso si se basa en blockchain. Es decir, un nombre de dominio o ip todavía se puede bloquear fácilmente y los usuarios deberán averiguar la dirección del espejo. Ventajas: no necesita hacer copias de seguridad de la base de datos y conocer la dirección en la red Ethereum, siempre puede obtener acceso con medios menos amigables para el usuario (Mist, MyEtherWallet, etherscan, etc.) Pero no podemos decir que el problema de censura se haya resuelto por completo.
Que hacer
El bloqueo de la resistencia es una ventaja, pero no debe basar su decisión en usar blockchain o no.
Si no es Ethereum, ¿quién?
Muchos que. Otras soluciones blockchain y no blockchain pueden sacrificar la descentralización, la apertura o la accesibilidad para un número ilimitado de participantes, a cambio de recibir una mayor velocidad de transacción, sin problemas de privacidad, etc. Estas son EOS, soluciones en Hyberledger, Exonum, Hashgraph, Corda y mucho más. Pero hay un factor tan importante como el nombre de oído. Esta es una gran base de usuarios y una gran base de datos de aplicaciones, información y herramientas de desarrollo, pruebas. Y esto se puede escribir en los pros para Ethereum. Y veamos qué traen Casper y Sharding.
¿Está todo tan mal?
El problema más importante que pasa por todos estos puntos es la conciencia de la elección de la cadena de bloques. Es importante que la tecnología resuelva el problema, lo más probable es que agregar una cadena de bloques a una tarea ya resuelta no haga que la solución sea más efectiva.
Por ejemplo, si no sabe quién quiere lanzar un casino, entonces tiene un problema para ganarse una reputación, mostrar honestidad y atraer algún tipo de base de usuarios. Al ofrecer una solución en Ethereum, al menos teóricamente puede garantizar a los usuarios un trabajo transparente (aunque pocos realmente auditarán su contrato inteligente antes del juego). Y atrae a personas con un exceso de criptomonedas en la cuenta y un número insuficiente de posibilidades para su uso. Podemos decir que el objetivo se está logrando.
Y si desea agregar blockchain al messenger, lo más probable es que no solo no resuelva los problemas (¿y qué pueden ser? La censura y la privacidad vienen a mi mente), sino que también agrega otros nuevos.
Encontrar aplicaciones más correctas es probablemente una cuestión de futuro, cuando la base de usuarios crezca y comprar criptomonedas sea más fácil que ahora. Pero en general, puede mirar hacia tales aplicaciones:
- Procesos burocráticos y largos: transferencias al exterior, papeleo
- Procesos de confianza basados en plataformas: fondos, casinos
- Datos utilizados en diferentes áreas o compañías no relacionadas: operadores turísticos, historial crediticio, listas negras
- Monitoreo de procesos no confiables: votación, recaudación de fondos
El hecho de que la tarea pertenezca a uno de los puntos no significa que la cadena de bloques se ajuste perfectamente. Siempre vea lo que ofrecen otras tecnologías más optimizadas. Es decir, el tren de pensamiento debería ser "cómo resolver este problema" y no "dónde bloquear la cadena de bloques".
Inmersión en desarrollo en Ethereum:
Parte 1: IntroducciónParte 2: Web3.js y gasParte 3: aplicación de usuarioParte 4: despliegue y depuración en trufa, ganache, infuraParte 5: Oraclize