Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Liquidation Visibility - Iteration One #9

Merged
merged 41 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
680330c
create dedicated files for test assertions and tools
Jorge-Lopes Jan 12, 2024
a3f6cf0
Add new test file for liquidation visibility
Jorge-Lopes Jan 12, 2024
9d7abd6
auctioneer snapshot
Jorge-Lopes Jan 12, 2024
5d1088b
Update visibility tests and helper functions
Jorge-Lopes Jan 12, 2024
f35bda1
add tools and assertions to match subscriber with vstorage data
Jorge-Lopes Jan 15, 2024
26dc28f
update test visibility of vault liquidation
Jorge-Lopes Jan 15, 2024
e603254
Merge branch 'master' into feature/unit-tests
anilhelvaci Jan 18, 2024
ae88a64
fix(liquidationVisibility): fix linting errors
anilhelvaci Jan 18, 2024
7d477ff
fix(liquidationVisibility): type error
anilhelvaci Jan 18, 2024
b4c8a21
feat(liquidationVisibility): create liquidation storageNodes and reco…
Jorge-Lopes Jan 18, 2024
21bb9ca
feat(liquidationVisibility): write preAuctionState and auctionResultS…
Jorge-Lopes Jan 19, 2024
3739f25
fix(liquidationVisibility): fix type definitions errors and concurren…
Jorge-Lopes Jan 19, 2024
5dfa289
chore(liquidationVisibility): #4 testing tools setup
anilhelvaci Jan 21, 2024
bbd2e48
chore(liquidationVisibility): #4 improve testing tools
anilhelvaci Jan 22, 2024
7292068
chore(liquidationVisibility): #4 improve testing tools
anilhelvaci Jan 22, 2024
d8af7fa
fix(liquidationVisibility): linting fixes
anilhelvaci Jan 22, 2024
45cea3b
chore(liquidationVisibility): fix test names
anilhelvaci Jan 22, 2024
89db737
fix(liquidationVisibility): lint fix
anilhelvaci Jan 22, 2024
9fefcf0
chore(liquidationVisibility): #4 implement `assertNodeInStorage`
anilhelvaci Jan 22, 2024
e81df01
fix(liquidationVisibility): #4 lint fix
anilhelvaci Jan 22, 2024
419c810
feat(liquidationVisibility): write postAuctionState to Vstorage
Jorge-Lopes Jan 22, 2024
637a282
chore(liquidationVisibility): update helper methods, type definitions…
Jorge-Lopes Jan 22, 2024
4089361
fix(liquidationVisibility): lint fix
Jorge-Lopes Jan 22, 2024
a5815ae
chore(liquidationVisibility): #4 test skeleton is ready
anilhelvaci Jan 23, 2024
51eb929
chore(liquidationVisibility): #4 add marshaller for comparing data fr…
anilhelvaci Jan 23, 2024
ba95348
fix(liquidationVisibility): update sequence to write auction state to…
Jorge-Lopes Jan 23, 2024
59e155b
chore(liquidationVisibility): sample test for `preAuction` and `postA…
anilhelvaci Jan 24, 2024
1a17dd4
chore(liquidationVisibility): make sure `assertStorageData` works
anilhelvaci Jan 24, 2024
b7cdb13
chore(liquidationVisibility): #4 add test for case 2b, uncomment asse…
anilhelvaci Jan 25, 2024
b906859
fix(liquidationVisibility): update postAuctionState structure and cha…
Jorge-Lopes Jan 25, 2024
e680466
fix(liquidationVisibility): remove temporary changes made to tests
Jorge-Lopes Jan 25, 2024
c4e2b34
Merge remote-tracking branch 'origin/jorge/update-contacts' into anil…
anilhelvaci Jan 25, 2024
34ecf5c
fix(liquidationVisibility): #4 test for scenario 2b passed, test api …
anilhelvaci Jan 25, 2024
348707e
chore(liquidationVisibility): #4 test for scenario 2a passed
anilhelvaci Jan 25, 2024
e7259fb
chore(liquidationVisibility): #4 update scenario 1
alexanderem49 Jan 26, 2024
4c45f2a
fix(liquidationVisibility): add pattern matcher to `getVaultState`
anilhelvaci Jan 30, 2024
683f56d
feat(liquidationVisibility): add LiquidationVisibilityWriters to impr…
anilhelvaci Jan 30, 2024
732e1d7
feat(liquidationVisibility): handle errors that might arise from othe…
anilhelvaci Jan 31, 2024
6920d1a
fix(liquidationVisibility): explain Promise.allSettled
anilhelvaci Jan 31, 2024
dd3fbdb
fix(liquidationVisibility): lint fix
anilhelvaci Jan 31, 2024
728d695
chore(liquidationVisibility): uncomment post auction assertion in `li…
anilhelvaci Jan 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions packages/inter-protocol/src/vaultFactory/liquidation.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@ const trace = makeTracer('LIQ');
/** @typedef {import('@agoric/time').CancelToken} CancelToken */
/** @typedef {import('@agoric/time').RelativeTimeRecord} RelativeTimeRecord */

/**
* @typedef {MapStore<
* Vault,
* { collateralAmount: Amount<'nat'>; debtAmount: Amount<'nat'> }
* >} VaultData
*/

const makeCancelToken = makeCancelTokenMaker('liq');

/**
Expand Down Expand Up @@ -269,12 +276,7 @@ export const getLiquidatableVaults = (
const vaultsToLiquidate = prioritizedVaults.removeVaultsBelow(
collateralizationDetails,
);
/**
* @type {MapStore<
* Vault,
* { collateralAmount: Amount<'nat'>; debtAmount: Amount<'nat'> }
* >}
*/
/** @type {VaultData} */
const vaultData = makeScalarMapStore();

const { zcfSeat: liqSeat } = zcf.makeEmptySeatKit();
Expand Down
25 changes: 25 additions & 0 deletions packages/inter-protocol/src/vaultFactory/types.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
*
* @typedef {import('@agoric/time').Timestamp} Timestamp
*
* @typedef {import('@agoric/time').TimestampRecord} TimestampRecord
*
* @typedef {import('@agoric/time').RelativeTime} RelativeTime
*/

Expand Down Expand Up @@ -142,3 +144,26 @@
*/

/** @typedef {{ key: 'governedParams' | { collateralBrand: Brand } }} VaultFactoryParamPath */

/**
* @typedef {{
* plan: import('./proceeds.js').DistributionPlan;
* vaultsInPlan: Array;
* }} PostAuctionParams
*
* @typedef {{
* plan: import('./proceeds.js').DistributionPlan;
* totalCollateral: Amount<'nat'>;
* totalDebt: Amount<'nat'>;
* auctionSchedule: import('../auction/scheduler.js').FullSchedule;
* }} AuctionResultsParams
*/

/**
* @typedef {import('./liquidation.js').VaultData} VaultData
*
* @typedef {object} LiquidationVisibilityWriters
* @property {(vaultData: VaultData) => Promise<void>} writePreAuction
* @property {(postAuctionParams: PostAuctionParams) => Promise<void>} writePostAuction
* @property {(auctionResultParams: AuctionResultsParams) => Promise<void>} writeAuctionResults
*/
10 changes: 10 additions & 0 deletions packages/inter-protocol/src/vaultFactory/vault.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@ export const VaultI = M.interface('Vault', {
getCurrentDebt: M.call().returns(AmountShape),
getNormalizedDebt: M.call().returns(AmountShape),
getVaultSeat: M.call().returns(SeatShape),
getVaultState: M.call().returns(
harden({ idInManager: M.string(), phase: M.string() }),
),
initVaultKit: M.call(SeatShape, StorageNodeShape).returns(M.promise()),
liquidated: M.call().returns(undefined),
liquidating: M.call().returns(undefined),
Expand Down Expand Up @@ -597,6 +600,13 @@ export const prepareVault = (baggage, makeRecorderKit, zcf) => {
return this.state.vaultSeat;
},

getVaultState() {
return {
idInManager: this.state.idInManager,
phase: this.state.phase,
};
},

/**
* @param {ZCFSeat} seat
* @param {StorageNode} storageNode
Expand Down
2 changes: 1 addition & 1 deletion packages/inter-protocol/src/vaultFactory/vaultDirector.js
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ const prepareVaultDirector = (
makeLiquidationWaker() {
return makeWaker('liquidationWaker', _timestamp => {
// XXX floating promise
allManagersDo(vm => vm.liquidateVaults(auctioneer));
allManagersDo(vm => vm.liquidateVaults(auctioneer, _timestamp));
});
},
makeReschedulerWaker() {
Expand Down
Loading
Loading