diff --git a/contracts/ProviderModuleDSA.sol b/contracts/ProviderModuleDSA.sol index 9081d6c..d28630b 100644 --- a/contracts/ProviderModuleDSA.sol +++ b/contracts/ProviderModuleDSA.sol @@ -59,22 +59,24 @@ contract ProviderModuleDSA is GelatoProviderModuleStandard { if (!AccountInterface(_userProxy).isAuth(gelatoCore)) return "ProviderModuleDSA.isProvided:GelatoCoreNotAuth"; - // Is connector valid - ConnectorsInterface connectors = ConnectorsInterface(index.connectors( - AccountInterface(_userProxy).version() - )); + // @dev commented out for gas savings - address[] memory targets = new address[](_task.actions.length); - for (uint i = 0; i < _task.actions.length; i++) - targets[i] = _task.actions[i].addr; + // // Is connector valid + // ConnectorsInterface connectors = ConnectorsInterface(index.connectors( + // AccountInterface(_userProxy).version() + // )); - bool isShield = AccountInterface(_userProxy).shield(); - if (isShield) - if (!connectors.isStaticConnector(targets)) - return "ProviderModuleDSA.isProvided:not-static-connector"; - else - if (!connectors.isConnector(targets)) - return "ProviderModuleDSA.isProvided:not-connector"; + // address[] memory targets = new address[](_task.actions.length); + // for (uint i = 0; i < _task.actions.length; i++) + // targets[i] = _task.actions[i].addr; + + // bool isShield = AccountInterface(_userProxy).shield(); + // if (isShield) + // if (!connectors.isStaticConnector(targets)) + // return "ProviderModuleDSA.isProvided:not-static-connector"; + // else + // if (!connectors.isConnector(targets)) + // return "ProviderModuleDSA.isProvided:not-connector"; return OK; } @@ -98,7 +100,7 @@ contract ProviderModuleDSA is GelatoProviderModuleStandard { AccountInterface.cast.selector, targets, datas, - tx.origin + gelatoCore ); } } \ No newline at end of file diff --git a/contracts/instadapp/stores.sol b/contracts/instadapp/stores.sol new file mode 100644 index 0000000..f2e3f62 --- /dev/null +++ b/contracts/instadapp/stores.sol @@ -0,0 +1,66 @@ +// "SPDX-License-Identifier: MIT" +pragma solidity ^0.6.0; + +interface MemoryInterface { + function getUint(uint id) external returns (uint num); + function setUint(uint id, uint val) external; +} + +interface EventInterface { + function emitEvent(uint connectorType, uint connectorID, bytes32 eventCode, bytes calldata eventData) external; +} + + +contract Stores { + + /** + * @dev Return ethereum address + */ + function getEthAddr() internal pure returns (address) { + return 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // ETH Address + } + + /** + * @dev Return memory variable address + */ + function getMemoryAddr() internal pure returns (address) { + return 0x8a5419CfC711B2343c17a6ABf4B2bAFaBb06957F; // InstaMemory Address + } + + /** + * @dev Return InstaEvent Address. + */ + function getEventAddr() internal pure returns (address) { + return 0x2af7ea6Cb911035f3eb1ED895Cb6692C39ecbA97; // InstaEvent Address + } + + /** + * @dev Get Uint value from InstaMemory Contract. + */ + function getUint(uint getId, uint val) internal returns (uint returnVal) { + returnVal = getId == 0 ? val : MemoryInterface(getMemoryAddr()).getUint(getId); + } + + /** + * @dev Set Uint value in InstaMemory Contract. + */ + function setUint(uint setId, uint val) virtual internal { + if (setId != 0) MemoryInterface(getMemoryAddr()).setUint(setId, val); + } + + /** + * @dev emit event on event contract + */ + function emitEvent(bytes32 eventCode, bytes memory eventData) virtual internal { + (uint model, uint id) = connectorID(); + EventInterface(getEventAddr()).emitEvent(model, id, eventCode, eventData); + } + + /** + * @dev Connector Details - needs to be changed before deployment + */ + function connectorID() public view virtual returns(uint model, uint id) { + (model, id) = (0, 0); + } + +}