← Documentation

Calling Soroban contracts

Point a vault at any Stellar contract, and get a form built from the contract itself.

Why this exists

Payments and swaps cover most of what a treasury does, but Stellar contracts can do far more — staking, vesting, governance, whatever a team has deployed. Rather than limit vaults to a fixed list of actions, Volta Circuit lets a vault call any Soroban contract, with the same approvals as every other transaction.

You do not need to hand-write XDR or know the argument encoding. Paste the contract address and the app reads the contract's own interface to build the form.

How it works

  1. Choose the vault that will make the call. It is the caller, and it pays the fee.
  2. Paste the contract address. Stellar contract addresses begin with C.
  3. The app fetches the contract's interface. Every Soroban contract publishes a specification of its functions and their argument types; that is read directly from the network, not from a list we maintain.
  4. Pick the function from Contract Function. Only functions the contract actually exposes appear.
  5. Fill in the arguments. The form is generated from the function's signature, with a field per argument and validation matching the declared type.
  6. Review and approve. The call becomes a proposal, collects approvals to the vault's threshold, and is then submitted.

Argument types

The form handles the shapes Soroban contracts actually use, not just simple values:

  • Primitives — numbers, booleans, strings, addresses.
  • Vectors — repeatable lists, where you add and remove entries.
  • Maps — key and value pairs, each validated against its declared type.
  • Structs — grouped fields, expanded so each member has its own input.
  • Enums and unions — pick the variant, then fill only that variant's fields.

Nested combinations work too — a vector of structs, or a map with struct values, expands the whole way down. If a contract uses a type the form cannot represent safely, it tells you rather than submitting something that would fail on-chain or, worse, succeed with the wrong value.

Templates

Calls you make repeatedly can be saved as templates, so the contract, function and arguments come back pre-filled. Useful for a monthly distribution or a recurring governance vote, where retyping arguments is the risky part.

Before you approve

  • Confirm the contract address. The app reads whatever contract you point it at; it cannot tell you the contract is trustworthy or that it is the one you meant.
  • Understand what the function does. A generated form proves the arguments are well-formed, not that the call is safe. Contract calls can move assets or grant authority.
  • Approvals are the safety net. Other owners see the contract, function and arguments before adding their approval — which is exactly the point of running these through a vault rather than a single wallet.