Skip to content

Commit

Permalink
feat: add namesByAddress and myAddressNameAdmin
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelfig committed Mar 26, 2021
1 parent 7deac62 commit 945a6c3
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 9 deletions.
27 changes: 24 additions & 3 deletions packages/cosmic-swingset/lib/ag-solo/vats/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { makePluginManager } from '@agoric/swingset-vat/src/vats/plugin-manager'
import { assert, details as X } from '@agoric/assert';
import { GCI } from './gci';
import { makeBridgeManager } from './bridge';
import { makeNameHubKit } from './nameHub';

const NUM_IBC_PORTS = 3;
const CENTRAL_ISSUER_NAME = 'Testnet.$USD';
Expand Down Expand Up @@ -208,8 +209,13 @@ export function buildRootObject(vatPowers, vatParameters) {
}),
);

const {
nameHub: namesByAddress,
nameAdmin: namesByAddressAdmin,
} = makeNameHubKit();

return Far('chainBundler', {
async createUserBundle(_nickname, powerFlags = []) {
async createUserBundle(_nickname, address, powerFlags = []) {
// Bind to some fresh ports (unspecified name) on the IBC implementation
// and provide them for the user to have.
const ibcport = [];
Expand Down Expand Up @@ -248,13 +254,28 @@ export function buildRootObject(vatPowers, vatParameters) {
},
});

// Create a name hub for this address.
const {
nameHub: myAddressNameHub,
nameAdmin: myAddressNameAdmin,
} = makeNameHubKit();
// Register it with the namesByAddress hub.
namesByAddressAdmin.update(address, myAddressNameHub);

const bundle = harden({
...additionalPowers,
chainTimerService,
sharingService,
contractHost,
faucet,
ibcport,
myAddressNameAdmin: {
...myAddressNameAdmin,
getMyAddress() {
return address;
},
},
namesByAddress,
priceAuthority,
registrar: registry,
registry,
Expand Down Expand Up @@ -504,12 +525,12 @@ export function buildRootObject(vatPowers, vatParameters) {
// NOTE: This is a special exception to the security model,
// to give capabilities to all clients (since we are running
// locally with the `--give-me-all-the-agoric-powers` flag).
return chainBundler.createUserBundle(nickname, [
return chainBundler.createUserBundle(nickname, 'demo', [
'agoric.priceAuthorityAdmin',
'agoric.vattp',
]);
}
return chainBundler.createUserBundle(nickname);
return chainBundler.createUserBundle(nickname, 'demo');
},
});
await Promise.all(
Expand Down
3 changes: 2 additions & 1 deletion packages/cosmic-swingset/lib/ag-solo/vats/types.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
/**
* @typedef {Object} NameHub
* @property {(...path: Array<unknown>) => Promise<unknown>} lookup Look up a
* path of keys starting from the current NameHub.
* path of keys starting from the current NameHub. Wait on any reserved
* promises.
*/

/**
Expand Down
14 changes: 9 additions & 5 deletions packages/cosmic-swingset/lib/ag-solo/vats/vat-provisioning.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export function buildRootObject(_vatPowers) {
vattp = v;
}

async function pleaseProvision(nickname, pubkey, powerFlags) {
async function pleaseProvision(nickname, address, powerFlags) {
let chainBundle;
const fetch = Far('fetch', {
getDemoBundle() {
Expand All @@ -24,15 +24,19 @@ export function buildRootObject(_vatPowers) {
});

// Add a remote and egress for the pubkey.
const { transmitter, setReceiver } = await E(vattp).addRemote(pubkey);
await E(comms).addRemote(pubkey, transmitter, setReceiver);
const { transmitter, setReceiver } = await E(vattp).addRemote(address);
await E(comms).addRemote(address, transmitter, setReceiver);

const INDEX = 1;
await E(comms).addEgress(pubkey, INDEX, fetch);
await E(comms).addEgress(address, INDEX, fetch);

// Do this here so that any side-effects don't happen unless
// the egress has been successfully added.
chainBundle = E(bundler).createUserBundle(nickname, powerFlags || []);
chainBundle = E(bundler).createUserBundle(
nickname,
address,
powerFlags || [],
);
return { ingressIndex: INDEX };
}

Expand Down

0 comments on commit 945a6c3

Please sign in to comment.