MIP34: Módulo de Transmisión de Pagos Keg

MIP34: Módulo de Transmisión de Pagos Keg

Preámbulo

MIP#: 34
Título: Módulo de Transmisión de Pagos Keg
Autor(es): Sam MacPherson (@hexonaut)
Colaboradores: Ninguno
Etiquetas: technical, module, smart-contracts
Tipo: Técnica
Estado: Aceptada
Fecha de Propuesta: 2021-01-11
Fecha de Ratificación: 2021-25-03
Dependencias: n/a
Reemplaza: n/a
Licencia: AGPL3+

Referencias

Sumario Resumido

Esta propuesta proporciona la implementación de un contrato inteligente de un Sistema de Transmisión de Pagos de Maker.

Sumario Extendido

El Keg es una herramienta para transmitir DAI ERC20 a un grupo preestablecido de direcciones. Estos grupos de direcciones pueden señalarse como destinos de pago proveyendo al keg nombres legibles por humanos. Estos grupos de direcciones son llamados flights. Cualquiera puede realizar un pago al Keg, siempre que especifiquen una destinación flight y tengan los DAI suficientes. También se incluirán dos contratos, Tap y FlapTap, para facilitar los pagos desde el Búfer de Excedentes y desde el Flapper respectivamente.

Sumario de Componentes

MIP34c1: Keg: sumario del contrato Keg.

MIP34c2: Tap: sumario del contrato Tap.

MIP34c3: FlapTap: Sumario del contrato FlapTap.

MIP34c4: Casos de Testeo: Listas de casos de testeo existentes, incluyendo los test de integración.

MIP34c5: Consideraciones de Seguridad: Comentarios sobre la naturaleza limitada de las implicaciones de seguridad al añadir el PSM.

MIP34c6: Licencia: establece la licencia bajo la cual la propuesta y el código se distribuyen.

Motivación

Se requiere un mecanismo para financiar el trabajo de los equipos de dominio con el fin de reducir o eliminar la medida en que el Protocolo Maker depende de la Fundación Maker. Esto se podría lograr mediante votaciones únicas de Gobernanza por una suma global, pero esto introduce un gasto general al proceso de gobernanza. Este módulo apunta a reducir ese gasto haciendo que Gobernanza apruebe previamente los presupuestos a tasa fija. Adicionalmente, los FlapTap proveen un mecanismo para redirigir una fracción fija de las subastas de excedentes (Flapper) hacia otro objetivo. Esto le dará a Gobernanza una forma de controlar las ganancias del protocolo.

Especificación / Detalle de la Propuesta

MIP34c1: Keg

El contrato Keg define a los flights, que son una lista direcciones de destino junto con los montos relativos de cuánto debería obtener cada dirección. La Gobernanza puede crear, actualizar y borrar flights implementando las funciones de seat() y revoke().

Una vez que un flight ha sido registrado cualquiera puede dar el approve para que los DAI sean enviados al Keg a través del método pour(). El descriptor flight bytes32 es un nombre human-friendly para la lista de objetivos, que por ejemplo, podrían ser “operaciones-contratosinteligentes”.

Keg también define un modificador stoppable para permitir a la Gobernanza pausar pagos.

MIP34c2: Tap

Tap permite a la Gobernanza definir los pagos por streaming del Búfer de Excedentes a una tasa fija. El flight es el grupo de destino de las direcciones en el Keg. El rate es la tasa por segundo de DAI que se transmite desde el Buffer de Excedentes. Una vez iniciado, cualquiera puede utilizar la función pump() para retirar fondos del Buffer de Excedentes a través de vat.suck() al flight de destino. Tap también es compatible con el modificador stoppable para permitirle a la Gobernanza pausar pagos.

MIP34c3: FlapTap

FlapTap se sienta entre el vow y el flapper. El parámetro flow controla el porcentaje de fondos que van al keg - el resto va al flapper como siempre. FlapTap se le designa ser lo menos invasivo posible al conservar los supuestos de kick() y cage(). Un cambio de comportamiento inevitable es que vow.bump ya no tiene una relación uno a uno con la cantidad enviada a la subasta, sino que es la cantidad enviada a la subasta + Keg.

MIP34c4: Casos de Testeo

Vea Keg.t.sol

  • test_flap_tap_cage
  • test_pour_flight
  • test_keg_deploy
  • test_seat
  • testFail_seat_bad_shares
  • test_tap_rate_change_with_pump
  • testFail_flap_tap_invalid_flow
  • testFail_tap_rate_change_without_pump
  • test_pour_flight_one_wei
  • test_flap_tap_deploy
  • testFail_seat_zero_address
  • test_tap_pump
  • testFail_seat_zero_length
  • testFail_pour_flight_invalid
  • testFail_seat_unequal_length
  • testFail_pour_flight_not_enough_dai
  • testFail_pour_flight_zero

MIP34c5: Consideraciones sobre Seguridad

Keg no requiere ningún permiso de acceso al sistema de Maker, de tal forma que no tiene ningún riesgo de seguridad. Tap es simple y sólo interactúa con vat.suck() en la manera que está autorizado. La superficie de ataque es mínima y facil de auditar. El riesgo más significativo proviene de FlapTap que requiere una modificación del protocolo central para estar entre vow y flapper. El código en sí es simple, pero la modificación del protocolo central debería ser considerada cuidadosamente.

MIP34c6: Licencia


Esta es una traducción libre del artículo original en inglés, gracias a @Sebix y @Lozadaluis12.

2 Likes

Muchísimas gracias @Sebix !!

1 Like