Full Service API
  • Welcome!
  • Overview
  • API Endpoints
    • v2
      • Account
        • Account
          • Create Account
          • Import Account
          • Import Account Legacy
          • Get Accounts
          • Get Account Status
          • Get Balance
          • Update Account Name
          • Set Require Spend Subaddress
          • Remove Account
        • Account Secrets
          • Export Account Secrets
        • Address
          • Assign Address For Account
          • Get Address For Account
          • Get Addresses
          • Get Address Status
          • Verify Address
        • View Only Account
          • Import View Only Account
          • Create View Only Account Import Request
          • Create View Only Account Sync Request
          • Sync View Only Account
      • Transaction
        • Transaction
          • Build Transaction
          • Submit Transaction
          • Build And Submit Transaction
          • Build Burn Transaction
          • Build Unsigned Transaction
          • Build Unsigned Burn Transaction
        • Transaction Output TXO
          • Memo
            • Validate Sender Memo
          • Get TXO
          • Get TXOs
          • Get MobileCoin Protocol TXO
          • Get TXO Membership Proofs
          • Sample Mixins
          • Get TXO Block Index
        • Confirmation
          • Get Confirmations
          • Validate Confirmations
        • Receiver Receipt
          • Check Receiver Receipt Status
          • Create Receiver Receipts
        • Transaction Log
          • Get Transaction Log
          • Get Transaction Logs
          • Get MobileCoin Protocol Transaction
        • Payment Request
          • Create Payment Request
          • Check B58 Type
      • Block
        • Get Block
        • Get Blocks
        • Get Recent Blocks
        • Search Ledger
      • Network Status
        • Get Network Status
      • Wallet Status
        • Get Wallet Status
      • Version
        • Get Version
    • v1 (deprecated)
      • Account
        • Account
          • Create Account
          • Import Account
          • Import Account Legacy
          • Get Account
          • Get All Accounts
          • Get Account Status
          • Update Account Name
          • Remove Account
        • Account Secrets
          • Export Account Secrets
        • Address
          • Assign Address For Account
          • Get Addresses For Account
          • Verify Address
        • Balance
          • Get Balance For Account
          • Get Balance For Address
      • Transaction
        • Transaction
          • Build Transaction
          • Submit Transaction
          • Build And Submit Transaction
          • Build Split Txo Transaction
        • Transaction Output TXO
          • Get TXO
          • Get MobileCoin Protocol TXO
          • Get TXOs For Account
          • Get TXOs For View Only Account
          • Get All TXOs For Address
        • Confirmation
          • Get Confirmations
          • Validate Confirmations
        • Receiver Receipt
          • Check Receiver Receipt Status
          • Create Receiver Receipts
        • Transaction Log
          • Get Transaction Object
          • Get Transaction Log
          • Get Transaction Logs For Account
          • Get All Transaction Logs For Block
          • Get All Transaction Logs Ordered By Block
          • Get MobileCoin Protocol Transaction
        • Payment Request
          • Create Payment Request
          • Check B58 Type
      • Gift Code
        • Build Gift Code
        • Submit Gift Code
        • Get Gift Code
        • Get All Gift Codes
        • Check Gift Code Status
        • Claim Gift Code
        • Remove Gift Code
      • Block
        • Get Block
      • Network Status
        • Get Network Status
      • Wallet Status
        • Get Wallet Status
      • Version
        • Get Version
    • Signer Service
      • Create Account
      • Get Account
      • Sign Transaction
      • Sync Txos
  • Usage
    • Getting Started
      • Running Full Service
      • Create an Account
      • Receiving MobileCoin
      • Sending MobileCoin
      • Next Steps
    • Full Service Network Diagram
    • Supported Token Metadata
    • Database Usage
    • API Key
    • View Only Account
      • Signer
      • Signer Service
    • No Wallet Mode
    • Validator Service
      • Running
      • Running With TLS
    • Mirror Service
      • Running
      • Running With TLS
      • Running With Encryption
    • Logging
      • Text Logs (syslog style)
      • Crash Reports
    • T3
    • Sender Memos
  • FAQ
    • Resolving Disputes
    • How do I check if Full-Service is operational?
    • Where are logs stored?
    • How do I speed up account import?
    • What is the precision of MOB?
  • Glossary
    • Account
    • Block
    • Blockchain
    • Consensus Protocol
    • Fog
    • Full Service
    • Key Image
    • Ledger
    • MOB
    • Public Address
    • Secure Enclave
    • Subaddress
    • Transaction
    • Transaction Proposal
    • Validator Node
    • Validator Service
Powered by GitBook
On this page
  • Attributes
  • Example

Was this helpful?

  1. API Endpoints
  2. v2
  3. Account

Address

An Address is a public address created from the Account Key. An Address contains a public View key and a public Spend key, as well as optional Fog materials, if the account is enabled for mobile.

An account can have u64::MAX (~18.45 quintillion) unique public addresses, which we call subaddresses, generated for it, and full-service can determine which subaddress of the account was used when the funds were sent to the account. Wallets built atop full-service use this capability to associate incoming funds with a designated purpose. One example is an exchange that provides a unique deposit address to each of its customers and thus knows which customer to credit when funds arrive at the exchange. Another example is an e-commerce site that issues unique payment addresses for its carts. When funds arrive, by matching the address that received the funds with subaddresses assigned to orders in its database, it knows which order has completed checkout.

Because the MobileCoin blockchain is end-to-end encrypted, every transaction output on the blockchain has to be checked by every account owner using their view private key in order to determine if the transaction output belongs to that account. If the above exchange or e-commerce site were to create independent accounts for each customer or cart, their site would not scale well as it would have to loop over every transaction output in every block, multiplied each of its customers view private keys, to identify transaction outputs sent to its customers. Imagine an exchange with 100,000 customers having to decode 30 transaction outputs per second using 100,000 private view keys in parallel. Expensive!

Subaddresses solve this scaling problem because the wallet can scan the blockchain using the account's single private view key to determine which transaction outputs were sent to any subaddress of the account, and then do a table lookup for transaction outputs that match and determine to which subaddress the transaction output was sent. The 3,000,000 decode operations per second of the above example, becomes 30 decodes per second instead, and only when there is a match is there a need to do a table lookup to determine which customer received funds, also an inexpensive operation.

Important: If the wallet database is reset and the account restored by importing its secret phrase or entropy, full-service will not be able to spend funds sent to subaddresses until the subaddresses are recovered as well by performing assign_address_for_account for each of the "orphaned" subaddresses. Upon recovery, each subaddress_index will be assigned the same public_address as it orginally had.

Attributes

Name
Type
Description

public_address

string

A shareable B58-encoded string representing the address.

account_id

string

A unique identifier for the assigned associated account.

metadata

string

An arbitrary string attached to the object.

subaddress_index

string (uint64)

The assigned subaddress index on the associated account.

Example

{
  "object": "address",
  "public_address": "3P4GtGkp5UVBXUzBqirgj7QFetWn4PsFPsHBXbC6A8AXw1a9CMej969jneiN1qKcwdn6e1VtD64EruGVSFQ8wHk5xuBHndpV9WUGQ78vV7Z",
  "account_id": "3407fbbc250799f5ce9089658380c5fe152403643a525f581f359917d8d59d52",
  "metadata": "",
  "subaddress_index": "2",
  "offset": "7",
  "limit": "6"
}
PreviousExport Account SecretsNextAssign Address For Account

Last updated 1 year ago

Was this helpful?