Skip to content

Commit

Permalink
chore(fast-usdc): feeConfig.variableRate to 0.5% in upgrade
Browse files Browse the repository at this point in the history
i.e. 5n/1000n
  • Loading branch information
dckc committed Feb 28, 2025
1 parent 0a9d7f0 commit be6d954
Showing 1 changed file with 44 additions and 7 deletions.
51 changes: 44 additions & 7 deletions packages/fast-usdc/src/update-noble-ica.core.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,40 @@ import { makeTracer } from '@agoric/internal';

const trace = makeTracer('FUSD-2', true);

// avoid importing all of @agoric/ertp
/** @type {typeof import('@agoric/ertp').AmountMath.make} */
// @ts-expect-error AssetKind conditionals aren't captured
const make = (brand, value) => harden({ brand, value });
/** @type {typeof import('@agoric/zoe/src/contractSupport/ratio').makeRatio} */
const makeRatio = (numerator, numeratorBrand, denominator = 100n) =>
harden({
numerator: make(numeratorBrand, numerator),
denominator: make(numeratorBrand, denominator),
});

/**
* @import {CopyRecord} from '@endo/pass-style'
* @import {IBCConnectionInfo} from '@agoric/orchestration'
* @import {ManifestBundleRef} from '@agoric/deploy-script-support/src/externalTypes.js'
* @import {BootstrapManifest} from '@agoric/vats/src/core/lib-boot.js'
* @import {FastUSDCCorePowers} from './start-fast-usdc.core.js'
* @import {ContractRecord} from './types.js'
* @import {ContractRecord, FeeConfig} from './types.js'
*/

/**
* Update feeConfig.variableRate to 0.5%, i.e. 5n/1000n
*
* @param {FeeConfig} feeConfigPre
* @param {Brand<'nat'>} usdcBrand
* @param {Ratio} [variableRate]
* @returns {FeeConfig}
*/
const updateFeeConfig = (
feeConfigPre,
usdcBrand,
variableRate = makeRatio(5n, usdcBrand, 1000n),
) => harden({ ...feeConfigPre, variableRate });

/**
* @typedef {object} UpdateOpts
* @property {IBCConnectionInfo} [agoricToNoble]
Expand Down Expand Up @@ -50,25 +75,36 @@ harden(config);
* @param {UpdateOpts} [config.options]
*/
export const updateNobleICA = async (
{ consume: { chainStorage, fastUsdcKit } },
{ consume: { chainStorage, fastUsdcKit }, produce },
{ options = {} } = {},
) => {
trace('options', options);
const {
agoricToNoble = config.MAINNET.agoricToNoble,
fastUsdcCode = assert.fail('missing bundleID'),
} = options;
const { adminFacet, creatorFacet, privateArgs, publicFacet } =
await fastUsdcKit;
trace('got privateArgs', Object.keys(privateArgs));
const kitPre = await fastUsdcKit;
const { adminFacet, creatorFacet, publicFacet } = kitPre;
trace('got privateArgs', Object.keys(kitPre.privateArgs));

const { brand: usdcBrand } = kitPre.privateArgs.feeConfig.flat;
// TODO: update agoricToNoble in kitPost.privateArgs.chainInfo too
const kitPost = harden({
...kitPre,
privateArgs: {
...kitPre.privateArgs,
feeConfig: updateFeeConfig(kitPre.privateArgs.feeConfig, usdcBrand),
},
});
const upgraded = await E(adminFacet).upgradeContract(
fastUsdcCode.bundleID,
privateArgs,
kitPost.privateArgs,
);
trace(upgraded);
produce.fastUsdcKit.reset();
produce.fastUsdcKit.resolve(kitPost);

const { agoric, noble } = privateArgs.chainInfo;
const { agoric, noble } = kitPre.privateArgs.chainInfo;
const nobleICAaddr = await E(creatorFacet).connectToNoble(
agoric.chainId,
noble.chainId,
Expand Down Expand Up @@ -101,6 +137,7 @@ export const getManifestForUpdateNobleICA = (
manifest: {
[updateNobleICA.name]: {
consume: { chainStorage: true, fastUsdcKit: true },
produce: { fastUsdcKit: true },
},
},
options: { ...options, fastUsdcCode: installKeys.fastUsdc },
Expand Down

0 comments on commit be6d954

Please sign in to comment.