diff --git a/main/.vitepress/config.mjs b/main/.vitepress/config.mjs index 758bea59e..f067830c6 100644 --- a/main/.vitepress/config.mjs +++ b/main/.vitepress/config.mjs @@ -412,6 +412,10 @@ export default defineConfig({ }, ], }, + { + text: 'Orchestration', + link: '/guides/orchestration/', + }, { text: 'JavaScript Framework', ariaLabel: 'JavaScript Framework', diff --git a/main/guides/orchestration/index.md b/main/guides/orchestration/index.md new file mode 100644 index 000000000..30891e565 --- /dev/null +++ b/main/guides/orchestration/index.md @@ -0,0 +1,32 @@ +# Orchestration Overview + +Orchestration API is a tool to help developers build seamless applications out of disparate interoperable chains and services. +This composability allows for the development of user-centric applications + that leverage the unique strengths of different blockchain ecosystems. + +The Agoric Orchestration API simplifies interactions between multiple networks, particularly those + using the [Inter-Blockchain Communication (IBC)](/glossary/#ibc) protocol within Cosmos. The API acts as an + abstraction layer, streamlining multi-step processes. + + +Orchestration integrates with existing Agoric components ([SwingSet](/guides/platform/#swingset), Cosmos modules) and introduces + vat-orchestration. This [vat](/glossary/#vat) manages Inter-Chain Account (ICA) identities and connections to host + chains, ensuring proper transaction authorization. + +The orchestration client handles asynchronous tasks and complex workflows, including those +spanning multiple chains. This empowers smart contracts for actions like inter-chain staking and +multi-hop transfers, facilitated by notifications from the transfer vat and IBC middleware +updates. Orchestration simplifies complex cross-chain interactions within a secure and +user-controlled environment on the Agoric platform. + + +## Example API Usage + +```javascript +const amount = coins(100, 'utia'); +const celestiaChain = await orchestrator.getChain('celestia'); +const icaCelestia = await celestiaChain.createAccount(); +await icaOsmosis.transfer(icaCelestia.getAddress(), amount); +await E(timerService).delay(600n); +return icaCelestia.delegate(celestiaValidator, amount); +```