vault: fix accounting of locked value when burning designated tokens

This commit is contained in:
Mark Spanbroek 2025-02-11 14:02:17 +01:00
parent 43cd44330b
commit 473a5fec19
2 changed files with 7 additions and 2 deletions

View File

@ -208,7 +208,7 @@ abstract contract VaultBase {
Recipient recipient, Recipient recipient,
uint128 amount uint128 amount
) internal { ) internal {
Lock memory lock = _locks[controller][fund]; Lock storage lock = _locks[controller][fund];
require(lock.status() == LockStatus.Locked, VaultFundNotLocked()); require(lock.status() == LockStatus.Locked, VaultFundNotLocked());
Account storage account = _accounts[controller][fund][recipient]; Account storage account = _accounts[controller][fund][recipient];
@ -216,6 +216,8 @@ abstract contract VaultBase {
account.balance.designated -= amount; account.balance.designated -= amount;
lock.value -= amount;
_token.safeTransfer(address(0xdead), amount); _token.safeTransfer(address(0xdead), amount);
} }

View File

@ -641,7 +641,10 @@ describe("Vault", function () {
await vault.deposit(fund, account.address, 30) await vault.deposit(fund, account.address, 30)
await vault.transfer(fund, account.address, account2.address, 20) await vault.transfer(fund, account.address, account2.address, 20)
await vault.transfer(fund, account2.address, account3.address, 10) await vault.transfer(fund, account2.address, account3.address, 10)
// some tokens are burned // some designated tokens are burned
await vault.designate(fund, account2.address, 10)
await vault.burnDesignated(fund, account2.address, 5)
// some account is burned
await vault.burnAccount(fund, account2.address) await vault.burnAccount(fund, account2.address)
await expire() await expire()
// some tokens are withdrawn // some tokens are withdrawn