The protocol could not handle multiple vaults correctly
The protocol needs to handle multiple vaults correctly. If there are three vaults (e.g.USDC, USDT, DAI) the protocol needs to rebalance them all without any problems\\nThe protocol needs to invoke pushAllocationsToController() every `rebalanceInterval` to push totalDeltaAllocations from Game to xChainController.\\n`pushAllocationsToController()` invoke `rebalanceNeeded()` to check if a rebalance is needed based on the set interval and it uses the state variable `lastTimeStamp` to do the calculations\\n```\\n  function rebalanceNeeded() public view returns (bool) {\\n    return (block.timestamp - lastTimeStamp) > rebalanceInterval || msg.sender == guardian;\\n  }\\n```\\n\\nBut in the first invoking (for USDC vault) of `pushAllocationsToController()` it will update the state variable `lastTimeStamp` to the current `block.timestamp`\\n```\\nlastTimeStamp = block.timestamp;\\n```\\n\\nNow when you invoke (for DAI vault) `pushAllocationsToController()`. It will revert because of\\n```\\nrequire(rebalanceNeeded(), "No rebalance needed");\\n```\\n\\nSo if the protocol has two vaults or more (USDC, USDT, DAI) you can only do one rebalance every `rebalanceInterval`
Keep tracking the `lastTimeStamp` for every `_vaultNumber` by using an array
The protocol could not handle multiple vaults correctly\\nBoth Users and Game players will lose funds because the MainVault will not rebalance the protocols at the right time with the right values
```\\n  function rebalanceNeeded() public view returns (bool) {\\n    return (block.timestamp - lastTimeStamp) > rebalanceInterval || msg.sender == guardian;\\n  }\\n```\\n