July 11, 2022

call, delegatecall, staticcall

Все три функции являются низкоуровневыми и несут потенциальную угрозу безопасности.

call

Аргументы:

  • bytes4, захешированный селектор вызываемой функции и аргументов.

Возвращает:

  • bool, успешно или нет.
  • bytes, результат вызываемой функции.

Так же через фигурные скобки можно указать gas и value. Если газ не указан явно, весь оставшийся газ перенаправляется на контракт, у которого вызывается функция.

delegatecall

То же самое, что и call, но меняет стейт вызываемого контракта. На контракте, у которого заимствуется функция.

staticcall

То же самое, что и call, но гарантирует, что стейт контракта не изменится. Если вызываемая функция меняет стейт, то функция не выполнится.