14 de septiembre - Post Mortem
==============================
Traduccion al español de la declaración: [September 14th - Post Mortem](https://hackmd.io/@syndicate/postmortem-140921#September-14th---Post-Mortem)
_¡Saludos, ciudadanos de XYM City!_
[ ](https://hackmd.io/@syndicate/postmortem-140921#Finalization-Background "Finalización-Antecedentes")Antecedentes de la finalización
--------------------------------------------------------------------------------------------------------------------------------------
La finalidad es un concepto importante en blockchain: es una garantía de que una transacción no se puede _alterar, revertir o cancelar_. _La mayoría de las cadenas (como Bitcoin) utilizan la _finalidad probablística_ , es decir, las posibilidades de que su transacción pueda modificarse disminuyen a medida que pasa el tiempo. En Símbolo tenemos tanto la finalidad probabilística _y_ que tienen _la finalidad determinista_ como un aparato independiente - una transacción es considerada como definitiva una vez que se ha incluido en un bloque finalizado.
Para finalizar un bloque, `2/3`de la participación activa con voto debe votar sobre el hash del bloque. Los votantes pueden ingresar y salir del proceso de finalización a voluntad. Cualquier cambio de membresía es efectivo para la _próxima_ época. Además, la participación activa con voto se calcula al final de cada época y esa cantidad se utiliza como denominador en la siguiente época.
[ ](https://hackmd.io/@syndicate/postmortem-140921#Problem "Problema")Problema
------------------------------------------------------------------------------
El domingo 12 de septiembre notamos que la red tenía problemas para finalizar la época 361. Esto no fue del todo sorprendente: esperábamos que esta época fuera una prueba de resistencia sólida para el proceso de finalización.
Los nodos de votación que utilizaban `symbol-bootstrap` para registrar claves de votación cerca del inicio de la red, tenían claves registradas para las épocas 1-360. Debido a la falta de publicidad sobre la importancia de actualizar regularmente las claves de votación, muchos usuarios no registraron claves para las épocas 361+. Como resultado, muchos nodos que votaron en la época 360 no votaron en la época 361.
No obstante, todavía había suficiente acuerdo para pasar a la siguiente época (362). Desafortunadamente, aquí es donde ocurrió el estancamiento. Algunos nodos más grandes dejaron de votar y, ahora, la red no puede lograr el acuerdo de una supermayoría de votos.
Parecía que se estaba considerando la participación de los votantes vencidos, lo cual era indeseable. Después de una investigación, descubrimos que aunque el cliente estaba ignorando adecuadamente la participación de las cuentas con claves de votación registradas _alguna_ vez, no estaba ignorando la participación de las cuentas con claves de votación registradas _anteriormente_ . Pudimos identificar rápidamente que algo fue un error al observar los datos almacenados en los ImportanceBlocks correspondientes a las épocas 360 y 361. Si todo funcionaba según lo diseñado, habríamos esperado ver una gran disminución `TotalVotingBalance`, pero en su lugar, prácticamente no se modificó. .
[ ](https://hackmd.io/@syndicate/postmortem-140921#Primary-Fix "Arreglo primario")Arreglo principal
---------------------------------------------------------------------------------------------------
Arreglamos este error al filtrar las cuentas sin claves de votación registradas en la época actual. Además, bajamos el umbral de supermayoría del 70% al 67%. Con estos cambios, esperamos que la finalización se reanude tan pronto como se implemente esta solución en una supermayoría de votos.
Habrá una bifurcación en el bloque `528,000`. Esto es necesario para corregir el cálculo de las estadísticas almacenadas en ImportanceBlocks porque deben ser validados por todos los nodos.
Dado que la finalización se implementa como un gadget en Symbol, la cadena aún progresó durante este estancamiento de finalización. La producción de bloques de PoS + continuó independientemente de la finalización. Cuando se corrige la finalización, esperamos que todos los bloques finalicen rápidamente.
[ ](https://hackmd.io/@syndicate/postmortem-140921#Secondary-Changes "Cambios secundarios")Cambios secundarios
--------------------------------------------------------------------------------------------------------------
Cuando un nodo de votación se queda sin claves de votación, el comportamiento original bloquea el nodo. Para que esto sea menos perturbador, hicimos un cambio para simplemente registrar un error. Si bien esto es menos ruidoso, no se recomienda ejecutar un nodo en este estado durante un período de tiempo prolongado. En lugar nodos que desean dejar de votación deben fijar `enableVoting`a `false`y reiniciar el sistema.
Ha habido algunas quejas de que una cuenta multifirma siempre necesita otra cuenta (el iniciador) para pagar su tarifa. Estamos relajando esta restricción para que, en el bloque de la bifurcación, la cuenta multisig pueda pagar su propia tarifa indirectamente transfiriendo su tarifa al iniciador. Tenga en cuenta que esto no cambia el comportamiento de los envíos de transacciones parciales que requieren un bloqueo de hash.
[ ](https://hackmd.io/@syndicate/postmortem-140921#Future-Work "Trabajo futuro")Trabajo futuro
----------------------------------------------------------------------------------------------
En la versión actual de Symbol, no hay recompensas ni penalizaciones para los nodos de votación. Si bien esto simplificó considerablemente nuestra implementación de finalización para el lanzamiento, no crea los incentivos correctos que pretendemos para los nodos de votación. Agregaremos un sistema adecuado para recompensar a los votantes en el futuro (cercano).
Nos hemos dado cuenta de que necesitamos invertir en mejores herramientas. Ser capaz de monitorear la cantidad de nodos de votación _activos_ y una disminución en la participación en la votación nos habría alertado sobre un problema antes de que se detuviera la finalización. Daremos prioridad a nuestra infraestructura durante los próximos meses, incluido un nuevo explorador de bloques, API REST mejoradas y análisis de datos que son fácilmente comprensibles y útiles tanto para los usuarios como para los investigadores. Si desea trabajar con nosotros, únase a nosotros en [Discord](https://www.discord.gg/xymcity) .
###### [ ](https://hackmd.io/@syndicate/postmortem-140921#tags-Engineering-Fork "Etiquetas-Ingeniería-Horquilla")etiquetas: `Engineering` `Fork`
---
Publicado en **[ HackMD](https://hackmd.io/)**