@@ -3467,23 +3467,42 @@ ValidVault::finalize(
34673467 }
34683468
34693469 auto const vaultDeltaAssets = deltaAssets (afterVault.pseudoId );
3470+ if (vaultDeltaAssets)
3471+ {
3472+ if (*vaultDeltaAssets >= zero)
3473+ {
3474+ JLOG (j.fatal ()) << //
3475+ " Invariant failed: clawback must decrease vault "
3476+ " balance" ;
3477+ result = false ;
3478+ }
3479+
3480+ if (beforeVault.assetsTotal + *vaultDeltaAssets !=
3481+ afterVault.assetsTotal )
3482+ {
3483+ JLOG (j.fatal ()) << //
3484+ " Invariant failed: clawback and assets outstanding "
3485+ " must add up" ;
3486+ result = false ;
3487+ }
34703488
3471- if (!vaultDeltaAssets && !vaultHoldsNoAssets (beforeVault))
3489+ if (beforeVault.assetsAvailable + *vaultDeltaAssets !=
3490+ afterVault.assetsAvailable )
3491+ {
3492+ JLOG (j.fatal ()) << //
3493+ " Invariant failed: clawback and assets available "
3494+ " must "
3495+ " add up" ;
3496+ result = false ;
3497+ }
3498+ }
3499+ else if (!vaultHoldsNoAssets (beforeVault))
34723500 {
34733501 JLOG (j.fatal ()) << //
34743502 " Invariant failed: clawback must change vault balance" ;
34753503 return false ; // That's all we can do
34763504 }
34773505
3478- if (*vaultDeltaAssets >= zero &&
3479- !vaultHoldsNoAssets (beforeVault))
3480- {
3481- JLOG (j.fatal ()) << //
3482- " Invariant failed: clawback must decrease vault "
3483- " balance" ;
3484- result = false ;
3485- }
3486-
34873506 auto const accountDeltaShares = deltaShares (tx[sfHolder]);
34883507 if (!accountDeltaShares)
34893508 {
@@ -3516,26 +3535,6 @@ ValidVault::finalize(
35163535 result = false ;
35173536 }
35183537
3519- if (!vaultHoldsNoAssets (beforeVault) &&
3520- beforeVault.assetsTotal + *vaultDeltaAssets !=
3521- afterVault.assetsTotal )
3522- {
3523- JLOG (j.fatal ()) << //
3524- " Invariant failed: clawback and assets outstanding "
3525- " must add up" ;
3526- result = false ;
3527- }
3528-
3529- if (!vaultHoldsNoAssets (beforeVault) &&
3530- beforeVault.assetsAvailable + *vaultDeltaAssets !=
3531- afterVault.assetsAvailable )
3532- {
3533- JLOG (j.fatal ()) << //
3534- " Invariant failed: clawback and assets available must "
3535- " add up" ;
3536- result = false ;
3537- }
3538-
35393538 return result;
35403539 }
35413540
0 commit comments