El administrador de vaults trabaja con vaults que posee el contato CdpManager, el cual también es utilizado por "Oasis Borrow". Este contrato intermediario permite el uso de IDs con enteros incrementales para las vaults, familiar para los usuarios del SAI Unicolateral, así como otras conveniencias.
En el código, esto se llama CdpManager.
const mgr = maker.service('mcd:cdpManager');
Los métodos mencionados debajo son todos asincrónicos.
Devuelve una matriz que describe a las vaults que posee la address especificada. Ten en cuenta que si las vaults se crearon en "Oasis Borrow", se debe utilizar la address del contrato proxy.
const proxyAddress = await maker.service('proxy').currentProxy();
const data = await mgr.getCdpIds(proxyAddress);
const { id, ilk } = data[0];
// e.g. id = 5, ilk = 'ETH-A'
Obtener una vault por su ID numérico. Devuelve la instancia de la vault.
const vault = await mgr.getCdp(111);
Abre una vault con el tipo de colateral especificado. Creará un proxy si todavía no existe uno. Devuelve la instancia de una vault. Trabaja con el administrador de transacciones.
const txMgr = maker.service('transactionManager');
const open = await mgr.open('ETH-A');
txMgr.listen(open, {
pending: tx => console.log('tx pending: ' + tx.hash)
});
const vault = await open;
Abre una vault nueva, luego bloquea y/o crea en una única transacción. Creará un proxy si todavía no existe uno. Devuelve la instancia de una vault.
const vault = await mgr.openLockAndDraw(
'BAT-A',
BAT(1000),
DAI(100)
);
En el código, esto se llama ManagedCdp.