# Support for multiple proxy contracts

**URL:** <https://forum.soliditylang.org/t/support-for-multiple-proxy-contracts/395>\
**Category:** Code Wizards\
**Created:** [July 18, 2021, 7:13pm UTC](https://forum.soliditylang.org/t/support-for-multiple-proxy-contracts/395 "2021-07-18T19:13:20Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sagarduwal](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.soliditylang.org/sagarduwal/32/279_2.png) [@sagarduwal](https://forum.soliditylang.org/u/sagarduwal)\
**Post date:** [July 18, 2021, 7:13pm UTC](https://forum.soliditylang.org/t/support-for-multiple-proxy-contracts/395/1 "2021-07-18T19:13:20Z")

</div>

I am working on a large contract and the architecture that we have considered is to have multiple contracts to be called from a parent contract. To do this we are considering to use proxy pattern (upgradable contract for new versions of sub contract).

```auto
contract SubA {
    uint256 vara;
}
contract SubB {
    uint256 varb;
}
contract SubA_V1 is SubA {
    function getVar(){ return vara; }
}
contract SubB_V1 is SubB {
    function calculateVar(){ return varb * 10; }
}
contract ParentContract {
    function getVars(){
        SubA.getvar(); 
       SubB.calculateVar(); 
    }
}

```

Lots of other large ethereum projects (using proxy) seems to use single contract as proxy. is it possible to have multiple proxy contracts to use from single parent contract. And another important question is it preferable for large projects ?

---

<div class="post-metadata">

**Author:** ![maxareo](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.soliditylang.org/maxareo/32/276_2.png) [@maxareo](https://forum.soliditylang.org/u/maxareo)\
**Post date:** [July 19, 2021, 10:25am UTC](https://forum.soliditylang.org/t/support-for-multiple-proxy-contracts/395/2 "2021-07-19T10:25:53Z")

</div>

You may want to take a look at `BeaconProxy` and `UpgradeableBeacon` contracts. They work together allowing multiple proxies forwarding calls to the same single implementation contract via a beacon. This sounds like what you are looking for.

---

<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:** [July 28, 2021, 5:31am UTC](https://forum.soliditylang.org/t/support-for-multiple-proxy-contracts/395/3 "2021-07-28T05:31:29Z")

</div>

Hey @sagarduwal, [EIP-2535 Diamonds](https://eips.ethereum.org/EIPS/eip-2535) seems to be exactly what you are looking for. It is a smart contract standard for building modular smart contract systems that can be extended in production.

A diamond is a proxy contract with multiple facets (or implementation contracts). Check out this introduction: [Introduction to the Diamond Standard, EIP-2535 Diamonds](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard)
