Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions LPRewards.full.abi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"inputs":[{"internalType":"address","name":"_snx","type":"address"},{"internalType":"address","name":"_pool","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"constant":true,"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_rewardDistribution","type":"address"}],"name":"setRewardDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"snx","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
1 change: 1 addition & 0 deletions LPRewards.full.bin
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
60806040526000600655600060075534801561001a57600080fd5b506040516112c53803806112c58339818101604052604081101561003d57600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b0383161790556100696100db565b600380546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b0319166001600160a01b03929092169190911790556100df565b3390565b6111d7806100ee6000396000f3fe608060405234801561001057600080fd5b50600436106101575760003560e01c806380faa57d116100c3578063cd3daf9d1161007c578063cd3daf9d14610305578063df136d651461030d578063e7d2799814610315578063e9fad8ee1461031d578063ebe2b12b14610325578063f2fde38b1461032d57610157565b806380faa57d1461028e5780638b876347146102965780638da5cb5b146102bc5780638f32d59b146102c4578063a694fc3a146102e0578063c8f33c91146102fd57610157565b80632e1a7d4d116101155780632e1a7d4d146102165780633c6b16ab146102335780633d18b9121461025057806370a0823114610258578063715018a61461027e5780637b0a47ee1461028657610157565b80628cc2621461015c5780630700037d146101945780630d68b761146101ba57806316f0115b146101e257806318160ddd146102065780631be052891461020e575b600080fd5b6101826004803603602081101561017257600080fd5b50356001600160a01b0316610353565b60408051918252519081900360200190f35b610182600480360360208110156101aa57600080fd5b50356001600160a01b03166103d9565b6101e0600480360360208110156101d057600080fd5b50356001600160a01b03166103eb565b005b6101ea610466565b604080516001600160a01b039092168252519081900360200190f35b610182610475565b61018261047c565b6101e06004803603602081101561022c57600080fd5b5035610483565b6101e06004803603602081101561024957600080fd5b503561056a565b6101e06106e4565b6101826004803603602081101561026e57600080fd5b50356001600160a01b03166107b6565b6101e06107d1565b610182610874565b61018261087a565b610182600480360360208110156102ac57600080fd5b50356001600160a01b031661088d565b6101ea61089f565b6102cc6108ae565b604080519115158252519081900360200190f35b6101e0600480360360208110156102f657600080fd5b50356108d4565b6101826109b8565b6101826109be565b610182610a12565b6101ea610a18565b6101e0610a27565b610182610a42565b6101e06004803603602081101561034357600080fd5b50356001600160a01b0316610a48565b6001600160a01b0381166000908152600b6020908152604080832054600a9092528220546103d391906103c790670de0b6b3a7640000906103bb906103a69061039a6109be565b9063ffffffff610aad16565b6103af886107b6565b9063ffffffff610af616565b9063ffffffff610b4f16565b9063ffffffff610b9116565b92915050565b600b6020526000908152604090205481565b6103f36108ae565b610444576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b6001545b90565b62093a8081565b3361048c6109be565b60095561049761087a565b6008556001600160a01b038116156104de576104b281610353565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b60008211610527576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b61053082610beb565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b6004546001600160a01b031661057e610c4c565b6001600160a01b0316146105c35760405162461bcd60e51b81526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b60006105cd6109be565b6009556105d861087a565b6008556001600160a01b0381161561061f576105f381610353565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b60065442106106435761063b8262093a8063ffffffff610b4f16565b600755610691565b600654600090610659904263ffffffff610aad16565b9050600061067260075483610af690919063ffffffff16565b905061068b62093a806103bb868463ffffffff610b9116565b60075550505b4260088190556106aa9062093a8063ffffffff610b9116565b6006556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b336106ed6109be565b6009556106f861087a565b6008556001600160a01b0381161561073f5761071381610353565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b600061074a33610353565b905080156107b257336000818152600b602052604081205560055461077b916001600160a01b039091169083610c50565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b5050565b6001600160a01b031660009081526002602052604090205490565b6107d96108ae565b61082a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b60075481565b600061088842600654610ca7565b905090565b600a6020526000908152604090205481565b6003546001600160a01b031690565b6003546000906001600160a01b03166108c5610c4c565b6001600160a01b031614905090565b336108dd6109be565b6009556108e861087a565b6008556001600160a01b0381161561092f5761090381610353565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b60008211610975576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b61097e82610cbd565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60085481565b60006109c8610475565b6109d55750600954610479565b610888610a036109e3610475565b6103bb670de0b6b3a76400006103af6007546103af60085461039a61087a565b6009549063ffffffff610b9116565b60095481565b6005546001600160a01b031681565b610a38610a33336107b6565b610483565b610a406106e4565b565b60065481565b610a506108ae565b610aa1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610aaa81610d1f565b50565b6000610aef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dc0565b9392505050565b600082610b05575060006103d3565b82820282848281610b1257fe5b0414610aef5760405162461bcd60e51b81526004018080602001828103825260218152602001806111376021913960400191505060405180910390fd5b6000610aef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e57565b600082820183811015610aef576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600154610bfe908263ffffffff610aad16565b60015533600090815260026020526040902054610c21908263ffffffff610aad16565b336000818152600260205260408120929092559054610aaa916001600160a01b039091169083610c50565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ca2908490610ebc565b505050565b6000818310610cb65781610aef565b5090919050565b600154610cd0908263ffffffff610b9116565b60015533600090815260026020526040902054610cf3908263ffffffff610b9116565b336000818152600260205260408120929092559054610aaa916001600160a01b0390911690308461107a565b6001600160a01b038116610d645760405162461bcd60e51b81526004018080602001828103825260268152602001806111116026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610e4f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e14578181015183820152602001610dfc565b50505050905090810190601f168015610e415780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610ea65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e14578181015183820152602001610dfc565b506000838581610eb257fe5b0495945050505050565b610ece826001600160a01b03166110d4565b610f1f576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610f5d5780518252601f199092019160209182019101610f3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610fbf576040519150601f19603f3d011682016040523d82523d6000602084013e610fc4565b606091505b50915091508161101b576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156110745780806020019051602081101561103757600080fd5b50516110745760405162461bcd60e51b815260040180806020018281038252602a815260200180611179602a913960400191505060405180910390fd5b50505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611074908590610ebc565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906111085750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158206f8ba6b6864181f9897bac98cebd3e79f259e8d1fd56afe3916b2516722811e264736f6c634300050c0032
24 changes: 18 additions & 6 deletions deployments/Curvepool.full.sol → LPRewards.full.sol
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ contract IRewardDistributionRecipient is Ownable {
}
}

// File: contracts/Curvepool.sol
// File: contracts/LPRewards.sol

pragma solidity ^0.5.0;

Expand All @@ -562,11 +562,15 @@ contract LPTokenWrapper {
using SafeMath for uint256;
using SafeERC20 for IERC20;

IERC20 public uni = IERC20(0xC25a3A3b969415c80451098fa907EC722572917F);
IERC20 public pool;

uint256 private _totalSupply;
mapping(address => uint256) private _balances;

constructor(address _pool) public {
pool = IERC20(_pool);
}

function totalSupply() public view returns (uint256) {
return _totalSupply;
}
Expand All @@ -578,18 +582,19 @@ contract LPTokenWrapper {
function stake(uint256 amount) public {
_totalSupply = _totalSupply.add(amount);
_balances[msg.sender] = _balances[msg.sender].add(amount);
uni.safeTransferFrom(msg.sender, address(this), amount);
pool.safeTransferFrom(msg.sender, address(this), amount);
}

function withdraw(uint256 amount) public {
_totalSupply = _totalSupply.sub(amount);
_balances[msg.sender] = _balances[msg.sender].sub(amount);
uni.safeTransfer(msg.sender, amount);
pool.safeTransfer(msg.sender, amount);
}
}

contract Curvepool is LPTokenWrapper, IRewardDistributionRecipient {
IERC20 public snx = IERC20(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F);
contract LPRewards is LPTokenWrapper, IRewardDistributionRecipient {
IERC20 public snx;

uint256 public constant DURATION = 7 days;

uint256 public periodFinish = 0;
Expand All @@ -604,6 +609,13 @@ contract Curvepool is LPTokenWrapper, IRewardDistributionRecipient {
event Withdrawn(address indexed user, uint256 amount);
event RewardPaid(address indexed user, uint256 reward);

constructor(address _snx, address _pool)
public
LPTokenWrapper(_pool)
{
snx = IERC20(_snx);
}

modifier updateReward(address account) {
rewardPerTokenStored = rewardPerToken();
lastUpdateTime = lastTimeRewardApplicable();
Expand Down
Loading