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

removeOperator for fast-usdc #10755

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions packages/boot/test/fast-usdc/fast-usdc.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,3 +318,7 @@ test.serial('restart contract', async t => {
const actual = await EV(kit.adminFacet).restartContract(kit.privateArgs);
t.deepEqual(actual, { incarnationNumber: 1 });
});

test.serial('replace operators', async t => {
// TODO https://github.com/Agoric/agoric-sdk/issues/10754
});
2 changes: 1 addition & 1 deletion packages/fast-usdc/src/exos/transaction-feed.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ export const prepareTransactionFeedKit = (zone, zcf) => {
},

/** @param {string} operatorId */
async removeOperator(operatorId) {
removeOperator(operatorId) {
const { operators } = this.state;
trace('removeOperator', operatorId);
const operatorKit = operators.get(operatorId);
Expand Down
4 changes: 4 additions & 0 deletions packages/fast-usdc/src/fast-usdc.contract.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,10 @@ export const contract = async (zcf, privateArgs, zone, tools) => {
async makeOperatorInvitation(operatorId) {
return feedKit.creator.makeOperatorInvitation(operatorId);
},
/** @type {(operatorId: string) => void} */
removeOperator(operatorId) {
return feedKit.creator.removeOperator(operatorId);
},
async connectToNoble() {
return vowTools.when(nobleAccountV, nobleAccount => {
trace('nobleAccount', nobleAccount);
Expand Down
4 changes: 2 additions & 2 deletions packages/fast-usdc/test/exos/transaction-feed.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,15 +117,15 @@ test('disagreement after publishing', async t => {
});
});

test('disabled operator', async t => {
test('remove operator', async t => {
const feedKit = makeFeedKit();
const { op1 } = await makeOperators(feedKit);
const evidence = MockCctpTxEvidences.AGORIC_PLUS_OSMO();

// works before disabling
op1.operator.submitEvidence(evidence);

op1.admin.disable();
await feedKit.creator.removeOperator('op1');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe this means makeOperator can lose the awkward admin thing altogether?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removeOperator calls operatorKit.admin.disable().

What's awkward about it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean makeOperator in the test file.

// operator only gets `.invitationMakers`
// but for testing, we need `.admin` too. UNTIL #?????

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that test no longer needs admin but it's still true that OperatorKit has an admin facet and the operator invitation offer result is an OperatorKit. I'm not sure what changes you propose.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest that result of makeOperator in the test file should not include an .admin property; the returned value should represent what an operator can do, and operators don't have admin authority.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the change you're asking for is to app, not just tests.

The current design is that operators do get the admin facet of the operator kit. (My recollection from earlier; I'm on a phone now)

Right now that means they can disable themselves. Not a bad thing but I agree they shouldn't get a facet called admin.

So in this PR I'll attenuate the kit to omit admin in the offer result.


t.throws(() => op1.operator.submitEvidence(evidence), {
message: 'submitEvidence for disabled operator',
Expand Down
Loading