LogoLogo
  • Overview
    • Introduction
    • Table of Contents
  • Token Information
    • Symmio Foundation
  • Protocol Architecture
    • Protocol Introduction
    • Technical Documentation
      • Building an Application with SYMM
        • Introduction and Diamond Explainer
        • Querying Info from the SYMM Diamond
        • MultiAccount
        • Creating an Account and Depositing Funds
        • Sending a Quote
        • Closing a Quote
        • Instant Trading
          • Instant Login (EOA)
          • Instant Login (Account Abstraction)
          • Sending a Quote (Instant Open)
          • Sending a Quote (Instant Close)
        • Frequently Used Queries
      • Solver Docs
        • Solver Docs (github)
        • Solver Implementation Guide (High Level Overview)
        • Building a Solver on SYMMIO
          • 1. Intent Creation
          • 2. Seeing the Intent
          • 3. Hedging Off-Chain
          • 4. Opening/Closing a Position On-Chain
          • Creating the APIs
            • GET Contract Symbols
            • GET Open Interest
            • GET Notional Cap
            • GET Price Range
            • GET Error Codes
            • GET Get Locked Params
            • GET Get Funding Info
            • POST Position State
          • Solver Flow Summary Example
          • Recommended Architecture for Solvers
          • Glossary
        • Conditional Orders Handler
        • Rasa Solver TP/SL Implementation
        • Instant Trading
          • Instant Trading (Solvers)
          • Rasa Instant Trading Implementation
          • Instant Trading Condition Checks
        • Fetching Gas Prices Script
        • How to Add a Market as a Solver
        • Verifying Account Abstracted Instant Actions (ERC-4337)
      • Frontend Docs
        • Setting up a Frontend with SYMMIO
        • Frontend SDK Setup Guide
        • MultiAccount Deployment Guide
        • Instant Trading (Frontends)
          • Account Abstracted Instant Actions (Frontends)
        • Implement a Trading Bot on Symmio (OLD)
          • Setup
          • Creating a Sub-Account
          • Minting Collateral Tokens (Optional)
          • Depositing and Allocating Tokens
          • Obtaining Muon Signatures
          • Sending a Quote
          • Monitoring Price for Execution
      • Contract Docs
        • SYMMIO CORE v0.82
        • Contracts Documentation 0.8.2
          • Main Flow
          • The SYMM Diamond
          • Facets
            • Account Facet
            • Control Facet
            • Funding Rate Facet
            • PartyA Facet
            • PartyB Facet
            • Liquidation Facet
            • View Facet
          • MultiAccount
            • PartyA
            • PartyB
          • SYMM App (Muon)
            • LibMuon
            • MuonStorage
        • Contracts Documentation 0.8.3
          • Facets
            • Control Facet
            • Account Facet
            • PartyA Facet
            • PartyB Facet
            • View Facet
            • Bridge Facet
            • Liquidation Facet (Implementation)
          • Modified Events
          • New Events
          • MuonStorage
        • Contracts Documentation 0.8.4
          • Main Flow (0.8.4)
          • The SYMM Diamond (0.8.4)
          • Facets
            • Account Facet (0.8.4)
            • Bridge Facet (0.8.4)
            • Control Facet (0.8.4)
            • Force Actions Facet (0.8.4)
            • Funding Rate Facet (0.8.4)
            • Liquidations Facet (0.8.4)
            • PartyA Facet (0.8.4)
            • PartyB Group Actions Facet (0.8.4)
            • PartyB Quote Actions Facet (0.8.4)
            • PartyB Position Actions Facet (0.8.4)
            • Settlement Facet (0.8.4)
            • View Facet (0.8.4)
          • MultiAccount (0.8.4)
            • SymmioPartyA
            • SymmioPartyB
          • SYMM App (Muon)
            • LibMuon (0.8.4)
            • MuonStorage (0.8.4)
      • Contract Addresses / Solver Endpoints
        • Mantle
        • Mode
        • IOTA
        • Base
        • BSC
        • Arbitrum
        • Polygon
        • Berachain
        • Solver Endpoints and Addresses
          • Perps Hub
          • Rasa Capital
          • Rasa Capital (Zero Spread)
          • Zenith
      • How to Query our Contracts
      • Muon API Queries
      • Solver Error Codes
      • Interacting with SYMMIO Contracts
    • Protocol higher level architecture
      • 12-Hour Fraud Proof Window
      • PartyB
      • Solver Settings
      • Max Leverage
      • Maintenance Margin (CVA) Calculations
    • Symmio Whitepaper
  • Building on Symmio
    • Builders introduction
    • Solving for Symmio
      • Solver documentation
      • Solver - Example Flow
    • Trading Fees
      • Perps - Settlement Costs
      • Pair Trading - Settlement costs
    • Exchanges (Frontends)
      • Frontend Introduction
      • SDK - SYMM client
      • Trade on Symmio
  • Legal & Brand & Security
    • Security (Audits / Bugbounty)
      • Bug bounty / Coverage
        • How to contact ?
      • Audits
        • SYMM - V0.8 - 0.81
          • Sherlock Audit - Jun 15, 2023
          • Smart State - Jul 2, 2023
        • SYMM - 0.82
          • Sherlock Audit -Aug 30, 2023
        • SYMM - 0.83
          • Sherlock Audit - Jun 17, 2024
        • SYMM - 0.84
          • Sherlock Audit - Oct 3, 2024
        • Vaults
          • Sherlock Audit - Jan 2, 2024
    • Terms of Service & Licensing
      • TRADEMARK & COPYRIGHT NOTICE
      • CONTACT US
      • TERMS OF SERVICE
      • FRONTEND LICENSE
        • Frontend Modifications
        • Frontend Use Grants
      • CONTRACT LICENSE
        • Contract Use Grants
        • Contract Modifications
    • Brand - Assets Logos
Powered by GitBook
LogoLogo

All rights to the people (c) 2023 Symmetry Labs A.G.

On this page
  • Step 1: Creating a Sub‑Account
  • Step 2: Depositing and Allocating Funds
  1. Protocol Architecture
  2. Technical Documentation
  3. Building an Application with SYMM

Creating an Account and Depositing Funds

PreviousMultiAccountNextSending a Quote

Last updated 2 months ago

In SYMM, managing your trading capital starts with creating a dedicated sub‑account via the contract. These sub‑accounts allow you to interact with the SYMM system by forwarding your calls through your deployed account contract.

Step 1: Creating a Sub‑Account

  1. Navigate to the MultiAccount Contract:

    • Use your preferred blockchain explorer or development tool to interact with the MultiAccount contract.

  2. Call addAccount():

    • Call addAccount(string name) function, passing a name for your sub‑account.

    • Example Call:

      multiAccount.addAccount("TradingAccount");
  3. Check Transaction Logs:

    • Once the transaction is mined, look for the AddAccount event in the transaction logs. An AddAccount event will be emitted:

      AddAccount(address owner, address account, string name)
  4. Query Your Accounts:

    • You can also use the view function getAccounts(address user, uint256 start, uint256 size) on the MultiAccount contract to retrieve an array of your sub‑accounts.

    • Parameters:

      • user: Your wallet address.

      • start: The starting index (for pagination).

      • size: The number of accounts to return.

    • This returns a list of Account structs that include both the sub‑account addresses and their assigned names.

Step 2: Depositing and Allocating Funds

After creating your sub‑account, the next step is to fund it. SYMM uses a two‑step process where you first deposit funds and then allocate those funds for trading.

Use the depositAndAllocateForAccount() function on the MultiAccount contract rather than the deposit/allocate functions on the Diamond contract to deposit and allocate to a sub-account.

    • This function deposits collateral into your sub‑account and immediately allocates it for trading.

    • Function Signature:

      function depositAndAllocateForAccount(address account, uint256 amount) external onlyOwner(account, msg.sender) whenNotPaused;
    • Parameters:

      • account: The address of your sub‑account.

      • amount: The amount of collateral you wish to deposit (in the token's native decimals).

  1. Process:

    • The function retrieves the collateral token address from the Symmio platform.

    • It then transfers the specified amount from your wallet to the MultiAccount contract.

    • The contract approves the Symmio contract to spend the collateral.

    • It calls the depositFor(account, amount) function on the Symmio contract.

    • The amount is converted into 18‑decimals and passed to the allocate(uint256) function via an internal call.

    • Example Call (JavaScript with web3):

      const depositAmount = web3.utils.toWei("10", "ether");
      await multiAccountContract.methods
        .depositAndAllocateForAccount(subAccountAddress, depositAmount)
        .send({ from: myWalletAddress });
  2. Events:

    • On successful execution, the function emits two events:

      • DepositForAccount: Indicates that funds have been deposited into the sub‑account.

      • AllocateForAccount: Confirms that the deposited funds have been allocated for trading.

The collateral token address can be found by calling getCollateral() on the SYMM Diamond's view facet

Call ():

MultiAccount
depositAndAllocateForAccount