Skip to content

Commit 12f94ed

Browse files
committed
fix: use lib for encoding / decoding
1 parent e84c00d commit 12f94ed

File tree

3 files changed

+29
-18
lines changed

3 files changed

+29
-18
lines changed

src/BribeInitiative.sol

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import {IBribeInitiative} from "./interfaces/IBribeInitiative.sol";
1010

1111
import {DoubleLinkedList} from "./utils/DoubleLinkedList.sol";
1212

13+
14+
import {EncodingDecodingLib} from "src/utils/EncodingDecodingLib.sol";
15+
16+
1317
contract BribeInitiative is IInitiative, IBribeInitiative {
1418
using SafeERC20 for IERC20;
1519
using DoubleLinkedList for DoubleLinkedList.List;
@@ -162,8 +166,11 @@ contract BribeInitiative is IInitiative, IBribeInitiative {
162166
emit ModifyLQTYAllocation(_user, _epoch, _lqty, _averageTimestamp);
163167
}
164168

169+
function _encodeLQTYAllocation(uint88 _lqty, uint32 _averageTimestamp) private pure returns (uint224) {
170+
return EncodingDecodingLib.encodeLQTYAllocation(_lqty, _averageTimestamp);
171+
}
165172
function _decodeLQTYAllocation(uint224 _value) private pure returns (uint88, uint32) {
166-
return (uint88(_value >> 32), uint32(_value));
173+
return EncodingDecodingLib.decodeLQTYAllocation(_value);
167174
}
168175

169176
function _loadTotalLQTYAllocation(uint16 _epoch) private view returns (uint88, uint32) {

src/utils/EncodingDecodingLib.sol

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.24;
3+
4+
library EncodingDecodingLib {
5+
function encodeLQTYAllocation(uint88 _lqty, uint32 _averageTimestamp) public pure returns (uint224) {
6+
uint224 _value = (uint224(_lqty) << 32) | _averageTimestamp;
7+
return _value;
8+
}
9+
10+
function decodeLQTYAllocation(uint224 _value) public pure returns (uint88, uint32) {
11+
return (uint88(_value >> 32), uint32(_value));
12+
}
13+
}

test/EncodingDecoding.t.sol

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,20 @@ pragma solidity ^0.8.24;
33

44
import {Test, console2} from "forge-std/Test.sol";
55

6-
library EncodingDecoding {
7-
function encodeLQTYAllocation(uint88 _lqty, uint32 _averageTimestamp) public pure returns (uint224) {
8-
uint224 _value = (uint224(_lqty) << 32) | _averageTimestamp;
9-
return _value;
10-
}
11-
12-
function decodeLQTYAllocation(uint224 _value) public pure returns (uint88, uint32) {
13-
return (uint88(_value >> 32), uint32(_value));
14-
}
15-
}
6+
import {EncodingDecodingLib} from "src/utils/EncodingDecodingLib.sol";
167

178
contract EncodingDecodingTest is Test {
189
// value -> encoding -> decoding -> value
1910
function test_encoding_and_decoding_symmetrical(uint88 lqty, uint32 averageTimestamp) public {
20-
uint224 encodedValue = EncodingDecoding.encodeLQTYAllocation(lqty, averageTimestamp);
21-
(uint88 decodedLqty, uint32 decodedAverageTimestamp) = EncodingDecoding.decodeLQTYAllocation(encodedValue);
11+
uint224 encodedValue = EncodingDecodingLib.encodeLQTYAllocation(lqty, averageTimestamp);
12+
(uint88 decodedLqty, uint32 decodedAverageTimestamp) = EncodingDecodingLib.decodeLQTYAllocation(encodedValue);
2213

2314
assertEq(lqty, decodedLqty);
2415
assertEq(averageTimestamp, decodedAverageTimestamp);
2516

2617
// Redo
27-
uint224 reEncoded = EncodingDecoding.encodeLQTYAllocation(decodedLqty, decodedAverageTimestamp);
28-
(uint88 reDecodedLqty, uint32 reDecodedAverageTimestamp) = EncodingDecoding.decodeLQTYAllocation(encodedValue);
18+
uint224 reEncoded = EncodingDecodingLib.encodeLQTYAllocation(decodedLqty, decodedAverageTimestamp);
19+
(uint88 reDecodedLqty, uint32 reDecodedAverageTimestamp) = EncodingDecodingLib.decodeLQTYAllocation(encodedValue);
2920

3021
assertEq(reEncoded, encodedValue);
3122
assertEq(reDecodedLqty, decodedLqty);
@@ -46,10 +37,10 @@ contract EncodingDecodingTest is Test {
4637
// receive -> undo -> check -> redo -> compare
4738
function _receive_undo_compare(uint224 encodedValue) public {
4839
/// These values fail because we could pass a value that is bigger than intended
49-
(uint88 decodedLqty, uint32 decodedAverageTimestamp) = EncodingDecoding.decodeLQTYAllocation(encodedValue);
40+
(uint88 decodedLqty, uint32 decodedAverageTimestamp) = EncodingDecodingLib.decodeLQTYAllocation(encodedValue);
5041

51-
uint224 encodedValue2 = EncodingDecoding.encodeLQTYAllocation(decodedLqty, decodedAverageTimestamp);
52-
(uint88 decodedLqty2, uint32 decodedAverageTimestamp2) = EncodingDecoding.decodeLQTYAllocation(encodedValue2);
42+
uint224 encodedValue2 = EncodingDecodingLib.encodeLQTYAllocation(decodedLqty, decodedAverageTimestamp);
43+
(uint88 decodedLqty2, uint32 decodedAverageTimestamp2) = EncodingDecodingLib.decodeLQTYAllocation(encodedValue2);
5344

5445
assertEq(encodedValue, encodedValue2, "encoded values not equal");
5546
assertEq(decodedLqty, decodedLqty2, "decoded lqty not equal");

0 commit comments

Comments
 (0)