Reduce the overhead of seal in light clients
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
- rust
- Área
- blockchain
Línea de trabajo
Empieza por localizar la definición de UpdateHeader de Foundry y el código de light client y de ICS que lo serializa y verifica. Rastrea cómo new_header y seal_for_current contribuyen al hashing del header, y determina después los cambios necesarios en el hashing y las pruebas; el trabajo estará terminado cuando las actualizaciones del light client sigan siendo verificables, mientras que UpdateHeader ya no contenga datos de seal redundantes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Background
Light clients (both standalone and ICS) utilize the concept of 'Update header', which is a set of data that is enough to update a light client's best header. (In abstract terms, we call this 'update of client state'.)
Currently Foundry's UpdateHeader contains new_header, validator_set, and seal_for_current (for new_header).
We don't actually need all fields in the header for light clients. For example, author, parent_hash, extra_data... and even the seal
However, we must provide them to light clients since they contribute to the block hash, which will be verified by the seal_for_current.
As you can see, UpdateHeader contains two seals.
Problem
You might think it's tolerable, but it's not. It has a problem with ICS.
Of course ICS's light client will have the same problem of having two seals, but the worse part of doing this is that the UpdateHeader in IBC will be recorded in the transaction, and ultimately, in the block.
This means that a full node will carry approximately 3 seals per block if it is Foundry-Foundry IBC and each's chain has similar block generation rate.
- one for its own block
- one for
update_header.new_header.seal - one for
update_header.seal_for_current
How to solve
We can change the hashing scheme of our header to:
hash(header.a1, header, a2, .... , hash(header.b1, header.b2, ...))
where a#s are fields that the light client actually uses, and b#s are not. (e.g seal)
This forms a 2-depth Merkle tree and the UpdateHeader will contain only a#s + hash(header.b1, header.b2, ...), not the whole new_header.
BLS
It might be 'tolerable' if we decided to introduce BLS to master.
- Lenguaje dominante
- Rust
- Estrellas
- 36
- Forks
- 11
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 CodeChain-io/foundry
-
Remove informerAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
CodeChain-io/foundry#607 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
CodeChain-io/foundry#606 ·
-
Change the return type of execute_transactions to signify it always succeedsQuizá libre de nuevo @dynaxis la tomó hace 2113 días y no hay ningún pull request abierto. Abierto
CodeChain-io/foundry#605 · 1 reacción · 1 asignado ·
-
Handle invalid transactions.Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
CodeChain-io/foundry#604 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
CodeChain-io/foundry#603 ·
Todos los issues de CodeChain-io/foundry
Issues similares
-
[Bug]: Web chat input doesn't regain focus after a reply finishesPosiblemente ocupada @GaijinSystems la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
zeroclaw-labs/zeroclaw#11658 ·
Los mantenedores suelen responder en 2 días
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
NuSkooler/enigma-bbs#907 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día