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
- Choose the vault that will make the call. It is the caller, and it pays the fee.
-
Paste the contract address. Stellar contract addresses begin with
C. - 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.
- Pick the function from Contract Function. Only functions the contract actually exposes appear.
- Fill in the arguments. The form is generated from the function's signature, with a field per argument and validation matching the declared type.
- 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.