Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
654b0f0
Add useCollateral check to repay function
barrasso Jul 12, 2021
dc3c453
WIP: replace repay with repayWithCollateral and add repayWithCollater…
barrasso Jul 13, 2021
92e7073
implement repay with collateral function
barrasso Jul 18, 2021
eaf4d8a
minor update to comments
barrasso Jul 18, 2021
2cfbc99
remove getRewards function from shorts contract
barrasso Jul 18, 2021
bae2bad
decrease require string sizes
barrasso Jul 18, 2021
1d45dda
use collateral manager interface directly
barrasso Jul 18, 2021
4cf0265
add collateral utility contract
barrasso Jul 21, 2021
c8a5ed7
update deploy scripts for util contract
barrasso Jul 21, 2021
a9c320d
update test setup
barrasso Jul 21, 2021
9893b0f
update deploy config
barrasso Jul 21, 2021
21daa47
update shorting rewards unit test
barrasso Jul 22, 2021
ba0b548
fix util test setup
barrasso Jul 22, 2021
d0a27ca
initial settings refactor
barrasso Jul 21, 2021
baa4b40
WIP: Move loan storage from external state pattern to internal mapping
barrasso Aug 5, 2021
802620f
Move accrueInterest logic to collateral manager
barrasso Aug 6, 2021
a18e8c9
Merge branch 'refactor-settings' into meb-short-refactor
barrasso Aug 6, 2021
5cb298f
Update SystemSettings contract and fix mutative functions test
barrasso Aug 6, 2021
54817cc
Update Collateral mutative function test
barrasso Aug 6, 2021
2fdb794
Add missing functions to conform to manager interface
barrasso Aug 6, 2021
9ff04fc
wip fix Collateral Manager tests
barrasso Aug 10, 2021
abeacf5
Update ovm deployment config
barrasso Aug 10, 2021
0874ae7
Update deploy parameter factory
barrasso Aug 10, 2021
236a8b5
Update remaining deployment params
barrasso Aug 10, 2021
0d46b35
Remove empty collateral manager
barrasso Aug 10, 2021
4a1c03d
Update params
barrasso Aug 11, 2021
17ac19c
Update SystemSettings interface
barrasso Aug 12, 2021
9450ad3
Update deployment config and checks
barrasso Aug 12, 2021
d795a8a
Update CollateralManager to remove iSynth dependencies
barrasso Aug 12, 2021
3aeb59a
Merge branch 'develop' into meb-short-refactor
barrasso Aug 13, 2021
efd883d
Update collateral manager interface
barrasso Aug 13, 2021
5ce7f96
Update CI config -revert this
barrasso Aug 13, 2021
95d46c0
Fix deploy bug
barrasso Aug 13, 2021
4b93f7d
Fix manager deploy config
barrasso Aug 13, 2021
1a4ee30
Fix set issue rate config for other collaterals
barrasso Aug 13, 2021
a8c963b
Fix ovm ignore sorting
barrasso Aug 13, 2021
298c7a6
Revert ci config changes
barrasso Aug 13, 2021
41ab2bb
Add nomiclabs/ethereumjs-vm dependency for smock
barrasso Aug 13, 2021
1bd088e
Merge branch 'develop' into meb-short-refactor
barrasso Aug 14, 2021
3d724a6
Update package-lock.json
barrasso Aug 14, 2021
cd51ff0
Remove collateral state reference from setup.js
barrasso Aug 14, 2021
e552864
Update Collateral and SystemSettings contracts
barrasso Aug 14, 2021
b38bf82
Update CollateralShort.sol
barrasso Aug 15, 2021
119aa47
Fix close loan and collateral tests
barrasso Aug 15, 2021
e36d85e
Fix CollateralUtil tests
barrasso Aug 15, 2021
bb7eedf
Add repay back to CollateralShort
barrasso Aug 15, 2021
0c8d618
Update SystemSettings contract
barrasso Aug 16, 2021
a067982
Merge branch 'develop' into meb-short-refactor
barrasso Aug 16, 2021
4d0b45d
Merge branch 'develop' into meb-short-refactor
barrasso Aug 16, 2021
df469d4
Merge branch 'meb-short-refactor' of https://github.com/Synthetixio/s…
barrasso Aug 16, 2021
97c14c6
Minor update to SystemSettings require message
barrasso Aug 16, 2021
72316c5
Merge branch 'develop' into meb-short-refactor
barrasso Aug 18, 2021
a80864a
Update package.json
barrasso Aug 18, 2021
0d0a03e
Merge branch 'meb-short-refactor' into fix-collateral-tests
barrasso Aug 18, 2021
0901954
Update configure-loans.js
barrasso Aug 18, 2021
f599df4
Merge branch 'develop' into meb-short-refactor
barrasso Aug 18, 2021
d0e125c
Merge branch 'meb-short-refactor' into fix-collateral-tests
barrasso Aug 18, 2021
9a5a3f6
Fix DebtCache tests
barrasso Aug 18, 2021
5f7d80b
WIP fix tests
barrasso Aug 18, 2021
8c501ee
Update package-lock.json
barrasso Aug 18, 2021
b0fbd21
Fix set interaction delay config step
barrasso Aug 18, 2021
68370fc
Fix short integration test
barrasso Aug 18, 2021
2b00b50
Fix CollateralManager tests
barrasso Aug 19, 2021
f471024
Fix CollateralManager tests
barrasso Aug 19, 2021
aae88fd
Fix package diff
barrasso Aug 19, 2021
1419760
Fix ShortingRewards tests
barrasso Aug 20, 2021
b40f40a
Update collateral contracts. Fix cerc20 and util tests.
barrasso Aug 20, 2021
a8102a1
Merge branch 'develop' into meb-short-refactor
barrasso Aug 20, 2021
2d343e4
Update CollateralEth contract and interface
barrasso Aug 20, 2021
fdaceb9
Merge branch 'meb-short-refactor' of https://github.com/Synthetixio/s…
barrasso Aug 20, 2021
d916274
Fix SystemSettings contract and tests
barrasso Aug 22, 2021
1a0a57e
Move setter events to SystemSettings
barrasso Aug 22, 2021
05b0126
Update CollateralManager post deploy task
barrasso Aug 23, 2021
6a074d1
Remove redundant require
barrasso Aug 24, 2021
81b95e0
Update collateral contract and tests
barrasso Aug 24, 2021
fce7205
Update internal functions
barrasso Aug 24, 2021
669e3f7
Merge branch 'develop' into meb-short-refactor
barrasso Aug 24, 2021
e15eed0
Update Collateral comments
barrasso Aug 24, 2021
23d1496
Fix SynthsBTC local-ovm deployment
barrasso Aug 24, 2021
3299b04
Merge branch 'meb-short-refactor' of https://github.com/Synthetixio/s…
barrasso Aug 24, 2021
a4ba31a
Fix Collateral.sol
barrasso Aug 24, 2021
1595b43
Fix CollateralEth tests
barrasso Aug 24, 2021
5d254bd
Merge branch 'develop' into meb-short-refactor
barrasso Aug 25, 2021
4de01f7
Fix last few tests
barrasso Aug 25, 2021
618618a
Update CollateralManager.sol
barrasso Aug 25, 2021
0584394
Add SIP-135
barrasso Aug 25, 2021
2098745
Merge branch 'develop' into meb-short-refactor
barrasso Aug 25, 2021
583be2d
Remove redundant isynth mapping
barrasso Aug 27, 2021
91de78d
Fix DebtCache tests
barrasso Aug 27, 2021
0919573
Update releases.json
barrasso Aug 27, 2021
b29501f
Update releases.json
barrasso Aug 27, 2021
ce31cf7
Update Collateral.sol and fix cerc20 tests
barrasso Aug 27, 2021
c8c0d5b
Minor test update
barrasso Aug 28, 2021
dbeff85
Update Collateral and CollateralShort contracts
barrasso Aug 28, 2021
47be591
Fix CollateralShort tests
barrasso Aug 28, 2021
2690b53
Remove internal naming redundancy
barrasso Aug 30, 2021
60a6813
Update setMinCratio precision. Minor changes to CollateralEth.js
barrasso Aug 30, 2021
5873beb
Fix CollateralEth.js
barrasso Aug 30, 2021
15d2dd1
Remove Collateral from sources
barrasso Aug 30, 2021
6f67668
Fix fork tests. Add loans util
barrasso Aug 31, 2021
8b9b6ec
Update loans util
barrasso Aug 31, 2021
e239050
Simplify loan util
barrasso Aug 31, 2021
2db88d4
Fix short integration tests on fork
barrasso Aug 31, 2021
988e997
Revert changes to exchange.behavior.js
barrasso Aug 31, 2021
6da4a64
Minor update to loans util
barrasso Aug 31, 2021
93476f1
Update Collateral. Resolve JJ comments.
barrasso Sep 1, 2021
a1bc6d4
Add close loan if repaid in full
barrasso Sep 2, 2021
7d76880
Update CollateralShort tests
barrasso Sep 2, 2021
b9e4bed
Remove redundant boolean
barrasso Sep 2, 2021
0ffcfc1
Add recordLoanAsClosed internal function
barrasso Sep 3, 2021
da1e134
Merge branch 'develop' into meb-short-refactor
barrasso Sep 3, 2021
ffe8f0e
Update local-ovm/synths.json
barrasso Sep 3, 2021
ab14e63
Update synths.json
barrasso Sep 3, 2021
29cc2f5
Remove auto close if repaid in full
barrasso Sep 3, 2021
6c5f56b
Test CI: Update synths.json
barrasso Sep 3, 2021
64048b3
Add functions for Lyra
barrasso Sep 4, 2021
13a7f73
Update CollateralShort.js
Sep 5, 2021
46e510d
Merge branch 'develop' of https://github.com/Synthetixio/synthetix in…
Sep 5, 2021
9a78c64
Merge branch 'develop' into meb-short-refactor
barrasso Sep 6, 2021
fa160ff
Add closeWithCollateral to SIP-135 (#1496)
barrasso Sep 8, 2021
f7818f5
Fix merge conflicts
Sep 8, 2021
17c6f4c
Merge branch 'develop' of https://github.com/Synthetixio/synthetix in…
barrasso Sep 8, 2021
58c2b71
Fix l2 integration tests
barrasso Sep 10, 2021
36c93d3
Merge branch 'develop' into meb-short-refactor
Sep 16, 2021
f0d2b13
Merge branch 'develop' into meb-short-refactor
barrasso Sep 16, 2021
c05d20e
SIP-135: audit fixes (#1502)
barrasso Sep 16, 2021
de8dc9b
Merge branch 'develop' into meb-short-refactor
Sep 20, 2021
3f08fbb
Merge branch 'develop' into meb-short-refactor
Sep 21, 2021
a4d1631
Enforce skew limit max (#1512)
barrasso Sep 21, 2021
9a02d30
Update synths.json
barrasso Sep 21, 2021
60b1df4
Update synths.json
barrasso Sep 21, 2021
60e194d
Update releases.json
barrasso Sep 21, 2021
8b2386f
Update releases.json
barrasso Sep 21, 2021
0604893
Merge branch 'develop' into meb-short-refactor
barrasso Sep 22, 2021
e830cfc
Update CollateralShort.js
barrasso Sep 22, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
598 changes: 245 additions & 353 deletions contracts/Collateral.sol

Large diffs are not rendered by default.

45 changes: 20 additions & 25 deletions contracts/CollateralErc20.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ pragma experimental ABIEncoderV2;
import "./Collateral.sol";
import "./interfaces/ICollateralErc20.sol";

// Internal references
import "./CollateralState.sol";
import "./interfaces/IERC20.sol";

// This contract handles the specific ERC20 implementation details of managing a loan.
contract CollateralErc20 is ICollateralErc20, Collateral {
// The underlying asset for this ERC20 collateral
Expand All @@ -18,7 +14,6 @@ contract CollateralErc20 is ICollateralErc20, Collateral {
uint public underlyingContractDecimals;

constructor(
CollateralState _state,
address _owner,
ICollateralManager _manager,
address _resolver,
Expand All @@ -27,7 +22,7 @@ contract CollateralErc20 is ICollateralErc20, Collateral {
uint _minCollateral,
address _underlyingContract,
uint _underlyingDecimals
) public Collateral(_state, _owner, _manager, _resolver, _collateralKey, _minCratio, _minCollateral) {
) public Collateral(_owner, _manager, _resolver, _collateralKey, _minCratio, _minCollateral) {
underlyingContract = _underlyingContract;

underlyingContractDecimals = _underlyingDecimals;
Expand All @@ -37,77 +32,77 @@ contract CollateralErc20 is ICollateralErc20, Collateral {
uint collateral,
uint amount,
bytes32 currency
) external {
) external returns (uint id) {
require(collateral <= IERC20(underlyingContract).allowance(msg.sender, address(this)), "Allowance not high enough");

// only transfer the actual collateral
IERC20(underlyingContract).transferFrom(msg.sender, address(this), collateral);
IERC20(underlyingContract).safeTransferFrom(msg.sender, address(this), collateral);

// scale up before entering the system.
uint scaledCollateral = scaleUpCollateral(collateral);

openInternal(scaledCollateral, amount, currency, false);
id = _open(scaledCollateral, amount, currency, false);
}

function close(uint id) external {
uint collateral = closeInternal(msg.sender, id);
function close(uint id) external returns (uint amount, uint collateral) {
(amount, collateral) = _close(msg.sender, id);

// scale down before transferring back.
uint scaledCollateral = scaleDownCollateral(collateral);

IERC20(underlyingContract).transfer(msg.sender, scaledCollateral);
IERC20(underlyingContract).safeTransfer(msg.sender, scaledCollateral);
}

function deposit(
address borrower,
uint id,
uint amount
) external {
) external returns (uint principal, uint collateral) {
require(amount <= IERC20(underlyingContract).allowance(msg.sender, address(this)), "Allowance not high enough");

IERC20(underlyingContract).transferFrom(msg.sender, address(this), amount);
IERC20(underlyingContract).safeTransferFrom(msg.sender, address(this), amount);

// scale up before entering the system.
uint scaledAmount = scaleUpCollateral(amount);

depositInternal(borrower, id, scaledAmount);
(principal, collateral) = _deposit(borrower, id, scaledAmount);
}

function withdraw(uint id, uint amount) external {
function withdraw(uint id, uint amount) external returns (uint principal, uint collateral) {
// scale up before entering the system.
uint scaledAmount = scaleUpCollateral(amount);

uint withdrawnAmount = withdrawInternal(id, scaledAmount);
(principal, collateral) = _withdraw(id, scaledAmount);

// scale down before transferring back.
uint scaledWithdraw = scaleDownCollateral(withdrawnAmount);
uint scaledWithdraw = scaleDownCollateral(collateral);

IERC20(underlyingContract).transfer(msg.sender, scaledWithdraw);
IERC20(underlyingContract).safeTransfer(msg.sender, scaledWithdraw);
}

function repay(
address borrower,
uint id,
uint amount
) external {
repayInternal(borrower, msg.sender, id, amount);
) external returns (uint principal, uint collateral) {
(principal, collateral) = _repay(borrower, msg.sender, id, amount);
}

function draw(uint id, uint amount) external {
drawInternal(id, amount);
function draw(uint id, uint amount) external returns (uint principal, uint collateral) {
(principal, collateral) = _draw(id, amount);
}

function liquidate(
address borrower,
uint id,
uint amount
) external {
uint collateralLiquidated = liquidateInternal(borrower, id, amount);
uint collateralLiquidated = _liquidate(borrower, id, amount);

// scale down before transferring back.
uint scaledCollateral = scaleDownCollateral(collateralLiquidated);

IERC20(underlyingContract).transfer(msg.sender, scaledCollateral);
IERC20(underlyingContract).safeTransfer(msg.sender, scaledCollateral);
}

function scaleUpCollateral(uint collateral) public view returns (uint scaledUp) {
Expand Down
34 changes: 15 additions & 19 deletions contracts/CollateralEth.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,61 +7,57 @@ import "./Collateral.sol";
import "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol";
import "./interfaces/ICollateralEth.sol";

// Internal references
import "./CollateralState.sol";

// This contract handles the payable aspects of eth loans.
contract CollateralEth is Collateral, ICollateralEth, ReentrancyGuard {
mapping(address => uint) public pendingWithdrawals;

constructor(
CollateralState _state,
address _owner,
ICollateralManager _manager,
address _resolver,
bytes32 _collateralKey,
uint _minCratio,
uint _minCollateral
) public Collateral(_state, _owner, _manager, _resolver, _collateralKey, _minCratio, _minCollateral) {}
) public Collateral(_owner, _manager, _resolver, _collateralKey, _minCratio, _minCollateral) {}

function open(uint amount, bytes32 currency) external payable {
openInternal(msg.value, amount, currency, false);
function open(uint amount, bytes32 currency) external payable returns (uint id) {
id = _open(msg.value, amount, currency, false);
}

function close(uint id) external {
uint collateral = closeInternal(msg.sender, id);
function close(uint id) external returns (uint amount, uint collateral) {
(amount, collateral) = _close(msg.sender, id);

pendingWithdrawals[msg.sender] = pendingWithdrawals[msg.sender].add(collateral);
}

function deposit(address borrower, uint id) external payable {
depositInternal(borrower, id, msg.value);
function deposit(address borrower, uint id) external payable returns (uint principal, uint collateral) {
(principal, collateral) = _deposit(borrower, id, msg.value);
}

function withdraw(uint id, uint withdrawAmount) external {
uint amount = withdrawInternal(id, withdrawAmount);
function withdraw(uint id, uint amount) external returns (uint principal, uint collateral) {
(principal, collateral) = _withdraw(id, amount);

pendingWithdrawals[msg.sender] = pendingWithdrawals[msg.sender].add(amount);
}

function repay(
address account,
address borrower,
uint id,
uint amount
) external {
repayInternal(account, msg.sender, id, amount);
) external returns (uint principal, uint collateral) {
(principal, collateral) = _repay(borrower, msg.sender, id, amount);
}

function draw(uint id, uint amount) external {
drawInternal(id, amount);
function draw(uint id, uint amount) external returns (uint principal, uint collateral) {
(principal, collateral) = _draw(id, amount);
}

function liquidate(
address borrower,
uint id,
uint amount
) external {
uint collateralLiquidated = liquidateInternal(borrower, id, amount);
uint collateralLiquidated = _liquidate(borrower, id, amount);

pendingWithdrawals[msg.sender] = pendingWithdrawals[msg.sender].add(collateralLiquidated);
}
Expand Down
Loading