@@ -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