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

View File

@ -641,7 +641,10 @@ describe("Vault", function () {
await vault.deposit(fund, account.address, 30)
await vault.transfer(fund, account.address, account2.address, 20)
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 expire()
// some tokens are withdrawn