# Why delegateCall is created in the first place?

**URL:** <https://forum.soliditylang.org/t/why-delegatecall-is-created-in-the-first-place/755>\
**Category:** Feedback\
**Created:** [January 13, 2022, 6:12am UTC](https://forum.soliditylang.org/t/why-delegatecall-is-created-in-the-first-place/755 "2022-01-13T06:12:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![vkjvivek7](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.soliditylang.org/vkjvivek7/32/442_2.png) [@vkjvivek7](https://forum.soliditylang.org/u/vkjvivek7)\
**Post date:** [January 13, 2022, 6:12am UTC](https://forum.soliditylang.org/t/why-delegatecall-is-created-in-the-first-place/755/1 "2022-01-13T06:12:47Z")

</div>

Many of times we dont require delegateCall for intercommunication between contracts.  
even in proxy apart from using the delegatecall in fallback function which is also in assembly code.  
It is also advisable to dont use the delegateCall inside a upgradeable contract as it is harmful.

My question is why solidity developers thought delegateCall is usefull feature?

---

<div class="post-metadata">

**Author:** ![mudgen](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.soliditylang.org/mudgen/32/289_2.png) [@mudgen](https://forum.soliditylang.org/u/mudgen)\
**Post date:** [January 13, 2022, 9:58pm UTC](https://forum.soliditylang.org/t/why-delegatecall-is-created-in-the-first-place/755/2 "2022-01-13T21:58:42Z")

</div>

`delegatecall` is only harmful or dangerous when it is used by someone who doesn’t understand how to use it properly.

This article is useful in understanding and using delegatecall safely: [Understanding delegatecall And How to Use It Safely](https://eip2535diamonds.substack.com/p/understanding-delegatecall-and-how)

---

<div class="post-metadata">

**Author:** ![elshigori](https://avatars.discourse-cdn.com/v4/letter/e/dbc845/32.png) [@elshigori](https://forum.soliditylang.org/u/elshigori)\
**Post date:** [March 1, 2022, 2:23pm UTC](https://forum.soliditylang.org/t/why-delegatecall-is-created-in-the-first-place/755/3 "2022-03-01T14:23:29Z")

</div>

Can we even say "Solidity fully supports `delegateCall`"? Since it looks totally sane on opcodes level, and quickly gets quite clumsy when we’re abstracting things to Solidity level. Is there real examples when developer doesn’t need to use `assembly` code block?

+mudgen, thanks for your text! Really liked how you finished with “Systems that Use Delegatecall”. Would also happy to see there some projects in the wild employed Diamonds EIP that you’re proposing.
