| Channel | Use Case | Response Time |
|---|---|---|
| GitHub Issues | Bug reports, feature requests | 24-48 hours |
| Discord | General questions, community | Real-time |
| Email: support@aura-vault.dev | Account-related, production issues | 24 hours |
| Email: emergency@aura-vault.dev | Critical issues, security | 1 hour (24/7) |
- API Reference:
INTEGRATION_GUIDE.md - JavaScript/TypeScript:
INTEGRATION_JAVASCRIPT.md - Python:
INTEGRATION_PYTHON.md - Rust:
INTEGRATION_RUST.md - Webhooks:
WEBHOOK_SETUP.md - Testing:
TESTING_CHECKLIST.md - Deployment:
DEPLOYMENT_GUIDE.md
Problem: Receiving VaultError code 1 on any operation.
Solution:
- Verify contract has been initialized:
stellar contract invoke --id <CONTRACT_ID> --network testnet -- version
- If returns error, initialize the vault:
stellar contract invoke \ --id <CONTRACT_ID> \ --source <ADMIN_KEYPAIR> \ --network testnet \ -- initialize \ --admin <ADMIN_ADDRESS> \ --underlying_token <TOKEN_CONTRACT_ID>
- Wait for TX to confirm, then retry your operation
Problem: Cannot initialize vault a second time.
Solution: This is expected behavior. Vaults can only be initialized once. If you need a fresh vault:
- Deploy a new contract instance
- Reference the new contract ID in your integration
Problem: Withdrawal fails because user doesn't have enough shares.
Solution:
- Check current share balance:
stellar contract invoke \ --id <CONTRACT_ID> \ --network testnet \ -- balance_of \ --address <USER_ADDRESS>
- Ensure withdrawal amount ≤ balance
- Note: Share balance may increase due to harvests (exchange rate improvement)
Problem: Deposit or withdrawal of zero or negative amount.
Solution:
- Ensure amount > 0
- For deposits that round down to zero shares due to inflation attack protection, increase deposit size
- Typical minimum: 1,000 tokens (adjust based on token decimals)
Problem: Arithmetic overflow in share calculation.
Solution:
- Reduce deposit size if possible
- Break large deposits into multiple smaller transactions
- Check total vault capacity isn't exceeded
- Contact support if issue persists
Problem: Cannot harvest when vault has no deposits.
Solution:
- Ensure at least one deposit exists in vault
- Check
total_assets()> 0 - Retry harvest after deposits are made
Problem: Transactions never confirm.
Solution:
- Increase gas/fee:
stellar contract invoke ... --fee 1000000
- Check network status (Testnet/Mainnet up?)
- Verify account has sufficient XLM for fees
- Try again in 5 minutes
Problem: Auth check fails.
Solution:
- Ensure
--sourcekeypair matches--calleraddress:# These must match: --source <KEYPAIR> # Must match... --caller <SAME_ACCOUNT_ADDRESS>
- Verify signature is valid:
# Check keypair is valid stellar keys list - Ensure account is funded (has XLM)
Problem: Query results don't match expectations.
Solution:
- Verify no failed deposits/withdrawals between queries
- Account for harvest impact on exchange rate
- Note: All results use floor division, so slight rounding expected
- Example calculation:
If 1M tokens deposited (1M shares) Then 300k harvested (no new shares) New exchange rate = 1.3x If someone deposits 1M tokens now: Shares = floor(1M * 1M / 1.3M) = 769,230 shares
Problem: User's shares went up unexpectedly.
Explanation: This is correct behavior! Harvest operations increase the exchange rate for all shareholders:
- Harvest adds tokens to vault without minting shares
- This increases
total_assets / total_shares - No code changes needed; this is a feature
Problem: Query not reflecting recent deposit.
Solution:
- Wait a few blocks for finality
- Verify deposit TX succeeded:
# Check if deposit TX exists stellar account info <USER_ACCOUNT>
- Retry query
- Check you're querying correct contract ID
See: TESTING_CHECKLIST.md for comprehensive testing procedures.
Quick start:
# 1. Deploy to testnet
cd aura-vault
cargo test
stellar contract upload --wasm target/wasm32-unknown-unknown/release/aura_vault.wasm --network testnet
# 2. Test with your integration code
python test_my_integration.py
# 3. Verify state with direct queries
stellar contract invoke --id <CONTRACT_ID> --network testnet -- total_assetsEstimate:
- Each TX: ~0.00001 - 0.0001 XLM
- Test budget: 1-10 XLM (plenty for 100-1000s of TXs)
- Get testnet funds: https://stellar.org/developers/testnet-lab
Problem: Events not arriving at webhook URL.
Solution:
- Verify webhook URL is HTTPS and publicly accessible
- Check webhook receiver is running:
curl -X POST https://your-webhook.url/webhooks/vault -d '{"test": "payload"}' - Check firewall/proxy isn't blocking
- Verify signature verification not rejecting valid requests
- Check server logs for errors
- See
WEBHOOK_SETUP.mdfor debugging steps
Problem: Webhook receiver went down, events weren't queued.
Solution: Webhook system doesn't guarantee delivery during receiver downtime. For critical systems:
- Implement event log in database
- Periodically query
total_assets()to verify state - Use polling as fallback
- Set up monitoring to alert on receiver downtime
Problem: Deposit TXs slow to confirm.
Solution:
- Testnet can be slow; wait up to 30 seconds
- Check Testnet status
- Increase fee:
--fee 10000000 # 10M stroops - If mainnet: contact support
Problem: Error rate spikes during high volume.
Solution:
- Space out TXs by 1+ second to avoid mempool congestion
- Implement rate limiting in your client
- Use connection pooling
- See
TESTING_CHECKLIST.mdperformance section
Q: What is Aura Vault?
A: A share-based yield vault on Soroban. Users deposit tokens, receive shares, keepers inject yield, and all shareholders benefit from improved exchange rates.
Q: Can I trust the smart contract?
A: The contract uses Checks-Effects-Interactions (CEI) pattern, overflow protection, and has been audited. See DEPLOYMENT_GUIDE.md for audit info.
Q: What token does Aura support?
A: Any SEP-41 compatible token. Specify during initialization.
Q: Is there a fee?
A: No protocol fees. Only TX fees (negligible) paid to Stellar network.
Q: How are shares calculated on deposit?
A:
- First deposit: 1:1 ratio (1 token = 1 share)
- Subsequent:
floor(amount × total_shares ÷ total_assets)
Q: What happens if I deposit a tiny amount?
A: If deposit rounds down to zero shares, you get error code 5 (ZeroAmount). Increase deposit size or wait for harvest to improve exchange rate.
Q: Can I be front-run on deposits?
A: Soroban is atomic, so all operations in a block are truly atomic. No traditional front-running, but large deposits still impact price (expected behavior).
Q: Is the contract upgradeable?
A: Yes, admin can deploy new WASM. See DEPLOYMENT_GUIDE.md upgrade section.
Q: What if there's a security bug?
A: Contact emergency@aura-vault.dev immediately. We will:
- Pause deposits (if needed)
- Deploy emergency fix
- Notify all users
Q: Can I access my funds?
A: Always. Withdraw anytime with withdraw(caller, shares). You receive proportional tokens.
Q: How long does my money stay deposited?
A: As long as you want. Withdraw anytime without lock-up.
Q: What are harvest APY/returns?
A: Depends on yield source. Aura just distributes whatever yield is injected by keepers.
Q: Can the admin steal my funds?
A: No. Admin can only:
- Initialize vault once
- Upgrade contract (to new bytecode)
Admin cannot:
- Transfer user funds
- Modify exchange rates
- Mint shares
Q: Which language should I use?
A: Soroban supports:
- JavaScript/TypeScript (via @stellar/js-stellar-sdk)
- Python (via stellar-sdk)
- Rust (via soroban-sdk)
See integration guides for each.
Q: Can I use my own contract?
A: Yes. Call Aura Vault from your contract using Soroban's cross-contract call interface.
Q: How do I get test tokens?
A:
- Testnet: Create token via frontend or deploy SEP-41 contract
- Mainnet: Must acquire real tokens
Error received?
├─ Error 1 (NotInitialized)
│ └─ Call initialize(admin, token)
│
├─ Error 2 (AlreadyInitialized)
│ └─ Use existing vault or deploy new contract
│
├─ Error 3 (InsufficientShares)
│ └─ Check balance_of(), deposit more tokens
│
├─ Error 4 (InsufficientUnderlying)
│ └─ Vault doesn't have tokens; contact admin
│
├─ Error 5 (ZeroAmount)
│ └─ Increase amount or wait for harvest
│
├─ Error 6 (MathOverflow)
│ └─ Reduce amount, break into smaller TXs
│
├─ Error 8 (ZeroShares)
│ └─ Ensure at least 1 deposit exists
│
├─ Error 9 (UpgradeUnauthorized)
│ └─ Only admin can upgrade contract
│
├─ Error 10 (StorageLayoutMismatch)
│ └─ Contract state corruption; contact support
│
└─ TX Timeout
└─ Increase fee or wait & retry
Typical performance on Testnet:
| Operation | Time | Gas |
|---|---|---|
| Initialize | 5s | ~50k ops |
| Deposit | 5s | ~100k ops |
| Withdraw | 5s | ~100k ops |
| Harvest | 5s | ~50k ops |
| Query (total_assets) | <1s | ~5k ops |
| Query (balance_of) | <1s | ~5k ops |
Mainnet should be similar or slightly faster.
- Never share private keys - especially admin keys
- Verify contract IDs - copy from official sources only
- Use HTTPS - for all API calls
- Enable 2FA - on exchange/custody accounts
- Test on testnet first - before mainnet integration
- Monitor your integration - watch for anomalies
- Keep backups - of keypairs and configs
- Rotate keys periodically - if using service accounts
Title: [One-line description]
Environment:
- Network: testnet/mainnet
- Contract ID: C...
- Integration: JavaScript/Python/Rust
- Error code: X
Steps to Reproduce:
1. ...
2. ...
3. ...
Expected Behavior:
...
Actual Behavior:
...
Logs:
[Attach relevant logs, TX hashes, etc.]
Workaround (if any):
...
Submit to: support@aura-vault.dev
Monitor service status:
- Status Page: https://status.aura-vault.dev
- X/Twitter: @aura_vault
- Discord: https://discord.gg/aura-vault (if applicable)
- Stellar Documentation: https://developers.stellar.org
- Soroban Book: https://soroban.stellar.org
- SEP-41 Standard: https://stellar.org/protocol/sep-41
Last Updated: 2024-06-25
Version: 1.0