mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Delete curve_staking.prod.sol
This commit is contained in:
parent
acfa6d2d36
commit
e3bebae9b6
|
@ -1,310 +0,0 @@
|
||||||
pragma solidity ^0.6.0;
|
|
||||||
|
|
||||||
interface TokenInterface {
|
|
||||||
function approve(address, uint256) external;
|
|
||||||
function transfer(address, uint) external;
|
|
||||||
function transferFrom(address, address, uint) external;
|
|
||||||
function deposit() external payable;
|
|
||||||
function withdraw(uint) external;
|
|
||||||
function balanceOf(address) external view returns (uint);
|
|
||||||
function decimals() external view returns (uint);
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MemoryInterface {
|
|
||||||
function getUint(uint id) external returns (uint num);
|
|
||||||
function setUint(uint id, uint val) external;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface EventInterface {
|
|
||||||
function emitEvent(uint connectorType, uint connectorID, bytes32 eventCode, bytes calldata eventData) external;
|
|
||||||
}
|
|
||||||
|
|
||||||
contract Stores {
|
|
||||||
/**
|
|
||||||
* @dev Return memory variable address
|
|
||||||
*/
|
|
||||||
function getMemoryAddr() internal pure returns (address) {
|
|
||||||
return 0x8a5419CfC711B2343c17a6ABf4B2bAFaBb06957F; // InstaMemory Address
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Return InstaEvent Address.
|
|
||||||
*/
|
|
||||||
function getEventAddr() internal pure returns (address) {
|
|
||||||
return 0x2af7ea6Cb911035f3eb1ED895Cb6692C39ecbA97; // InstaEvent 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) virtual internal {
|
|
||||||
if (setId != 0) MemoryInterface(getMemoryAddr()).setUint(setId, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev emit event on event contract
|
|
||||||
*/
|
|
||||||
function emitEvent(bytes32 eventCode, bytes memory eventData) virtual internal {
|
|
||||||
(uint model, uint id) = connectorID();
|
|
||||||
EventInterface(getEventAddr()).emitEvent(model, id, eventCode, eventData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Connector Details - needs to be changed before deployment
|
|
||||||
*/
|
|
||||||
function connectorID() public view returns(uint model, uint id) {
|
|
||||||
(model, id) = (1, 39);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Wrappers over Solidity's arithmetic operations with added overflow
|
|
||||||
* checks.
|
|
||||||
*
|
|
||||||
* Arithmetic operations in Solidity wrap on overflow. This can easily result
|
|
||||||
* in bugs, because programmers usually assume that an overflow raises an
|
|
||||||
* error, which is the standard behavior in high level programming languages.
|
|
||||||
* `SafeMath` restores this intuition by reverting the transaction when an
|
|
||||||
* operation overflows.
|
|
||||||
*
|
|
||||||
* Using this library instead of the unchecked operations eliminates an entire
|
|
||||||
* class of bugs, so it's recommended to use it always.
|
|
||||||
*/
|
|
||||||
library SafeMath {
|
|
||||||
/**
|
|
||||||
* @dev Returns the addition of two unsigned integers, reverting on
|
|
||||||
* overflow.
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `+` operator.
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - Addition cannot overflow.
|
|
||||||
*/
|
|
||||||
function add(uint256 a, uint256 b) internal pure returns (uint256) {
|
|
||||||
uint256 c = a + b;
|
|
||||||
require(c >= a, "SafeMath: addition overflow");
|
|
||||||
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the subtraction of two unsigned integers, reverting on
|
|
||||||
* overflow (when the result is negative).
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `-` operator.
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - Subtraction cannot overflow.
|
|
||||||
*/
|
|
||||||
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
|
|
||||||
return sub(a, b, "SafeMath: subtraction overflow");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
|
|
||||||
* overflow (when the result is negative).
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `-` operator.
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - Subtraction cannot overflow.
|
|
||||||
*/
|
|
||||||
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
|
|
||||||
require(b <= a, errorMessage);
|
|
||||||
uint256 c = a - b;
|
|
||||||
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the multiplication of two unsigned integers, reverting on
|
|
||||||
* overflow.
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `*` operator.
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - Multiplication cannot overflow.
|
|
||||||
*/
|
|
||||||
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
|
|
||||||
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
|
|
||||||
// benefit is lost if 'b' is also tested.
|
|
||||||
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
|
|
||||||
if (a == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint256 c = a * b;
|
|
||||||
require(c / a == b, "SafeMath: multiplication overflow");
|
|
||||||
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the integer division of two unsigned integers. Reverts on
|
|
||||||
* division by zero. The result is rounded towards zero.
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `/` operator. Note: this function uses a
|
|
||||||
* `revert` opcode (which leaves remaining gas untouched) while Solidity
|
|
||||||
* uses an invalid opcode to revert (consuming all remaining gas).
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - The divisor cannot be zero.
|
|
||||||
*/
|
|
||||||
function div(uint256 a, uint256 b) internal pure returns (uint256) {
|
|
||||||
return div(a, b, "SafeMath: division by zero");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
|
|
||||||
* division by zero. The result is rounded towards zero.
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `/` operator. Note: this function uses a
|
|
||||||
* `revert` opcode (which leaves remaining gas untouched) while Solidity
|
|
||||||
* uses an invalid opcode to revert (consuming all remaining gas).
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - The divisor cannot be zero.
|
|
||||||
*/
|
|
||||||
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
|
|
||||||
require(b > 0, errorMessage);
|
|
||||||
uint256 c = a / b;
|
|
||||||
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
|
|
||||||
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
|
|
||||||
* Reverts when dividing by zero.
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `%` operator. This function uses a `revert`
|
|
||||||
* opcode (which leaves remaining gas untouched) while Solidity uses an
|
|
||||||
* invalid opcode to revert (consuming all remaining gas).
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - The divisor cannot be zero.
|
|
||||||
*/
|
|
||||||
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
|
|
||||||
return mod(a, b, "SafeMath: modulo by zero");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
|
|
||||||
* Reverts with custom message when dividing by zero.
|
|
||||||
*
|
|
||||||
* Counterpart to Solidity's `%` operator. This function uses a `revert`
|
|
||||||
* opcode (which leaves remaining gas untouched) while Solidity uses an
|
|
||||||
* invalid opcode to revert (consuming all remaining gas).
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
*
|
|
||||||
* - The divisor cannot be zero.
|
|
||||||
*/
|
|
||||||
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
|
|
||||||
require(b != 0, errorMessage);
|
|
||||||
return a % b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
contract DSMath {
|
|
||||||
uint constant WAD = 10 ** 18;
|
|
||||||
uint constant RAY = 10 ** 27;
|
|
||||||
|
|
||||||
function add(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.add(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
function sub(uint x, uint y) internal virtual pure returns (uint z) {
|
|
||||||
z = SafeMath.sub(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
function mul(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.mul(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
function div(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.div(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
function wmul(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.add(SafeMath.mul(x, y), WAD / 2) / WAD;
|
|
||||||
}
|
|
||||||
|
|
||||||
function wdiv(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.add(SafeMath.mul(x, WAD), y / 2) / y;
|
|
||||||
}
|
|
||||||
|
|
||||||
function rdiv(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.add(SafeMath.mul(x, RAY), y / 2) / y;
|
|
||||||
}
|
|
||||||
|
|
||||||
function rmul(uint x, uint y) internal pure returns (uint z) {
|
|
||||||
z = SafeMath.add(SafeMath.mul(x, y), RAY / 2) / RAY;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ICurve {
|
|
||||||
function claim(address addr) external;
|
|
||||||
}
|
|
||||||
|
|
||||||
contract CurveVestingHelpers is Stores, DSMath {
|
|
||||||
/**
|
|
||||||
* @dev Return Curve Token Address
|
|
||||||
*/
|
|
||||||
function getCurveTokenAddr() internal pure returns (address) {
|
|
||||||
return 0xD533a949740bb3306d119CC777fa900bA034cd52;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Return Curve Vesting Address
|
|
||||||
*/
|
|
||||||
function getCurveVestingAddr() internal pure returns (address) {
|
|
||||||
return 0x575CCD8e2D300e2377B43478339E364000318E2c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
contract CurveVestingProtocol is CurveVestingHelpers {
|
|
||||||
event LogClaim(address account, uint256 claimAmount, uint256 getId, uint256 setId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Claim Curve DAO Token.
|
|
||||||
* @param getId Get token amount at this ID from `InstaMemory` Contract.
|
|
||||||
* @param setId Set token amount at this ID in `InstaMemory` Contract.
|
|
||||||
*/
|
|
||||||
function claim(uint getId, uint setId) external{
|
|
||||||
TokenInterface curveTokenContract = TokenInterface(getCurveTokenAddr());
|
|
||||||
|
|
||||||
uint initialCurveBal = curveTokenContract.balanceOf(address(this));
|
|
||||||
ICurve(getCurveVestingAddr()).claim(address(this));
|
|
||||||
uint finalCurveBal = curveTokenContract.balanceOf(address(this));
|
|
||||||
|
|
||||||
uint claimedAmt = sub(finalCurveBal, initialCurveBal);
|
|
||||||
|
|
||||||
setUint(setId, claimedAmt);
|
|
||||||
|
|
||||||
emit LogClaim(address(this), claimedAmt, getId, setId);
|
|
||||||
bytes32 _eventCode = keccak256("LogClaim(address,uint256,uint256,uint256)");
|
|
||||||
bytes memory _eventParam = abi.encode(address(this), claimedAmt, getId, setId);
|
|
||||||
emitEvent(_eventCode, _eventParam);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
contract ConnectCurveVesting is CurveVestingProtocol {
|
|
||||||
string public name = "Curve-vesting-v1";
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user