DelegateCall:
Tenemos la posibildad de llamar a contratos externos desde nuestro contrato, hacer llamadas externas por medio de la funcion call, call va a permitir realizar un parametro que a traves de la firma que tiene, va a poder localizar una funcion que esta localizada en otro contrato y ejecutarla asi como si estuviera en nuestro contrato, esto se llama llamada externa, tambien podemos enviar saldo, mintear el gas, etc.
¿Que pasa cuando hacemos este tipo de llamdas? Todo el codigo que esta alojado en el codigo externo, se aloja en un contexto separado del nuestro, es decir, va a tener sus propias variables, su propia ejecucion que no va a estar ligada al nuestro, es lo esperable si hacemos una llamada externa, queremos que se ejecute en su propio contexto y que despues nos devuelva el resultado deseado.
Existe una llamada similar a call, en sentido de estructura, por ejemplo delegatecall no permite enviar transacciones, pero si permite llamar a funciones que esta en otro contrato, y la diferencia esta llamada que hacemos al otro contrato por medio de delegatecall trabajan en el contexto del contrato original, es decir si modificamos una variable o si llamamos a una funcion, vamos a estar haciendolo sobre el contrato original, asi que tenemos que muchisimo cuidado al usar delegatecall.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?