Agoric / agoric-sdk

monorepo for the Agoric Javascript smart contract platform
Apache License 2.0
327 stars 206 forks source link

Orchestration API product features covered by multichain-testing #9964

Closed turadg closed 1 month ago

turadg commented 2 months ago

Before we ship Orchestration API we want functional integration tests of its capabilities. This requires the multichain-testing environment.

0xpatrickdev commented 1 month ago

First pass at describing coverage:

Test Name Description Methods Used Uses async-flow Contract Used Untested
account-balance-queries Makes an account on local and remote chains and sends a balance query. Always returns an empty balance since the account creation and balance query occur in the same offer handler. - orchAccount.getBalance()
- orcAccount.getBalances()
- orch.getChain()
- orch.makeAccount()
Yes query-flows.contract.js
auto-stake-it Makes Local + Cosmos orchAccounts and sets up a transfer tap (vtransfer, ibc-hooks) to auto-delegate. Reads local orchAccount address from vstorage and sends IBC transfer from HDWallet to invoke autostake - orch.getChain()
- chain.makeAccount()
- localOrchAccount.monitorTransfers()
- cosmosOrchAccount.delegate()
Yes auto-stake-it.contract.js
basic-flows Makes an account on a remote chain and returns a continuing offer (with invitationMakers like Delegate, Undelegate, Transfer, Send) - orch.getChain()
- orch.makeAccount()
Yes basic-flows.contract.js
chain-queries Sends balance query from the chain object via ICQ and localchain queries. Queries pre-funded accounts that have balances. Ensures icqEnabled: false chains provide a helpful error message. - orch.getChain()
- Chain.query()
Yes query-flows.contract.js
ica-channel-close Ensures an ICA account holder can deactivate and reactivate their account, verifying the ICA channel closure process. Ensures external clients cannot initiate ChannelClose for ICA and Transfer channels (vibc) - orch.getChain()
- orch.makeAccount()
- orcAccount.deactive()
- orcAccount.reactivate()
Yes basic-flows.contract.js
send-anywhere SendAnywhere takes a Payment from an offers and sends it over IBC to another chain. It involves making a contract-level LocalOrchAccount, depositing to it via zoeTools.localTransfer, and using LOA.transfer() to send the funds over IBC. - LOA.makeAccount()
- LOA.transfer()
- zoeTools.localTransfer()
- LOA.deposit()
- Chain.getVBankAssetInfo()
- Chain.makeAccount()
- Orch.getChain()
Yes sendAnywhere.contract.js - Multi-hop (PFM) transfers (not implemented in contract)
stake-ica Makes an account and performs/validates staking actions: Delegate, WithdrawReward, Undelegate - orch.getChain()
- orch.makeAccount()
- orcAccount.delegate()
- orcAccount.withdrawReward()
- orcAccount.undelegate()
No, but we can point these tests to basicFlows or prioritize #9838 stakeIca.contract.js - Redelegate
- WithdrawRewards (plural) (not implemented)
- StakingQueries (not implemented)
- StakingFromLocalOrchAccount
swapExample Yes swapExample.contract.js - Everything - contract incomplete
unbondExample Yes unbondExample.contract.js - Everything - contract incomplete
0xpatrickdev commented 1 month ago

Also, this resource exists, is up to date, and should provide a helpful point of reference: https://github.com/Agoric/agoric-sdk/blob/master/packages/orchestration/src/exos/README.md

turadg commented 1 month ago

I put the above comment into https://github.com/Agoric/agoric-sdk/blob/9964-orch-usage/packages/orchestration/USAGE.md and revised it.