• Overview

  • Overview
  • Blockchain

  • Blockchain
  • BlocksTransactionsTop accounts
  • Validators

  • Validators
  • Proposals

  • Proposals
  • Utilities

  • Utilities
  • ParametersConsensusUptimeAPI
  • Relayers

  • Relayers
  • Nodes

  • Nodes

mainnet

agoric-3

Latest Block

‌
‌

Powered by

STAKEME
Backend: —Frontend: v4.6.0-50bb8e0e

Company

About usStakingFaucetBrand kit

Contribute

Contact usBug reportStatus page

Socials

Proposal details

#100 YMax Alpha 1: A Step Toward Seamless DeFi Control

Passed
CoreEvalProposal

background / discussion: - [YMax PoC: A Step Toward Seamless DeFi Control](https://community.agoric.com/t/ymax-poc-a-step-toward-seamless-defi-control/864) commit f741807

Submit time: 15 Jul 2025, 23:47

Details

Voting period

100.00%

15 Jul 2025, 23:4718 Jul 2025, 23:47

Core Eval Proposal

  • Title

    YMax Alpha 1: A Step Toward Seamless DeFi Control

  • Type

    CoreEvalProposal

  • Data
    {
    "evals":[
    0:{
    "jsonPermits":"{ "consume": { "agoricNamesAdmin": "makeCoreProposalBehavior", "getDepositFacet": true, "bankManager": true, "board": true, "chainStorage": true, "startUpgradable": true, "namesByAddress": true, "namesByAddressAdmin": true, "vatAdminSvc": "makeCoreProposalBehavior", "zoe": "makeCoreProposalBehavior" }, "brand": { "produce": { "PoC26": true } }, "issuer": { "produce": { "PoC26": true } }, "installation": { "consume": { "mintHolder": true }, "produce": "makeCoreProposalBehavior" }, "produce": { "getDepositFacet": true }, "evaluateBundleCap": "makeCoreProposalBehavior", "modules": { "utils": { "runModuleBehaviors": "makeCoreProposalBehavior" } } }"
    "jsCode":"// This is generated by writeCoreEval; please edit! /* eslint-disable */ const manifestBundleRef = {bundleID:"b1-06934dae7861f141432664315f14def6ca9dc2790dba3fab70246ae1d1cf4f9bbe4688406eb9b8e60153da16a89af4d3105f17d6a40873d836f74051c7c9e954"}; const getManifestCall = harden([ "getManifestCall", { beneficiary: "agoric16nwqe7452za92rwvnldmfdqr34n5rzhphe9sjy", qty: 50000000, }, ]); const customManifest = { createPoCAsset: { brand: { produce: { PoC26: true, }, }, consume: { agoricNamesAdmin: true, bankManager: true, board: true, chainStorage: true, getDepositFacet: true, startUpgradable: true, }, installation: { consume: { mintHolder: true, }, }, issuer: { produce: { PoC26: true, }, }, }, produceAttenuatedDeposit: { consume: { namesByAddress: true, namesByAddressAdmin: true, }, produce: { getDepositFacet: true, }, }, }; // Make a behavior function and "export" it by way of script completion value. // It is constructed by an anonymous invocation to ensure the absence of a global binding // for makeCoreProposalBehavior, which may not be necessary but preserves behavior pre-dating // https://github.com/Agoric/agoric-sdk/pull/8712 . const behavior = (({ manifestBundleRef, getManifestCall: [manifestGetterName, ...manifestGetterArgs], customManifest, E, log = console.info, customRestoreRef, }) => { const { entries, fromEntries } = Object; /** * Given an object whose properties may be promise-valued, return a promise * for an analogous object in which each such value has been replaced with its * fulfillment. * This is a non-recursive form of endo `deeplyFulfilled`. * * @template T * @param {{[K in keyof T]: (T[K] | Promise<T[K]>)}} obj * @returns {Promise<T>} */ const shallowlyFulfilled = async obj => { if (!obj) { return obj; } const awaitedEntries = await Promise.all( entries(obj).map(async ([key, valueP]) => { const value = await valueP; return [key, value]; }), ); return fromEntries(awaitedEntries); }; const makeRestoreRef = (vatAdminSvc, zoe) => { /** @type {(ref: import\('./externalTypes.js').ManifestBundleRef) => Promise<Installation<unknown>>} */ const defaultRestoreRef = async bundleRef => { // extract-proposal.js creates these records, and bundleName is // the optional name under which the bundle was installed into // config.bundles const bundleIdP = 'bundleName' in bundleRef ? E(vatAdminSvc).getBundleIDByName(bundleRef.bundleName) : bundleRef.bundleID; const bundleID = await bundleIdP; const label = bundleID.slice(0, 8); return E(zoe).installBundleID(bundleID, label); }; return defaultRestoreRef; }; /** @param {ChainBootstrapSpace & BootstrapPowers & { evaluateBundleCap: any }} powers */ const coreProposalBehavior = async powers => { // NOTE: `powers` is expected to match or be a superset of the above `permits` export, // which should therefore be kept in sync with this deconstruction code. // HOWEVER, do note that this function is invoked with at least the *union* of powers // required by individual moduleBehaviors declared by the manifest getter, which is // necessary so it can use `runModuleBehaviors` to provide the appropriate subset to // each one (see ./writeCoreEvalParts.js). // Handle `powers` with the requisite care. const { consume: { vatAdminSvc, zoe, agoricNamesAdmin }, evaluateBundleCap, installation: { produce: produceInstallations }, modules: { utils: { runModuleBehaviors }, }, } = powers; // Get the on-chain installation containing the manifest and behaviors. log('evaluateBundleCap', { manifestBundleRef, manifestGetterName, vatAdminSvc, }); let bcapP; if ('bundleName' in manifestBundleRef) { bcapP = E(vatAdminSvc).getNamedBundleCap(manifestBundleRef.bundleName); } else if ('bundleID' in manifestBundleRef) { bcapP = E(vatAdminSvc).getBundleCap(manifestBundleRef.bundleID); } else { const keys = Reflect.ownKeys(manifestBundleRef).map(key => typeof key === 'string' ? JSON.stringify(key) : String(key), ); const keysStr = `[${keys.join(', ')}]`; throw Error( `bundleRef must have own bundleName or bundleID, missing in ${keysStr}`, ); } const bundleCap = await bcapP; const proposalNS = await evaluateBundleCap(bundleCap); // Get the manifest and its metadata. log('execute', { manifestGetterName, bundleExports: Object.keys(proposalNS), }); const restoreRef = customRestoreRef || makeRestoreRef(vatAdminSvc, zoe); const { manifest, options: rawOptions, installations: rawInstallations, } = await proposalNS[manifestGetterName]( harden({ restoreRef }), ...manifestGetterArgs, ); // Await promises in the returned options and installations records. const [options, installations] = await Promise.all( [rawOptions, rawInstallations].map(shallowlyFulfilled), ); // Publish the installations for our dependencies. const installationEntries = entries(installations || {}); if (installationEntries.length > 0) { const installAdmin = E(agoricNamesAdmin).lookupAdmin('installation'); await Promise.all( installationEntries.map(([key, value]) => { produceInstallations[key].reset(); produceInstallations[key].resolve(value); return E(installAdmin).update(key, value); }), ); } // Evaluate the manifest. return runModuleBehaviors({ // Remember that `powers` may be arbitrarily broad. allPowers: powers, behaviors: proposalNS, manifest: customManifest || manifest, makeConfig: (name, _permit) => { log('coreProposal:', name); return { options }; }, }); }; return coreProposalBehavior; })({ manifestBundleRef, getManifestCall, customManifest, E }); behavior; "
    }
    1:{
    "jsonPermits":"{ "consume": { "agoricNames": true, "agoricNamesAdmin": "makeCoreProposalBehavior", "chainStorage": true, "vatAdminSvc": "makeCoreProposalBehavior", "zoe": "makeCoreProposalBehavior" }, "produce": { "chainInfoPublished": true }, "evaluateBundleCap": "makeCoreProposalBehavior", "installation": { "produce": "makeCoreProposalBehavior" }, "modules": { "utils": { "runModuleBehaviors": "makeCoreProposalBehavior" } } }"
    "jsCode":"// This is generated by writeCoreEval; please edit! /* eslint-disable */ const manifestBundleRef = {bundleID:"b1-2127a1e2f296c89c04280272f3e110f4e4b56d98804200d001c9e49d9926e7d3130c81995ab3976a5962cd2199abeb2915a6c458c8700a2116bc6c01639e1f73"}; const getManifestCall = harden([ "getManifestForChainInfo", { options: { chainInfo: { agoric: { bech32Prefix: "agoric", chainId: "agoric-3", connections: { "axelar-dojo-1": { client_id: "07-tendermint-11", counterparty: { client_id: "07-tendermint-69", connection_id: "connection-51", }, id: "connection-14", state: 3, transferChannel: { channelId: "channel-9", counterPartyChannelId: "channel-41", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "core-1": { client_id: "07-tendermint-93", counterparty: { client_id: "07-tendermint-167", connection_id: "connection-210", }, id: "connection-91", state: 3, transferChannel: { channelId: "channel-72", counterPartyChannelId: "channel-202", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "cosmoshub-4": { client_id: "07-tendermint-6", counterparty: { client_id: "07-tendermint-927", connection_id: "connection-649", }, id: "connection-8", state: 3, transferChannel: { channelId: "channel-5", counterPartyChannelId: "channel-405", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "crescent-1": { client_id: "07-tendermint-2", counterparty: { client_id: "07-tendermint-19", connection_id: "connection-14", }, id: "connection-2", state: 3, transferChannel: { channelId: "channel-2", counterPartyChannelId: "channel-11", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "evmos_9001-2": { client_id: "07-tendermint-72", counterparty: { client_id: "07-tendermint-116", connection_id: "connection-70", }, id: "connection-66", state: 3, transferChannel: { channelId: "channel-57", counterPartyChannelId: "channel-85", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "kaiyo-1": { client_id: "07-tendermint-20", counterparty: { client_id: "07-tendermint-94", connection_id: "connection-64", }, id: "connection-20", state: 3, transferChannel: { channelId: "channel-13", counterPartyChannelId: "channel-61", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "kava_2222-10": { client_id: "07-tendermint-78", counterparty: { client_id: "07-tendermint-147", connection_id: "connection-182", }, id: "connection-73", state: 3, transferChannel: { channelId: "channel-63", counterPartyChannelId: "channel-133", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "neutron-1": { client_id: "07-tendermint-101", counterparty: { client_id: "07-tendermint-148", connection_id: "connection-108", }, id: "connection-99", state: 3, transferChannel: { channelId: "channel-146", counterPartyChannelId: "channel-5789", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "noble-1": { client_id: "07-tendermint-77", counterparty: { client_id: "07-tendermint-32", connection_id: "connection-38", }, id: "connection-72", state: 3, transferChannel: { channelId: "channel-62", counterPartyChannelId: "channel-21", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "omniflixhub-1": { client_id: "07-tendermint-73", counterparty: { client_id: "07-tendermint-47", connection_id: "connection-40", }, id: "connection-67", state: 3, transferChannel: { channelId: "channel-58", counterPartyChannelId: "channel-30", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "osmosis-1": { client_id: "07-tendermint-1", counterparty: { client_id: "07-tendermint-2109", connection_id: "connection-1649", }, id: "connection-1", state: 3, transferChannel: { channelId: "channel-1", counterPartyChannelId: "channel-320", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "quicksilver-2": { client_id: "07-tendermint-85", counterparty: { client_id: "07-tendermint-84", connection_id: "connection-60", }, id: "connection-85", state: 3, transferChannel: { channelId: "channel-68", counterPartyChannelId: "channel-125", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "secret-4": { client_id: "07-tendermint-17", counterparty: { client_id: "07-tendermint-111", connection_id: "connection-80", }, id: "connection-17", state: 3, transferChannel: { channelId: "channel-10", counterPartyChannelId: "channel-51", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "stride-1": { client_id: "07-tendermint-74", counterparty: { client_id: "07-tendermint-129", connection_id: "connection-118", }, id: "connection-68", state: 3, transferChannel: { channelId: "channel-59", counterPartyChannelId: "channel-148", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "umee-1": { client_id: "07-tendermint-18", counterparty: { client_id: "07-tendermint-152", connection_id: "connection-101", }, id: "connection-18", state: 3, transferChannel: { channelId: "channel-11", counterPartyChannelId: "channel-42", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, }, icqEnabled: false, namespace: "cosmos", reference: "agoric-3", stakingTokens: [ { denom: "ubld", }, ], }, axelar: { bech32Prefix: "axelar", chainId: "axelar-dojo-1", connections: { "agoric-3": { client_id: "07-tendermint-69", counterparty: { client_id: "07-tendermint-11", connection_id: "connection-14", }, id: "connection-51", state: 3, transferChannel: { channelId: "channel-41", counterPartyChannelId: "channel-9", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, celestia: { client_id: "07-tendermint-185", counterparty: { client_id: "07-tendermint-9", connection_id: "connection-1", }, id: "connection-163", state: 3, transferChannel: { channelId: "channel-125", counterPartyChannelId: "channel-1", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "coreum-mainnet-1": { client_id: "07-tendermint-179", counterparty: { client_id: "07-tendermint-7", connection_id: "connection-7", }, id: "connection-157", state: 3, transferChannel: { channelId: "channel-120", counterPartyChannelId: "channel-6", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "cosmoshub-4": { client_id: "07-tendermint-3", counterparty: { client_id: "07-tendermint-622", connection_id: "connection-481", }, id: "connection-2", state: 3, transferChannel: { channelId: "channel-2", counterPartyChannelId: "channel-293", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "crescent-1": { client_id: "07-tendermint-31", counterparty: { client_id: "07-tendermint-6", connection_id: "connection-4", }, id: "connection-17", state: 3, transferChannel: { channelId: "channel-7", counterPartyChannelId: "channel-4", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "dymension_1100-1": { client_id: "07-tendermint-197", counterparty: { client_id: "07-tendermint-7", connection_id: "connection-6", }, id: "connection-180", state: 3, transferChannel: { channelId: "channel-138", counterPartyChannelId: "channel-5", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "empowerchain-1": { client_id: "07-tendermint-158", counterparty: { client_id: "07-tendermint-2", connection_id: "connection-2", }, id: "connection-142", state: 3, transferChannel: { channelId: "channel-109", counterPartyChannelId: "channel-2", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "evmos_9001-2": { client_id: "07-tendermint-50", counterparty: { client_id: "07-tendermint-69", connection_id: "connection-27", }, id: "connection-31", state: 3, transferChannel: { channelId: "channel-22", counterPartyChannelId: "channel-21", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "haqq_11235-1": { client_id: "07-tendermint-162", counterparty: { client_id: "07-tendermint-1", connection_id: "connection-1", }, id: "connection-148", state: 3, transferChannel: { channelId: "channel-113", counterPartyChannelId: "channel-1", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "injective-1": { client_id: "07-tendermint-37", counterparty: { client_id: "07-tendermint-113", connection_id: "connection-93", }, id: "connection-20", state: 3, transferChannel: { channelId: "channel-10", counterPartyChannelId: "channel-84", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "juno-1": { client_id: "07-tendermint-25", counterparty: { client_id: "07-tendermint-150", connection_id: "connection-97", }, id: "connection-14", state: 3, transferChannel: { channelId: "channel-4", counterPartyChannelId: "channel-71", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "kaiyo-1": { client_id: "07-tendermint-42", counterparty: { client_id: "07-tendermint-11", connection_id: "connection-6", }, id: "connection-23", state: 3, transferChannel: { channelId: "channel-14", counterPartyChannelId: "channel-9", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "lava-mainnet-1": { client_id: "07-tendermint-225", counterparty: { client_id: "07-tendermint-0", connection_id: "connection-0", }, id: "connection-210", state: 3, transferChannel: { channelId: "channel-156", counterPartyChannelId: "channel-0", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "migaloo-1": { client_id: "07-tendermint-180", counterparty: { client_id: "07-tendermint-101", connection_id: "connection-80", }, id: "connection-158", state: 3, transferChannel: { channelId: "channel-121", counterPartyChannelId: "channel-53", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "neutron-1": { client_id: "07-tendermint-123", counterparty: { client_id: "07-tendermint-1", connection_id: "connection-1", }, id: "connection-110", state: 3, transferChannel: { channelId: "channel-78", counterPartyChannelId: "channel-2", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "omniflixhub-1": { client_id: "07-tendermint-122", counterparty: { client_id: "07-tendermint-44", connection_id: "connection-37", }, id: "connection-109", state: 3, transferChannel: { channelId: "channel-77", counterPartyChannelId: "channel-27", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "osmosis-1": { client_id: "07-tendermint-23", counterparty: { client_id: "07-tendermint-1862", connection_id: "connection-1453", }, id: "connection-13", state: 3, transferChannel: { channelId: "channel-3", counterPartyChannelId: "channel-208", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pacific-1": { client_id: "07-tendermint-151", counterparty: { client_id: "07-tendermint-8", connection_id: "connection-2", }, id: "connection-136", state: 3, transferChannel: { channelId: "channel-103", counterPartyChannelId: "channel-2", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "phoenix-1": { client_id: "07-tendermint-39", counterparty: { client_id: "07-tendermint-7", connection_id: "connection-10", }, id: "connection-21", state: 3, transferChannel: { channelId: "channel-11", counterPartyChannelId: "channel-6", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pio-mainnet-1": { client_id: "07-tendermint-175", counterparty: { client_id: "07-tendermint-35", connection_id: "connection-12", }, id: "connection-153", state: 3, transferChannel: { channelId: "channel-116", counterPartyChannelId: "channel-9", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pirin-1": { client_id: "07-tendermint-205", counterparty: { client_id: "07-tendermint-17", connection_id: "connection-13", }, id: "connection-186", state: 3, transferChannel: { channelId: "channel-143", counterPartyChannelId: "channel-10177", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pryzm-1": { client_id: "07-tendermint-224", counterparty: { client_id: "07-tendermint-7", connection_id: "connection-7", }, id: "connection-209", state: 3, transferChannel: { channelId: "channel-155", counterPartyChannelId: "channel-13", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "secret-4": { client_id: "07-tendermint-40", counterparty: { client_id: "07-tendermint-44", connection_id: "connection-26", }, id: "connection-22", state: 3, transferChannel: { channelId: "channel-12", counterPartyChannelId: "channel-20", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "shido_9008-1": { client_id: "07-tendermint-210", counterparty: { client_id: "07-tendermint-1", connection_id: "connection-1", }, id: "connection-191", state: 3, transferChannel: { channelId: "channel-148", counterPartyChannelId: "channel-1", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "stride-1": { client_id: "07-tendermint-93", counterparty: { client_id: "07-tendermint-75", connection_id: "connection-60", }, id: "connection-78", state: 3, transferChannel: { channelId: "channel-64", counterPartyChannelId: "channel-69", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, }, icqEnabled: false, namespace: "cosmos", reference: "axelar-dojo-1", stakingTokens: [ { denom: "uaxl", }, ], }, noble: { bech32Prefix: "noble", chainId: "noble-1", connections: { "agoric-3": { client_id: "07-tendermint-32", counterparty: { client_id: "07-tendermint-77", connection_id: "connection-72", }, id: "connection-38", state: 3, transferChannel: { channelId: "channel-21", counterPartyChannelId: "channel-62", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "beezee-1": { client_id: "07-tendermint-112", counterparty: { client_id: "07-tendermint-9", connection_id: "connection-3", }, id: "connection-107", state: 3, transferChannel: { channelId: "channel-95", counterPartyChannelId: "channel-3", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "core-1": { client_id: "07-tendermint-61", counterparty: { client_id: "07-tendermint-160", connection_id: "connection-198", }, id: "connection-59", state: 3, transferChannel: { channelId: "channel-36", counterPartyChannelId: "channel-132", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "coreum-mainnet-1": { client_id: "07-tendermint-71", counterparty: { client_id: "07-tendermint-32", connection_id: "connection-21", }, id: "connection-72", state: 3, transferChannel: { channelId: "channel-49", counterPartyChannelId: "channel-19", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "cosmoshub-4": { client_id: "07-tendermint-4", counterparty: { client_id: "07-tendermint-1116", connection_id: "connection-790", }, id: "connection-12", state: 3, transferChannel: { channelId: "channel-4", counterPartyChannelId: "channel-536", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "crescent-1": { client_id: "07-tendermint-1", counterparty: { client_id: "07-tendermint-68", connection_id: "connection-63", }, id: "connection-1", state: 3, transferChannel: { channelId: "channel-0", counterPartyChannelId: "channel-38", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "dydx-mainnet-1": { client_id: "07-tendermint-59", counterparty: { client_id: "07-tendermint-0", connection_id: "connection-0", }, id: "connection-57", state: 3, transferChannel: { channelId: "channel-33", counterPartyChannelId: "channel-0", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "dymension_1100-1": { client_id: "07-tendermint-79", counterparty: { client_id: "07-tendermint-14", connection_id: "connection-7", }, id: "connection-80", state: 3, transferChannel: { channelId: "channel-62", counterPartyChannelId: "channel-6", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "evmos_9001-2": { client_id: "07-tendermint-12", counterparty: { client_id: "07-tendermint-106", connection_id: "connection-63", }, id: "connection-19", state: 3, transferChannel: { channelId: "channel-7", counterPartyChannelId: "channel-64", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "haqq_11235-1": { client_id: "07-tendermint-58", counterparty: { client_id: "07-tendermint-4", connection_id: "connection-4", }, id: "connection-56", state: 3, transferChannel: { channelId: "channel-32", counterPartyChannelId: "channel-4", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "injective-1": { client_id: "07-tendermint-57", counterparty: { client_id: "07-tendermint-212", connection_id: "connection-195", }, id: "connection-55", state: 3, transferChannel: { channelId: "channel-31", counterPartyChannelId: "channel-148", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "juno-1": { client_id: "07-tendermint-3", counterparty: { client_id: "07-tendermint-334", connection_id: "connection-322", }, id: "connection-8", state: 3, transferChannel: { channelId: "channel-3", counterPartyChannelId: "channel-224", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "kaiyo-1": { client_id: "07-tendermint-2", counterparty: { client_id: "07-tendermint-95", connection_id: "connection-65", }, id: "connection-4", state: 3, transferChannel: { channelId: "channel-2", counterPartyChannelId: "channel-62", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "kava_2222-10": { client_id: "07-tendermint-107", counterparty: { client_id: "07-tendermint-172", connection_id: "connection-214", }, id: "connection-102", state: 3, transferChannel: { channelId: "channel-88", counterPartyChannelId: "channel-151", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "lava-mainnet-1": { client_id: "07-tendermint-120", counterparty: { client_id: "07-tendermint-11", connection_id: "connection-15", }, id: "connection-115", state: 3, transferChannel: { channelId: "channel-105", counterPartyChannelId: "channel-9", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "migaloo-1": { client_id: "07-tendermint-19", counterparty: { client_id: "07-tendermint-113", connection_id: "connection-89", }, id: "connection-28", state: 3, transferChannel: { channelId: "channel-14", counterPartyChannelId: "channel-60", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "neutron-1": { client_id: "07-tendermint-25", counterparty: { client_id: "07-tendermint-40", connection_id: "connection-31", }, id: "connection-34", state: 3, transferChannel: { channelId: "channel-18", counterPartyChannelId: "channel-30", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "omniflixhub-1": { client_id: "07-tendermint-68", counterparty: { client_id: "07-tendermint-51", connection_id: "connection-49", }, id: "connection-65", state: 3, transferChannel: { channelId: "channel-44", counterPartyChannelId: "channel-38", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "osmosis-1": { client_id: "07-tendermint-0", counterparty: { client_id: "07-tendermint-2704", connection_id: "connection-2241", }, id: "connection-2", state: 3, transferChannel: { channelId: "channel-1", counterPartyChannelId: "channel-750", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pacific-1": { client_id: "07-tendermint-64", counterparty: { client_id: "07-tendermint-45", connection_id: "connection-77", }, id: "connection-61", state: 3, transferChannel: { channelId: "channel-39", counterPartyChannelId: "channel-45", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "phoenix-1": { client_id: "07-tendermint-56", counterparty: { client_id: "07-tendermint-367", connection_id: "connection-302", }, id: "connection-54", state: 3, transferChannel: { channelId: "channel-30", counterPartyChannelId: "channel-253", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pio-mainnet-1": { client_id: "07-tendermint-30", counterparty: { client_id: "07-tendermint-36", connection_id: "connection-13", }, id: "connection-37", state: 3, transferChannel: { channelId: "channel-20", counterPartyChannelId: "channel-10", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "planq_7070-2": { client_id: "07-tendermint-103", counterparty: { client_id: "07-tendermint-567", connection_id: "connection-490", }, id: "connection-95", state: 3, transferChannel: { channelId: "channel-82", counterPartyChannelId: "channel-63", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "pryzm-1": { client_id: "07-tendermint-100", counterparty: { client_id: "07-tendermint-5", connection_id: "connection-5", }, id: "connection-92", state: 3, transferChannel: { channelId: "channel-79", counterPartyChannelId: "channel-5", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "secret-4": { client_id: "07-tendermint-24", counterparty: { client_id: "07-tendermint-170", connection_id: "connection-127", }, id: "connection-33", state: 3, transferChannel: { channelId: "channel-17", counterPartyChannelId: "channel-88", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "shido_9008-1": { client_id: "07-tendermint-106", counterparty: { client_id: "07-tendermint-9", connection_id: "connection-11", }, id: "connection-99", state: 3, transferChannel: { channelId: "channel-87", counterPartyChannelId: "channel-5", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "stargaze-1": { client_id: "07-tendermint-16", counterparty: { client_id: "07-tendermint-287", connection_id: "connection-214", }, id: "connection-25", state: 3, transferChannel: { channelId: "channel-11", counterPartyChannelId: "channel-204", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "titan_18888-1": { client_id: "07-tendermint-114", counterparty: { client_id: "07-tendermint-1", connection_id: "connection-0", }, id: "connection-109", state: 3, transferChannel: { channelId: "channel-99", counterPartyChannelId: "channel-0", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "umee-1": { client_id: "07-tendermint-73", counterparty: { client_id: "07-tendermint-248", connection_id: "connection-210", }, id: "connection-74", state: 3, transferChannel: { channelId: "channel-51", counterPartyChannelId: "channel-120", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, "vota-ash": { client_id: "07-tendermint-111", counterparty: { client_id: "07-tendermint-23", connection_id: "connection-29", }, id: "connection-106", state: 3, transferChannel: { channelId: "channel-94", counterPartyChannelId: "channel-14", counterPartyPortId: "transfer", ordering: 0, portId: "transfer", state: 3, version: "ics20-1", }, }, }, icqEnabled: false, namespace: "cosmos", reference: "noble-1", }, }, }, }, ]); const customManifest = { publishChainInfo: { consume: { agoricNames: true, agoricNamesAdmin: true, chainStorage: true, }, produce: { chainInfoPublished: true, }, }, }; // Make a behavior function and "export" it by way of script completion value. // It is constructed by an anonymous invocation to ensure the absence of a global binding // for makeCoreProposalBehavior, which may not be necessary but preserves behavior pre-dating // https://github.com/Agoric/agoric-sdk/pull/8712 . const behavior = (({ manifestBundleRef, getManifestCall: [manifestGetterName, ...manifestGetterArgs], customManifest, E, log = console.info, customRestoreRef, }) => { const { entries, fromEntries } = Object; /** * Given an object whose properties may be promise-valued, return a promise * for an analogous object in which each such value has been replaced with its * fulfillment. * This is a non-recursive form of endo `deeplyFulfilled`. * * @template T * @param {{[K in keyof T]: (T[K] | Promise<T[K]>)}} obj * @returns {Promise<T>} */ const shallowlyFulfilled = async obj => { if (!obj) { return obj; } const awaitedEntries = await Promise.all( entries(obj).map(async ([key, valueP]) => { const value = await valueP; return [key, value]; }), ); return fromEntries(awaitedEntries); }; const makeRestoreRef = (vatAdminSvc, zoe) => { /** @type {(ref: import\('./externalTypes.js').ManifestBundleRef) => Promise<Installation<unknown>>} */ const defaultRestoreRef = async bundleRef => { // extract-proposal.js creates these records, and bundleName is // the optional name under which the bundle was installed into // config.bundles const bundleIdP = 'bundleName' in bundleRef ? E(vatAdminSvc).getBundleIDByName(bundleRef.bundleName) : bundleRef.bundleID; const bundleID = await bundleIdP; const label = bundleID.slice(0, 8); return E(zoe).installBundleID(bundleID, label); }; return defaultRestoreRef; }; /** @param {ChainBootstrapSpace & BootstrapPowers & { evaluateBundleCap: any }} powers */ const coreProposalBehavior = async powers => { // NOTE: `powers` is expected to match or be a superset of the above `permits` export, // which should therefore be kept in sync with this deconstruction code. // HOWEVER, do note that this function is invoked with at least the *union* of powers // required by individual moduleBehaviors declared by the manifest getter, which is // necessary so it can use `runModuleBehaviors` to provide the appropriate subset to // each one (see ./writeCoreEvalParts.js). // Handle `powers` with the requisite care. const { consume: { vatAdminSvc, zoe, agoricNamesAdmin }, evaluateBundleCap, installation: { produce: produceInstallations }, modules: { utils: { runModuleBehaviors }, }, } = powers; // Get the on-chain installation containing the manifest and behaviors. log('evaluateBundleCap', { manifestBundleRef, manifestGetterName, vatAdminSvc, }); let bcapP; if ('bundleName' in manifestBundleRef) { bcapP = E(vatAdminSvc).getNamedBundleCap(manifestBundleRef.bundleName); } else if ('bundleID' in manifestBundleRef) { bcapP = E(vatAdminSvc).getBundleCap(manifestBundleRef.bundleID); } else { const keys = Reflect.ownKeys(manifestBundleRef).map(key => typeof key === 'string' ? JSON.stringify(key) : String(key), ); const keysStr = `[${keys.join(', ')}]`; throw Error( `bundleRef must have own bundleName or bundleID, missing in ${keysStr}`, ); } const bundleCap = await bcapP; const proposalNS = await evaluateBundleCap(bundleCap); // Get the manifest and its metadata. log('execute', { manifestGetterName, bundleExports: Object.keys(proposalNS), }); const restoreRef = customRestoreRef || makeRestoreRef(vatAdminSvc, zoe); const { manifest, options: rawOptions, installations: rawInstallations, } = await proposalNS[manifestGetterName]( harden({ restoreRef }), ...manifestGetterArgs, ); // Await promises in the returned options and installations records. const [options, installations] = await Promise.all( [rawOptions, rawInstallations].map(shallowlyFulfilled), ); // Publish the installations for our dependencies. const installationEntries = entries(installations || {}); if (installationEntries.length > 0) { const installAdmin = E(agoricNamesAdmin).lookupAdmin('installation'); await Promise.all( installationEntries.map(([key, value]) => { produceInstallations[key].reset(); produceInstallations[key].resolve(value); return E(installAdmin).update(key, value); }), ); } // Evaluate the manifest. return runModuleBehaviors({ // Remember that `powers` may be arbitrarily broad. allPowers: powers, behaviors: proposalNS, manifest: customManifest || manifest, makeConfig: (name, _permit) => { log('coreProposal:', name); return { options }; }, }); }; return coreProposalBehavior; })({ manifestBundleRef, getManifestCall, customManifest, E }); behavior; "
    }
    2:{
    "jsonPermits":"{ "produce": { "ymax0Kit": true }, "consume": { "localchain": true, "cosmosInterchainService": true, "chainStorage": true, "chainTimerService": true, "agoricNames": true, "board": true, "startUpgradable": true, "zoe": "makeCoreProposalBehavior", "chainInfoPublished": true, "agoricNamesAdmin": "makeCoreProposalBehavior", "vatAdminSvc": "makeCoreProposalBehavior" }, "instance": { "produce": { "ymax0": true } }, "installation": { "consume": { "ymax0": true }, "produce": "makeCoreProposalBehavior" }, "brand": {}, "issuer": { "consume": { "BLD": true, "USDC": true, "PoC26": true } }, "evaluateBundleCap": "makeCoreProposalBehavior", "modules": { "utils": { "runModuleBehaviors": "makeCoreProposalBehavior" } } }"
    "jsCode":"// This is generated by writeCoreEval; please edit! /* eslint-disable */ const manifestBundleRef = {bundleID:"b1-d217fb17508ebe5c94e9ab432a9d6f5aea5fba810f7e5d7cc1785a6235e378e8eb117199624eb2f0061fc39126150d6f833617d0c2c26a979b36b0bb81d88a61"}; const getManifestCall = harden([ "getManifestForPortfolio", { installKeys: { ymax0: { bundleID: "b1-1cfec33f0aea5488aefbbe6b861bf5211081ea139f1bc8bd03540c7b35d6dcb7342b5be675e183cbf2b9d3cd0f9098a2a5e4cf349ce56f11df33835d26d938d7", }, }, options: { slots: [], structure: { axelarConfig: { Arbitrum: { axelarId: "arbitrum-sepolia", chainInfo: { cctpDestinationDomain: 3, namespace: "eip155", reference: "421614", }, contracts: { aavePool: "0xBfC91D59fdAA134A4ED45f7B584cAf96D7792Eff", compound: "0x", factory: "0x", tokenMessenger: "0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5", usdc: "0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557", }, }, Avalanche: { axelarId: "Avalanche", chainInfo: { cctpDestinationDomain: 1, namespace: "eip155", reference: "43113", }, contracts: { aavePool: "0x8B9b2AF4afB389b4a70A474dfD4AdCD4a302bb40", compound: "0x", factory: "0x", tokenMessenger: "0xeb08f243E5d3FCFF26A9E38Ae5520A669f4019d0", usdc: "0x5425890298aed601595a70AB815c96711a31Bc65", }, }, Binance: { axelarId: "binance", chainInfo: { namespace: "eip155", reference: "97", }, contracts: { aavePool: "0x", compound: "0x", factory: "0x", tokenMessenger: "0x", usdc: "0x", }, }, Ethereum: { axelarId: "ethereum-sepolia", chainInfo: { cctpDestinationDomain: 0, namespace: "eip155", reference: "11155111", }, contracts: { aavePool: "0x6Ae43d3271ff6888e7Fc43Fd7321a503ff738951", compound: "0x", factory: "0x", tokenMessenger: "0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5", usdc: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", }, }, Fantom: { axelarId: "Fantom", chainInfo: { namespace: "eip155", reference: "4002", }, contracts: { aavePool: "0x", compound: "0x", factory: "0x", tokenMessenger: "0x", usdc: "0x", }, }, Optimism: { axelarId: "optimism-sepolia", chainInfo: { cctpDestinationDomain: 2, namespace: "eip155", reference: "11155420", }, contracts: { aavePool: "0xb50201558B00496A145fE76f7424749556E326D8", compound: "0x", factory: "0x", tokenMessenger: "0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5", usdc: "0x4200000000000000000000000000000000000042", }, }, Polygon: { axelarId: "polygon-sepolia", chainInfo: { cctpDestinationDomain: 7, namespace: "eip155", reference: "80002", }, contracts: { aavePool: "0x", compound: "0x", factory: "0x", tokenMessenger: "0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5", usdc: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", }, }, }, }, }, }, ]); const customManifest = { startPortfolio: { brand: {}, consume: { agoricNames: true, board: true, chainInfoPublished: true, chainStorage: true, chainTimerService: true, cosmosInterchainService: true, localchain: true, startUpgradable: true, zoe: true, }, installation: { consume: { ymax0: true, }, }, instance: { produce: { ymax0: true, }, }, issuer: { consume: { BLD: true, PoC26: true, USDC: true, }, }, produce: { ymax0Kit: true, }, }, }; // Make a behavior function and "export" it by way of script completion value. // It is constructed by an anonymous invocation to ensure the absence of a global binding // for makeCoreProposalBehavior, which may not be necessary but preserves behavior pre-dating // https://github.com/Agoric/agoric-sdk/pull/8712 . const behavior = (({ manifestBundleRef, getManifestCall: [manifestGetterName, ...manifestGetterArgs], customManifest, E, log = console.info, customRestoreRef, }) => { const { entries, fromEntries } = Object; /** * Given an object whose properties may be promise-valued, return a promise * for an analogous object in which each such value has been replaced with its * fulfillment. * This is a non-recursive form of endo `deeplyFulfilled`. * * @template T * @param {{[K in keyof T]: (T[K] | Promise<T[K]>)}} obj * @returns {Promise<T>} */ const shallowlyFulfilled = async obj => { if (!obj) { return obj; } const awaitedEntries = await Promise.all( entries(obj).map(async ([key, valueP]) => { const value = await valueP; return [key, value]; }), ); return fromEntries(awaitedEntries); }; const makeRestoreRef = (vatAdminSvc, zoe) => { /** @type {(ref: import\('./externalTypes.js').ManifestBundleRef) => Promise<Installation<unknown>>} */ const defaultRestoreRef = async bundleRef => { // extract-proposal.js creates these records, and bundleName is // the optional name under which the bundle was installed into // config.bundles const bundleIdP = 'bundleName' in bundleRef ? E(vatAdminSvc).getBundleIDByName(bundleRef.bundleName) : bundleRef.bundleID; const bundleID = await bundleIdP; const label = bundleID.slice(0, 8); return E(zoe).installBundleID(bundleID, label); }; return defaultRestoreRef; }; /** @param {ChainBootstrapSpace & BootstrapPowers & { evaluateBundleCap: any }} powers */ const coreProposalBehavior = async powers => { // NOTE: `powers` is expected to match or be a superset of the above `permits` export, // which should therefore be kept in sync with this deconstruction code. // HOWEVER, do note that this function is invoked with at least the *union* of powers // required by individual moduleBehaviors declared by the manifest getter, which is // necessary so it can use `runModuleBehaviors` to provide the appropriate subset to // each one (see ./writeCoreEvalParts.js). // Handle `powers` with the requisite care. const { consume: { vatAdminSvc, zoe, agoricNamesAdmin }, evaluateBundleCap, installation: { produce: produceInstallations }, modules: { utils: { runModuleBehaviors }, }, } = powers; // Get the on-chain installation containing the manifest and behaviors. log('evaluateBundleCap', { manifestBundleRef, manifestGetterName, vatAdminSvc, }); let bcapP; if ('bundleName' in manifestBundleRef) { bcapP = E(vatAdminSvc).getNamedBundleCap(manifestBundleRef.bundleName); } else if ('bundleID' in manifestBundleRef) { bcapP = E(vatAdminSvc).getBundleCap(manifestBundleRef.bundleID); } else { const keys = Reflect.ownKeys(manifestBundleRef).map(key => typeof key === 'string' ? JSON.stringify(key) : String(key), ); const keysStr = `[${keys.join(', ')}]`; throw Error( `bundleRef must have own bundleName or bundleID, missing in ${keysStr}`, ); } const bundleCap = await bcapP; const proposalNS = await evaluateBundleCap(bundleCap); // Get the manifest and its metadata. log('execute', { manifestGetterName, bundleExports: Object.keys(proposalNS), }); const restoreRef = customRestoreRef || makeRestoreRef(vatAdminSvc, zoe); const { manifest, options: rawOptions, installations: rawInstallations, } = await proposalNS[manifestGetterName]( harden({ restoreRef }), ...manifestGetterArgs, ); // Await promises in the returned options and installations records. const [options, installations] = await Promise.all( [rawOptions, rawInstallations].map(shallowlyFulfilled), ); // Publish the installations for our dependencies. const installationEntries = entries(installations || {}); if (installationEntries.length > 0) { const installAdmin = E(agoricNamesAdmin).lookupAdmin('installation'); await Promise.all( installationEntries.map(([key, value]) => { produceInstallations[key].reset(); produceInstallations[key].resolve(value); return E(installAdmin).update(key, value); }), ); } // Evaluate the manifest. return runModuleBehaviors({ // Remember that `powers` may be arbitrarily broad. allPowers: powers, behaviors: proposalNS, manifest: customManifest || manifest, makeConfig: (name, _permit) => { log('coreProposal:', name); return { options }; }, }); }; return coreProposalBehavior; })({ manifestBundleRef, getManifestCall, customManifest, E }); behavior; "
    }
    ]
    "@type":"/agoric.swingset.CoreEvalProposal"
    }