From 379ac709b8f21e5f68364381fb38026706db47dd Mon Sep 17 00:00:00 2001 From: Sowmay Jain Date: Sat, 2 May 2020 22:07:39 +1000 Subject: [PATCH] updated readme --- README.md | 145 +++++------------------------------------------------- todo.md | 1 + 2 files changed, 13 insertions(+), 133 deletions(-) diff --git a/README.md b/README.md index 0526b09..b371440 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # DeFi Smart Account Connectors +Connectors are standardized modules that let Smart Account interact with various smart contracts, and make the important actions accessible to smart accounts. + +## Add Custom Connectors + +1. Fork and clone it +2. Create a feature branch: `git checkout -b new-connector` +3. Commit changes: `git commit -am 'Added a connector'` +4. Push to the remote branch: `git push origin new-connector` +5. Create a new [Pull Request](https://github.com/InstaDApp/dsa-connectors/pull/new/master) + ## Requirements - The contracts should not have `selfdestruct()`. @@ -8,138 +18,7 @@ - Import `contracts/common` files ([example](/)). - Add `getId` & `setId`, two additional parameter for external public facing functions ([example](/)). - Use `getUint()` or `setUint()` functions to fetch or store values ([example](/)). -- Use address returned by `getEthAddr()` to denote Ethereum in all Ethereum related operations ([example](/)). -```javascript -contract Sample { - /** - * @dev Depositing ETH - */ - function deposit(address token, uint amt, uint getId, uint setId) external payable{ - uint _amt = getUint(getId, amt); - _amt = _amt == uint(-1) ? address(this).balance : _amt; - // code code - // event stuff - } -} -``` +## Support -- Use of ETH address as: - -```javascript -/** - * @dev Return ethereum address - */ -function getAddressETH() internal pure returns (address) { - return 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // ETH Address -} -``` - -- Use of getId & setId. - -```javascript -interface MemoryInterface { - function getUint(uint _id) external returns (uint _num); - function setUint(uint _id, uint _val) external; -} - -contract Sample { - /** - * @dev Return Memory Variable Address - */ - function getMemoryAddr() internal pure returns (address) { - return 0x8a5419CfC711B2343c17a6ABf4B2bAFaBb06957F; // InstaMemory 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) internal { - if (setId != 0) MemoryInterface(getMemoryAddr()).setUint(setId, val); - } - - /** - * @dev Sample function - */ - function deposit(address token, uint amt, uint getId, uint setId) external payable{ - uint _amt = getUint(getId, amt); // If getId = 0 then _amt = amt. - // Core code - setUint(setId, _amt); // If setId = 0 then nothing happens. - // Event emitting - } -} -``` - -- Use of event emitter. -```javascript -interface EventInterface { - function emitEvent(uint _connectorType, uint _connectorID, bytes32 _eventCode, bytes calldata _eventData) external; -} - -contract Sample { - /** - * @dev Connector Details. DSA team will set the ID at the time of deployment. - */ - function connectorID() public pure returns(uint _type, uint _id) { - (_type, _id) = (1, 0); - } - /** - * @dev Return InstaEvent Address. - */ - function getEventAddr() internal pure returns (address) { - return 0x2af7ea6Cb911035f3eb1ED895Cb6692C39ecbA97; // InstaEvent Address - } - - // Smaple Event - event LogDeposit(address indexed token, address cToken, uint256 tokenAmt, uint256 getId, uint256 setId); - - /** - * @dev Sample function - */ - function deposit(address token, uint amt, uint getId, uint setId) external payable{ - // Function Code - emit LogDeposit(token, cToken, _amt, getId, setId); - bytes32 _eventCode = keccak256("LogDeposit(address,address,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(token, cToken, _amt, getId, setId); - (uint _type, uint _id) = connectorID(); - EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam); - } -} -``` - -## Installation - -1. Install Truffle and Ganache CLI globally. - -```javascript -npm install -g truffle@beta -npm install -g ganache-cli -npm instal -``` - -2. Create a `.env` file in the root directory and use the below format for .`env` file. - -```javascript -infura_key = [Infura key] //For deploying -mnemonic_key = [Mnemonic Key] // Also called as seed key -etherscan_key = [Etherscan API dev Key] -``` - -## Commands: - -``` -Compile contracts: truffle compile -Migrate contracts: truffle migrate -Test contracts: truffle test -Run eslint: npm run lint -Run solium: npm run solium -Run solidity-coverage: npm run coverage -Run lint, solium, and truffle test: npm run test -``` \ No newline at end of file +If you can't find something you're looking for or have any questions, ask them at our developers community on [Telegram](https://t.me/instadevelopers), [Discord](https://discord.gg/83vvrnY) or simply send an [Email](mailto:info@instadapp.io). \ No newline at end of file diff --git a/todo.md b/todo.md index 9870de6..1db0e89 100644 --- a/todo.md +++ b/todo.md @@ -1,3 +1,4 @@ +- check if mock.sol is written right. Also, is importing perfect? - add the static connectors in "contracts/static" folder - why ^ in ^0.6.0? Do we need it? - use the `contract/connectors/mock.sol` structure for yet-to-be-deployed connectors \ No newline at end of file