Los mecanismos de comisión de transacción se han convertido en los modelos fundamentales para entender la intermediación de los productores de bloques entre los usuarios que desean realizar transacciones y “la cadena” (o “el protocolo”) en el que los usuarios realizan transacciones. Dada la capacidad de utilizar parte del suministro proporcionado por la cadena, los productores de bloques deben arbitrar qué usuarios tendrán la capacidad de utilizar el recurso escaso de ejecución en cadena, y a qué costo. En Ethereum, para la cuestión del costo, los productores de bloques están limitados por el mecanismo de comisión EIP-1559, que establece dinámicamente un precio de reserva de bloque a bloque, llamado “tarifa base”. La tarifa base es un precio, expresado por unidades de gas, que una transacción de usuario debe pagar para ser incluida y ejecutada. El usuario puede proporcionar los llamados “honorarios prioritarios” más allá de la tarifa base, para incentivar aún más a los productores de bloques en momentos de congestión.
En esta nota, investiGateamos la cuestión de los mercados de comisiones integrados, es decir, los mercados de comisiones que "viven" dentro de otros mercados de comisiones. Esta cuestión fue discutida en un contexto diferente en un artículo reciente de Maryam Bahrani, Pranav Garimidi y Tim Roughgarden, "Diseño del mecanismo de tarifas de transacción en un mundo post-MEV 9En este documento, los autores modelan el uso de buscadores, intermediando aún más el acceso a la cadena entre los usuarios y los productores de bloques. Los productores de bloques reciben "pistas" de los buscadores, encarnadas por paquetes atómicos de transacciones que deben ser incluidos por la cadena. El mercado de tarifas de los buscadores está impulsado por el objetivo de maximización de una cantidad conocida como MEV, o valor extraíble máximo.
En nuestra configuración, los usuarios desean acceder a la cadena pero no expresan su demanda utilizando transacciones legibles por el protocolo. En lugar de eso, los usuarios producen “operaciones”, que deben ser agrupadas por entidades conocidas como “agrupadores”, quienes luego originan una transacción legible por el protocolo que empaqueta las operaciones juntas hacia la ejecución. De esta manera, para el mecanismo de tarifas EIP-1559, los agrupadores son los usuarios de la cadena, pero los usuarios reales deben obtener primero la inclusión en el grupo de un agrupador antes de poder obtener la inclusión en la cadena. En otras palabras, podemos ver esta configuración como parte de la pregunta más amplia deco-creación de bloques, que surge con (parciales) constructores/buscadores y listas de inclusión.
Nuestra esperanza es que estas dinámicas sean lo más transparentes posible, de manera que no haya una sobrecarga cognitiva adicional o oportunidades para que el usuario sea explotado indebidamente por el agrupador, en comparación con ir directamente a la cadena. Esperamos obtener resultados aún más sólidos, casos en los que los usuarios realmente se beneficien de la intermediación del agrupador, cuando los costos amortizados permitan a los usuarios disfrutar de un mayor bienestar.
Para investiGate la distinción entre los mercados de tarifas directas y sus (sub-)mecanismos integrados, debemos precisar las restricciones económicas a las que se somete un agrupador. En la siguiente sección, ofrecemos un modelo simple de la función de costos del agrupador motivado por la práctica, en particular los agrupadores que participan en el protocolo ERC-4337, que recapitulamos brevemente.
Un usuario que desea realizar alguna actividad en la cadena a través de empaquetadores emite una operación de usuario (UserOp u operación). Este UserOp se emite desde la billetera del usuario, por ejemplo, después de interactuar con una DApp. Una vez que se difunde el UserOp, es posible que algún agrupador que reciba la operación decida incluirlo en un paquete. Un paquete es una metatransacción de "cuenta de propiedad externa" (EOA), que escribe los datos de las UserOps incluidas en su campo bundle.calldata. El empaquetador emite el paquete para su inclusión en un bloque por parte de un productor de bloques (discutiremos la relación entre el empaquetador y el productor de bloques en una nota futura).
Una vez que el paquete se incluye en el bloque, y el bloque se mueve hacia la cadena, el paquete se ejecuta junto con otras transacciones en el bloque. Básicamente, los pasos de ejecución del paquete son los siguientes:
Como se desprende de la descomposición anterior, el paso de preverificación se ejecuta una vez, ofreciendo la posibilidad de amortizar los costos de preverificación en todos los usuarios incluidos. Cuando se ejecuta el paquete, todos los costos (por ejemplo, block.basefee + tarifas prioritarias pagadas por el agrupador al productor de bloques, incluyéndolos) se cobran al agrupador, quien debe asegurarse de que las operaciones de los usuarios le compensen lo suficiente por los costos incurridos. Precisamos estas afirmaciones en la siguiente sección.
Intentamos ser consistentes con los modelos clásicos de mercados de tarifas. Un usuario t que desea emitir una operación tiene algún valor vt para la ejecución de la operación. Suponemos que todas las operaciones tienen el mismo tamaño S (es decir, el mismo gas utilizado para las etapas de verificación y ejecución) y, por lo tanto, expresamos todas las cantidades como precios por unidad de gas.
Los usuarios expresan su deseo de ser incluidos emitiendo una oferta bt junto con su operación. Por ahora, no asumimos una gramática específica para que el usuario exprese su oferta de inclusión, por ejemplo, la capacidad de expresar una tarifa máxima y una tarifa de prioridad junto con su operación, como lo harían con EIP-1559. Las operaciones de los usuarios se recopilan en un mempool M, que representa el estado pendiente de estas operaciones hasta su inclusión.
El mercado de tarifas EIP-1559 expone un precio de reserva r conocido como "tarifa base", que los agrupadores deben asumir cuando se ejecuta su paquete. Si el paquete contiene n operaciones, el agrupador debe gastar al menos n × S × r. Además, dado que el paquete consume "gas de preverificación", digamos, una cantidad F, el agrupador también pagará F × r
. Las operaciones incluidas en el paquete son proporcionadas por el conjunto B.
Ahora consideramos los costos incurridos por los agrupadores para la inclusión de sus paquetes en el bloque.
Función de coste en cadena: Un agrupador emitiendo el paquete B cuando la tarifa base es r gasta un costo:
El problema del agrupador refleja el problema del productor de bloques expresado en[Roughgarden 2021] 3. Allí, el productor de bloques tuvo que asegurar la provisión de algún valor μ que la compensara por el costo de incluir una transacción adicional en su bloque (por ejemplo, μ puede compensar la carga adicional del bloque, que retrasa su propagación y aumenta así el riesgo de reorganización). El mercado de tarifas a nivel de bloque debe asegurar entonces que el productor de bloques sea compensado al menos por el costo total n × S × μ, si el productor de bloques incluye n transacciones en su bloque. El mercado de tarifas a nivel de agrupador requerirá compensar al menos al agrupador por costos exógenos
Con-chain(B,r) que incurren en el mercado de tarifas más grande en el que están integrados.
ERC-4337 ofrece la posibilidad de amortizar los costos más allá de compartir los costos de gas de verificación previa. En caso de que todas las operaciones empleen el mismo esquema de firma para su fase de verificación, las firmas de estas operaciones podrán ser agregado 2por el agrupador, de modo que en lugar de verificar n firmas en la cadena, se puede verificar una única firma. En este caso, la función de costo del agrupador deberá tener en cuenta los costos fuera de la cadena que el agrupador incurre al realizar la agregación. A continuación, asumimos que dichos costos son lineales en el número de operaciones, una suposición similar a [Wang et al., 2024] 2, a un costo marginal ω.
También tenemos en cuenta el consumo reducido de gas de cada operación, debido a los ahorros por la agregación. Cuando se agregan, las operaciones no necesitan publicar su firma, pero sí requieren una operación adicional de emparejamiento. En cadenas donde el costo de calldata es caro, pero las operaciones de emparejamiento/cómputo son baratas, la agregación proporciona ahorros por operación. En este caso, denotamos por S' < S el tamaño reducido de una transacción. También necesitamos tener en cuenta el aumento del uso de gas de preverificación F' > F, que ahora contiene la publicación y verificación de la única firma agregada en cadena.
Función de costo agregada: Un agrupador que emite el paquete B con firmas agregadas cuando la tarifa base es r incurre en un costo:
En esta nota, no profundizaremos más, pero uno también puede considerar los costos de publicación de datos que un agrupador puede necesitar gastar cuando su paquete se resuelva en un rollup. Sugerimos dos formas de modelar esto y dejamos esta pregunta para trabajos futuros:
Ahora podemos expresar formalmente los conceptos relevantes para el mercado de tarifas a nivel de paquete, derivándolos directamente de la literatura anterior, teniendo en cuenta la incrustación.
Regla de asignación a nivel de paquete: Una asignación (a nivel de paquete) x decide el conjunto de operaciones de usuario que el agrupador incluye en su paquete, dada la mempool actual M y la tarifa base r.
Regla de pago a nivel de paquete: Dado el conjunto de operaciones seleccionadas B, una regla de pago asigna a cada usuario incluido una tarifa:
Función de utilidad del usuario:
En principio, podríamos permitir la existencia de una regla de quemado qt(B) que exprese el hecho de que el agrupador no pueda recibir la totalidad de todos los pagos de usuarios incluidos. Sin embargo, no lo consideramos en esta nota.
(Miopic) función de utilidad de agrupación:
Un TFM de nivel de paquete (x, p) es compatible con incentivos para los agrupadores miope (MBIC) si, para cada Mempool M y tarifa base r, un agrupador miope maximiza su utilidad siguiendo la sugerencia de la regla de asignación x (es decir, estableciendo B = x (M, r)).
En la sección anterior, solo hemos considerado la posibilidad de que el agrupador emita un solo paquete. Sin embargo, puede que estemos interesados en la posibilidad de que el agrupador haga más de un paquete con las operaciones disponibles en el mempool. Dado el mempool M, dejemos que P(M) represente el conjunto de particiones del mempool, asignando cada operación a un solo paquete (podemos asumir que para cada partición, hay un conjunto indexado como 0 que contiene todas las operaciones no asignadas a un paquete para su inclusión). La regla de asignación luego devuelve el índice del conjunto en la partición al que se asigna la operación.
Podemos escribir el conjunto de paquetes emitidos por la partición x(M,β) como B(x(M,r)). Intuitivamente, estos paquetes se componen de las operaciones que no pertenecen al conjunto indexado 0. Dado un conjunto de paquetes B, la regla de pago es entonces:
La función de utilidad del usuario se convierte en:
y la función de utilidad del agrupador se convierte en:
La inclusión de transacciones en bloques debe remunerar alguna cantidad μ a los productores de bloques, que se supone que es lineal en el tamaño de la transacción en por ejemplo, [Roughgarden, 2021] 3. Esta cantidad denota el costo de oportunidad para el productor de bloque de agregar una transacción adicional a su bloque, por ejemplo, aumentando su retraso de chismes y, por lo tanto, aumentando sus posibilidades de que el bloque sea reorganizado. En la prueba de participación, aunque el cronograma del protocolo permite suficiente tiempo para propaGate un bloque completo, juegos de tiempohan inducido dinámicas de propagación de “último segundo” que una vez más han hecho relevante este parámetro μ.
En cualquier caso, podemos observar que el problema de compartir costos a nivel de bloque y a nivel de paquete son muy diferentes. A nivel de bloque, una transacción no necesita saber qué más está sucediendo dentro del bloque para idear su oferta de inclusión según EIP-1559 (puede querer saber qué está sucediendo con respecto a MEV [Bahrani et al., 2024] 9, pero por ahora lo consideraremos como un problema separado). A nivel de paquete, los costos generales del paquete ya no son lineales en el número de transacciones, sino que un costo fijo puede ser amortizado por muchas transacciones. Además, si el costo de agregación de las operaciones del usuario no es lineal en el número de transacciones (por ejemplo, algunas pruebas son efectivamente sub-lineales en el tamaño que se está probando), ofreciendo la posibilidad de amortizar el costo total en muchos usuarios.
Esto lleva al siguiente juego: El integrador desea que los usuarios coloquen sus ofertas como si estuvieran pujando por el peor caso, donde el usuario está solo en el paquete y debe compensar por sí mismos el gas completo F de sobrecarga. En la práctica, el usuario se enfrentaría al problema de establecer tres parámetros relevantes en su operación:
preVerificationGas es entonces el vector principal a través del cual los usuarios median su oferta e intentan contabilizar la amortización de los costes por parte del empaquetador. Supongamos que n usuarios llegan al mercado con sus operaciones, y todos son convencidos por el empaquetador para ofertar en el peor de los casos de estar solos en el paquete. También supondremos que los usuarios están estableciendo su maxPriorityFeePerGas en cero por el bien de este ejemplo. Entonces, todos estos n usuarios configuran preVerificationGas = F, y el empaquetador puede generar un paquete que los remunera con:
mientras deben incurrir en un costo:
una vez que publican el paquete que agrupa todas las n operaciones juntas en un bloque. Esto le proporciona al agrupador una ganancia π = (n−1)×F×r.
Esta situación puede ser representada por un juego de dos etapas, donde los usuarios primero realizan sus operaciones de usuario, y el agrupador posteriormente decide agruparlas. Asumimos que los usuarios no poseen información sobre la cantidad actual de usuarios pendientes, y por lo tanto no pueden estimar la verdadera capacidad del agrupador para amortizar sus costos fijos.
En la primera etapa, los usuarios envían sus operaciones, que se comprometen con sus atributos como preVerificationGas. En la segunda etapa, el agrupador, después de recibir todas las transacciones de usuarios, decide generar un paquete o conjunto de paquetes. Curiosamente, incluso si los usuarios saben cuántos otros usuarios jugarán en la primera etapa, es decir, incluso si n es un conocimiento común entre todos los usuarios, el agrupador puede obligar a los usuarios a establecer el peor caso de preVerificationGas = F amenazando con jugar.
, es decir, amenazando con mantener a cada usuario en su propio paquete separado y cobrándoles la cantidad máxima de gas F.
Tenga en cuenta que esta amenaza puede que no sea creíble, ya que los usuarios esperarían que el agrupador prefiera jugar
, es decir, producir un solo paquete con todas las operaciones incluidas allí, logrando π. Sin embargo, los usuarios pueden no tener acceso al valor real de n y, por lo tanto, no pueden establecer su preVerificationGas de manera que obligue al agrupador a agrupar idealmente todos ellos.
Una extensión de este modelo puede considerar el caso bayesiano, donde los usuarios tienen acceso a una distribución sobre n, es decir, pueden anticipar que algunos valores aleatorios n usuarios aparezcan en cualquier paso de tiempo, de acuerdo con alguna distribución (por ejemplo, llegadas de Poisson), incluso si no conocen de antemano el resultado de la variable aleatoria. Esto puede llevar a resultados ineficientes, como muestra el siguiente ejemplo:
Alice espera que aparezcan otros 9 usuarios además de ella, por lo que establece su preVerificationGas en 1, ya que sabe que F = 10. El valor de Alice y el valor de todos los demás usuarios es compatible con la configuración de preVerificationGas = 3, pero intenta pagar la menor cantidad posible por su inclusión. Resulta que solo aparecen 5 usuarios en el mercado, que también han configurado su preVerificationGas en 1. El empaquetador no será compensado por F = 10 unidades de gas, por lo que el empaquetador no genera un paquete y los usuarios reciben 0 utilidad. Obviamente, esto no es óptimo, ya que los usuarios podrían haber configurado preVerificationGas = 2, por ejemplo, y recibir 1 utilidad (el preVerificationGas máximo que estaban dispuestos a establecer menos el preVerificationGas real que pagaron para ser incluidos).
Como muestra el juego del agrupador, el usuario que desea ser incluido por el agrupador se enfrenta a un problema de asignación. En la próxima nota, abordaremos diferentes enfoques para recuperar una “buena experiencia de usuario” para evitar que paguen en exceso a un agrupador que está mejor informado sobre la demanda de su capacidad de agrupación. La próxima exploración requerirá una comprensión de la estructura del mercado que une a los usuarios, los agrupadores y los constructores/productores de bloques.
Bagikan
Los mecanismos de comisión de transacción se han convertido en los modelos fundamentales para entender la intermediación de los productores de bloques entre los usuarios que desean realizar transacciones y “la cadena” (o “el protocolo”) en el que los usuarios realizan transacciones. Dada la capacidad de utilizar parte del suministro proporcionado por la cadena, los productores de bloques deben arbitrar qué usuarios tendrán la capacidad de utilizar el recurso escaso de ejecución en cadena, y a qué costo. En Ethereum, para la cuestión del costo, los productores de bloques están limitados por el mecanismo de comisión EIP-1559, que establece dinámicamente un precio de reserva de bloque a bloque, llamado “tarifa base”. La tarifa base es un precio, expresado por unidades de gas, que una transacción de usuario debe pagar para ser incluida y ejecutada. El usuario puede proporcionar los llamados “honorarios prioritarios” más allá de la tarifa base, para incentivar aún más a los productores de bloques en momentos de congestión.
En esta nota, investiGateamos la cuestión de los mercados de comisiones integrados, es decir, los mercados de comisiones que "viven" dentro de otros mercados de comisiones. Esta cuestión fue discutida en un contexto diferente en un artículo reciente de Maryam Bahrani, Pranav Garimidi y Tim Roughgarden, "Diseño del mecanismo de tarifas de transacción en un mundo post-MEV 9En este documento, los autores modelan el uso de buscadores, intermediando aún más el acceso a la cadena entre los usuarios y los productores de bloques. Los productores de bloques reciben "pistas" de los buscadores, encarnadas por paquetes atómicos de transacciones que deben ser incluidos por la cadena. El mercado de tarifas de los buscadores está impulsado por el objetivo de maximización de una cantidad conocida como MEV, o valor extraíble máximo.
En nuestra configuración, los usuarios desean acceder a la cadena pero no expresan su demanda utilizando transacciones legibles por el protocolo. En lugar de eso, los usuarios producen “operaciones”, que deben ser agrupadas por entidades conocidas como “agrupadores”, quienes luego originan una transacción legible por el protocolo que empaqueta las operaciones juntas hacia la ejecución. De esta manera, para el mecanismo de tarifas EIP-1559, los agrupadores son los usuarios de la cadena, pero los usuarios reales deben obtener primero la inclusión en el grupo de un agrupador antes de poder obtener la inclusión en la cadena. En otras palabras, podemos ver esta configuración como parte de la pregunta más amplia deco-creación de bloques, que surge con (parciales) constructores/buscadores y listas de inclusión.
Nuestra esperanza es que estas dinámicas sean lo más transparentes posible, de manera que no haya una sobrecarga cognitiva adicional o oportunidades para que el usuario sea explotado indebidamente por el agrupador, en comparación con ir directamente a la cadena. Esperamos obtener resultados aún más sólidos, casos en los que los usuarios realmente se beneficien de la intermediación del agrupador, cuando los costos amortizados permitan a los usuarios disfrutar de un mayor bienestar.
Para investiGate la distinción entre los mercados de tarifas directas y sus (sub-)mecanismos integrados, debemos precisar las restricciones económicas a las que se somete un agrupador. En la siguiente sección, ofrecemos un modelo simple de la función de costos del agrupador motivado por la práctica, en particular los agrupadores que participan en el protocolo ERC-4337, que recapitulamos brevemente.
Un usuario que desea realizar alguna actividad en la cadena a través de empaquetadores emite una operación de usuario (UserOp u operación). Este UserOp se emite desde la billetera del usuario, por ejemplo, después de interactuar con una DApp. Una vez que se difunde el UserOp, es posible que algún agrupador que reciba la operación decida incluirlo en un paquete. Un paquete es una metatransacción de "cuenta de propiedad externa" (EOA), que escribe los datos de las UserOps incluidas en su campo bundle.calldata. El empaquetador emite el paquete para su inclusión en un bloque por parte de un productor de bloques (discutiremos la relación entre el empaquetador y el productor de bloques en una nota futura).
Una vez que el paquete se incluye en el bloque, y el bloque se mueve hacia la cadena, el paquete se ejecuta junto con otras transacciones en el bloque. Básicamente, los pasos de ejecución del paquete son los siguientes:
Como se desprende de la descomposición anterior, el paso de preverificación se ejecuta una vez, ofreciendo la posibilidad de amortizar los costos de preverificación en todos los usuarios incluidos. Cuando se ejecuta el paquete, todos los costos (por ejemplo, block.basefee + tarifas prioritarias pagadas por el agrupador al productor de bloques, incluyéndolos) se cobran al agrupador, quien debe asegurarse de que las operaciones de los usuarios le compensen lo suficiente por los costos incurridos. Precisamos estas afirmaciones en la siguiente sección.
Intentamos ser consistentes con los modelos clásicos de mercados de tarifas. Un usuario t que desea emitir una operación tiene algún valor vt para la ejecución de la operación. Suponemos que todas las operaciones tienen el mismo tamaño S (es decir, el mismo gas utilizado para las etapas de verificación y ejecución) y, por lo tanto, expresamos todas las cantidades como precios por unidad de gas.
Los usuarios expresan su deseo de ser incluidos emitiendo una oferta bt junto con su operación. Por ahora, no asumimos una gramática específica para que el usuario exprese su oferta de inclusión, por ejemplo, la capacidad de expresar una tarifa máxima y una tarifa de prioridad junto con su operación, como lo harían con EIP-1559. Las operaciones de los usuarios se recopilan en un mempool M, que representa el estado pendiente de estas operaciones hasta su inclusión.
El mercado de tarifas EIP-1559 expone un precio de reserva r conocido como "tarifa base", que los agrupadores deben asumir cuando se ejecuta su paquete. Si el paquete contiene n operaciones, el agrupador debe gastar al menos n × S × r. Además, dado que el paquete consume "gas de preverificación", digamos, una cantidad F, el agrupador también pagará F × r
. Las operaciones incluidas en el paquete son proporcionadas por el conjunto B.
Ahora consideramos los costos incurridos por los agrupadores para la inclusión de sus paquetes en el bloque.
Función de coste en cadena: Un agrupador emitiendo el paquete B cuando la tarifa base es r gasta un costo:
El problema del agrupador refleja el problema del productor de bloques expresado en[Roughgarden 2021] 3. Allí, el productor de bloques tuvo que asegurar la provisión de algún valor μ que la compensara por el costo de incluir una transacción adicional en su bloque (por ejemplo, μ puede compensar la carga adicional del bloque, que retrasa su propagación y aumenta así el riesgo de reorganización). El mercado de tarifas a nivel de bloque debe asegurar entonces que el productor de bloques sea compensado al menos por el costo total n × S × μ, si el productor de bloques incluye n transacciones en su bloque. El mercado de tarifas a nivel de agrupador requerirá compensar al menos al agrupador por costos exógenos
Con-chain(B,r) que incurren en el mercado de tarifas más grande en el que están integrados.
ERC-4337 ofrece la posibilidad de amortizar los costos más allá de compartir los costos de gas de verificación previa. En caso de que todas las operaciones empleen el mismo esquema de firma para su fase de verificación, las firmas de estas operaciones podrán ser agregado 2por el agrupador, de modo que en lugar de verificar n firmas en la cadena, se puede verificar una única firma. En este caso, la función de costo del agrupador deberá tener en cuenta los costos fuera de la cadena que el agrupador incurre al realizar la agregación. A continuación, asumimos que dichos costos son lineales en el número de operaciones, una suposición similar a [Wang et al., 2024] 2, a un costo marginal ω.
También tenemos en cuenta el consumo reducido de gas de cada operación, debido a los ahorros por la agregación. Cuando se agregan, las operaciones no necesitan publicar su firma, pero sí requieren una operación adicional de emparejamiento. En cadenas donde el costo de calldata es caro, pero las operaciones de emparejamiento/cómputo son baratas, la agregación proporciona ahorros por operación. En este caso, denotamos por S' < S el tamaño reducido de una transacción. También necesitamos tener en cuenta el aumento del uso de gas de preverificación F' > F, que ahora contiene la publicación y verificación de la única firma agregada en cadena.
Función de costo agregada: Un agrupador que emite el paquete B con firmas agregadas cuando la tarifa base es r incurre en un costo:
En esta nota, no profundizaremos más, pero uno también puede considerar los costos de publicación de datos que un agrupador puede necesitar gastar cuando su paquete se resuelva en un rollup. Sugerimos dos formas de modelar esto y dejamos esta pregunta para trabajos futuros:
Ahora podemos expresar formalmente los conceptos relevantes para el mercado de tarifas a nivel de paquete, derivándolos directamente de la literatura anterior, teniendo en cuenta la incrustación.
Regla de asignación a nivel de paquete: Una asignación (a nivel de paquete) x decide el conjunto de operaciones de usuario que el agrupador incluye en su paquete, dada la mempool actual M y la tarifa base r.
Regla de pago a nivel de paquete: Dado el conjunto de operaciones seleccionadas B, una regla de pago asigna a cada usuario incluido una tarifa:
Función de utilidad del usuario:
En principio, podríamos permitir la existencia de una regla de quemado qt(B) que exprese el hecho de que el agrupador no pueda recibir la totalidad de todos los pagos de usuarios incluidos. Sin embargo, no lo consideramos en esta nota.
(Miopic) función de utilidad de agrupación:
Un TFM de nivel de paquete (x, p) es compatible con incentivos para los agrupadores miope (MBIC) si, para cada Mempool M y tarifa base r, un agrupador miope maximiza su utilidad siguiendo la sugerencia de la regla de asignación x (es decir, estableciendo B = x (M, r)).
En la sección anterior, solo hemos considerado la posibilidad de que el agrupador emita un solo paquete. Sin embargo, puede que estemos interesados en la posibilidad de que el agrupador haga más de un paquete con las operaciones disponibles en el mempool. Dado el mempool M, dejemos que P(M) represente el conjunto de particiones del mempool, asignando cada operación a un solo paquete (podemos asumir que para cada partición, hay un conjunto indexado como 0 que contiene todas las operaciones no asignadas a un paquete para su inclusión). La regla de asignación luego devuelve el índice del conjunto en la partición al que se asigna la operación.
Podemos escribir el conjunto de paquetes emitidos por la partición x(M,β) como B(x(M,r)). Intuitivamente, estos paquetes se componen de las operaciones que no pertenecen al conjunto indexado 0. Dado un conjunto de paquetes B, la regla de pago es entonces:
La función de utilidad del usuario se convierte en:
y la función de utilidad del agrupador se convierte en:
La inclusión de transacciones en bloques debe remunerar alguna cantidad μ a los productores de bloques, que se supone que es lineal en el tamaño de la transacción en por ejemplo, [Roughgarden, 2021] 3. Esta cantidad denota el costo de oportunidad para el productor de bloque de agregar una transacción adicional a su bloque, por ejemplo, aumentando su retraso de chismes y, por lo tanto, aumentando sus posibilidades de que el bloque sea reorganizado. En la prueba de participación, aunque el cronograma del protocolo permite suficiente tiempo para propaGate un bloque completo, juegos de tiempohan inducido dinámicas de propagación de “último segundo” que una vez más han hecho relevante este parámetro μ.
En cualquier caso, podemos observar que el problema de compartir costos a nivel de bloque y a nivel de paquete son muy diferentes. A nivel de bloque, una transacción no necesita saber qué más está sucediendo dentro del bloque para idear su oferta de inclusión según EIP-1559 (puede querer saber qué está sucediendo con respecto a MEV [Bahrani et al., 2024] 9, pero por ahora lo consideraremos como un problema separado). A nivel de paquete, los costos generales del paquete ya no son lineales en el número de transacciones, sino que un costo fijo puede ser amortizado por muchas transacciones. Además, si el costo de agregación de las operaciones del usuario no es lineal en el número de transacciones (por ejemplo, algunas pruebas son efectivamente sub-lineales en el tamaño que se está probando), ofreciendo la posibilidad de amortizar el costo total en muchos usuarios.
Esto lleva al siguiente juego: El integrador desea que los usuarios coloquen sus ofertas como si estuvieran pujando por el peor caso, donde el usuario está solo en el paquete y debe compensar por sí mismos el gas completo F de sobrecarga. En la práctica, el usuario se enfrentaría al problema de establecer tres parámetros relevantes en su operación:
preVerificationGas es entonces el vector principal a través del cual los usuarios median su oferta e intentan contabilizar la amortización de los costes por parte del empaquetador. Supongamos que n usuarios llegan al mercado con sus operaciones, y todos son convencidos por el empaquetador para ofertar en el peor de los casos de estar solos en el paquete. También supondremos que los usuarios están estableciendo su maxPriorityFeePerGas en cero por el bien de este ejemplo. Entonces, todos estos n usuarios configuran preVerificationGas = F, y el empaquetador puede generar un paquete que los remunera con:
mientras deben incurrir en un costo:
una vez que publican el paquete que agrupa todas las n operaciones juntas en un bloque. Esto le proporciona al agrupador una ganancia π = (n−1)×F×r.
Esta situación puede ser representada por un juego de dos etapas, donde los usuarios primero realizan sus operaciones de usuario, y el agrupador posteriormente decide agruparlas. Asumimos que los usuarios no poseen información sobre la cantidad actual de usuarios pendientes, y por lo tanto no pueden estimar la verdadera capacidad del agrupador para amortizar sus costos fijos.
En la primera etapa, los usuarios envían sus operaciones, que se comprometen con sus atributos como preVerificationGas. En la segunda etapa, el agrupador, después de recibir todas las transacciones de usuarios, decide generar un paquete o conjunto de paquetes. Curiosamente, incluso si los usuarios saben cuántos otros usuarios jugarán en la primera etapa, es decir, incluso si n es un conocimiento común entre todos los usuarios, el agrupador puede obligar a los usuarios a establecer el peor caso de preVerificationGas = F amenazando con jugar.
, es decir, amenazando con mantener a cada usuario en su propio paquete separado y cobrándoles la cantidad máxima de gas F.
Tenga en cuenta que esta amenaza puede que no sea creíble, ya que los usuarios esperarían que el agrupador prefiera jugar
, es decir, producir un solo paquete con todas las operaciones incluidas allí, logrando π. Sin embargo, los usuarios pueden no tener acceso al valor real de n y, por lo tanto, no pueden establecer su preVerificationGas de manera que obligue al agrupador a agrupar idealmente todos ellos.
Una extensión de este modelo puede considerar el caso bayesiano, donde los usuarios tienen acceso a una distribución sobre n, es decir, pueden anticipar que algunos valores aleatorios n usuarios aparezcan en cualquier paso de tiempo, de acuerdo con alguna distribución (por ejemplo, llegadas de Poisson), incluso si no conocen de antemano el resultado de la variable aleatoria. Esto puede llevar a resultados ineficientes, como muestra el siguiente ejemplo:
Alice espera que aparezcan otros 9 usuarios además de ella, por lo que establece su preVerificationGas en 1, ya que sabe que F = 10. El valor de Alice y el valor de todos los demás usuarios es compatible con la configuración de preVerificationGas = 3, pero intenta pagar la menor cantidad posible por su inclusión. Resulta que solo aparecen 5 usuarios en el mercado, que también han configurado su preVerificationGas en 1. El empaquetador no será compensado por F = 10 unidades de gas, por lo que el empaquetador no genera un paquete y los usuarios reciben 0 utilidad. Obviamente, esto no es óptimo, ya que los usuarios podrían haber configurado preVerificationGas = 2, por ejemplo, y recibir 1 utilidad (el preVerificationGas máximo que estaban dispuestos a establecer menos el preVerificationGas real que pagaron para ser incluidos).
Como muestra el juego del agrupador, el usuario que desea ser incluido por el agrupador se enfrenta a un problema de asignación. En la próxima nota, abordaremos diferentes enfoques para recuperar una “buena experiencia de usuario” para evitar que paguen en exceso a un agrupador que está mejor informado sobre la demanda de su capacidad de agrupación. La próxima exploración requerirá una comprensión de la estructura del mercado que une a los usuarios, los agrupadores y los constructores/productores de bloques.