La construcción de bloques es un aspecto crucial del ciclo de vida de Ethereum, que consta de varios componentes. Determina qué transacciones se incluyen en un bloque y en qué orden, lo que impacta directamente en la eficiencia, la descentralización y la equidad de la red. Con el tiempo, el proceso de producción de bloques de Ethereum ha evolucionado, especialmente con el creciente papel de MEV y la transición de la selección basada en validadores a constructores especializados.
Esta publicación discutirá cómo ha evolucionado la construcción de bloques de Ethereum junto con la introducción de la separación de proponentes y constructores y la investigación futura.
Ethereum organiza el tiempo en unidades discretas:
Al final de cada época, las funciones del validador se redistribuyen para garantizar la descentralización y la seguridad. Ethereum alcanza su finalidad económica tras 2 épocas (aproximadamente 12,8 min) , tras las cuales es prácticamente imposible revertir los bloques.
Ethereum cuenta con una gran cantidad de validadores en la red. Al momento de escribir este artículo, hay 1,051,349 validadores activos según beaconcha.in. Sería inviable que tantos validadores tuvieran que verificar cada bloque cada 12 segundos. Por lo tanto, los validadores se dividen en comités para validar eficientemente las transacciones y certificar la validez del bloque.
Cada comité:
El tamaño de un comité depende del número total de validadores activos en la red, pero generalmente cada comité tiene al menos 128 validadores.
En cada ranura:
Digamos que hay N
comités asignados por puesto y M
validadores en cada comité (donde M
> 128). Esto significa que hay NxM
atestaciones para cada puesto. Como comprenderá, puede resultar abrumador para la red compartir tantas atestaciones.
Los agregadores de cada comité se encargan de agregar las certificaciones de su respectivo comité. Esto significa que, de un comité de M
validadores, solo hay una Aggregated Attestation
final en lugar de M
En cada turno, se presentan N
atestaciones (una por cada comité de ese turno) que se discuten sobre el tema global. El proponente del siguiente turno recoge estas N
atestaciones.
Algunos puntos a tener en cuenta
Durante una época, cada validador activo es miembro de exactamente un comité, por lo que todos los comités de la época están separados.
El protocolo ajusta el número total de comités en cada época de acuerdo al número de validadores activos.
El diseño actual es tener 64
comités por espacio, es decir, N=64
La reorganización de la cadena de balizas está diseñada para proporcionar un mínimo de 1 época (32 espacios) de anticipación en las próximas asignaciones del comité del validador para la certificación, según la reorganización y el espacio. Tenga en cuenta que esta anticipación no aplica a las propuestas, que deben verificarse durante la época en cuestión.
Se puede llamar get_committee_assignment
al inicio de cada época para obtener la asignación de la siguiente época ( current_epoch + 1
). Esto también permite a los validadores calcular el ID de subred, unirse al comité correspondiente y estar preparados para sus tareas.
Además, un Validador podría ser asignado como Aggregator
de un comité específico. De ser así, también deberá suscribirse al tema correspondiente.
Dentro de cada espacio, se selecciona un único validador del comité respectivo como proponente para crear y enviar un bloque.
El papel del proponente es crucial ya que:
SignedBeaconBlock
a la red.MEV es la ganancia adicional que extraen los validadores (anteriormente mineros) al reordenar, incluir o censurar las transacciones dentro de un bloque.
Algunas estrategias MEV comunes son:
Antes de la transición de Ethereum a PBS, el proponente (anteriormente mineros en PoW) tenía control total sobre el orden de las transacciones . Esto creó un ecosistema donde el MEV era extraído directamente por validadores o subcontratado a buscadores especializados.
priority_fee
, que corresponde a las tarifas que el usuario está dispuesto a pagar para ser incluido primero. También podrían ordenarse de forma que el validador genere más ingresos (mediante la administración de sándwiches o la ejecución anticipada).Esto se ha resumido de forma un tanto vaga para simplificar. Pero este fue el flujo general. Esto se puede denominar " Construcción de Bloques Vainilla".
Para abordar los riesgos de centralización y las ineficiencias de la construcción de bloques controlada por el validador, se introdujo la Separación Proponente-Constructor (PBS) . PBS divide las responsabilidades de la producción de bloques entre dos entidades independientes:
Buscadores → entidades externas que escanean el mempool continuamente para encontrar oportunidades de MEV ( más información a continuación ). Extraen las transacciones correspondientes e insertan las suyas propias cuando es necesario para obtener ganancias. Luego, crean un paquete de estas transacciones, cuyo orden debe mantenerse para que el Buscador obtenga ganancias. Los paquetes son transacciones ordenadas que deben ejecutarse automáticamente. Junto con este paquete, pueden agregar una transacción al final que representa un "soborno" al Constructor. Este paquete se envía al Constructor mediante la llamada eth_sendBundle
.
Nota : Los buscadores son entidades externas e influyen en el orden de las transacciones, pero no participan en la validación de bloques ni en las decisiones de consenso.
Constructores → La siguiente entidad es el Constructor, quien construye el bloque. Busca maximizar tanto los ingresos por comisiones como los ingresos por MEV. Incluye las transacciones agrupadas enviadas por los Buscadores (con suerte, en orden) y acepta el pago (soborno) enviado por estos. Los Constructores construyen cargas útiles de ejecución utilizando las transacciones recibidas.
Rellenan los bloques con:
Paquetes enviados por los Buscadores.
Transacciones de alta prioridad.
Ordenar las transacciones generales teniendo en cuenta maximizar los ingresos.
También configuran el campo feeRecipient
con su propia dirección, lo que significa que recibirán tanto los sobornos del Buscador como todas las comisiones de las transacciones de su bloque enviado. Los Constructores envían una transacción al final de su bloque, que funciona como soborno para el proponente, similar a lo que el Buscador hizo para el Constructor.
Nota : Los constructores son entidades externas y no interactúan directamente con la cadena de bloques.
Poniéndolo todo junto
Es muy posible que, al recibir la carga útil del bloque, el proponente la desempaque, inserte sus transacciones, modifique el orden a su gusto y configure su propia dirección como feeRecipient
. Esto implicaría que todas las entidades que participaron en el proceso de construcción del bloque hasta ahora (Buscador → Constructor → Retransmisor) serían engañadas o cometerían un robo de MEV. Para evitarlo, el Retransmisor envía solo el encabezado de la carga útil del bloque seleccionado. Esto ocurre cuando el proponente realiza la llamada eth_getPaylaodHeader
. El Retransmisor envía ahora un PayloadHeader
que contiene el hash del cuerpo, la puja y la firma del constructor.
El proponente tiene 2 opciones en este punto:
Para seleccionar el PayloadHeader
(también llamado Bloque Ciego ) proporcionado por el Relé, el proponente debe firmar el encabezado con su clave y enviarlo de vuelta al Relé. Posteriormente, solicita el PayloadBody
mediante la llamada eth_returnSignedHeader
. El Relé ejecuta la llamada eth_sendPayload
, que devuelve el ExecutionPayload
completo al proponente. El proponente simplemente propone este bloque a la red Ethereum Validator o, más específicamente, al comité al que se le ha asignado.
El Proponente puede optar por no aceptar el PayloadHeader
enviado por el Retransmisor, en cuyo caso deberá construir el bloque él mismo. Esto incluye encontrar oportunidades de MEV y ordenar las transacciones en consecuencia. Por supuesto, en este caso, el Proponente se queda con todos los ingresos provenientes de las tarifas + MEV. Sin embargo, esto no es tan sencillo como parece. Encontrar MEV y optimizar los ingresos requiere un gran esfuerzo computacional y existe la posibilidad de que el proponente no pueda construir el bloque a tiempo (12 segundos), por lo que se perderá una ranura. En este caso, el proponente podría ser eliminado de la red.
Bueno, el proponente debe firmar el PayloadHeader
por esta misma razón. Antes de enviar el encabezado, el relé envía el PayloadBody
a un Escrow
para su custodia. Una vez que el relé recibe el PayloadHeader
firmado del proponente, verifica la firma y envía el PayloadBody
almacenado en el depósito de garantía al proponente. Supongamos que el proponente no incluye este bloque. Construye su propio bloque, ignorando el orden establecido hasta el momento. En este caso, la firma no coincidirá, ya que los encabezados han cambiado.
Nota : Es una infracción sancionable firmar dos titulares diferentes para el mismo puesto de propuesta.
El constructor ahora puede transmitir estos encabezados firmados conflictivos a la red y el proponente puede ser eliminado de la red.
Bueno, nada. La razón más común por la que los constructores podrían censurar una transacción es porque interactúa con direcciones OFAC . En resumen, las direcciones OFAC interactúan con transacciones que pueden tener repercusiones legales, algo que, obviamente, nadie querría tener sobre sus hombros.
Según Censorship.pics, los bloques creados por Builders solo incluyen entre el 0 y el 7 % de las transacciones sancionadas por la OFAC.
Una de las soluciones más conocidas para la censura de transacciones al momento de escribir esto son Inclusion Lists
.
Las listas de inclusiones son una lista de transacciones (junto con algo llamado Resumen) que publica el proponente del espacio N junto con la propuesta del bloque del espacio N.
Las listas de inclusión exigen que las transacciones de la lista se incluyan en el bloque N o en el bloque N+1; de lo contrario, el bloque N+1 será inválido. Se denominan listas de inclusión avanzada.
Nota : También existe el concepto de Listas de Inclusión Local ( LI) que realiza IL para el Bloque N actual. Sin embargo, este diseño presentó fallas económicas que llevaron a las Listas de Inclusión Avanzada (FID).
Por supuesto, este diseño de ILs no permitirá una resistencia a la censura del 100%, pero hay investigaciones activas en curso para fortalecer estas propuestas y muchas optimizaciones interesantes que se pueden aplicar para mejorar la estructura de incentivos.
Las Listas de Inclusión Forzada de Elección de Bifurcación (FOCIL) son un nuevo diseño propuesto en 2024 que desarrolla y mejora las Listas de Inclusión para aumentar la neutralidad creíble.
FOCIL permite que varios Validadores sugieran la Lista de Inclusión para una ranura específica. Para ser más precisos, se eligen 16 Validadores aleatoriamente en cada ranura para formar un Comité de Lista de Inclusión. Cada miembro forma su propio IL local y lo comparte con la red. El Proponente recopila y agrega las listas de inclusión locales disponibles para crear un IL final. Los diseños de IL son ligeros, ya que no es necesario reconstruir el bloque para incluir estas transacciones; simplemente se pueden añadir al bloque. La condición para que un Bloque cumpla con el requisito de validación de IL es: « El Bloque es válido si contiene todas las transacciones de todos los IL hasta que se complete».
Nota : Los miembros del comité de IL no pueden garantizar ningún tipo de orden de transacción, ya que las transacciones de IL pueden incluirse en cualquier orden. Solo garantizan la inclusión de las transacciones.
La separación entre proponentes y constructores de Ethereum: promesas y realidades
Estado de la investigación: resistencia a la censura en PBS
Censura de los constructores: el núcleo podrido de Ethereum
Lista de inclusión hacia adelante
¿Quién gana las subastas de construcción de bloques de Ethereum y por qué?