From 43c2c75af47026657bc53135b9994d2ec8aa6db9 Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Sat, 11 Jun 2022 20:10:30 -0400 Subject: [PATCH 1/6] add incentives predeploy --- contracts/incentives/Incentives.sol | 118 +++++++++++++++++++ contracts/incentives/InterfaceIncentives.sol | 36 ++++++ contracts/utils/Address.d.ts | 1 + contracts/utils/Address.js | 2 + contracts/utils/Address.sol | 1 + generate/generate.js | 4 + resources/bytecodes.json | 5 + 7 files changed, 167 insertions(+) create mode 100644 contracts/incentives/Incentives.sol create mode 100644 contracts/incentives/InterfaceIncentives.sol diff --git a/contracts/incentives/Incentives.sol b/contracts/incentives/Incentives.sol new file mode 100644 index 0000000..7ac2fb1 --- /dev/null +++ b/contracts/incentives/Incentives.sol @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "./InterfaceIncentives.sol"; + +contract Incentives is InterfaceIncentives { + address constant private precompile = address(0x000000000000000000000000000000000000040A); + + function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId) + public + view + override + returns (uint256) { + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("getIncentiveRewardAmount(PoolId,address,address)", pool, poolCurrencyId)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + return abi.decode(returnData, (uint256)); + } + + function getDexRewardRate(address currencyId) + public + view + override + returns (uint256) { + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("getDexRewardRate(address)", currencyId)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + return abi.decode(returnData, (uint256)); + } + + function depositDexShare(address currencyId, uint128 amount) + public + override + returns (bool) { + require(amount != 0, "Incentives: amount is zero"); + + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("depositDexShare(address,address,uint128)", msg.sender, currencyId, amount)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + emit DepositedShare(msg.sender, currencyId, amount); + return true; + } + + function withdrawDexShare(address currencyId, uint128 amount) + public + override + returns (bool) { + require(amount != 0, "Incentives: amount is zero"); + + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("withdrawDexShare(address,address,uint128)", msg.sender, currencyId, amount)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + emit WithdrewShare(msg.sender, currencyId, amount); + return true; + } + + function claimRewards(PoolId pool, address poolCurrencyId) + public + override + returns (bool) { + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("claimRewards(address,PoolId,address)", msg.sender, pool, poolCurrencyId)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + emit ClaimedRewards(msg.sender, pool, poolCurrencyId); + return true; + } + + function getClaimRewardDeductionRate(PoolId pool, address poolCurrencyId) + public + view + override + returns (uint256) { + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("getClaimRewardDeductionRate(PoolId,address)", pool, poolCurrencyId)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + return abi.decode(returnData, (uint256)); + } + + function getPendingRewards(address[] memory currencyIds, PoolId pool, address poolCurrencyId, address who) + public + view + override + returns (uint256[] memory) { + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("getPendingRewards(address[],PoolId,address,address)", currencyIds, pool, poolCurrencyId, who)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } + } + + return abi.decode(returnData, (uint256[])); + } +} \ No newline at end of file diff --git a/contracts/incentives/InterfaceIncentives.sol b/contracts/incentives/InterfaceIncentives.sol new file mode 100644 index 0000000..73f9c3c --- /dev/null +++ b/contracts/incentives/InterfaceIncentives.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity ^0.8.0; + +interface InterfaceIncentives { + event DepositedShare(address indexed sender, address indexed currencyId, uint128 amount); + event WithdrewShare(address indexed sender, address indexed currencyId, uint128 amount); + event ClaimedRewards(address indexed sender, PoolId pool, address indexed poolCurrencyId); + enum PoolId { LOANS, DEX } + + // Adjust CDP position + // Returns a boolean value indicating whether the operation succeeded. + function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId) external view returns (uint256); + + // Close CDP position with DEX + // Returns a boolean value indicating whether the operation succeeded. + function getDexRewardRate(address currencyId) external view returns (uint256); + + // Get an open CDP position + // returns (collateral_amount, debit_amount) + function depositDexShare(address currencyId, uint128 amount) external returns (bool); + + // Get liquidation ratio for a currencyId + // returns (liquidation_ratio) is a FixedU128 representing a decimal value + function withdrawDexShare(address currencyId, uint128 amount) external returns (bool); + + // Get current collateral ratio for a particular CDP position + // returns (current_collateral_ratio) is a FixedU128 representing a decimal value + function claimRewards(PoolId pool, address poolCurrencyId) external returns (bool); + + // Get exchange rate of debit units to debit value for a currency_id + // returns (exchange_rate) is a FixedU128 representing a decimal value + function getClaimRewardDeductionRate(PoolId pool, address poolCurrencyId) external view returns (uint256); + + function getPendingRewards(address[] calldata currencyIds, PoolId pool, address poolCurrencyId, address who) external view returns (uint256[] memory); +} diff --git a/contracts/utils/Address.d.ts b/contracts/utils/Address.d.ts index 075c9eb..6f12c89 100644 --- a/contracts/utils/Address.d.ts +++ b/contracts/utils/Address.d.ts @@ -32,3 +32,4 @@ export const DEX: "0x0000000000000000000000000000000000000803"; export const Homa: "0x0000000000000000000000000000000000000805"; export const EVMAccounts: "0x0000000000000000000000000000000000000806"; export const Honzon: "0x0000000000000000000000000000000000000807"; +export const Incentives: "0x0000000000000000000000000000000000000808"; diff --git a/contracts/utils/Address.js b/contracts/utils/Address.js index ea2b347..b16ccc6 100644 --- a/contracts/utils/Address.js +++ b/contracts/utils/Address.js @@ -32,6 +32,7 @@ const DEX = '0x0000000000000000000000000000000000000803'; const Homa = '0x0000000000000000000000000000000000000805'; const EVMAccounts = '0x0000000000000000000000000000000000000806'; const Honzon = '0x0000000000000000000000000000000000000807'; +const Incentives = '0x0000000000000000000000000000000000000808'; module.exports = { ACA, @@ -68,4 +69,5 @@ module.exports = { Homa, EVMAccounts, Honzon, + Incentives, } diff --git a/contracts/utils/Address.sol b/contracts/utils/Address.sol index 7c4c645..eda38ba 100644 --- a/contracts/utils/Address.sol +++ b/contracts/utils/Address.sol @@ -37,4 +37,5 @@ contract ADDRESS { address public constant Homa = 0x0000000000000000000000000000000000000805; address public constant EVMAccounts = 0x0000000000000000000000000000000000000806; address public constant Honzon = 0x0000000000000000000000000000000000000807; + address public constant Incentives = 0x0000000000000000000000000000000000000808; } diff --git a/generate/generate.js b/generate/generate.js index 015c92d..a16e5ff 100644 --- a/generate/generate.js +++ b/generate/generate.js @@ -58,6 +58,10 @@ const generate = async () => { const { bytecode: honzon } = await hre.artifacts.readArtifact("Honzon"); bytecodes.push(['Honzon', ethers.utils.getAddress('0x0000000000000000000000000000000000000807'), honzon]); + // add Incentives bytecodes + const { bytecode: incentives } = await hre.artifacts.readArtifact("Incentives"); + bytecodes.push(['Incentives', ethers.utils.getAddress('0x0000000000000000000000000000000000000808'), incentives]); + // Maybe each nft will deploy a contract, like the mirrored token. // add NFT bytecodes // const { bytecode: nft } = require(`../build/contracts/NFT.json`); diff --git a/resources/bytecodes.json b/resources/bytecodes.json index 962ef88..db33787 100644 --- a/resources/bytecodes.json +++ b/resources/bytecodes.json @@ -168,5 +168,10 @@ "Honzon", "0x0000000000000000000000000000000000000807", "0x608060405234801561001057600080fd5b50610a70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063b33dc19011610050578063b33dc190146100d3578063c4ba4c3a146100fb578063d018f0911461010e57600080fd5b80631384ed1714610077578063345f5d931461009d57806349895dee146100c0575b600080fd5b61008a610085366004610929565b610121565b6040519081526020015b60405180910390f35b6100b06100ab36600461095b565b610249565b6040519015158152602001610094565b6100b06100ce36600461099d565b610472565b6100e66100e1366004610929565b6105d2565b60408051928352602083019190915201610094565b61008a610109366004610908565b610700565b61008a61011c366004610908565b61081f565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152821660448201526000908190819061040990606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1384ed1700000000000000000000000000000000000000000000000000000000179052516101d79190610a01565b600060405180830381855afa9150503d8060008114610212576040519150601f19603f3d011682016040523d82523d6000602084013e610217565b606091505b5091509150600082141561022c573d60208201fd5b8080602001905181019061024091906109c6565b95945050505050565b600082600f0b600014158015610263575081600f0b600014155b6102f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f486f6e7a6f6e3a2061646a7573746d656e7420616d6f756e747320617265207a60448201527f65726f0000000000000000000000000000000000000000000000000000000000606482015260840160405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff85166044820152600f84810b606483015283900b608482015260009081906104099060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd20a1c8700000000000000000000000000000000000000000000000000000000179052516103b79190610a01565b6000604051808303816000865af19150503d80600081146103f4576040519150601f19603f3d011682016040523d82523d6000602084013e6103f9565b606091505b5091509150600082141561040e573d60208201fd5b60408051600f87810b825286900b602082015273ffffffffffffffffffffffffffffffffffffffff88169133917fe2cff686fc32ba2598b795b502cc29355d96476b81bfec8f2ed19fc0c20b751b910160405180910390a350600195945050505050565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff83166044820152606481018290526000908190819061040990608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbf0ea731000000000000000000000000000000000000000000000000000000001790525161052d9190610a01565b6000604051808303816000865af19150503d806000811461056a576040519150601f19603f3d011682016040523d82523d6000602084013e61056f565b606091505b50915091506000821415610584573d60208201fd5b60405173ffffffffffffffffffffffffffffffffffffffff86169033907f5da7833102bf6cf960a8286f0c40b87af131ed105e112b28276d4b7933b33bde90600090a3506001949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301528216604482015260009081908190819061040990606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb33dc190000000000000000000000000000000000000000000000000000000001790525161068a9190610a01565b600060405180830381855afa9150503d80600081146106c5576040519150601f19603f3d011682016040523d82523d6000602084013e6106ca565b606091505b509150915060008214156106df573d60208201fd5b808060200190518101906106f391906109de565b9350935050509250929050565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4ba4c3a00000000000000000000000000000000000000000000000000000000179052516107ae9190610a01565b600060405180830381855afa9150503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b50915091506000821415610803573d60208201fd5b8080602001905181019061081791906109c6565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd018f09100000000000000000000000000000000000000000000000000000000179052516107ae9190610a01565b803573ffffffffffffffffffffffffffffffffffffffff811681146108f157600080fd5b919050565b8035600f81900b81146108f157600080fd5b600060208284031215610919578081fd5b610922826108cd565b9392505050565b6000806040838503121561093b578081fd5b610944836108cd565b9150610952602084016108cd565b90509250929050565b60008060006060848603121561096f578081fd5b610978846108cd565b9250610986602085016108f6565b9150610994604085016108f6565b90509250925092565b600080604083850312156109af578182fd5b6109b8836108cd565b946020939093013593505050565b6000602082840312156109d7578081fd5b5051919050565b600080604083850312156109f0578182fd5b505080516020909101519092909150565b60008251815b81811015610a215760208186018101518583015201610a07565b81811115610a2f5782828501525b50919091019291505056fea26469706673582212200e675b5e56b1cd6a5b8db5f97db81930a2c87fc55d36632cbbe374d214792bfc64736f6c63430008040033" + ], + [ + "Incentives", + "0x0000000000000000000000000000000000000808", + "0x608060405234801561001057600080fd5b50610fb2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780632c0d31d3146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610cca565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610cca565b61025d565b6100ce6100c9366004610cca565b61030f565b604051901515815260200161009f565b6100ce6100ec366004610b1b565b610488565b6100956100ff366004610afa565b610683565b6100ce610112366004610b1b565b6107a2565b61012a610125366004610b65565b610998565b60405161009f9190610e57565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610ea9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610d4f565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610cfc565b925050505b92915050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff16858560405160240161028e929190610ea9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516101e99190610d4f565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1633868660405160240161034293929190610d88565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516103c39190610d4f565b600060405180830381855afa9150503d80600081146103fe576040519150601f19603f3d011682016040523d82523d6000602084013e610403565b606091505b50915091506000821415610418573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b39876040516104759190610e9b565b60405180910390a3506001949350505050565b60006fffffffffffffffffffffffffffffffff8216610508576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b27900000000000000000000000000000000000000000000000000000000179052516105d29190610d4f565b600060405180830381855afa9150503d806000811461060d576040519150601f19603f3d011682016040523d82523d6000602084013e610612565b606091505b50915091506000821415610627573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d890602001610475565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107319190610d4f565b600060405180830381855afa9150503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50915091506000821415610786573d60208201fd5b8080602001905181019061079a9190610cfc565b949350505050565b60006fffffffffffffffffffffffffffffffff821661081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064016104ff565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c00000000000000000000000000000000000000000000000000000000179052516108e79190610d4f565b600060405180830381855afa9150503d8060008114610922576040519150601f19603f3d011682016040523d82523d6000602084013e610927565b606091505b5091509150600082141561093c573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b90602001610475565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff16878787876040516024016109cd9493929190610dc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610a4e9190610d4f565b600060405180830381855afa9150503d8060008114610a89576040519150601f19603f3d011682016040523d82523d6000602084013e610a8e565b606091505b50915091506000821415610aa3573d60208201fd5b80806020019051810190610ab79190610c37565b979650505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ae657600080fd5b919050565b803560028110610ae657600080fd5b600060208284031215610b0b578081fd5b610b1482610ac2565b9392505050565b60008060408385031215610b2d578081fd5b610b3683610ac2565b915060208301356fffffffffffffffffffffffffffffffff81168114610b5a578182fd5b809150509250929050565b60008060008060808587031215610b7a578182fd5b843567ffffffffffffffff811115610b90578283fd5b8501601f81018713610ba0578283fd5b80356020610bb5610bb083610f29565b610eda565b8083825282820191508285018b848660051b8801011115610bd4578788fd5b8795505b84861015610bfd57610be981610ac2565b835260019590950194918301918301610bd8565b509750610c0d9050888201610aeb565b9550505050610c1e60408601610ac2565b9150610c2c60608601610ac2565b905092959194509250565b60006020808385031215610c49578182fd5b825167ffffffffffffffff811115610c5f578283fd5b8301601f81018513610c6f578283fd5b8051610c7d610bb082610f29565b80828252848201915084840188868560051b8701011115610c9c578687fd5b8694505b83851015610cbe578051835260019490940193918501918501610ca0565b50979650505050505050565b60008060408385031215610cdc578182fd5b610ce583610aeb565b9150610cf360208401610ac2565b90509250929050565b600060208284031215610d0d578081fd5b5051919050565b60028110610d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610d6f5760208186018101518583015201610d55565b81811115610d7d5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610db46020840186610d14565b808416604084015250949350505050565b6080808252855190820181905260009060209060a0840190828901845b82811015610e1457815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610de2565b50505080925050610e2781840187610d14565b5073ffffffffffffffffffffffffffffffffffffffff808516604084015280841660608401525095945050505050565b6020808252825182820181905260009190848201906040850190845b81811015610e8f57835183529284019291840191600101610e73565b50909695505050505050565b602081016102578284610d14565b60408101610eb78285610d14565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f2157610f21610f4d565b604052919050565b600067ffffffffffffffff821115610f4357610f43610f4d565b5060051b60200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212204dcfc9395a158604f6ed3769068e40d3ab8d623f2e70e661429ae3cfa81d8f1364736f6c63430008040033" ] ] \ No newline at end of file From a076e98521b5cad71a811905d20068426f3ebb3b Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Sat, 11 Jun 2022 20:19:19 -0400 Subject: [PATCH 2/6] use calldata for inputs --- contracts/incentives/Incentives.sol | 4 ++-- resources/bytecodes.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/incentives/Incentives.sol b/contracts/incentives/Incentives.sol index 7ac2fb1..ce3f9bd 100644 --- a/contracts/incentives/Incentives.sol +++ b/contracts/incentives/Incentives.sol @@ -101,7 +101,7 @@ contract Incentives is InterfaceIncentives { return abi.decode(returnData, (uint256)); } - function getPendingRewards(address[] memory currencyIds, PoolId pool, address poolCurrencyId, address who) + function getPendingRewards(address[] calldata currencyIds, PoolId pool, address poolCurrencyId, address who) public view override @@ -115,4 +115,4 @@ contract Incentives is InterfaceIncentives { return abi.decode(returnData, (uint256[])); } -} \ No newline at end of file +} diff --git a/resources/bytecodes.json b/resources/bytecodes.json index db33787..044457e 100644 --- a/resources/bytecodes.json +++ b/resources/bytecodes.json @@ -172,6 +172,6 @@ [ "Incentives", "0x0000000000000000000000000000000000000808", - "0x608060405234801561001057600080fd5b50610fb2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780632c0d31d3146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610cca565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610cca565b61025d565b6100ce6100c9366004610cca565b61030f565b604051901515815260200161009f565b6100ce6100ec366004610b1b565b610488565b6100956100ff366004610afa565b610683565b6100ce610112366004610b1b565b6107a2565b61012a610125366004610b65565b610998565b60405161009f9190610e57565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610ea9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610d4f565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610cfc565b925050505b92915050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff16858560405160240161028e929190610ea9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516101e99190610d4f565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1633868660405160240161034293929190610d88565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516103c39190610d4f565b600060405180830381855afa9150503d80600081146103fe576040519150601f19603f3d011682016040523d82523d6000602084013e610403565b606091505b50915091506000821415610418573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b39876040516104759190610e9b565b60405180910390a3506001949350505050565b60006fffffffffffffffffffffffffffffffff8216610508576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b27900000000000000000000000000000000000000000000000000000000179052516105d29190610d4f565b600060405180830381855afa9150503d806000811461060d576040519150601f19603f3d011682016040523d82523d6000602084013e610612565b606091505b50915091506000821415610627573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d890602001610475565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107319190610d4f565b600060405180830381855afa9150503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50915091506000821415610786573d60208201fd5b8080602001905181019061079a9190610cfc565b949350505050565b60006fffffffffffffffffffffffffffffffff821661081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064016104ff565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c00000000000000000000000000000000000000000000000000000000179052516108e79190610d4f565b600060405180830381855afa9150503d8060008114610922576040519150601f19603f3d011682016040523d82523d6000602084013e610927565b606091505b5091509150600082141561093c573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b90602001610475565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff16878787876040516024016109cd9493929190610dc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610a4e9190610d4f565b600060405180830381855afa9150503d8060008114610a89576040519150601f19603f3d011682016040523d82523d6000602084013e610a8e565b606091505b50915091506000821415610aa3573d60208201fd5b80806020019051810190610ab79190610c37565b979650505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ae657600080fd5b919050565b803560028110610ae657600080fd5b600060208284031215610b0b578081fd5b610b1482610ac2565b9392505050565b60008060408385031215610b2d578081fd5b610b3683610ac2565b915060208301356fffffffffffffffffffffffffffffffff81168114610b5a578182fd5b809150509250929050565b60008060008060808587031215610b7a578182fd5b843567ffffffffffffffff811115610b90578283fd5b8501601f81018713610ba0578283fd5b80356020610bb5610bb083610f29565b610eda565b8083825282820191508285018b848660051b8801011115610bd4578788fd5b8795505b84861015610bfd57610be981610ac2565b835260019590950194918301918301610bd8565b509750610c0d9050888201610aeb565b9550505050610c1e60408601610ac2565b9150610c2c60608601610ac2565b905092959194509250565b60006020808385031215610c49578182fd5b825167ffffffffffffffff811115610c5f578283fd5b8301601f81018513610c6f578283fd5b8051610c7d610bb082610f29565b80828252848201915084840188868560051b8701011115610c9c578687fd5b8694505b83851015610cbe578051835260019490940193918501918501610ca0565b50979650505050505050565b60008060408385031215610cdc578182fd5b610ce583610aeb565b9150610cf360208401610ac2565b90509250929050565b600060208284031215610d0d578081fd5b5051919050565b60028110610d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610d6f5760208186018101518583015201610d55565b81811115610d7d5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610db46020840186610d14565b808416604084015250949350505050565b6080808252855190820181905260009060209060a0840190828901845b82811015610e1457815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610de2565b50505080925050610e2781840187610d14565b5073ffffffffffffffffffffffffffffffffffffffff808516604084015280841660608401525095945050505050565b6020808252825182820181905260009190848201906040850190845b81811015610e8f57835183529284019291840191600101610e73565b50909695505050505050565b602081016102578284610d14565b60408101610eb78285610d14565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f2157610f21610f4d565b604052919050565b600067ffffffffffffffff821115610f4357610f43610f4d565b5060051b60200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212204dcfc9395a158604f6ed3769068e40d3ab8d623f2e70e661429ae3cfa81d8f1364736f6c63430008040033" + "0x608060405234801561001057600080fd5b50610f5a806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780632c0d31d3146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610ce7565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610ce7565b61025d565b6100ce6100c9366004610ce7565b61030f565b604051901515815260200161009f565b6100ce6100ec366004610b1e565b610488565b6100956100ff366004610afd565b610683565b6100ce610112366004610b1e565b6107a2565b61012a610125366004610b68565b610998565b60405161009f9190610e72565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610d6c565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610d19565b925050505b92915050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff16858560405160240161028e929190610ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516101e99190610d6c565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1633868660405160240161034293929190610da5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516103c39190610d6c565b600060405180830381855afa9150503d80600081146103fe576040519150601f19603f3d011682016040523d82523d6000602084013e610403565b606091505b50915091506000821415610418573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b39876040516104759190610eb6565b60405180910390a3506001949350505050565b60006fffffffffffffffffffffffffffffffff8216610508576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b27900000000000000000000000000000000000000000000000000000000179052516105d29190610d6c565b600060405180830381855afa9150503d806000811461060d576040519150601f19603f3d011682016040523d82523d6000602084013e610612565b606091505b50915091506000821415610627573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d890602001610475565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107319190610d6c565b600060405180830381855afa9150503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50915091506000821415610786573d60208201fd5b8080602001905181019061079a9190610d19565b949350505050565b60006fffffffffffffffffffffffffffffffff821661081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064016104ff565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c00000000000000000000000000000000000000000000000000000000179052516108e79190610d6c565b600060405180830381855afa9150503d8060008114610922576040519150601f19603f3d011682016040523d82523d6000602084013e610927565b606091505b5091509150600082141561093c573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b90602001610475565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff1688888888886040516024016109cf959493929190610de2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610a509190610d6c565b600060405180830381855afa9150503d8060008114610a8b576040519150601f19603f3d011682016040523d82523d6000602084013e610a90565b606091505b50915091506000821415610aa5573d60208201fd5b80806020019051810190610ab99190610c09565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ae957600080fd5b919050565b803560028110610ae957600080fd5b600060208284031215610b0e578081fd5b610b1782610ac5565b9392505050565b60008060408385031215610b30578081fd5b610b3983610ac5565b915060208301356fffffffffffffffffffffffffffffffff81168114610b5d578182fd5b809150509250929050565b600080600080600060808688031215610b7f578081fd5b853567ffffffffffffffff80821115610b96578283fd5b818801915088601f830112610ba9578283fd5b813581811115610bb7578384fd5b8960208260051b8501011115610bcb578384fd5b602092830197509550610be19188019050610aee565b9250610bef60408701610ac5565b9150610bfd60608701610ac5565b90509295509295909350565b60006020808385031215610c1b578182fd5b825167ffffffffffffffff80821115610c32578384fd5b818501915085601f830112610c45578384fd5b815181811115610c5757610c57610ef5565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610c9a57610c9a610ef5565b604052828152858101935084860182860187018a1015610cb8578788fd5b8795505b83861015610cda578051855260019590950194938601938601610cbc565b5098975050505050505050565b60008060408385031215610cf9578182fd5b610d0283610aee565b9150610d1060208401610ac5565b90509250929050565b600060208284031215610d2a578081fd5b5051919050565b60028110610d68577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610d8c5760208186018101518583015201610d72565b81811115610d9a5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610dd16020840186610d31565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610e305773ffffffffffffffffffffffffffffffffffffffff610e1b84610ac5565b16825260209283019290910190600101610df5565b509150610e4290506020830186610d31565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610eaa57835183529284019291840191600101610e8e565b50909695505050505050565b602081016102578284610d31565b60408101610ed28285610d31565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220516679bc15da3248f31ac9e7821efeb7fae3092daca3f4eb1f8964f44e3e1b0164736f6c63430008040033" ] ] \ No newline at end of file From 48e66e6df639ce1ebb4960d9d55020e1c7d24bc0 Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Sun, 12 Jun 2022 00:17:31 -0400 Subject: [PATCH 3/6] add comments and readme --- README.md | 34 ++++++++++++++++++++ contracts/incentives/Incentives.sol | 32 ++++++++++++++++-- contracts/incentives/InterfaceIncentives.sol | 28 ++++++++-------- resources/bytecodes.json | 2 +- 4 files changed, 80 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 78d3424..702afad 100644 --- a/README.md +++ b/README.md @@ -252,5 +252,39 @@ function getCurrentCollateralRatio(address who, address currencyId) external vie function getDebitExchangeRate(address currencyId) external view returns (uint256); ``` +### Incentives +- Incentives contract address: `ADDRESS.Incentives` +``` +enum PoolId { LOANS, DEX } + +// Gets reward amount in `rewardCurrency` added per period +// Returns (reward_amount) +function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId, address rewardCurrencyId) external view returns (uint256); + +// Fixed reward rate for dex reward pool per period +// Returns (dex_reward_rate) as a FixedU128 representing a decimal +function getDexRewardRate(address currencyId) external view returns (uint256); + +// Stake LP token to add shares to PoolId::Dex +// Returns a boolean value indicating whether the operation succeeded. +function depositDexShare(address currencyId, uint128 amount) external returns (bool); + +// Unstake LP token to remove shares from PoolId::Dex +// Returns a boolean value indicating whether the operation succeeded. +function withdrawDexShare(address currencyId, uint128 amount) external returns (bool); + +// Claim all avalible multi currencies rewards for specific PoolId +// Returns a boolean value indicating whether the operation succeeded. +function claimRewards(PoolId pool, address poolCurrencyId) external returns (bool); + +// Gets deduction rate for claiming reward early +// returns (claim_reward_deduction_rate) as a FixedU128 representing a decimal value +function getClaimRewardDeductionRate(PoolId pool, address poolCurrencyId) external view returns (uint256); + +// Gets the pending rewards for a pool, actual reward could be deducted. +// returns (balances), an array of reward balances corresponding to currencyIds +function getPendingRewards(address[] calldata currencyIds, PoolId pool, address poolCurrencyId, address who) external view returns (uint256[] memory); +``` + ## DeFi Contracts (Coming Soon) These contracts will make Acala's DeFi primitives (stablecoin, staking derivative, and DeX) available in Acala EVM. diff --git a/contracts/incentives/Incentives.sol b/contracts/incentives/Incentives.sol index ce3f9bd..60368ca 100644 --- a/contracts/incentives/Incentives.sol +++ b/contracts/incentives/Incentives.sol @@ -7,12 +7,16 @@ import "./InterfaceIncentives.sol"; contract Incentives is InterfaceIncentives { address constant private precompile = address(0x000000000000000000000000000000000000040A); - function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId) + /** + * @dev Gets reward amount in `rewardCurrency` added per period + * Returns (reward_amount) + */ + function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId, address rewardCurrencyId) public view override returns (uint256) { - (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("getIncentiveRewardAmount(PoolId,address,address)", pool, poolCurrencyId)); + (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("getIncentiveRewardAmount(PoolId,address,address)", pool, poolCurrencyId, rewardCurrencyId)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) @@ -22,6 +26,10 @@ contract Incentives is InterfaceIncentives { return abi.decode(returnData, (uint256)); } + /** + * @dev Fixed reward rate for dex reward pool per period + * returns (dex_reward_rate) as a FixedU128 representing a decimal value + */ function getDexRewardRate(address currencyId) public view @@ -37,6 +45,10 @@ contract Incentives is InterfaceIncentives { return abi.decode(returnData, (uint256)); } + /** + * @dev Stake LP token to add shares to PoolId::Dex + * Returns a boolean value indicating whether the operation succeeded. + */ function depositDexShare(address currencyId, uint128 amount) public override @@ -54,6 +66,10 @@ contract Incentives is InterfaceIncentives { return true; } + /** + * @dev Unstake LP token to remove shares from PoolId::Dex + * Returns a boolean value indicating whether the operation succeeded. + */ function withdrawDexShare(address currencyId, uint128 amount) public override @@ -71,6 +87,10 @@ contract Incentives is InterfaceIncentives { return true; } + /** + * @dev Claim all avalible multi currencies rewards for specific PoolId + * Returns a boolean value indicating whether the operation succeeded. + */ function claimRewards(PoolId pool, address poolCurrencyId) public override @@ -86,6 +106,10 @@ contract Incentives is InterfaceIncentives { return true; } + /** + * @dev Gets deduction rate for claiming reward early + * returns (claim_reward_deduction_rate) as a FixedU128 representing a decimal value + */ function getClaimRewardDeductionRate(PoolId pool, address poolCurrencyId) public view @@ -101,6 +125,10 @@ contract Incentives is InterfaceIncentives { return abi.decode(returnData, (uint256)); } + /** + * @dev Gets the pending rewards for a pool, actual reward could be deducted. + * returns (balances), an array of reward balances corresponding to currencyIds + */ function getPendingRewards(address[] calldata currencyIds, PoolId pool, address poolCurrencyId, address who) public view diff --git a/contracts/incentives/InterfaceIncentives.sol b/contracts/incentives/InterfaceIncentives.sol index 73f9c3c..3c4d02b 100644 --- a/contracts/incentives/InterfaceIncentives.sol +++ b/contracts/incentives/InterfaceIncentives.sol @@ -8,29 +8,31 @@ interface InterfaceIncentives { event ClaimedRewards(address indexed sender, PoolId pool, address indexed poolCurrencyId); enum PoolId { LOANS, DEX } - // Adjust CDP position - // Returns a boolean value indicating whether the operation succeeded. - function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId) external view returns (uint256); + // Gets reward amount in `rewardCurrency` added per period + // Returns (reward_amount) + function getIncentiveRewardAmount(PoolId pool, address poolCurrencyId, address rewardCurrencyId) external view returns (uint256); - // Close CDP position with DEX - // Returns a boolean value indicating whether the operation succeeded. + // Fixed reward rate for dex reward pool per period + // Returns (dex_reward_rate) as a FixedU128 representing a decimal function getDexRewardRate(address currencyId) external view returns (uint256); - // Get an open CDP position - // returns (collateral_amount, debit_amount) + // Stake LP token to add shares to PoolId::Dex + // Returns a boolean value indicating whether the operation succeeded. function depositDexShare(address currencyId, uint128 amount) external returns (bool); - // Get liquidation ratio for a currencyId - // returns (liquidation_ratio) is a FixedU128 representing a decimal value + // Unstake LP token to remove shares from PoolId::Dex + // Returns a boolean value indicating whether the operation succeeded. function withdrawDexShare(address currencyId, uint128 amount) external returns (bool); - // Get current collateral ratio for a particular CDP position - // returns (current_collateral_ratio) is a FixedU128 representing a decimal value + // Claim all avalible multi currencies rewards for specific PoolId + // Returns a boolean value indicating whether the operation succeeded. function claimRewards(PoolId pool, address poolCurrencyId) external returns (bool); - // Get exchange rate of debit units to debit value for a currency_id - // returns (exchange_rate) is a FixedU128 representing a decimal value + // Gets deduction rate for claiming reward early + // returns (claim_reward_deduction_rate) as a FixedU128 representing a decimal value function getClaimRewardDeductionRate(PoolId pool, address poolCurrencyId) external view returns (uint256); + // Gets the pending rewards for a pool, actual reward could be deducted. + // returns (balances), an array of reward balances corresponding to currencyIds function getPendingRewards(address[] calldata currencyIds, PoolId pool, address poolCurrencyId, address who) external view returns (uint256[] memory); } diff --git a/resources/bytecodes.json b/resources/bytecodes.json index 044457e..52eec43 100644 --- a/resources/bytecodes.json +++ b/resources/bytecodes.json @@ -172,6 +172,6 @@ [ "Incentives", "0x0000000000000000000000000000000000000808", - "0x608060405234801561001057600080fd5b50610f5a806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780632c0d31d3146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610ce7565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610ce7565b61025d565b6100ce6100c9366004610ce7565b61030f565b604051901515815260200161009f565b6100ce6100ec366004610b1e565b610488565b6100956100ff366004610afd565b610683565b6100ce610112366004610b1e565b6107a2565b61012a610125366004610b68565b610998565b60405161009f9190610e72565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610d6c565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610d19565b925050505b92915050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff16858560405160240161028e929190610ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516101e99190610d6c565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1633868660405160240161034293929190610da5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516103c39190610d6c565b600060405180830381855afa9150503d80600081146103fe576040519150601f19603f3d011682016040523d82523d6000602084013e610403565b606091505b50915091506000821415610418573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b39876040516104759190610eb6565b60405180910390a3506001949350505050565b60006fffffffffffffffffffffffffffffffff8216610508576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b27900000000000000000000000000000000000000000000000000000000179052516105d29190610d6c565b600060405180830381855afa9150503d806000811461060d576040519150601f19603f3d011682016040523d82523d6000602084013e610612565b606091505b50915091506000821415610627573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d890602001610475565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107319190610d6c565b600060405180830381855afa9150503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50915091506000821415610786573d60208201fd5b8080602001905181019061079a9190610d19565b949350505050565b60006fffffffffffffffffffffffffffffffff821661081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064016104ff565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c00000000000000000000000000000000000000000000000000000000179052516108e79190610d6c565b600060405180830381855afa9150503d8060008114610922576040519150601f19603f3d011682016040523d82523d6000602084013e610927565b606091505b5091509150600082141561093c573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b90602001610475565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff1688888888886040516024016109cf959493929190610de2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610a509190610d6c565b600060405180830381855afa9150503d8060008114610a8b576040519150601f19603f3d011682016040523d82523d6000602084013e610a90565b606091505b50915091506000821415610aa5573d60208201fd5b80806020019051810190610ab99190610c09565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ae957600080fd5b919050565b803560028110610ae957600080fd5b600060208284031215610b0e578081fd5b610b1782610ac5565b9392505050565b60008060408385031215610b30578081fd5b610b3983610ac5565b915060208301356fffffffffffffffffffffffffffffffff81168114610b5d578182fd5b809150509250929050565b600080600080600060808688031215610b7f578081fd5b853567ffffffffffffffff80821115610b96578283fd5b818801915088601f830112610ba9578283fd5b813581811115610bb7578384fd5b8960208260051b8501011115610bcb578384fd5b602092830197509550610be19188019050610aee565b9250610bef60408701610ac5565b9150610bfd60608701610ac5565b90509295509295909350565b60006020808385031215610c1b578182fd5b825167ffffffffffffffff80821115610c32578384fd5b818501915085601f830112610c45578384fd5b815181811115610c5757610c57610ef5565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610c9a57610c9a610ef5565b604052828152858101935084860182860187018a1015610cb8578788fd5b8795505b83861015610cda578051855260019590950194938601938601610cbc565b5098975050505050505050565b60008060408385031215610cf9578182fd5b610d0283610aee565b9150610d1060208401610ac5565b90509250929050565b600060208284031215610d2a578081fd5b5051919050565b60028110610d68577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610d8c5760208186018101518583015201610d72565b81811115610d9a5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610dd16020840186610d31565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610e305773ffffffffffffffffffffffffffffffffffffffff610e1b84610ac5565b16825260209283019290910190600101610df5565b509150610e4290506020830186610d31565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610eaa57835183529284019291840191600101610e8e565b50909695505050505050565b602081016102578284610d31565b60408101610ed28285610d31565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220516679bc15da3248f31ac9e7821efeb7fae3092daca3f4eb1f8964f44e3e1b0164736f6c63430008040033" + "0x608060405234801561001057600080fd5b5061104d806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780636ccf80da146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610d5c565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610d8e565b61025d565b6100ce6100c9366004610d5c565b610384565b604051901515815260200161009f565b6100ce6100ec366004610b93565b6104fd565b6100956100ff366004610b72565b6106f8565b6100ce610112366004610b93565b610817565b61012a610125366004610bdd565b610a0d565b60405161009f9190610f29565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610f7b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610e23565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610dd0565b925050505b92915050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1686868660405160240161029093929190610fac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516103119190610e23565b600060405180830381855afa9150503d806000811461034c576040519150601f19603f3d011682016040523d82523d6000602084013e610351565b606091505b50915091506000821415610366573d60208201fd5b8080602001905181019061037a9190610dd0565b9695505050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff163386866040516024016103b793929190610e5c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516104389190610e23565b600060405180830381855afa9150503d8060008114610473576040519150601f19603f3d011682016040523d82523d6000602084013e610478565b606091505b5091509150600082141561048d573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b39876040516104ea9190610f6d565b60405180910390a3506001949350505050565b60006fffffffffffffffffffffffffffffffff821661057d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b27900000000000000000000000000000000000000000000000000000000179052516106479190610e23565b600060405180830381855afa9150503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b5091509150600082141561069c573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d8906020016104ea565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107a69190610e23565b600060405180830381855afa9150503d80600081146107e1576040519150601f19603f3d011682016040523d82523d6000602084013e6107e6565b606091505b509150915060008214156107fb573d60208201fd5b8080602001905181019061080f9190610dd0565b949350505050565b60006fffffffffffffffffffffffffffffffff8216610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f0000000000006044820152606401610574565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c000000000000000000000000000000000000000000000000000000001790525161095c9190610e23565b600060405180830381855afa9150503d8060008114610997576040519150601f19603f3d011682016040523d82523d6000602084013e61099c565b606091505b509150915060008214156109b1573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b906020016104ea565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff168888888888604051602401610a44959493929190610e99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610ac59190610e23565b600060405180830381855afa9150503d8060008114610b00576040519150601f19603f3d011682016040523d82523d6000602084013e610b05565b606091505b50915091506000821415610b1a573d60208201fd5b80806020019051810190610b2e9190610c7e565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5e57600080fd5b919050565b803560028110610b5e57600080fd5b600060208284031215610b83578081fd5b610b8c82610b3a565b9392505050565b60008060408385031215610ba5578081fd5b610bae83610b3a565b915060208301356fffffffffffffffffffffffffffffffff81168114610bd2578182fd5b809150509250929050565b600080600080600060808688031215610bf4578081fd5b853567ffffffffffffffff80821115610c0b578283fd5b818801915088601f830112610c1e578283fd5b813581811115610c2c578384fd5b8960208260051b8501011115610c40578384fd5b602092830197509550610c569188019050610b63565b9250610c6460408701610b3a565b9150610c7260608701610b3a565b90509295509295909350565b60006020808385031215610c90578182fd5b825167ffffffffffffffff80821115610ca7578384fd5b818501915085601f830112610cba578384fd5b815181811115610ccc57610ccc610fe8565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610d0f57610d0f610fe8565b604052828152858101935084860182860187018a1015610d2d578788fd5b8795505b83861015610d4f578051855260019590950194938601938601610d31565b5098975050505050505050565b60008060408385031215610d6e578182fd5b610d7783610b63565b9150610d8560208401610b3a565b90509250929050565b600080600060608486031215610da2578283fd5b610dab84610b63565b9250610db960208501610b3a565b9150610dc760408501610b3a565b90509250925092565b600060208284031215610de1578081fd5b5051919050565b60028110610e1f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610e435760208186018101518583015201610e29565b81811115610e515782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610e886020840186610de8565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610ee75773ffffffffffffffffffffffffffffffffffffffff610ed284610b3a565b16825260209283019290910190600101610eac565b509150610ef990506020830186610de8565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f6157835183529284019291840191600101610f45565b50909695505050505050565b602081016102578284610de8565b60408101610f898285610de8565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60608101610fba8286610de8565b73ffffffffffffffffffffffffffffffffffffffff8085166020840152808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bbc5e219e26c18dfaa4cb656330ecef452bb6555be4b948492ddf66d15ad5c9864736f6c63430008040033" ] ] \ No newline at end of file From 5aa1dd407256a882c6275cc6c7d306f3b582be84 Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Mon, 13 Jun 2022 11:55:21 -0400 Subject: [PATCH 4/6] change to call from staticcall --- contracts/incentives/Incentives.sol | 6 +++--- contracts/incentives/InterfaceIncentives.sol | 2 +- resources/bytecodes.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/contracts/incentives/Incentives.sol b/contracts/incentives/Incentives.sol index 60368ca..92617e2 100644 --- a/contracts/incentives/Incentives.sol +++ b/contracts/incentives/Incentives.sol @@ -55,7 +55,7 @@ contract Incentives is InterfaceIncentives { returns (bool) { require(amount != 0, "Incentives: amount is zero"); - (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("depositDexShare(address,address,uint128)", msg.sender, currencyId, amount)); + (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("depositDexShare(address,address,uint128)", msg.sender, currencyId, amount)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) @@ -76,7 +76,7 @@ contract Incentives is InterfaceIncentives { returns (bool) { require(amount != 0, "Incentives: amount is zero"); - (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("withdrawDexShare(address,address,uint128)", msg.sender, currencyId, amount)); + (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("withdrawDexShare(address,address,uint128)", msg.sender, currencyId, amount)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) @@ -95,7 +95,7 @@ contract Incentives is InterfaceIncentives { public override returns (bool) { - (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature("claimRewards(address,PoolId,address)", msg.sender, pool, poolCurrencyId)); + (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("claimRewards(address,PoolId,address)", msg.sender, pool, poolCurrencyId)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) diff --git a/contracts/incentives/InterfaceIncentives.sol b/contracts/incentives/InterfaceIncentives.sol index 3c4d02b..82b9a32 100644 --- a/contracts/incentives/InterfaceIncentives.sol +++ b/contracts/incentives/InterfaceIncentives.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.0; interface InterfaceIncentives { event DepositedShare(address indexed sender, address indexed currencyId, uint128 amount); event WithdrewShare(address indexed sender, address indexed currencyId, uint128 amount); - event ClaimedRewards(address indexed sender, PoolId pool, address indexed poolCurrencyId); + event ClaimedRewards(address indexed sender, PoolId indexed pool, address indexed poolCurrencyId); enum PoolId { LOANS, DEX } // Gets reward amount in `rewardCurrency` added per period diff --git a/resources/bytecodes.json b/resources/bytecodes.json index 52eec43..a45c70b 100644 --- a/resources/bytecodes.json +++ b/resources/bytecodes.json @@ -172,6 +172,6 @@ [ "Incentives", "0x0000000000000000000000000000000000000808", - "0x608060405234801561001057600080fd5b5061104d806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780636ccf80da146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610d5c565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610d8e565b61025d565b6100ce6100c9366004610d5c565b610384565b604051901515815260200161009f565b6100ce6100ec366004610b93565b6104fd565b6100956100ff366004610b72565b6106f8565b6100ce610112366004610b93565b610817565b61012a610125366004610bdd565b610a0d565b60405161009f9190610f29565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610f7b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610e23565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610dd0565b925050505b92915050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1686868660405160240161029093929190610fac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516103119190610e23565b600060405180830381855afa9150503d806000811461034c576040519150601f19603f3d011682016040523d82523d6000602084013e610351565b606091505b50915091506000821415610366573d60208201fd5b8080602001905181019061037a9190610dd0565b9695505050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff163386866040516024016103b793929190610e5c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516104389190610e23565b600060405180830381855afa9150503d8060008114610473576040519150601f19603f3d011682016040523d82523d6000602084013e610478565b606091505b5091509150600082141561048d573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b39876040516104ea9190610f6d565b60405180910390a3506001949350505050565b60006fffffffffffffffffffffffffffffffff821661057d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b27900000000000000000000000000000000000000000000000000000000179052516106479190610e23565b600060405180830381855afa9150503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b5091509150600082141561069c573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d8906020016104ea565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107a69190610e23565b600060405180830381855afa9150503d80600081146107e1576040519150601f19603f3d011682016040523d82523d6000602084013e6107e6565b606091505b509150915060008214156107fb573d60208201fd5b8080602001905181019061080f9190610dd0565b949350505050565b60006fffffffffffffffffffffffffffffffff8216610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f0000000000006044820152606401610574565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c000000000000000000000000000000000000000000000000000000001790525161095c9190610e23565b600060405180830381855afa9150503d8060008114610997576040519150601f19603f3d011682016040523d82523d6000602084013e61099c565b606091505b509150915060008214156109b1573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b906020016104ea565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff168888888888604051602401610a44959493929190610e99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610ac59190610e23565b600060405180830381855afa9150503d8060008114610b00576040519150601f19603f3d011682016040523d82523d6000602084013e610b05565b606091505b50915091506000821415610b1a573d60208201fd5b80806020019051810190610b2e9190610c7e565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5e57600080fd5b919050565b803560028110610b5e57600080fd5b600060208284031215610b83578081fd5b610b8c82610b3a565b9392505050565b60008060408385031215610ba5578081fd5b610bae83610b3a565b915060208301356fffffffffffffffffffffffffffffffff81168114610bd2578182fd5b809150509250929050565b600080600080600060808688031215610bf4578081fd5b853567ffffffffffffffff80821115610c0b578283fd5b818801915088601f830112610c1e578283fd5b813581811115610c2c578384fd5b8960208260051b8501011115610c40578384fd5b602092830197509550610c569188019050610b63565b9250610c6460408701610b3a565b9150610c7260608701610b3a565b90509295509295909350565b60006020808385031215610c90578182fd5b825167ffffffffffffffff80821115610ca7578384fd5b818501915085601f830112610cba578384fd5b815181811115610ccc57610ccc610fe8565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610d0f57610d0f610fe8565b604052828152858101935084860182860187018a1015610d2d578788fd5b8795505b83861015610d4f578051855260019590950194938601938601610d31565b5098975050505050505050565b60008060408385031215610d6e578182fd5b610d7783610b63565b9150610d8560208401610b3a565b90509250929050565b600080600060608486031215610da2578283fd5b610dab84610b63565b9250610db960208501610b3a565b9150610dc760408501610b3a565b90509250925092565b600060208284031215610de1578081fd5b5051919050565b60028110610e1f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610e435760208186018101518583015201610e29565b81811115610e515782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610e886020840186610de8565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610ee75773ffffffffffffffffffffffffffffffffffffffff610ed284610b3a565b16825260209283019290910190600101610eac565b509150610ef990506020830186610de8565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f6157835183529284019291840191600101610f45565b50909695505050505050565b602081016102578284610de8565b60408101610f898285610de8565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60608101610fba8286610de8565b73ffffffffffffffffffffffffffffffffffffffff8085166020840152808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bbc5e219e26c18dfaa4cb656330ecef452bb6555be4b948492ddf66d15ad5c9864736f6c63430008040033" + "0x608060405234801561001057600080fd5b50611068806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780636ccf80da146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610d85565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610db7565b61025b565b6100ce6100c9366004610d85565b610382565b604051901515815260200161009f565b6100ce6100ec366004610bbc565b610513565b6100956100ff366004610b9b565b61071f565b6100ce610112366004610bbc565b61083e565b61012a610125366004610c06565b610a36565b60405161009f9190610f52565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610f96565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610e4c565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610df9565b95945050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1686868660405160240161028e93929190610fc7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d000000000000000000000000000000000000000000000000000000001790525161030f9190610e4c565b600060405180830381855afa9150503d806000811461034a576040519150601f19603f3d011682016040523d82523d6000602084013e61034f565b606091505b50915091506000821415610364573d60208201fd5b808060200190518101906103789190610df9565b9695505050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff163386866040516024016103b593929190610e85565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516104369190610e4c565b6000604051808303816000865af19150503d8060008114610473576040519150601f19603f3d011682016040523d82523d6000602084013e610478565b606091505b5091509150600082141561048d573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168560018111156104dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60405133907fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b3990600090a4506001949350505050565b60006fffffffffffffffffffffffffffffffff8216610593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b279000000000000000000000000000000000000000000000000000000001790525161065d9190610e4c565b6000604051808303816000865af19150503d806000811461069a576040519150601f19603f3d011682016040523d82523d6000602084013e61069f565b606091505b509150915060008214156106b4573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d8906020015b60405180910390a3506001949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107cd9190610e4c565b600060405180830381855afa9150503d8060008114610808576040519150601f19603f3d011682016040523d82523d6000602084013e61080d565b606091505b50915091506000821415610822573d60208201fd5b808060200190518101906108369190610df9565b949350505050565b60006fffffffffffffffffffffffffffffffff82166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f000000000000604482015260640161058a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c00000000000000000000000000000000000000000000000000000000179052516109839190610e4c565b6000604051808303816000865af19150503d80600081146109c0576040519150601f19603f3d011682016040523d82523d6000602084013e6109c5565b606091505b509150915060008214156109da573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b9060200161070c565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff168888888888604051602401610a6d959493929190610ec2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610aee9190610e4c565b600060405180830381855afa9150503d8060008114610b29576040519150601f19603f3d011682016040523d82523d6000602084013e610b2e565b606091505b50915091506000821415610b43573d60208201fd5b80806020019051810190610b579190610ca7565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8757600080fd5b919050565b803560028110610b8757600080fd5b600060208284031215610bac578081fd5b610bb582610b63565b9392505050565b60008060408385031215610bce578081fd5b610bd783610b63565b915060208301356fffffffffffffffffffffffffffffffff81168114610bfb578182fd5b809150509250929050565b600080600080600060808688031215610c1d578081fd5b853567ffffffffffffffff80821115610c34578283fd5b818801915088601f830112610c47578283fd5b813581811115610c55578384fd5b8960208260051b8501011115610c69578384fd5b602092830197509550610c7f9188019050610b8c565b9250610c8d60408701610b63565b9150610c9b60608701610b63565b90509295509295909350565b60006020808385031215610cb9578182fd5b825167ffffffffffffffff80821115610cd0578384fd5b818501915085601f830112610ce3578384fd5b815181811115610cf557610cf5611003565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610d3857610d38611003565b604052828152858101935084860182860187018a1015610d56578788fd5b8795505b83861015610d78578051855260019590950194938601938601610d5a565b5098975050505050505050565b60008060408385031215610d97578182fd5b610da083610b8c565b9150610dae60208401610b63565b90509250929050565b600080600060608486031215610dcb578283fd5b610dd484610b8c565b9250610de260208501610b63565b9150610df060408501610b63565b90509250925092565b600060208284031215610e0a578081fd5b5051919050565b60028110610e48577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610e6c5760208186018101518583015201610e52565b81811115610e7a5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610eb16020840186610e11565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610f105773ffffffffffffffffffffffffffffffffffffffff610efb84610b63565b16825260209283019290910190600101610ed5565b509150610f2290506020830186610e11565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f8a57835183529284019291840191600101610f6e565b50909695505050505050565b60408101610fa48285610e11565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60608101610fd58286610e11565b73ffffffffffffffffffffffffffffffffffffffff8085166020840152808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122012259326cbce803fe202ad73733d2cefc14596befa077bd78125b4276470cfea64736f6c63430008040033" ] ] \ No newline at end of file From e435d643fcf6cebe651ff08595463e7ce728b8f7 Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Mon, 13 Jun 2022 17:17:28 -0400 Subject: [PATCH 5/6] uint128 to uint256 for balances --- contracts/incentives/Incentives.sol | 8 ++++---- contracts/incentives/InterfaceIncentives.sol | 8 ++++---- resources/bytecodes.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/contracts/incentives/Incentives.sol b/contracts/incentives/Incentives.sol index 92617e2..bd25381 100644 --- a/contracts/incentives/Incentives.sol +++ b/contracts/incentives/Incentives.sol @@ -49,13 +49,13 @@ contract Incentives is InterfaceIncentives { * @dev Stake LP token to add shares to PoolId::Dex * Returns a boolean value indicating whether the operation succeeded. */ - function depositDexShare(address currencyId, uint128 amount) + function depositDexShare(address currencyId, uint256 amount) public override returns (bool) { require(amount != 0, "Incentives: amount is zero"); - (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("depositDexShare(address,address,uint128)", msg.sender, currencyId, amount)); + (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("depositDexShare(address,address,uint256)", msg.sender, currencyId, amount)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) @@ -70,13 +70,13 @@ contract Incentives is InterfaceIncentives { * @dev Unstake LP token to remove shares from PoolId::Dex * Returns a boolean value indicating whether the operation succeeded. */ - function withdrawDexShare(address currencyId, uint128 amount) + function withdrawDexShare(address currencyId, uint256 amount) public override returns (bool) { require(amount != 0, "Incentives: amount is zero"); - (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("withdrawDexShare(address,address,uint128)", msg.sender, currencyId, amount)); + (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature("withdrawDexShare(address,address,uint256)", msg.sender, currencyId, amount)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) diff --git a/contracts/incentives/InterfaceIncentives.sol b/contracts/incentives/InterfaceIncentives.sol index 82b9a32..9752718 100644 --- a/contracts/incentives/InterfaceIncentives.sol +++ b/contracts/incentives/InterfaceIncentives.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; interface InterfaceIncentives { - event DepositedShare(address indexed sender, address indexed currencyId, uint128 amount); - event WithdrewShare(address indexed sender, address indexed currencyId, uint128 amount); + event DepositedShare(address indexed sender, address indexed currencyId, uint256 amount); + event WithdrewShare(address indexed sender, address indexed currencyId, uint256 amount); event ClaimedRewards(address indexed sender, PoolId indexed pool, address indexed poolCurrencyId); enum PoolId { LOANS, DEX } @@ -18,11 +18,11 @@ interface InterfaceIncentives { // Stake LP token to add shares to PoolId::Dex // Returns a boolean value indicating whether the operation succeeded. - function depositDexShare(address currencyId, uint128 amount) external returns (bool); + function depositDexShare(address currencyId, uint256 amount) external returns (bool); // Unstake LP token to remove shares from PoolId::Dex // Returns a boolean value indicating whether the operation succeeded. - function withdrawDexShare(address currencyId, uint128 amount) external returns (bool); + function withdrawDexShare(address currencyId, uint256 amount) external returns (bool); // Claim all avalible multi currencies rewards for specific PoolId // Returns a boolean value indicating whether the operation succeeded. diff --git a/resources/bytecodes.json b/resources/bytecodes.json index a45c70b..5948cb2 100644 --- a/resources/bytecodes.json +++ b/resources/bytecodes.json @@ -172,6 +172,6 @@ [ "Incentives", "0x0000000000000000000000000000000000000808", - "0x608060405234801561001057600080fd5b50611068806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ea7c4fa1161005b5780637ea7c4fa146100de5780637ec93136146100f1578063a154031614610104578063a4a7ade21461011757600080fd5b806310b8087f146100825780636ccf80da146100a85780636ff45b8b146100bb575b600080fd5b610095610090366004610d85565b610137565b6040519081526020015b60405180910390f35b6100956100b6366004610db7565b61025b565b6100ce6100c9366004610d85565b610382565b604051901515815260200161009f565b6100ce6100ec366004610bbc565b610513565b6100956100ff366004610b9b565b61071f565b6100ce610112366004610bbc565b61083e565b61012a610125366004610c06565b610a36565b60405161009f9190610f52565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff168585604051602401610168929190610f96565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516101e99190610e4c565b600060405180830381855afa9150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b5091509150600082141561023e573d60208201fd5b808060200190518101906102529190610df9565b95945050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1686868660405160240161028e93929190610fc7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d000000000000000000000000000000000000000000000000000000001790525161030f9190610e4c565b600060405180830381855afa9150503d806000811461034a576040519150601f19603f3d011682016040523d82523d6000602084013e61034f565b606091505b50915091506000821415610364573d60208201fd5b808060200190518101906103789190610df9565b9695505050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff163386866040516024016103b593929190610e85565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516104369190610e4c565b6000604051808303816000865af19150503d8060008114610473576040519150601f19603f3d011682016040523d82523d6000602084013e610478565b606091505b5091509150600082141561048d573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168560018111156104dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60405133907fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b3990600090a4506001949350505050565b60006fffffffffffffffffffffffffffffffff8216610593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8e78b279000000000000000000000000000000000000000000000000000000001790525161065d9190610e4c565b6000604051808303816000865af19150503d806000811461069a576040519150601f19603f3d011682016040523d82523d6000602084013e61069f565b606091505b509150915060008214156106b4573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907fdb53ba89b72245956f6978a92f6317d2b7191457c6010a7683edb0c417ed94d8906020015b60405180910390a3506001949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec9313600000000000000000000000000000000000000000000000000000000179052516107cd9190610e4c565b600060405180830381855afa9150503d8060008114610808576040519150601f19603f3d011682016040523d82523d6000602084013e61080d565b606091505b50915091506000821415610822573d60208201fd5b808060200190518101906108369190610df9565b949350505050565b60006fffffffffffffffffffffffffffffffff82166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f000000000000604482015260640161058a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526fffffffffffffffffffffffffffffffff83166064820152600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6b1c730c00000000000000000000000000000000000000000000000000000000179052516109839190610e4c565b6000604051808303816000865af19150503d80600081146109c0576040519150601f19603f3d011682016040523d82523d6000602084013e6109c5565b606091505b509150915060008214156109da573d60208201fd5b6040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169033907f76b47b93234e80c13f9c383b36e643a4cf9c403a3a5324f827b388ca8910dd6b9060200161070c565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff168888888888604051602401610a6d959493929190610ec2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610aee9190610e4c565b600060405180830381855afa9150503d8060008114610b29576040519150601f19603f3d011682016040523d82523d6000602084013e610b2e565b606091505b50915091506000821415610b43573d60208201fd5b80806020019051810190610b579190610ca7565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8757600080fd5b919050565b803560028110610b8757600080fd5b600060208284031215610bac578081fd5b610bb582610b63565b9392505050565b60008060408385031215610bce578081fd5b610bd783610b63565b915060208301356fffffffffffffffffffffffffffffffff81168114610bfb578182fd5b809150509250929050565b600080600080600060808688031215610c1d578081fd5b853567ffffffffffffffff80821115610c34578283fd5b818801915088601f830112610c47578283fd5b813581811115610c55578384fd5b8960208260051b8501011115610c69578384fd5b602092830197509550610c7f9188019050610b8c565b9250610c8d60408701610b63565b9150610c9b60608701610b63565b90509295509295909350565b60006020808385031215610cb9578182fd5b825167ffffffffffffffff80821115610cd0578384fd5b818501915085601f830112610ce3578384fd5b815181811115610cf557610cf5611003565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610d3857610d38611003565b604052828152858101935084860182860187018a1015610d56578788fd5b8795505b83861015610d78578051855260019590950194938601938601610d5a565b5098975050505050505050565b60008060408385031215610d97578182fd5b610da083610b8c565b9150610dae60208401610b63565b90509250929050565b600080600060608486031215610dcb578283fd5b610dd484610b8c565b9250610de260208501610b63565b9150610df060408501610b63565b90509250925092565b600060208284031215610e0a578081fd5b5051919050565b60028110610e48577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610e6c5760208186018101518583015201610e52565b81811115610e7a5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610eb16020840186610e11565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610f105773ffffffffffffffffffffffffffffffffffffffff610efb84610b63565b16825260209283019290910190600101610ed5565b509150610f2290506020830186610e11565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f8a57835183529284019291840191600101610f6e565b50909695505050505050565b60408101610fa48285610e11565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60608101610fd58286610e11565b73ffffffffffffffffffffffffffffffffffffffff8085166020840152808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122012259326cbce803fe202ad73733d2cefc14596befa077bd78125b4276470cfea64736f6c63430008040033" + "0x608060405234801561001057600080fd5b50610fdd806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636ccf80da1161005b5780636ccf80da146100de5780636ff45b8b146100f15780637ec9313614610104578063a4a7ade21461011757600080fd5b80630720ad711461008257806310b8087f146100aa5780632b4b3abb146100cb575b600080fd5b610095610090366004610b52565b610137565b60405190151581526020015b60405180910390f35b6100bd6100b8366004610cfa565b61030e565b6040519081526020016100a1565b6100956100d9366004610b52565b610432565b6100bd6100ec366004610d2c565b6105f5565b6100956100ff366004610cfa565b61071c565b6100bd610112366004610b31565b6108ad565b61012a610125366004610b7b565b6109cc565b6040516100a19190610ec7565b6000816101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f00000000000060448201526064015b60405180910390fd5b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8416604482015260648101839052600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc17ca2a6000000000000000000000000000000000000000000000000000000001790525161025e9190610dc1565b6000604051808303816000865af19150503d806000811461029b576040519150601f19603f3d011682016040523d82523d6000602084013e6102a0565b606091505b509150915060008214156102b5573d60208201fd5b60405184815273ffffffffffffffffffffffffffffffffffffffff86169033907f45f78f5c760c3f28245fbb46e318d554fca9c064767f9a6f852daf0035c21b92906020015b60405180910390a3506001949350505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff16858560405160240161033f929190610f0b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa2e2fc8e00000000000000000000000000000000000000000000000000000000179052516103c09190610dc1565b600060405180830381855afa9150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b50915091506000821415610415573d60208201fd5b808060200190518101906104299190610d6e565b95945050505050565b60008161049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e63656e74697665733a20616d6f756e74206973207a65726f000000000000604482015260640161019c565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8416604482015260648101839052600090819061040a90608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdae3ac6900000000000000000000000000000000000000000000000000000000179052516105549190610dc1565b6000604051808303816000865af19150503d8060008114610591576040519150601f19603f3d011682016040523d82523d6000602084013e610596565b606091505b509150915060008214156105ab573d60208201fd5b60405184815273ffffffffffffffffffffffffffffffffffffffff86169033907fd766e42510e7730861ab6096248fb43982df3017d6119d41482e18cb79a7dadb906020016102fb565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1686868660405160240161062893929190610f3c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7469000d00000000000000000000000000000000000000000000000000000000179052516106a99190610dc1565b600060405180830381855afa9150503d80600081146106e4576040519150601f19603f3d011682016040523d82523d6000602084013e6106e9565b606091505b509150915060008214156106fe573d60208201fd5b808060200190518101906107129190610d6e565b9695505050505050565b600080600061040a73ffffffffffffffffffffffffffffffffffffffff1633868660405160240161074f93929190610dfa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe12eab9b00000000000000000000000000000000000000000000000000000000179052516107d09190610dc1565b6000604051808303816000865af19150503d806000811461080d576040519150601f19603f3d011682016040523d82523d6000602084013e610812565b606091505b50915091506000821415610827573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff16856001811115610877577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60405133907fc14c8e20e4488520e8daf6686d64ff040c85a6f6a739393ce599a92351c44b3990600090a4506001949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff821660248201526000908190819061040a90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7ec93136000000000000000000000000000000000000000000000000000000001790525161095b9190610dc1565b600060405180830381855afa9150503d8060008114610996576040519150601f19603f3d011682016040523d82523d6000602084013e61099b565b606091505b509150915060008214156109b0573d60208201fd5b808060200190518101906109c49190610d6e565b949350505050565b606060008061040a73ffffffffffffffffffffffffffffffffffffffff168888888888604051602401610a03959493929190610e37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0eb797b10000000000000000000000000000000000000000000000000000000017905251610a849190610dc1565b600060405180830381855afa9150503d8060008114610abf576040519150601f19603f3d011682016040523d82523d6000602084013e610ac4565b606091505b50915091506000821415610ad9573d60208201fd5b80806020019051810190610aed9190610c1c565b98975050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b1d57600080fd5b919050565b803560028110610b1d57600080fd5b600060208284031215610b42578081fd5b610b4b82610af9565b9392505050565b60008060408385031215610b64578081fd5b610b6d83610af9565b946020939093013593505050565b600080600080600060808688031215610b92578081fd5b853567ffffffffffffffff80821115610ba9578283fd5b818801915088601f830112610bbc578283fd5b813581811115610bca578384fd5b8960208260051b8501011115610bde578384fd5b602092830197509550610bf49188019050610b22565b9250610c0260408701610af9565b9150610c1060608701610af9565b90509295509295909350565b60006020808385031215610c2e578182fd5b825167ffffffffffffffff80821115610c45578384fd5b818501915085601f830112610c58578384fd5b815181811115610c6a57610c6a610f78565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610cad57610cad610f78565b604052828152858101935084860182860187018a1015610ccb578788fd5b8795505b83861015610ced578051855260019590950194938601938601610ccf565b5098975050505050505050565b60008060408385031215610d0c578182fd5b610d1583610b22565b9150610d2360208401610af9565b90509250929050565b600080600060608486031215610d40578283fd5b610d4984610b22565b9250610d5760208501610af9565b9150610d6560408501610af9565b90509250925092565b600060208284031215610d7f578081fd5b5051919050565b60028110610dbd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60008251815b81811015610de15760208186018101518583015201610dc7565b81811115610def5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff84811682526060820190610e266020840186610d86565b808416604084015250949350505050565b6080808252810185905260008660a08301825b88811015610e855773ffffffffffffffffffffffffffffffffffffffff610e7084610af9565b16825260209283019290910190600101610e4a565b509150610e9790506020830186610d86565b73ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610eff57835183529284019291840191600101610ee3565b50909695505050505050565b60408101610f198285610d86565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60608101610f4a8286610d86565b73ffffffffffffffffffffffffffffffffffffffff8085166020840152808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212209f1e3b5d8118ce78727547cfd8816a1a091a4701ce401d687a80b326b63acf2464736f6c63430008040033" ] ] \ No newline at end of file From e7834b1ede3dd3f122d4814aa859a446666121ac Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Thu, 16 Jun 2022 12:53:34 -0400 Subject: [PATCH 6/6] update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 702afad..1d66299 100644 --- a/README.md +++ b/README.md @@ -267,11 +267,11 @@ function getDexRewardRate(address currencyId) external view returns (uint256); // Stake LP token to add shares to PoolId::Dex // Returns a boolean value indicating whether the operation succeeded. -function depositDexShare(address currencyId, uint128 amount) external returns (bool); +function depositDexShare(address currencyId, uint256 amount) external returns (bool); // Unstake LP token to remove shares from PoolId::Dex // Returns a boolean value indicating whether the operation succeeded. -function withdrawDexShare(address currencyId, uint128 amount) external returns (bool); +function withdrawDexShare(address currencyId, uint256 amount) external returns (bool); // Claim all avalible multi currencies rewards for specific PoolId // Returns a boolean value indicating whether the operation succeeded.