# Custodians & Centralized Exchanges (CEXs)

## Introduction

***

1Money's APIs enable seamless integration with automation, security, and compliance workflows common across custodian and centralized exchanges.

Key features include:

* Out-of-the-box support for [tracking account balances](#id-5.-balance-retrieval), [recent transactions](#id-5.-tracking-balance-changes), and [payment transfers](#id-6.-transferring-assets).
* Simplified management of accounts, thanks to the 1Money protocol’s gasless transactions, low latency, and high throughput—even during periods of high market volatility.
* Compatibility with Ethereum’s elliptic curve cryptography and address format, facilitating integration with MPC (Multi-Party Computation) signing processes.

## Integration Guide

***

The following provides How-To's on common functions for Custodians and Exchanges.&#x20;

1. [Infrastructure](#id-1.-infrastructure)
2. [Managing accounts](#id-2.-account-management)
3. [Asset standards](#id-3.-asset-standards)
4. [Retrieving balances](#id-4.-retrieving-balances)
5. [Tracking balance changes](#id-5.-tracking-balance-changes)
6. [Transferring assets](#step-6-transferring-assets)

## 1. Infrastructure

***

Get started immediately by connecting directly to 1Money Network's publicly available [**Rest API Endpoints and Websockets**](/integrations/network-access.md).&#x20;

## 2. Account management&#x20;

***

### <sub>Address and private key format</sub>

The 1Money Network uses the **same elliptic curve signature scheme and account addresses as Ethereum**, ensuring a familiar user experience.

Based on the Ethereum standard, a private key is made up of 64 hex characters and can be encrypted with a password.&#x20;

Example:

```sh
Private Key: 0x6d8e4df8f5177ed29a9c1742e1b774a2a6e1e7a2e397ad03b1b57e0b8a118536
```

The public key is generated from the private key using the Elliptic Curve Digital Signature Algorithm. You get a public address for your account by taking the last 20 bytes of the Keccak-256 hash of the public key and adding `0x` to the beginning.

Example:

```sh
Public Key: 0x5e97870f263700f46aa00d967821199b9bc5a120
```

### <sub>Account Creation</sub>

Account public/private keypairs from Ethereum can be reused seamlessly on the 1Money Network.&#x20;

New Accounts can be generated using any wallet within Ethereum and simply reused on 1Money.&#x20;

Wallet integrations both with popular existing wallets and native solutions will be coming in the near future.&#x20;

## 3. Asset standards

***

Tokens on the 1Money Network share the following attributes:

1. Token value can support 0–18 decimals.
2. Each token has a `master_authority`, designating the original issuer.

Use the [get token metadata](/integrations/rest-apis/tokens/get-token-metadata.md) API to pull specific metadata on a token.&#x20;

Example result:&#x20;

```sh
{
  "symbol": "LTEST2",
  "master_authority": "0x4f9f49f7f437da81fcc1b0cf82edb510ffe4b92c",
  "master_mint_authority": "0x0000000000000000000000000000000000000000",
  "minter_authorities": [],
  "pause_authority": "0x0000000000000000000000000000000000000000",
  "burn_authorities": [],
  "black_list_authorities": [],
  "black_list": [],
  "metadata_update_authority": "0x0000000000000000000000000000000000000000",
  "supply": "100000000000000",
  "decimals": 6,
  "is_paused": false,
  "is_private": false,
  "meta": null
}
```

## 4. Balance Retrieval

***

Use the [get account by token](/integrations/rest-apis/accounts/get-account-by-token.md)  API with your `account address` and `token address` as inputs to fetch balances.

Example result:&#x20;

<pre class="language-sh"><code class="lang-sh"><strong>{
</strong>  "token_account_address": "0x204ebf86a36fb93b80d077e55484bed31537b200",
  "balance": "99750399380000",
  "nonce": 2470
}
</code></pre>

## 5. Tracking balance changes

***

{% hint style="info" %}
**Checkpoint**:

The 1Money Network is a broadcast-based network which is different from a blockchain network. A checkpoint in the 1Money Network represents a specific point in time that captures the current state of each account.

Learn more in the [**system components**](/core-concepts/system-components.md) section.&#x20;
{% endhint %}

Balance changes can be queried by:&#x20;

1. Getting the [get checkpoint latest number API](/integrations/rest-apis/checkpoints/get-the-latest-checkpoint-number.md) to find the network's latest checkpoint number&#x20;
2. Compare the network's checkpoint number to your local checkpoint number&#x20;
3. If they match, use the [get checkpoint by number API](/integrations/rest-apis/checkpoints/get-checkpoint-by-number.md) to pull all the transaction data from that checkpoint &#x20;
4. Input the latest checkpoint number ( `number=`) and set `&full=true` to pull the transaction data

Example result:&#x20;

```sh
{
  "extra_data": "text",
  "hash": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
  "number": "1500",
  "parent_hash": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
  "receipts_root": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
  "state_root": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
  "timestamp": "1739760890",
  "transactions_root": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
  "size": 1,
  "transactions": [
    {
      "data": {
        "decimals": "18",
        "master_authority": "0x9E1E9688A44D058fF181Ed64ddFAFbBE5CC742Ab",
        "symbol": "USDX"
      },
      "transaction_type": "TokenCreate"
    },
    {
      "chain_id": "21210",
      "checkpoint_hash": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
      "checkpoint_number": "10",
      "fee": "10",
      "from": "0x9E1E9688A44D058fF181Ed64ddFAFbBE5CC742Ab",
      "hash": "0xf55f9525be94633b56f954d3252d52b8ef42f5fd5f9491b243708471c15cc40c",
      "nonce": "10",
      "signature": {
        "r": "72956732934625920503481762689501378577921804342307439094906376029324416116949",
        "s": "29902520081700531224291681396692026253288382272435451874524203378285409371412",
        "v": "1"
      },
      "transaction_index": "10"
    }
  ]
}
```

## 6. Asset Transfers

***

To transfer assets:&#x20;

1. Use the[ submit payment API](/integrations/rest-apis/transactions/submit-payment.md) to prepare the transaction with a private key signature
2. Submit a signed transaction to the network.
3. Upon submission, a transaction hash is returned.
4. Use [get transaction receipt by hash](/integrations/rest-apis/transactions/get-transaction-receipt-by-hash.md) to check on the status of your transaction.

Transactions are finalized instantly—no need to wait for checkpoint confirmations.

<br>

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.1moneynetwork.com/user-guides/custodians-and-centralized-exchanges-cexs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
