Proposal details

#53 KREAd-rc1 to Mainnet

Passed

This proposal if voted will add the first Mainnet 2 partner dapp smart contracts to Agoric: KREAd-dapp Upgrade Features This release will add all bundles for mainnet-2 dapp KREAd to the chain, adding governance and all contract functionality for end-user and governors. Allowing users to mint and manage their characters, and use the marketplace to trade with other users. Discussion https://community.agoric.com/t/add-smart-contract-for-kread-dapp/483 Release https://github.com/Kryha/KREAd/releases/tag/KREAd-rc1

Submit time: 28 Sep 2023, 21:18

Details

Voting period

100.00%
28 Sep 2023, 21:1801 Oct 2023, 21:18

Core Eval Proposal

  • Title

    KREAd-rc1 to Mainnet

  • Type

    CoreEvalProposal

  • Data
    {
    "evals":[
    0:{
    "jsonPermits":"{ "zone": true, "consume": { "board": true, "zoe": "makeCoreProposalBehavior", "chainTimerService": true, "chainStorage": true, "kreadCommitteeCreatorFacet": true, "agoricNames": true, "namesByAddressAdmin": true, "agoricNamesAdmin": "makeCoreProposalBehavior", "vatAdminSvc": "makeCoreProposalBehavior" }, "instance": { "produce": { "kread": true } }, "installation": { "consume": { "kreadKit": true, "contractGovernor": true }, "produce": "makeCoreProposalBehavior" }, "brand": { "produce": { "KREAdCHARACTER": true, "KREAdITEM": true } }, "issuer": { "consume": { "IST": true }, "produce": { "KREAdCHARACTER": true, "KREAdITEM": true } }, "produce": { "kreadKit": true }, "evaluateBundleCap": "makeCoreProposalBehavior", "modules": { "utils": { "runModuleBehaviors": "makeCoreProposalBehavior" } } }"
    "jsCode":"// This is generated by writeCoreProposal; please edit! /* eslint-disable */ const manifestBundleRef = {bundleID:"b1-0c3363b8737677076e141a84b84c8499012f6ba79c0871fc906c8be1bb6d11312a7d14d5a3356828a1de6baa4bee818a37b7cb1ca2064f6eecbabc0a40d28136"}; const getManifestCall = harden([ "getManifestForStartKread", { kreadKitRef: { bundleID: "b1-853acd6ba3993f0f19d6c5b0a88c9a722c9b41da17cf7f98ff7705e131860c4737d7faa758ca2120773632dbaf949e4bcce2a2cbf2db224fa09cd165678f64ac", }, platformFeeAddr: "agoric1plt4252p5yu4x0nndfnkumh0gws7pdeksqq33e", royaltyAddr: "agoric19rtq0t8rm5ej5eyumgl0qwepzr7t4x50whx9ae", }, ]); const overrideManifest = { startKread: { brand: { produce: { KREAdCHARACTER: true, KREAdITEM: true, }, }, consume: { agoricNames: true, board: true, chainStorage: true, chainTimerService: true, kreadCommitteeCreatorFacet: true, namesByAddressAdmin: true, zoe: true, }, installation: { consume: { contractGovernor: true, kreadKit: true, }, }, instance: { produce: { kread: true, }, }, issuer: { consume: { IST: true, }, produce: { KREAdCHARACTER: true, KREAdITEM: true, }, }, produce: { kreadKit: true, }, zone: true, }, }; // Make the behavior the completion value. (({ manifestBundleRef, getManifestCall, overrideManifest, E, log = console.info, restoreRef: overrideRestoreRef, }) => { const { entries, fromEntries } = Object; // deeplyFulfilled is a bit overkill for what we need. const shallowlyFulfilled = async obj => { if (!obj) { return obj; } const ents = await Promise.all( entries(obj).map(async ([key, valueP]) => { const value = await valueP; return [key, value]; }), ); return fromEntries(ents); }; /** @param {ChainBootstrapSpace & BootstrapPowers & { evaluateBundleCap: any }} allPowers */ const behavior = async allPowers => { // NOTE: If updating any of these names extracted from `allPowers`, you must // change `permits` above to reflect their accessibility. const { consume: { vatAdminSvc, zoe, agoricNamesAdmin }, evaluateBundleCap, installation: { produce: produceInstallations }, modules: { utils: { runModuleBehaviors }, }, } = allPowers; const [exportedGetManifest, ...manifestArgs] = getManifestCall; const defaultRestoreRef = async ref => { // extract-proposal.js creates these records, and bundleName is // the name under which the bundle was installed into // config.bundles const p = ref.bundleName ? E(vatAdminSvc).getBundleIDByName(ref.bundleName) : ref.bundleID; const bundleID = await p; const label = bundleID.slice(0, 8); return E(zoe).installBundleID(bundleID, label); }; const restoreRef = overrideRestoreRef || defaultRestoreRef; // Get the on-chain installation containing the manifest and behaviors. console.info('evaluateBundleCap', { manifestBundleRef, exportedGetManifest, vatAdminSvc, }); let bcapP; if ('bundleName' in manifestBundleRef) { bcapP = E(vatAdminSvc).getNamedBundleCap(manifestBundleRef.bundleName); } else { bcapP = E(vatAdminSvc).getBundleCap(manifestBundleRef.bundleID); } const bundleCap = await bcapP; const manifestNS = await evaluateBundleCap(bundleCap); console.error('execute', { exportedGetManifest, behaviors: Object.keys(manifestNS), }); const { manifest, options: rawOptions, installations: rawInstallations, } = await manifestNS[exportedGetManifest]( harden({ restoreRef }), ...manifestArgs, ); // Await references in the options or installations. const [options, installations] = await Promise.all( [rawOptions, rawInstallations].map(shallowlyFulfilled), ); // Publish the installations for behavior dependencies. const installAdmin = E(agoricNamesAdmin).lookupAdmin('installation'); await Promise.all( entries(installations || {}).map(([key, value]) => { produceInstallations[key].resolve(value); return E(installAdmin).update(key, value); }), ); // Evaluate the manifest for our behaviors. return runModuleBehaviors({ allPowers, behaviors: manifestNS, manifest: overrideManifest || manifest, makeConfig: (name, _permit) => { log('coreProposal:', name); return { options }; }, }); }; // Make the behavior the completion value. return behavior; })({ manifestBundleRef, getManifestCall, overrideManifest, E }); "
    }
    1:{
    "jsonPermits":"{ "consume": { "board": true, "chainStorage": true, "diagnostics": true, "zoe": "makeCoreProposalBehavior", "namesByAddressAdmin": true, "kreadCommitteeCreatorFacet": true, "highPrioritySendersManager": true, "kreadCharterKit": true, "agoricNames": true, "kreadKit": true, "agoricNamesAdmin": "makeCoreProposalBehavior", "vatAdminSvc": "makeCoreProposalBehavior" }, "produce": { "kreadCommitteeKit": true, "kreadCommitteeCreatorFacet": "kreadCommittee", "kreadCharterKit": true }, "installation": { "consume": { "committee": "zoe", "binaryVoteCounter": true, "kreadCommitteeCharter": true }, "produce": "makeCoreProposalBehavior" }, "instance": { "produce": { "kreadCommittee": "kreadCommittee", "kreadCommitteeCharter": true }, "consume": { "kread": true } }, "evaluateBundleCap": "makeCoreProposalBehavior", "modules": { "utils": { "runModuleBehaviors": "makeCoreProposalBehavior" } } }"
    "jsCode":"// This is generated by writeCoreProposal; please edit! /* eslint-disable */ const manifestBundleRef = {bundleID:"b1-a724453e7bfcaae1843be4532e18c1236c3d6d33bf6c44011f2966e155bc7149b904573014e583fdcde2b9cf2913cb8b337fc9daf79c59a38a37c99030fcf7dc"}; const getManifestCall = harden([ "getManifestForInviteCommittee", { committeeName: "kread-gov", kreadCommitteeCharterRef: { bundleID: "b1-51085a4ad4ac3448ccf039c0b54b41bd11e9367dfbd641deda38e614a7f647d7f1c0d34e55ba354d0331b1bf54c999fca911e6a796c90c30869f7fb8887b3024", }, voterAddresses: { kgov1: "agoric1hlm7w6pyyqnwz35jdknly8mp0ehvyrl04xjez7", kgov2: "agoric19rtq0t8rm5ej5eyumgl0qwepzr7t4x50whx9ae", }, }, ]); const overrideManifest = { addGovernorToKreadCharter: { consume: { agoricNames: true, kreadCharterKit: true, kreadCommitteeCreatorFacet: true, kreadKit: true, namesByAddressAdmin: true, zoe: true, }, installation: { consume: { binaryVoteCounter: true, }, }, instance: { consume: { kread: true, }, }, }, inviteCommitteeMembers: { consume: { highPrioritySendersManager: true, kreadCommitteeCreatorFacet: true, namesByAddressAdmin: true, }, }, inviteToKreadCharter: { consume: { kreadCharterKit: true, namesByAddressAdmin: true, }, }, startKreadCharter: { consume: { zoe: true, }, installation: { consume: { binaryVoteCounter: true, kreadCommitteeCharter: true, }, }, instance: { produce: { kreadCommitteeCharter: true, }, }, produce: { kreadCharterKit: true, }, }, startKreadCommittee: { consume: { board: true, chainStorage: true, diagnostics: true, zoe: true, }, installation: { consume: { committee: "zoe", }, }, instance: { produce: { kreadCommittee: "kreadCommittee", }, }, produce: { kreadCommitteeCreatorFacet: "kreadCommittee", kreadCommitteeKit: true, }, }, }; // Make the behavior the completion value. (({ manifestBundleRef, getManifestCall, overrideManifest, E, log = console.info, restoreRef: overrideRestoreRef, }) => { const { entries, fromEntries } = Object; // deeplyFulfilled is a bit overkill for what we need. const shallowlyFulfilled = async obj => { if (!obj) { return obj; } const ents = await Promise.all( entries(obj).map(async ([key, valueP]) => { const value = await valueP; return [key, value]; }), ); return fromEntries(ents); }; /** @param {ChainBootstrapSpace & BootstrapPowers & { evaluateBundleCap: any }} allPowers */ const behavior = async allPowers => { // NOTE: If updating any of these names extracted from `allPowers`, you must // change `permits` above to reflect their accessibility. const { consume: { vatAdminSvc, zoe, agoricNamesAdmin }, evaluateBundleCap, installation: { produce: produceInstallations }, modules: { utils: { runModuleBehaviors }, }, } = allPowers; const [exportedGetManifest, ...manifestArgs] = getManifestCall; const defaultRestoreRef = async ref => { // extract-proposal.js creates these records, and bundleName is // the name under which the bundle was installed into // config.bundles const p = ref.bundleName ? E(vatAdminSvc).getBundleIDByName(ref.bundleName) : ref.bundleID; const bundleID = await p; const label = bundleID.slice(0, 8); return E(zoe).installBundleID(bundleID, label); }; const restoreRef = overrideRestoreRef || defaultRestoreRef; // Get the on-chain installation containing the manifest and behaviors. console.info('evaluateBundleCap', { manifestBundleRef, exportedGetManifest, vatAdminSvc, }); let bcapP; if ('bundleName' in manifestBundleRef) { bcapP = E(vatAdminSvc).getNamedBundleCap(manifestBundleRef.bundleName); } else { bcapP = E(vatAdminSvc).getBundleCap(manifestBundleRef.bundleID); } const bundleCap = await bcapP; const manifestNS = await evaluateBundleCap(bundleCap); console.error('execute', { exportedGetManifest, behaviors: Object.keys(manifestNS), }); const { manifest, options: rawOptions, installations: rawInstallations, } = await manifestNS[exportedGetManifest]( harden({ restoreRef }), ...manifestArgs, ); // Await references in the options or installations. const [options, installations] = await Promise.all( [rawOptions, rawInstallations].map(shallowlyFulfilled), ); // Publish the installations for behavior dependencies. const installAdmin = E(agoricNamesAdmin).lookupAdmin('installation'); await Promise.all( entries(installations || {}).map(([key, value]) => { produceInstallations[key].resolve(value); return E(installAdmin).update(key, value); }), ); // Evaluate the manifest for our behaviors. return runModuleBehaviors({ allPowers, behaviors: manifestNS, manifest: overrideManifest || manifest, makeConfig: (name, _permit) => { log('coreProposal:', name); return { options }; }, }); }; // Make the behavior the completion value. return behavior; })({ manifestBundleRef, getManifestCall, overrideManifest, E }); "
    }
    ]
    "@type":"/agoric.swingset.CoreEvalProposal"
    }