Connectors are standard proxy logics contract that let DeFi Smart Account (DSA) interact with various smart contracts, and make the important actions accessible like cross protocol interoperability.
DSAs are powerful because they can easily be extended with connectors. Every new connector that is added is immediately usable by any developer building on top of DSAs. Connectors can either be base connectors to protocols, auth connectors, higher level connectors with more specific use cases like optimized lending, or connectors to native liquidity pools.
- Connector should have a public constant string declared `name`, which will be the name of the connector. This will be versioned. Ex: `Compound-v1`
- Contract name should start with `ConnectV2` appended with protocol name. Eg: `ConnectV2Compound`
- User interacting methods (`external` methods) will not be emitting events, rather the methods will be returning 2 variables:
-`_eventName` of `string` type: This will be the event signture defined in the `Events` contract. Ex: `LogDeposit(address,address,uint256,uint256,uint256)`
-`_eventParam` of `bytes` type: This will be the abi encoded event parameters
- The contracts should not have `selfdestruct()`
- The contracts should not have `delegatecall()`
- Use `uint(-1)` of `type(uint256).max` for maximum amount everywhere
- Use `ethAddr` (declared in `Stores`) to denote Ethereum (non-ERC20)
- Use `address(this)` instead of `msg.sender` for fetching balance on-chain, etc
- Only `approve()` (declared in `Basic`) limited amount while giving ERC20 allowance, which strictly needs to be 0 by the end of the spell.
- User interacting functions should have natspec comments(@dev, @notice, @param).
- Use `getUint()` (declared in `Stores`) for getting value that saved from previous spell
- Use `setUint()` (declared in `Stores`) for setting value to save for the future spell
If you can't find something you're looking for or have any questions, ask them at our developers community on [Discord](https://discord.gg/83vvrnY) or simply send an [Email](mailto:info@instadapp.io).