Agoric / dapp-orchestration-basics

Agoric Orchestration Sample dApp
1 stars 1 forks source link

orchestration-basics v1 release fixes/clean. e2e workflow works, and tests pass #9

Closed Jovonni closed 1 month ago

Jovonni commented 1 month ago

cleaned branch with all modern changes/updates

Tests Pass

Details

```console make test-orca yarn workspace dapp-agoric-orca-contract test ✘ No tests found in test/test-build-proposal.js ✘ No tests found in test/build-proposal.test.js ✔ deploy-tools › local copy of ParamTypes matches @agoric/governance ✔ deploy-tools › local copy of ELECTORATE matches @agoric/governance ✔ deploy-tools › local copy of INVITATION_MAKERS_DESC matches @agoric/iner-protocol ✔ deploy-tools › boardAux marshal short-cut matches @endo/marshal ✔ deploy-tools › AmountMath.make work-alike matches @agoric/ertp ----- OrCE.2 2 start proposal module evaluating bundles/ bundle-orca.js valid: 374 files bundled at 2024-07-29T19:11:09.828Z with size 3268397 chain registered: agoric { chainId: 'agoriclocal', denom: 'ubld', expectedAddressPrefix: 'agoric' } chain registered: osmosis { chainId: 'osmosislocal', denom: 'uosmo', expectedAddressPrefix: 'osmo' } orca-contract › before hook ℹ bootstrap ℹ brand timer: new Promise ℹ brand BLD: new Promise ℹ brand IST: new Promise ℹ brand Invitation: new Promise ℹ issuer BLD: new Promise ℹ issuer IST: new Promise ℹ issuer Invitation: new Promise ℹ brand timer settled; remaining: [ 'BLD', 'IST', 'Invitation', ] ℹ brand BLD settled; remaining: [ 'IST', 'Invitation', ] ℹ brand IST settled; remaining: [ 'Invitation', ] ℹ brand Invitation settled; remaining: [] ℹ issuer BLD settled; remaining: [ 'IST', 'Invitation', ] ℹ issuer IST settled; remaining: [ 'Invitation', ] ℹ issuer Invitation settled; remaining: [] ℹ issuer MNY: new Promise ℹ brand MNY: new Promise ℹ issuer Item: new Promise ℹ brand Item: new Promise ℹ issuer ATOM: new Promise ℹ brand ATOM: new Promise ℹ issuer MNY settled; remaining: [ 'ATOM', 'Item', ] ℹ brand MNY settled; remaining: [ 'ATOM', 'Item', ] ℹ issuer Item settled; remaining: [ 'ATOM', ] ℹ brand Item settled; remaining: [ 'ATOM', ] ℹ issuer ATOM settled; remaining: [] ℹ brand ATOM settled; remaining: [] ----- startOrch.3 2 startOrchCoreEval ----- startOrch.3 3 startOrchCoreEval done publish bundle orca b1-48ff9 ----- OrCE.2 3 startOrcaContract()... 0.0.93 { produce: {}, consume: {}, installation: { produce: {}, consume: {} }, instance: { produce: {}, consume: {} }, issuer: { produce: {}, consume: {} }, brand: { produce: {}, consume: {} }, zone: Object [Alleged: durableZone] { exo: [Function: wrapper], exoClass: [Function: wrapper], exoClassKit: [Function: wrapper], subZone: [Function: subZone], makeOnce: [Function: makeOnce], watchPromise: [Function: watchPromise], detached: [Function: detached], isStorable: [Function: isStorable], mapStore: [Function: wrapper], setStore: [Function: wrapper], weakMapStore: [Function: wrapper], weakSetStore: [Function: wrapper] } } ----- OrCE.2 4 config { options: { orca: { bundleID: 'b1-48ff962c12e337568582749dfe7f4752c7c69a6f722499a7538c8db4b0fb42eb46f8f0e71aa44fd7b217f37e04de4aab86a0d0429dedc5cdb1a6840116c26d84' } } } ----- OrCE.2 5 permittedPowers { produce: {}, consume: {}, installation: { produce: {}, consume: {} }, instance: { produce: {}, consume: {} }, issuer: { produce: {}, consume: {} }, brand: { produce: {}, consume: {} }, zone: Object [Alleged: durableZone] { exo: [Function: wrapper], exoClass: [Function: wrapper], exoClassKit: [Function: wrapper], subZone: [Function: subZone], makeOnce: [Function: makeOnce], watchPromise: [Function: watchPromise], detached: [Function: detached], isStorable: [Function: isStorable], mapStore: [Function: wrapper], setStore: [Function: wrapper], weakMapStore: [Function: wrapper], weakSetStore: [Function: wrapper] } } ✔ orca-contract › Install the contract ℹ installed: Object @Alleged: BundleInstallation {} orca (re-)installed as b1-48ff9 permittedPowers { produce: {}, consume: {}, installation: { produce: {}, consume: {} }, instance: { produce: {}, consume: {} }, issuer: { produce: {}, consume: {} }, brand: { produce: {}, consume: {} }, zone: Object [Alleged: durableZone] { exo: [Function: wrapper], exoClass: [Function: wrapper], exoClassKit: [Function: wrapper], subZone: [Function: subZone], makeOnce: [Function: makeOnce], watchPromise: [Function: watchPromise], detached: [Function: detached], isStorable: [Function: isStorable], mapStore: [Function: wrapper], setStore: [Function: wrapper], weakMapStore: [Function: wrapper], weakSetStore: [Function: wrapper] } } from inside startOrcaContract: Object [Alleged: BundleIDInstallation] {} Promise { Object [Alleged: DummyOrchestration] {} } Promise { Object [Alleged: NameHubKit nameHub] {} } chainStorage Promise { Object [Alleged: mockChainStorage] { __getInterfaceGuard__: [Function: value], __getMethodNames__: [Function: value], getPath: [Function: value], getStoreKey: [Function: value], makeChildNode: [Function: value], setValue: [Function: value], getBody: [Function: getBody], keys: [Function: keys] } } Object [Alleged: ChainStorageNode] {} DONE MAKING NODES v0.3 Object [Alleged: Board publishingMarshaller] {} ✔ orca-contract › Verify chain registration ----- OrCE.2 6 startOpts { label: 'orca', installation: Object [Alleged: BundleIDInstallation] {}, terms: undefined, privateArgs: { storageNode: Object [Alleged: ChainStorageNode] {}, marshaller: Object [Alleged: Board publishingMarshaller] {}, orchestrationService: Object [Alleged: DummyOrchestration] {}, timerService: Object [Alleged: ManualTimer] { __getInterfaceGuard__: [Function: value], __getMethodNames__: [Function: value], advanceBy: [Function: value], advanceTo: [Function: value], cancel: [Function: value], delay: [Function: value], getClock: [Function: value], getCurrentTimestamp: [Function: value], getTimerBrand: [Function: value], makeNotifier: [Function: value], makeRepeater: [Function: value], repeatAfter: [Function: value], setWakeup: [Function: value], wakeAt: [Function: value], tick: [Function: tick], tickN: [AsyncFunction: tickN] }, localchain: Object [Alleged: DummyLocalchain] {}, agoricNames: Object [Alleged: NameHubKit nameHub] {} } } ----- OrchDev1.2 2 inside start function: v1.0.85 ----- OrchDev1.2 3 privateArgs { cosmosInterchainService: Object [Alleged: DummyCosmosInterchainService] { getChainHub: [AsyncFunction: getChainHub], makeAccount: [AsyncFunction: makeAccount], getChainInfo: [AsyncFunction: getChainInfo] }, orchestrationService: Object [Alleged: DummyCosmosInterchainService] { getChainHub: [AsyncFunction: getChainHub], makeAccount: [AsyncFunction: makeAccount], getChainInfo: [AsyncFunction: getChainInfo] }, storageNode: Object [Alleged: DummyStorageNode] { makeChildNode: [AsyncFunction: makeChildNode], getPath: [Function: getPath], toCapData: [Function: toCapData], setValue: [Function: setValue] }, marshaller: Object [Alleged: DummyMarshaller] { toCapData: [Function: toCapData], fromCapData: [Function: fromCapData] }, timer: Object [Alleged: DummyTimer] {}, timerService: Object [Alleged: DummyTimer] {}, localchain: Object [Alleged: Dumm] {}, agoricNames: Object [Alleged: DummyAgoricNames] { lookup: [AsyncFunction: lookup] } } ----- OrchDev1.2 4 orchestration: Object [Alleged: DummyCosmosInterchainService] { getChainHub: [AsyncFunction: getChainHub], makeAccount: [AsyncFunction: makeAccount], getChainInfo: [AsyncFunction: getChainInfo] } ----- OrchDev1.2 5 marshaller: Object [Alleged: DummyMarshaller] { toCapData: [Function: toCapData], fromCapData: [Function: fromCapData] } ----- OrchDev1.2 6 storageNode: Object [Alleged: DummyStorageNode] { makeChildNode: [AsyncFunction: makeChildNode], getPath: [Function: getPath], toCapData: [Function: toCapData], setValue: [Function: setValue] } ----- OrchDev1.2 7 timer: Object [Alleged: DummyTimer] {} ----- OrchDev1.2 8 localchain: Object [Alleged: Dumm] {} ----- OrchDev1.2 9 agoricNames: Object [Alleged: DummyAgoricNames] { lookup: [AsyncFunction: lookup] } ----- Orchestrator.4 2 making an Orchestrator ----- OrchDev1.2 2 inside start function: v1.0.85 ----- OrchDev1.2 3 privateArgs { cosmosInterchainService: Object [Alleged: DummyCosmosInterchainService] { getChainHub: [AsyncFunction: getChainHub], makeAccount: [AsyncFunction: makeAccount], getChainInfo: [AsyncFunction: getChainInfo] }, orchestrationService: Object [Alleged: DummyCosmosInterchainService] { getChainHub: [AsyncFunction: getChainHub], makeAccount: [AsyncFunction: makeAccount], getChainInfo: [AsyncFunction: getChainInfo] }, storageNode: Object [Alleged: DummyStorageNode] { makeChildNode: [AsyncFunction: makeChildNode], getPath: [Function: getPath], toCapData: [Function: toCapData], setValue: [Function: setValue] }, marshaller: Object [Alleged: DummyMarshaller] { toCapData: [Function: toCapData], fromCapData: [Function: fromCapData] }, timer: Object [Alleged: DummyTimer] {}, timerService: Object [Alleged: DummyTimer] {}, localchain: Object [Alleged: DummyLocalchain] {}, agoricNames: Object [Alleged: DummyAgoricNames] { lookup: [AsyncFunction: lookup] } } ----- OrchDev1.2 4 orchestration: Object [Alleged: DummyCosmosInterchainService] { getChainHub: [AsyncFunction: getChainHub], makeAccount: [AsyncFunction: makeAccount], getChainInfo: [AsyncFunction: getChainInfo] } ----- OrchDev1.2 5 marshaller: Object [Alleged: DummyMarshaller] { toCapData: [Function: toCapData], fromCapData: [Function: fromCapData] } ----- OrchDev1.2 6 storageNode: Object [Alleged: DummyStorageNode] { makeChildNode: [AsyncFunction: makeChildNode], getPath: [Function: getPath], toCapData: [Function: toCapData], setValue: [Function: setValue] } ----- OrchDev1.2 7 timer: Object [Alleged: DummyTimer] {} ----- OrchDev1.2 8 localchain: Object [Alleged: DummyLocalchain] {} ----- OrchDev1.2 9 agoricNames: Object [Alleged: DummyAgoricNames] { lookup: [AsyncFunction: lookup] } ----- Orchestrator.4 2 making an Orchestrator ✔ orca-contract › Start Orca contract (1.5s) ℹ started: Object @Alleged: InstanceHandle {} ----- OrchDev1.2 2 inside start function: v1.0.85 ----- OrchDev1.2 3 privateArgs { storageNode: Object [Alleged: ChainStorageNode] {}, marshaller: Object [Alleged: Board publishingMarshaller] {}, orchestrationService: Object [Alleged: DummyOrchestration] {}, timerService: Object [Alleged: ManualTimer] { __getInterfaceGuard__: [Function: value], __getMethodNames__: [Function: value], advanceBy: [Function: value], advanceTo: [Function: value], cancel: [Function: value], delay: [Function: value], getClock: [Function: value], getCurrentTimestamp: [Function: value], getTimerBrand: [Function: value], makeNotifier: [Function: value], makeRepeater: [Function: value], repeatAfter: [Function: value], setWakeup: [Function: value], wakeAt: [Function: value], tick: [Function: tick], tickN: [AsyncFunction: tickN] }, localchain: Object [Alleged: DummyLocalchain] {}, agoricNames: Object [Alleged: NameHubKit nameHub] {} } ----- OrchDev1.2 4 orchestration: Object [Alleged: DummyOrchestration] {} ----- OrchDev1.2 5 marshaller: Object [Alleged: Board publishingMarshaller] {} ----- OrchDev1.2 6 storageNode: Object [Alleged: ChainStorageNode] {} ----- OrchDev1.2 7 timer: undefined ----- OrchDev1.2 8 localchain: Object [Alleged: DummyLocalchain] {} ----- OrchDev1.2 9 agoricNames: Object [Alleged: NameHubKit nameHub] {} ----- Orchestrator.4 2 making an Orchestrator ----- OrCE.2 7 orca (re)started WITH RESET PROPOSAL_STATUS_PASSED ✔ orca-contract › Start Orca contract using core-eval (1.5s) ℹ run core-eval to start (dummy) orchestration ℹ before core eval ℹ before install ℹ run orca core-eval ℹ [object Object] ℹ bundleID ℹ b1-48ff962c12e337568582749dfe7f4752c7c69a6f722499a7538c8db4b0fb42eb46f8f0e71aa44fd7b217f37e04de4aab86a0d0429dedc5cdb1a6840116c26d84 ℹ Object @Alleged: InstanceHandle {} ----- OrchDev1.2 10 version 0.1.36 ----- OrchDev1.2 11 give ----- OrchDev1.2 12 {} ----- OrchDev1.2 13 inside createAccounts ----- OrchDev1.2 14 orch ----- OrchDev1.2 15 Object [Alleged: Orchestrator orchestrator guest wrapper] { __getInterfaceGuard__: [Function: In "__getInterfaceGuard__" method of (Orchestrator orchestrator)], __getMethodNames__: [Function: __getMethodNames__], asAmount: [Function: In "asAmount" method of (Orchestrator orchestrator)], getBrandInfo: [Function: In "getBrandInfo" method of (Orchestrator orchestrator)], getChain: [Function: In "getChain" method of (Orchestrator orchestrator)], makeLocalAccount: [Function: In "makeLocalAccount" method of (Orchestrator orchestrator)] } ----- OrchDev1.2 16 seat ----- OrchDev1.2 17 Object [Alleged: zcfSeat guest wrapper] { __getInterfaceGuard__: [Function: In "__getInterfaceGuard__" method of (zcfSeat)], __getMethodNames__: [Function: __getMethodNames__], clear: [Function: In "clear" method of (zcfSeat)], decrementBy: [Function: In "decrementBy" method of (zcfSeat)], exit: [Function: In "exit" method of (zcfSeat)], fail: [Function: In "fail" method of (zcfSeat)], getAmountAllocated: [Function: In "getAmountAllocated" method of (zcfSeat)], getCurrentAllocation: [Function: In "getCurrentAllocation" method of (zcfSeat)], getProposal: [Function: In "getProposal" method of (zcfSeat)], getStagedAllocation: [Function: In "getStagedAllocation" method of (zcfSeat)], getSubscriber: [Function: In "getSubscriber" method of (zcfSeat)], hasExited: [Function: In "hasExited" method of (zcfSeat)], hasStagedAllocation: [Function: In "hasStagedAllocation" method of (zcfSeat)], incrementBy: [Function: In "incrementBy" method of (zcfSeat)], isOfferSafe: [Function: In "isOfferSafe" method of (zcfSeat)] } Querying data at path: published.agoricNames Querying data at path: published.wallet.test-wallet.current ----- OrchDev1.2 18 version 0.1.36 ----- OrchDev1.2 19 give ----- OrchDev1.2 20 {} ----- OrchDev1.2 21 inside createAccounts ----- OrchDev1.2 22 orch ----- OrchDev1.2 23 Object [Alleged: Orchestrator orchestrator guest wrapper] { __getInterfaceGuard__: [Function: In "__getInterfaceGuard__" method of (Orchestrator orchestrator)], __getMethodNames__: [Function: __getMethodNames__], asAmount: [Function: In "asAmount" method of (Orchestrator orchestrator)], getBrandInfo: [Function: In "getBrandInfo" method of (Orchestrator orchestrator)], getChain: [Function: In "getChain" method of (Orchestrator orchestrator)], makeLocalAccount: [Function: In "makeLocalAccount" method of (Orchestrator orchestrator)] } ----- OrchDev1.2 24 seat ----- OrchDev1.2 25 Object [Alleged: zcfSeat guest wrapper] { __getInterfaceGuard__: [Function: In "__getInterfaceGuard__" method of (zcfSeat)], __getMethodNames__: [Function: __getMethodNames__], clear: [Function: In "clear" method of (zcfSeat)], decrementBy: [Function: In "decrementBy" method of (zcfSeat)], exit: [Function: In "exit" method of (zcfSeat)], fail: [Function: In "fail" method of (zcfSeat)], getAmountAllocated: [Function: In "getAmountAllocated" method of (zcfSeat)], getCurrentAllocation: [Function: In "getCurrentAllocation" method of (zcfSeat)], getProposal: [Function: In "getProposal" method of (zcfSeat)], getStagedAllocation: [Function: In "getStagedAllocation" method of (zcfSeat)], getSubscriber: [Function: In "getSubscriber" method of (zcfSeat)], hasExited: [Function: In "hasExited" method of (zcfSeat)], hasStagedAllocation: [Function: In "hasStagedAllocation" method of (zcfSeat)], incrementBy: [Function: In "incrementBy" method of (zcfSeat)], isOfferSafe: [Function: In "isOfferSafe" method of (zcfSeat)] } ✔ orca-contract › orchestrate - osmosis makeAccount returns a ContinuingOfferResult (1.5s) ℹ installing the contract... ℹ starting the instance... ℹ instance started: Object @Alleged: InstanceHandle {} ℹ getting public facet... ℹ public facet obtained: Object @Alleged: Orca Public Facet {} ℹ creating account invitation... ℹ invitation created: Object @Alleged: Zoe Invitation payment {} ℹ making offer... ℹ initial user seat: Object @Alleged: ZoeUserSeat userSeat {} ℹ getting offer result... ℹ offer result: Object @Vow { payload: { vowV0: Object @Alleged: VowInternalsKit vowV0 {}, }, } ℹ vstorage data at published.agoricNames: {} ℹ querying vstorage for wallet: test-wallet, offerId: offerId ℹ current wallet record: { offerToPublicSubscriberPaths: [ [ 'offerId', Object { … }, ], ], status: { error: undefined, id: 'offerId', numWantsSatisfied: 1, result: 'UNPUBLISHED', }, } ℹ offer to public subscriber map: { offerId: { account: 'osmo1abc', }, } ℹ extracted address: osmo1abc ℹ got address: osmo1abc ℹ current wallet record { offerToPublicSubscriberPaths: [ [ 'offerId', Object { … }, ], ], status: { error: undefined, id: 'offerId', numWantsSatisfied: 1, result: 'UNPUBLISHED', }, } ℹ continuing offer result Object @Vow { payload: { vowV0: Object @Alleged: VowInternalsKit vowV0 {}, }, } ✔ bundle-source › bundleSource() bundles the contract for use with zoe (4.6s) ℹ 48ff962c12e337568582749dfe7f4752c7c69a6f722499a7538c8db4b0fb42eb46f8f0e71aa44fd7b217f37e04de4aab86a0d0429dedc5cdb1a6840116c26d84 ℹ Object @Alleged: BundleInstallation {} ✔ bundle-source › bundleSource() bundles the contract for use with zoe (4.6s) ℹ a61c0b9d3c7b4ba1dd1c4bb85dbeae47fbeaa368d42d197c4fd57b17168b0191333eb1fe191525982d02ac6bf619ad35f38efb804161e77585aeddf0b5d780a6 ℹ Object @Alleged: BundleInstallation {} ─ 12 tests passed ```

Contract deployment works as expected, and ui user flow works as expected.