Hoy estaba limpiando una cartera vieja y revocando un montón de aprobaciones de tokens que ni siquiera recordaba que tenía. Una de ellas era para un DEX que usé exactamente una vez, hace más de un año, para un solo intercambio. Aún tenía allí todo este tiempo una aprobación de gasto ilimitada. No es algo raro: en la mayoría de las carteras hay tres o cuatro de estos fantasmas guardados.
Así que, mientras estaba haciendo clic en revoke.cash por una paranoia leve, me puse a pensar en lo binarias que siguen siendo las autorizaciones en la mayor parte de DeFi. O apruebas un contrato o no. Una vez que lo apruebas, no es “aprobado para esta acción en particular”, normalmente está aprobado para prácticamente cualquier cosa, para siempre, hasta que recuerdas ir a deshacerlo. Y la mayoría de la gente no lo hace.
Y ahí fue cuando me encajó —las pérdidas que destruyen a la gente casi nunca provienen de algún exploit genial. Provienen de un permiso demasiado amplio, que se queda ahí, silencioso, durante meses después de que cualquiera recuerde haberlo concedido. El error no es dramático. Es pequeño. Solo… se dejó abierto.

Por curiosidad, volví a ver lo que ha estado construyendo Newton Protocol, porque había visto $NEWT salir en un hilo sobre exactamente este problema. Lo diferente no es que Newton añada más “teatro” de seguridad encima, sino que los permisos no son un simple interruptor de sí/no de una sola vez. Cada transacción se revisa contra una política en el momento en que ocurre —límites de gasto, beneficiarios aprobados, límites de mandato— en lugar de depender de alguna aprobación global que concediste hace seis meses y que luego olvidaste.
Lo que la gente asume: una vez que confías en un contrato, esa confianza debería simplemente… persistir, y revocar es trabajo tuyo para recordar. Lo que realmente sucede con una configuración como esta: la “confianza” no está ahí como una aprobación permanente lista para ser abusada; se reevalúa por transacción. Entonces, incluso si algo sale mal aguas arriba, no hay una puerta gigante abierta; hay un punto de control cada vez.
Pero aquí está la parte que me molesta un poco. Esto solo realmente te protege si cada transacción relevante se enruta a través de esa comprobación de políticas. En cuanto interactúas con algo fuera de ese alcance —un contrato aleatorio, una aprobación antigua que concediste antes de que siquiera tocaras Newton, un dApp totalmente no relacionado— vuelves justo al antiguo modelo binario de permisos. No arregla retroactivamente tu desorden existente. La verdad es que casi se me olvida esa parte: quiero que sea un arreglo general tipo “todo resuelto”, pero no lo es.
Al principio pensé que esto era principalmente una historia sobre una mejor experiencia de usuario para instituciones, administradores de bóvedas, ese tipo de cosas. Pero cuanto más lo pensé, más parece tratarse realmente del tamaño del radio de explosión. Un pequeño error —una aprobación descuidada, un permiso demasiado amplio— antes podía quedarse ahí y costarte todo en esa cartera, silenciosamente, con el tiempo. Reducir el tamaño de lo que puede hacer un solo permiso realmente es básicamente el juego aquí, más que cualquier característica de seguridad llamativa.
Importa sobre todo para las cuentas que la gente no revisa con frecuencia. Carteras de tesorería, bóvedas en modo automático, cualquier cosa a la que se le haya acoplado un agente o un bot que esté tomando decisiones sin que alguien la vigile todos los días. Lo que se queda ahí, en silencio, durante meses, es exactamente lo que se desarma cuando por fin algo sale mal.
De todos modos. Todavía estoy revisando mis aprobaciones antiguas y, en realidad, encontré dos más que ni siquiera recuerdo haber concedido. Resulta un poco inquietante que eso sea tan normal. Probablemente solo seguiré vigilando cómo se comporta el modelo de políticas de Newton cuando empiece a ejecutarse con más de estas carteras antiguas y más desordenadas, en lugar de con las nuevas.
@NewtonProtocol #Newt