mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
updated readme
This commit is contained in:
parent
e7ee535d96
commit
379ac709b8
145
README.md
145
README.md
|
@ -1,5 +1,15 @@
|
||||||
# DeFi Smart Account Connectors
|
# 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
|
## Requirements
|
||||||
|
|
||||||
- The contracts should not have `selfdestruct()`.
|
- The contracts should not have `selfdestruct()`.
|
||||||
|
@ -8,138 +18,7 @@
|
||||||
- Import `contracts/common` files ([example](/)).
|
- Import `contracts/common` files ([example](/)).
|
||||||
- Add `getId` & `setId`, two additional parameter for external public facing functions ([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 `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
|
## Support
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
- Use of ETH address as:
|
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).
|
||||||
|
|
||||||
```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
|
|
||||||
```
|
|
1
todo.md
1
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
|
- add the static connectors in "contracts/static" folder
|
||||||
- why ^ in ^0.6.0? Do we need it?
|
- why ^ in ^0.6.0? Do we need it?
|
||||||
- use the `contract/connectors/mock.sol` structure for yet-to-be-deployed connectors
|
- use the `contract/connectors/mock.sol` structure for yet-to-be-deployed connectors
|
Loading…
Reference in New Issue
Block a user