Skip to content

Commit 9ce3a6c

Browse files
committed
wip
1 parent bad374a commit 9ce3a6c

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/LayerCreditLens.sol

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ contract LayerCreditLens {
1515
// flags(col0External, col1External, col2External), col0, col1[0:8]
1616
// word3: 12 + 20
1717
// col1[8:20], col2
18-
function genCompressedBond(address layerCredit, address bond) internal view returns (uint256 w0, uint256 w1, uint256 w2, uint256 w3) {
18+
// word4: 20
19+
// asset
20+
function genCompressedBond(address layerCredit, address bond) internal view returns (uint256 w0, uint256 w1, uint256 w2, uint256 w3, uint256 w4) {
1921
unchecked {
2022
LayerCredit.BondState memory b = LayerCredit(layerCredit).getBond(bond);
2123

@@ -31,7 +33,7 @@ contract LayerCreditLens {
3133
w0 = (w0 << 40) | b.termStart;
3234
}
3335

34-
if (b.state == 0) return (w0, w1, w2, w3);
36+
if (b.state == 0) return (w0, w1, w2, w3, w4);
3537

3638
IEVault v = IEVault(bond);
3739

@@ -58,33 +60,38 @@ contract LayerCreditLens {
5860

5961
if (ltvs.length >= 1) {
6062
if (isEscrow(layerCredit, ltvs[0])) collateralFlags |= 4;
61-
w2 |= uint256(uint160(ltvs[0])) << (8*8);
63+
address col0 = IEVault(ltvs[0]).asset();
64+
w2 |= uint256(uint160(col0)) << (8*8);
6265
}
6366

6467
if (ltvs.length >= 2) {
6568
if (isEscrow(layerCredit, ltvs[1])) collateralFlags |= 2;
66-
w2 |= uint256(uint160(ltvs[1])) >> (12*8);
67-
w3 |= uint256(uint160(ltvs[1])) << (20*8);
69+
address col1 = IEVault(ltvs[1]).asset();
70+
w2 |= uint256(uint160(col1)) >> (12*8);
71+
w3 |= uint256(uint160(col1)) << (20*8);
6872
}
6973

7074
if (ltvs.length >= 2) {
7175
if (isEscrow(layerCredit, ltvs[2])) collateralFlags |= 1;
72-
w3 |= uint256(uint160(ltvs[2]));
76+
address col2 = IEVault(ltvs[2]).asset();
77+
w3 |= uint256(uint160(col2));
7378
}
7479

7580
w2 |= collateralFlags << (28*8);
7681
}
82+
83+
w4 = uint256(uint160(v.asset()));
7784
}
7885
}
7986

8087
function getAllActiveBonds(address layerCredit) external view returns (uint256[] memory output) {
8188
address[] memory bonds = LayerCredit(layerCredit).getActiveBonds(0, type(uint256).max);
82-
output = new uint256[](bonds.length * 4);
89+
output = new uint256[](bonds.length * 5);
8390

8491
uint256 offset;
8592
for (uint256 i; i < bonds.length; ++i) {
86-
(output[offset], output[offset+1], output[offset+2], output[offset+3]) = genCompressedBond(layerCredit, bonds[i]);
87-
offset += 4;
93+
(output[offset], output[offset+1], output[offset+2], output[offset+3], output[offset+4]) = genCompressedBond(layerCredit, bonds[i]);
94+
offset += 5;
8895
}
8996
}
9097

0 commit comments

Comments
 (0)