diff --git a/README.md b/README.md index 46fd9b5..2fdb671 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,10 @@ ## Requirements -- The contracts should not have delegate call in it. - -- - The contracts should not have `SelfDestruct()` function. - +- The contracts should not have `selfdestruct()`. +- The contracts should not have `delegatecall()`. - Use `uint(-1)` for maximum amount everywhere. +- Import `contracts/common` files. ```javascript contract Sample { diff --git a/contracts/common/math.sol b/contracts/common/math.sol new file mode 100644 index 0000000..79b1ff9 --- /dev/null +++ b/contracts/common/math.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.6.0; + +contract DSMath { + + function add(uint x, uint y) internal pure returns (uint z) { + require((z = x + y) >= x, "math-not-safe"); + } + + function mul(uint x, uint y) internal pure returns (uint z) { + require(y == 0 || (z = x * y) / y == x, "math-not-safe"); + } + + uint constant WAD = 10 ** 18; + + function wmul(uint x, uint y) internal pure returns (uint z) { + z = add(mul(x, y), WAD / 2) / WAD; + } + + function wdiv(uint x, uint y) internal pure returns (uint z) { + z = add(mul(x, WAD), y / 2) / y; + } + +} \ No newline at end of file diff --git a/contracts/common.sol b/contracts/common/stores.sol similarity index 52% rename from contracts/common.sol rename to contracts/common/stores.sol index 17f2ba9..cbf0e8d 100644 --- a/contracts/common.sol +++ b/contracts/common/stores.sol @@ -5,57 +5,48 @@ interface MemoryInterface { function setUint(uint _id, uint _val) external; } -interface EventInterface { - function emitEvent(uint _connectorType, uint _connectorID, bytes32 _eventCode, bytes calldata _eventData) external; -} - - -contract Memory { +contract Stores { /** - * @dev ETH Address. + * @dev Return ethereum address */ - function getEthAddr() public pure returns (address) { - return 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + function getAddressETH() internal pure returns (address) { + return 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // ETH Address } /** - * @dev Return InstaMemory Address. + * @dev Return Memory Variable Address */ - function getMemoryAddr() public pure returns (address) { + function getMemoryAddr() internal pure returns (address) { return 0x8a5419CfC711B2343c17a6ABf4B2bAFaBb06957F; // InstaMemory Address } /** * @dev Return InstaEvent Address. */ - function getEventAddr() public pure returns (address) { + function getEventAddr() internal pure returns (address) { return 0x2af7ea6Cb911035f3eb1ED895Cb6692C39ecbA97; // InstaEvent Address } /** - * @dev Get Stored Uint Value From InstaMemory. - * @param getId Storage ID. - * @param val if any value. - */ + * @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 Store Uint Value In InstaMemory. - * @param setId Storage ID. - * @param val Value To store. - */ + * @dev Set Uint value in InstaMemory Contract. + */ function setUint(uint setId, uint val) internal { if (setId != 0) MemoryInterface(getMemoryAddr()).setUint(setId, val); } /** - * @dev Connector ID and Type. - */ + * @dev Connector Details + */ function connectorID() public pure returns(uint _type, uint _id) { - (_type, _id) = (1, 2); + (_type, _id) = (1, 3); } } \ No newline at end of file diff --git a/contracts/auth.sol b/contracts/connectors/auth.sol similarity index 100% rename from contracts/auth.sol rename to contracts/connectors/auth.sol diff --git a/contracts/basic.sol b/contracts/connectors/basic.sol similarity index 100% rename from contracts/basic.sol rename to contracts/connectors/basic.sol diff --git a/contracts/protocols/compound.sol b/contracts/connectors/compound.sol similarity index 100% rename from contracts/protocols/compound.sol rename to contracts/connectors/compound.sol diff --git a/contracts/protocols/instaPool.sol b/contracts/connectors/instapool.sol similarity index 100% rename from contracts/protocols/instaPool.sol rename to contracts/connectors/instapool.sol diff --git a/contracts/protocols/maker.sol b/contracts/connectors/makerdao.sol similarity index 100% rename from contracts/protocols/maker.sol rename to contracts/connectors/makerdao.sol diff --git a/contracts/connectors/mock.sol b/contracts/connectors/mock.sol new file mode 100644 index 0000000..b04211d --- /dev/null +++ b/contracts/connectors/mock.sol @@ -0,0 +1,8 @@ +pragma solidity ^0.6.0; + +import { DSMath } from "../common/math.sol"; +import { Stores } from "../common/stores.sol"; + +contract MockProtocol is Stores, DSMath { + // +} \ No newline at end of file diff --git a/contracts/protocols/oasis.sol b/contracts/connectors/oasis.sol similarity index 100% rename from contracts/protocols/oasis.sol rename to contracts/connectors/oasis.sol diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..dc678c2 --- /dev/null +++ b/todo.md @@ -0,0 +1,2 @@ +- add the static connectors in "contracts/static" folder +- why ^ in ^0.6.0? Do we need it? \ No newline at end of file