Skip to content

Commit 20623dc

Browse files
Init pool index
1 parent 3d1f1b3 commit 20623dc

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

script/scripts/DeployZkBobPoolModules.s.sol

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import "../../src/zkbob/ZkBobPool.sol";
99
import "../../src/zkbob/utils/ZkBobAccounting.sol";
1010
import "../../src/proxy/EIP1967Proxy.sol";
1111
import "../../src/zkbob/ZkBobPoolBOB.sol";
12+
import "../../src/zkbob/ZkBobPoolUSDC.sol";
1213

1314
contract DummyDelegateCall {
1415
function delegate(address to, bytes calldata data) external {
@@ -30,6 +31,7 @@ contract Migrator {
3031
uint56 maxWeeklyAvgTvl = uint56(_load(dump, 25, 7));
3132
uint72 tvl = uint72(_load(dump, 55, 9));
3233

34+
ZkBobPool(_target).initializePoolIndex(txCount * 128);
3335
ZkBobPool(_target).setAccounting(IZkBobAccounting(_accounting));
3436
ZkBobAccounting(_accounting).initialize(txCount + 1, tvl, cumTvl, maxWeeklyTxCount, maxWeeklyAvgTvl);
3537
ZkBobAccounting(_accounting).setKycProvidersManager(IKycProvidersManager(kycManager));
@@ -53,15 +55,16 @@ contract Migrator {
5355

5456
contract DeployZkBobPoolModules is Script, Test {
5557
function run() external {
56-
ZkBobPoolBOB pool = ZkBobPoolBOB(address(zkBobPool));
58+
ZkBobPoolUSDC pool = ZkBobPoolUSDC(address(zkBobPool));
5759
address owner = pool.owner();
5860
vm.etch(owner, type(DummyDelegateCall).runtimeCode);
5961

6062
address tokenSeller = address(pool.tokenSeller());
63+
uint256 poolIndex = uint256(pool.pool_index());
6164

6265
vm.startBroadcast();
6366

64-
ZkBobPoolBOB impl = new ZkBobPoolBOB(
67+
ZkBobPoolUSDC impl = new ZkBobPoolUSDC(
6568
pool.pool_id(), pool.token(), pool.transfer_verifier(), pool.tree_verifier(),
6669
pool.batch_deposit_verifier(), address(pool.direct_deposit_queue())
6770
);
@@ -78,5 +81,6 @@ contract DeployZkBobPoolModules is Script, Test {
7881
acc.slot1();
7982

8083
assertEq(address(pool.tokenSeller()), tokenSeller);
84+
assertEq(uint256(pool.pool_index()), poolIndex);
8185
}
8286
}

src/zkbob/ZkBobPool.sol

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,15 @@ abstract contract ZkBobPool is IZkBobPool, EIP1967Admin, Ownable, Parameters, Ex
109109
roots[0] = _root;
110110
}
111111

112+
/**
113+
* @dev Initializes pool index after contract upgrade.
114+
* @param _poolIndex current pool index.
115+
*/
116+
function initializePoolIndex(uint96 _poolIndex) external {
117+
require(pool_index == 0 && roots[_poolIndex] > 0 && roots[_poolIndex + 128] == 0, "ZkBobPool: invalid index");
118+
pool_index = _poolIndex;
119+
}
120+
112121
/**
113122
* @dev Updates used operator manager contract.
114123
* Callable only by the contract owner / proxy admin.

src/zkbob/utils/ZkBobAccounting.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ contract ZkBobAccounting is IZkBobAccounting, Ownable {
206206
onlyOwner
207207
{
208208
require(_tier < 255, "ZkBobAccounting: invalid limit tier");
209-
require(_depositCap > 0, "ZkBobAccounting: zero deposit cap");
210209
require(_tvlCap <= type(uint56).max * PRECISION, "ZkBobAccounting: tvl cap too large");
211210
require(_dailyDepositCap <= type(uint32).max * PRECISION, "ZkBobAccounting: daily deposit cap too large");
212211
require(_dailyWithdrawalCap <= type(uint32).max * PRECISION, "ZkBobAccounting: daily withdrawal cap too large");

0 commit comments

Comments
 (0)