Controlar el uso de gas, es controlar el uso de nuestros contratos:
Una correcta utilizacion del gas hace que los metodos funciones y el uso de nuestro contrato sea aprovechado al maximo, que sea muy eficiente y tambien vamos a reducir costos a nivel financiero, sobre todo evitar posibles usos incorrectos del gas, por ejemplo si nosotros exponemos una llamada externa en nuestros contratos, vamos a evitar que puedan hacer excesivas operaciones con el control correcto del gas, por lo tanto siempre que se pueda en una llamada externa hay que poner un limite de gas, un tope, para que justamente el contrato o el codigo que se vaya a utilizar luego de la llamada externa no aproveche esta utilizacion del gas para hacer algo malintencionado.
Tambien tenemos a mano las librerias, lo bueno de las librerias es que no tenemos que reinventar la rueda, es decir, cuando vamos a escribir un codigo, para resolver determinada operacion, no tenemos que reeplantearnos y volver a escribir todo el desarrollo, sino que podemos aprovechar estos contratos que ya estan escritos, y estan auditados, entonces es una gran medida de seguridad para poder utilizar y sobre todo ganar tiempo a nivel de desarrollo, no olvidemos que muchas de estas librerias que estan publicadas hoy, estan hechas por desarrolladores que son expertos.
Control de accesso:
El control de Acceso va a limitar que un usuario que no tenga permisos pueda ejecutar funciones en nuestros contratos, sobre todo esto va a prevenir que de repente en un token pueda venir un usuario y pueda emitir monedas sin ser administrador/owner por lo tanto, tomar estas medidas y controlar el correcto uso del contrato a nivel de roles y permisos es una gran medida de seguridad para prevenir que estos usuarios accedan y ejecuten acciones que no queremos en nuestros contratos
Bloquear el contrato:
Imaginemos que ocurre algun problema o detectamos alguna falla o comportamiento indebido en el uso del contrato, automaticamente podemos bloquear el contrato, podemos dejar en pausa y podemos tomar alguna medida al respecto: ej, tratar de actualizar una version distinta al contrato para no perder la informacion y tambien arreglar el error o simplemente evitar que una falla o vulnerabilidad siga siendo atacada, entonces podemos poner en pausa nuestro contrato
Tenemo sque tener en cuenta:
Si aplicamos gestion de permisos, de roles, o simplemente bloqueamos el contrato, vamos a estar atentando contra la descentralizacion del mismo, entonces aca tenemos que ser muy cuidadosos en que nuestro proyecto, nuestro contrato no se convierta en algo decentralizado si no deseamos que asi sea, lo mejor para los escenarios descentralizados es justamente que la misma red, o participantes gestionen que todo funcione de forma correcta, pero en algunos casos el control de acceso nos va a servir de gran manera
Transferencias y Hook:
Un tema fundamental a la hora de interactuar con los distintos contratos en la red son las transferencias y las funciones que reciben transferencias de parte de los contratos, por lo tanto son conceptos que tenemos que entender bien en profundidad, muchos de los ataques vienen por el lado de no conocer a fondo por no saber como se realzian estas transacciones o como se realizan a nivel de seguridad, por ej establecer un limite de gas, entonces entendiendo muy bien el flujo de transferencias y de recepcion de ethers en la red, evita que nuestros contratos tengan muchisimos factores de ataques de los que estan siendo explotados y que nosotros podamos prevenir entendiendo bien conceptos
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?