mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Added CHI connector
This commit is contained in:
parent
eb1dc5d665
commit
a06bb7a5e5
75
contracts/connectors/chi.sol
Normal file
75
contracts/connectors/chi.sol
Normal file
|
@ -0,0 +1,75 @@
|
|||
pragma solidity ^0.6.0;
|
||||
|
||||
// import files from common directory
|
||||
import { TokenInterface , MemoryInterface, EventInterface} from "../common/interfaces.sol";
|
||||
import { Stores } from "../common/stores.sol";
|
||||
import { DSMath } from "../common/math.sol";
|
||||
|
||||
interface CHIInterface {
|
||||
function mint(uint256 value) external;
|
||||
function free(uint256 value) external returns (uint256);
|
||||
function balanceOf(address) external view returns (uint);
|
||||
}
|
||||
|
||||
|
||||
contract ChiHelpers is DSMath, Stores {
|
||||
/**
|
||||
* @dev CHI token Address
|
||||
*/
|
||||
function getCHIAddress() internal pure returns (address) {
|
||||
return 0x0000000000004946c0e9F43F4Dee607b0eF1fA1c;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
contract ChiResolver is ChiHelpers {
|
||||
event LogMint(uint256 tokenAmt, uint256 getId, uint256 setId);
|
||||
event LogBurn(uint256 tokenAmt, uint256 getId, uint256 setId);
|
||||
|
||||
/**
|
||||
* @dev Mint CHI token.
|
||||
* @param amt token amount to mint.
|
||||
* @param getId Get token amount at this ID from `InstaMemory` Contract.
|
||||
* @param setId Set token amount at this ID in `InstaMemory` Contract.
|
||||
*/
|
||||
function mint(uint amt, uint getId, uint setId) public payable {
|
||||
uint _amt = getUint(getId, amt);
|
||||
_amt = _amt == uint(-1) ? 140 : _amt;
|
||||
require(_amt <= 140, "Max minting is 140 chi");
|
||||
|
||||
CHIInterface(getCHIAddress()).mint(_amt);
|
||||
|
||||
setUint(setId, _amt);
|
||||
|
||||
emit LogMint(_amt, getId, setId);
|
||||
bytes32 _eventCode = keccak256("LogMint(uint256,uint256,uint256)");
|
||||
bytes memory _eventParam = abi.encode(_amt, getId, setId);
|
||||
emitEvent(_eventCode, _eventParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev burn CHI token.
|
||||
* @param amt token amount to burn.
|
||||
* @param getId Get token amount at this ID from `InstaMemory` Contract.
|
||||
* @param setId Set token amount at this ID in `InstaMemory` Contract.
|
||||
*/
|
||||
function burn(uint amt, uint getId, uint setId) public payable {
|
||||
uint _amt = getUint(getId, amt);
|
||||
CHIInterface chiToken = CHIInterface(getCHIAddress());
|
||||
_amt = _amt == uint(-1) ? chiToken.balanceOf(address(this)) : _amt;
|
||||
|
||||
chiToken.free(_amt);
|
||||
|
||||
setUint(setId, _amt);
|
||||
|
||||
emit LogBurn(_amt, getId, setId);
|
||||
bytes32 _eventCode = keccak256("LogBurn(uint256,uint256,uint256)");
|
||||
bytes memory _eventParam = abi.encode(_amt, getId, setId);
|
||||
emitEvent(_eventCode, _eventParam);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
contract ConnectCHI is ChiResolver {
|
||||
string public name = "CHI-v1";
|
||||
}
|
Loading…
Reference in New Issue
Block a user