From 3c9eef20ce8819cd5e3307b65f67c7a318c1f984 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 19 Jan 2022 19:40:55 -0600 Subject: [PATCH] feat(vats): put RUN, BLD issuer, brand in agoricNames --- packages/vats/decentral-core-config.json | 6 ++---- packages/vats/src/core/behaviors.js | 26 +++++++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/vats/decentral-core-config.json b/packages/vats/decentral-core-config.json index a4ed46f46d5..97b09e28718 100644 --- a/packages/vats/decentral-core-config.json +++ b/packages/vats/decentral-core-config.json @@ -70,10 +70,8 @@ }, "makeBLDKit": { "consume": { - "bankManager": true - }, - "produce": { - "BLDKit": true + "bankManager": true, + "nameAdmins": true } } } diff --git a/packages/vats/src/core/behaviors.js b/packages/vats/src/core/behaviors.js index 6f23f01d140..f94b5904b22 100644 --- a/packages/vats/src/core/behaviors.js +++ b/packages/vats/src/core/behaviors.js @@ -84,6 +84,7 @@ const makeVatsFromBundles = ({ * consume: { * vatAdminSvc: ERef, * loadVat: ERef>, + * nameAdmins: ERef>, * client: ERef * }, * produce: { zoe: Producer, feeMintAccess: Producer }, @@ -92,7 +93,7 @@ const makeVatsFromBundles = ({ * @typedef {ERef>} ZoeVat */ const buildZoe = async ({ - consume: { vatAdminSvc, loadVat, client }, + consume: { vatAdminSvc, loadVat, client, nameAdmins }, produce: { zoe, feeMintAccess }, }) => { const { zoeService, feeMintAccess: fma } = await E( @@ -100,6 +101,11 @@ const buildZoe = async ({ ).buildZoe(vatAdminSvc, feeIssuerConfig); zoe.resolve(zoeService); + const runIssuer = await E(zoeService).getFeeIssuer(); + const runBrand = await E(runIssuer).getBrand(); + E(E(nameAdmins).get('issuer')).update('RUN', runIssuer); + E(E(nameAdmins).get('brand')).update('RUN', runBrand); + feeMintAccess.resolve(fma); E(client).assignBundle({ zoe: _addr => zoeService }); }; @@ -158,6 +164,9 @@ const makeAddressNameHubs = async ({ consume: { client }, produce }) => { if (nm === 'uiConfig') { // Reserve the Vault Factory's config until we've populated it. nameAdmin.reserve('vaultFactory'); + } else if (['issuer', 'brand'].includes(nm)) { + nameAdmin.reserve('BLD'); + nameAdmin.reserve('RUN'); } }, ), @@ -254,24 +263,21 @@ const makeClientBanks = async ({ /** * @param {{ * consume: { - * bankManager: Promise + * bankManager: Promise, + * nameAdmins: Promise>, * }, - * produce: { - * BLDKit: Producer<{ brand: Brand, issuer: Issuer }> - * } * }} powers * @typedef {*} BankManager // TODO */ -const makeBLDKit = async ({ - consume: { bankManager }, - produce: { BLDKit }, -}) => { +const makeBLDKit = async ({ consume: { bankManager, nameAdmins } }) => { const [issuerName, { bankDenom, bankPurse, issuerArgs }] = BLD_ISSUER_ENTRY; assert(issuerArgs); const kit = makeIssuerKit(issuerName, ...issuerArgs); // TODO: should this live in another vat??? await E(bankManager).addAsset(bankDenom, issuerName, bankPurse, kit); + // How to be clear that this "kit" has no mint? Do we have a name for brand and issuer? const { brand, issuer } = kit; - BLDKit.resolve({ brand, issuer }); + E(E(nameAdmins).get('issuer')).update('BLD', issuer); + E(E(nameAdmins).get('brand')).update('BLD', brand); }; /**