Prevent high S signatures (and possibly other malleability causes) by consensus
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp
- Área
- blockchain
Línea de trabajo
El issue no menciona archivos, pruebas ni puntos de entrada. Es necesario llegar a un acuerdo de diseño sobre el cambio de consenso propuesto, las posibles reglas adicionales de maleabilidad y los requisitos de despliegue antes de que alguien que empieza pueda identificar una ruta de implementación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Is your feature request related to a problem? Please describe.
Pre-segwit inputs cause problems for services building on both Bitcoin and Liquid, due to potential tx malleability (discussed extensively elsewhere). This increases the complexity of coding software which mediates or processes txs for users.
In Bitcoin the relationship to block miners is adversarial - if it is in their interest to do so, they can malleate a tx (or accept a malleated tx via non-standard means) and mine a valid block with it. In Elements/Liquid however the block producers are financially invested in the integrity of the chain and are are expected to not be malicious. A block producer including a malleated tx which facilitates a double spend or theft could erode the trust in the chain and its functionaries. Note that this could happen if a block producer is hacked for example, and not just out of malice/greed.
Liquid/Elements are potentially more sensitive to this issue given the push to build more complex contract structures, where dependent txs can be invalidated by malleation.
Describe the solution you'd like
High-S signatures are already non-standard and cannot be relayed. I propose for Elements we make such signatures invalid by consensus also. By doing so we prevent any possible bad behaviour by block producers, and at the same time reduce the barrier of entry/complexity of creating services using the chain.
Describe alternatives you've considered
The alternative is to do nothing and continue with the status quo. As above this makes building on Elements chains more difficult which could hamper future growth.
Additional context
Note that anyone holding back an old, validly-signed high-S tx must already transmit it OOB to a block producer in order to have it included in the chain. They, or the block producer can always maleiate the sig back to low-S in order to include it after this change is made.
A consensus failure can only occur while this change is deployed to the block producers, and only if one of them decides to fork the chain deliberately. As above the block producers are not incentivized to destroy the chain they work on, nonetheless this risk should be mitigated where required by whatever means are available (For example, updates to any legal contract).
It is possible that other standardness checks could also become consensus checks for Elements however they are not detailed here.
- Lenguaje dominante
- C++
- Estrellas
- 1.2k
- Forks
- 417
- Merge medio
- 23 h 21 min
- PR fusionados (30 d)
- 6
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ElementsProject/elements
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
ElementsProject/elements#1555 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
ElementsProject/elements#1521 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 32/100
ElementsProject/elements#1516 · 5 comentarios ·
-
Compilation error on WSLAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
ElementsProject/elements#1502 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 38/100
ElementsProject/elements#1500 · 2 comentarios ·
Todos los issues de ElementsProject/elements
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
(S1 - Need confirmation)
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
CleverRaven/Cataclysm-DDA#88974 ·
Los mantenedores suelen responder en 1 día
-
comp-mysql
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ClickHouse/ClickHouse#124749 ·
Los mantenedores suelen responder en 1 día
-
Status: Needs confirmation Status: Needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día